diff --git a/js/src/jit-test/tests/baseline/long-proto-chains.js b/js/src/jit-test/tests/baseline/long-proto-chains.js new file mode 100644 index 000000000000..ceb387b0872f --- /dev/null +++ b/js/src/jit-test/tests/baseline/long-proto-chains.js @@ -0,0 +1,10 @@ +function f() { + var o = {x: 1}; + for (var i = 0; i < 300; i++) + o = Object.create(o); + for (var i = 0; i < 15; i++) { + assertEq(o.x, 1); + assertEq(o.y, undefined); + } +} +f(); diff --git a/js/src/jit/CacheIR.h b/js/src/jit/CacheIR.h index 67a78093bfd3..446d95f988eb 100644 --- a/js/src/jit/CacheIR.h +++ b/js/src/jit/CacheIR.h @@ -147,8 +147,8 @@ class MOZ_RAII CacheIRWriter } void writeOperandId(OperandId opId) { - MOZ_ASSERT(size_t(opId.id()) <= UINT8_MAX); if (opId.id() < MaxOperandIds) { + static_assert(MaxOperandIds <= UINT8_MAX, "operand id must fit in a single byte"); buffer_.writeByte(opId.id()); } else { tooLarge_ = true;