diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-02-22 21:09:32 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-02-22 21:09:32 +0100 |
commit | 5ee844f71001af821244696414bd92973f78fc09 (patch) | |
tree | e9d5ec0b5f06918c7ff842f1ac932ab2874138ff /js/src/jsobjinlines.h | |
parent | b1cd96989bb5107f83895c2320e0046d84b448ab (diff) | |
download | UXP-5ee844f71001af821244696414bd92973f78fc09.tar UXP-5ee844f71001af821244696414bd92973f78fc09.tar.gz UXP-5ee844f71001af821244696414bd92973f78fc09.tar.lz UXP-5ee844f71001af821244696414bd92973f78fc09.tar.xz UXP-5ee844f71001af821244696414bd92973f78fc09.zip |
Revert #1142 - Remove unboxed objects
- accounting for removal of watch()/unwatch()
Diffstat (limited to 'js/src/jsobjinlines.h')
-rw-r--r-- | js/src/jsobjinlines.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/js/src/jsobjinlines.h b/js/src/jsobjinlines.h index 98e740142..889033143 100644 --- a/js/src/jsobjinlines.h +++ b/js/src/jsobjinlines.h @@ -32,6 +32,19 @@ #include "vm/ShapedObject-inl.h" #include "vm/TypeInference-inl.h" +namespace js { + +// This is needed here for ensureShape() below. +inline bool +MaybeConvertUnboxedObjectToNative(ExclusiveContext* cx, JSObject* obj) +{ + if (obj->is<UnboxedPlainObject>()) + return UnboxedPlainObject::convertToNative(cx->asJSContext(), obj); + return true; +} + +} // namespace js + inline js::Shape* JSObject::maybeShape() const { @@ -44,6 +57,8 @@ JSObject::maybeShape() const inline js::Shape* JSObject::ensureShape(js::ExclusiveContext* cx) { + if (!js::MaybeConvertUnboxedObjectToNative(cx, this)) + return nullptr; js::Shape* shape = maybeShape(); MOZ_ASSERT(shape); return shape; |