diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-02-23 14:41:40 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-02-23 14:41:40 +0100 |
commit | dd57b9273c7c95a7cdabc94854c8dc63b0653f02 (patch) | |
tree | 545f5066b231b616f92b3702982d8276fed13f01 /js/src/jit/SharedIC.cpp | |
parent | be16123ddcaf061afced444a6db7d5b55020b744 (diff) | |
download | UXP-dd57b9273c7c95a7cdabc94854c8dc63b0653f02.tar UXP-dd57b9273c7c95a7cdabc94854c8dc63b0653f02.tar.gz UXP-dd57b9273c7c95a7cdabc94854c8dc63b0653f02.tar.lz UXP-dd57b9273c7c95a7cdabc94854c8dc63b0653f02.tar.xz UXP-dd57b9273c7c95a7cdabc94854c8dc63b0653f02.zip |
Revert #1137 - Remove unboxed arrays
- accounting for removal of watch()/unwatch()
- updated for intermediate code changes.
Diffstat (limited to 'js/src/jit/SharedIC.cpp')
-rw-r--r-- | js/src/jit/SharedIC.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/js/src/jit/SharedIC.cpp b/js/src/jit/SharedIC.cpp index 313957462..2475dfb22 100644 --- a/js/src/jit/SharedIC.cpp +++ b/js/src/jit/SharedIC.cpp @@ -286,6 +286,11 @@ ICStub::trace(JSTracer* trc) TraceEdge(trc, &getElemStub->shape(), "baseline-getelem-dense-shape"); break; } + case ICStub::GetElem_UnboxedArray: { + ICGetElem_UnboxedArray* getElemStub = toGetElem_UnboxedArray(); + TraceEdge(trc, &getElemStub->group(), "baseline-getelem-unboxed-array-group"); + break; + } case ICStub::GetElem_TypedArray: { ICGetElem_TypedArray* getElemStub = toGetElem_TypedArray(); TraceEdge(trc, &getElemStub->shape(), "baseline-getelem-typedarray-shape"); @@ -2245,6 +2250,7 @@ IsCacheableProtoChain(JSObject* obj, JSObject* holder, bool isDOMProxy) if (obj == holder) return false; if (!obj->is<UnboxedPlainObject>() && + !obj->is<UnboxedArrayObject>() && !obj->is<TypedObject>()) { return false; @@ -2576,6 +2582,9 @@ CheckHasNoSuchProperty(JSContext* cx, JSObject* obj, PropertyName* name, } else if (curObj->is<UnboxedPlainObject>()) { if (curObj->as<UnboxedPlainObject>().containsUnboxedOrExpandoProperty(cx, NameToId(name))) return false; + } else if (curObj->is<UnboxedArrayObject>()) { + if (name == cx->names().length) + return false; } else if (curObj->is<TypedObject>()) { if (curObj->as<TypedObject>().typeDescr().hasProperty(cx->names(), NameToId(name))) return false; |