diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-02-23 14:41:40 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-04-14 12:57:13 +0200 |
commit | af69cb07db0d810a1a1a507b890e6beb23dc421c (patch) | |
tree | 2d52b9d0ac0dc9c48cd91631b7431b90d6703be6 /js/src/jit/CacheIR.cpp | |
parent | dc4695406f02e26009f5f54a858344911f1aa404 (diff) | |
download | UXP-af69cb07db0d810a1a1a507b890e6beb23dc421c.tar UXP-af69cb07db0d810a1a1a507b890e6beb23dc421c.tar.gz UXP-af69cb07db0d810a1a1a507b890e6beb23dc421c.tar.lz UXP-af69cb07db0d810a1a1a507b890e6beb23dc421c.tar.xz UXP-af69cb07db0d810a1a1a507b890e6beb23dc421c.zip |
Revert #1137 - Remove unboxed arrays
- accounting for removal of watch()/unwatch()
- updated for intermediate code changes.
Diffstat (limited to 'js/src/jit/CacheIR.cpp')
-rw-r--r-- | js/src/jit/CacheIR.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/js/src/jit/CacheIR.cpp b/js/src/jit/CacheIR.cpp index 6822a70af..f1061af70 100644 --- a/js/src/jit/CacheIR.cpp +++ b/js/src/jit/CacheIR.cpp @@ -175,7 +175,7 @@ TestMatchingReceiver(CacheIRWriter& writer, JSObject* obj, Shape* shape, ObjOper } else { writer.guardNoUnboxedExpando(objId); } - } else if (obj->is<TypedObject>()) { + } else if (obj->is<UnboxedArrayObject>() || obj->is<TypedObject>()) { writer.guardGroup(objId, obj->group()); } else { Shape* shape = obj->maybeShape(); @@ -368,6 +368,13 @@ GetPropIRGenerator::tryAttachObjectLength(CacheIRWriter& writer, HandleObject ob return true; } + if (obj->is<UnboxedArrayObject>()) { + writer.guardClass(objId, GuardClassKind::UnboxedArray); + writer.loadUnboxedArrayLengthResult(objId); + emitted_ = true; + return true; + } + if (obj->is<ArgumentsObject>() && !obj->as<ArgumentsObject>().hasOverriddenLength()) { if (obj->is<MappedArgumentsObject>()) { writer.guardClass(objId, GuardClassKind::MappedArguments); |