diff --git a/js/src/vm/NativeObject.cpp b/js/src/vm/NativeObject.cpp index 9aee0559ab37..022aacd85dc1 100644 --- a/js/src/vm/NativeObject.cpp +++ b/js/src/vm/NativeObject.cpp @@ -545,9 +545,13 @@ bool NativeObject::willBeSparseElements(uint32_t requiredCapacity, return true; } - uint32_t len = getDenseInitializedLength(); + uint32_t initLen = getDenseInitializedLength(); + if (denseElementsArePacked()) { + return minimalDenseCount > initLen; + } + const Value* elems = getDenseElements(); - for (uint32_t i = 0; i < len; i++) { + for (uint32_t i = 0; i < initLen; i++) { if (!elems[i].isMagic(JS_ELEMENTS_HOLE) && !--minimalDenseCount) { return false; }