--- 780d9ef6deaa998fffa821a464fe260d575d7b24/js/src/vm/BytecodeUtil.cpp
+++ 22e3020fa080afeaa79292e085aa4d7346a6f9ec/js/src/vm/BytecodeUtil.cpp
@@ -583,16 +583,17 @@ uint32_t BytecodeParser::simulateOp(JSOp
goto end;
case JSOp::InitElem:
case JSOp::InitElemGetter:
case JSOp::InitElemSetter:
case JSOp::InitHiddenElem:
case JSOp::InitHiddenElemGetter:
case JSOp::InitHiddenElemSetter:
+ case JSOp::InitLockedElem:
// Keep the third value.
MOZ_ASSERT(nuses == 3);
MOZ_ASSERT(ndefs == 1);
goto end;
default:
break;
}
--- 834447abbbf1080f46eb824d0fbc85a1ac711a09/js/src/vm/Opcodes.h
+++ 22e3020fa080afeaa79292e085aa4d7346a6f9ec/js/src/vm/Opcodes.h
@@ -920,26 +920,29 @@
* `obj` must be an object.
*
* Implements: [CreateDataPropertyOrThrow][1]. This instruction is used for
* object literals like `{0: val}` and `{[id]: val}`, and methods like
* `*[Symbol.iterator]() {}`.
*
* `JSOp::InitHiddenElem` is the same but defines a non-enumerable property,
* for class methods.
+ * `JSOp::InitLockedElem` is the same but defines a non-enumerable, non-writable, non-configurable property,
+ * for private class methods.
*
* [1]: https://tc39.es/ecma262/#sec-createdatapropertyorthrow
*
* Category: Objects
* Type: Defining properties
* Operands:
* Stack: obj, id, val => obj
*/ \
MACRO(InitElem, init_elem, NULL, 1, 3, 1, JOF_BYTE|JOF_ELEM|JOF_PROPINIT|JOF_IC) \
MACRO(InitHiddenElem, init_hidden_elem, NULL, 1, 3, 1, JOF_BYTE|JOF_ELEM|JOF_PROPINIT|JOF_IC) \
+ MACRO(InitLockedElem, init_locked_elem, NULL, 1, 3, 1, JOF_BYTE|JOF_ELEM|JOF_PROPINIT|JOF_IC) \
/*
* Define an accessor property on `obj` with the given `getter`.
* `nameIndex` gives the property name.
*
* `obj` must be an object and `getter` must be a function.
*
* `JSOp::InitHiddenPropGetter` is the same but defines a non-enumerable
* property, for getters in classes.
@@ -3670,17 +3673,16 @@
// clang-format on
/*
* In certain circumstances it may be useful to "pad out" the opcode space to
* a power of two. Use this macro to do so.
*/
#define FOR_EACH_TRAILING_UNUSED_OPCODE(MACRO) \
- MACRO(238) \
MACRO(239) \
MACRO(240) \
MACRO(241) \
MACRO(242) \
MACRO(243) \
MACRO(244) \
MACRO(245) \
MACRO(246) \
Files
/js/src/frontend/BytecodeEmitter.cpp
/js/src/frontend/BytecodeEmitter.h
/js/src/frontend/FunctionEmitter.cpp
/js/src/frontend/ObjectEmitter.cpp
/js/src/frontend/ObjectEmitter.h
/js/src/frontend/Stencil.cpp
/js/src/frontend/Stencil.h
/js/src/vm/BytecodeUtil.cpp
/js/src/vm/BytecodeUtil.h
/js/src/vm/Opcodes.h
Changesets
Diffs
/js/src/frontend/BytecodeEmitter.cpp
/js/src/frontend/BytecodeEmitter.h
/js/src/frontend/FunctionEmitter.cpp
/js/src/frontend/ObjectEmitter.cpp
/js/src/frontend/ObjectEmitter.h
/js/src/frontend/Stencil.cpp
/js/src/frontend/Stencil.h
/js/src/vm/BytecodeUtil.cpp
/js/src/vm/BytecodeUtil.h
/js/src/vm/Opcodes.h