Bug 1566141 - make baseline work with JSOP code for coalesce r=jorendorff,jandem
authoryulia <ystartsev@mozilla.com>
Tue, 12 Nov 2019 16:57:21 +0000
changeset 501727 2a8c35575189a16dcdf6af014a12b046817b28b2
parent 501726 9b150dd56999e1c2b7aa47cf9c0e8d96c6c8eff3
child 501728 ddc6fa7e24f2eb5e96e0e0215a943b06d4607b95
push id114172
push userdluca@mozilla.com
push dateTue, 19 Nov 2019 11:31:10 +0000
treeherdermozilla-inbound@b5c5ba07d3db [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjorendorff, jandem
bugs1566141
milestone72.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1566141 - make baseline work with JSOP code for coalesce r=jorendorff,jandem Differential Revision: https://phabricator.services.mozilla.com/D51639
js/src/jit/BaselineCodeGen.cpp
js/src/jit/BaselineCodeGen.h
--- a/js/src/jit/BaselineCodeGen.cpp
+++ b/js/src/jit/BaselineCodeGen.cpp
@@ -2149,16 +2149,34 @@ bool BaselineCodeGen<Handler>::emit_JSOP
 }
 
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_OR() {
   return emitAndOr(true);
 }
 
 template <typename Handler>
+bool BaselineCodeGen<Handler>::emit_JSOP_COALESCE() {
+  // COALESCE leaves the original value on the stack.
+  frame.syncStack(0);
+
+  masm.loadValue(frame.addressOfStackValue(-1), R0);
+
+  Label undefinedOrNull;
+
+  masm.branchTestUndefined(Assembler::Equal, R0, &undefinedOrNull);
+  masm.branchTestNull(Assembler::Equal, R0, &undefinedOrNull);
+  emitJump();
+
+  masm.bind(&undefinedOrNull);
+  // fall through
+  return true;
+}
+
+template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_NOT() {
   bool knownBoolean = frame.stackValueHasKnownType(-1, JSVAL_TYPE_BOOLEAN);
 
   // Keep top stack value in R0.
   frame.popRegsAndSync(1);
 
   if (!knownBoolean && !emitToBoolean()) {
     return false;
@@ -4736,17 +4754,16 @@ bool BaselineCodeGen<Handler>::emit_JSOP
 
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_GIMPLICITTHIS() {
   auto pushUndefined = [this]() {
     frame.push(UndefinedValue());
     return true;
   };
   auto emitImplicitThis = [this]() { return emit_JSOP_IMPLICITTHIS(); };
-
   return emitTestScriptFlag(JSScript::ImmutableFlags::HasNonSyntacticScope,
                             emitImplicitThis, pushUndefined, R2.scratchReg());
 }
 
 template <typename Handler>
 bool BaselineCodeGen<Handler>::emit_JSOP_INSTANCEOF() {
   frame.popRegsAndSync(2);
 
--- a/js/src/jit/BaselineCodeGen.h
+++ b/js/src/jit/BaselineCodeGen.h
@@ -14,255 +14,256 @@
 #include "jit/MacroAssembler.h"
 
 namespace js {
 
 enum class GeneratorResumeKind;
 
 namespace jit {
 
-#define OPCODE_LIST(_)             \
-  _(JSOP_NOP)                      \
-  _(JSOP_NOP_DESTRUCTURING)        \
-  _(JSOP_LABEL)                    \
-  _(JSOP_ITERNEXT)                 \
-  _(JSOP_POP)                      \
-  _(JSOP_POPN)                     \
-  _(JSOP_DUPAT)                    \
-  _(JSOP_ENTERWITH)                \
-  _(JSOP_LEAVEWITH)                \
-  _(JSOP_DUP)                      \
-  _(JSOP_DUP2)                     \
-  _(JSOP_SWAP)                     \
-  _(JSOP_PICK)                     \
-  _(JSOP_UNPICK)                   \
-  _(JSOP_GOTO)                     \
-  _(JSOP_IFEQ)                     \
-  _(JSOP_IFNE)                     \
-  _(JSOP_AND)                      \
-  _(JSOP_OR)                       \
-  _(JSOP_NOT)                      \
-  _(JSOP_POS)                      \
-  _(JSOP_TONUMERIC)                \
-  _(JSOP_LOOPHEAD)                 \
-  _(JSOP_LOOPENTRY)                \
-  _(JSOP_VOID)                     \
-  _(JSOP_UNDEFINED)                \
-  _(JSOP_HOLE)                     \
-  _(JSOP_NULL)                     \
-  _(JSOP_TRUE)                     \
-  _(JSOP_FALSE)                    \
-  _(JSOP_ZERO)                     \
-  _(JSOP_ONE)                      \
-  _(JSOP_INT8)                     \
-  _(JSOP_INT32)                    \
-  _(JSOP_UINT16)                   \
-  _(JSOP_UINT24)                   \
-  _(JSOP_RESUMEINDEX)              \
-  _(JSOP_DOUBLE)                   \
-  _(JSOP_BIGINT)                   \
-  _(JSOP_STRING)                   \
-  _(JSOP_SYMBOL)                   \
-  _(JSOP_OBJECT)                   \
-  _(JSOP_CALLSITEOBJ)              \
-  _(JSOP_REGEXP)                   \
-  _(JSOP_LAMBDA)                   \
-  _(JSOP_LAMBDA_ARROW)             \
-  _(JSOP_SETFUNNAME)               \
-  _(JSOP_BITOR)                    \
-  _(JSOP_BITXOR)                   \
-  _(JSOP_BITAND)                   \
-  _(JSOP_LSH)                      \
-  _(JSOP_RSH)                      \
-  _(JSOP_URSH)                     \
-  _(JSOP_ADD)                      \
-  _(JSOP_SUB)                      \
-  _(JSOP_MUL)                      \
-  _(JSOP_DIV)                      \
-  _(JSOP_MOD)                      \
-  _(JSOP_POW)                      \
-  _(JSOP_LT)                       \
-  _(JSOP_LE)                       \
-  _(JSOP_GT)                       \
-  _(JSOP_GE)                       \
-  _(JSOP_EQ)                       \
-  _(JSOP_NE)                       \
-  _(JSOP_STRICTEQ)                 \
-  _(JSOP_STRICTNE)                 \
-  _(JSOP_CONDSWITCH)               \
-  _(JSOP_CASE)                     \
-  _(JSOP_DEFAULT)                  \
-  _(JSOP_LINENO)                   \
-  _(JSOP_BITNOT)                   \
-  _(JSOP_NEG)                      \
-  _(JSOP_NEWARRAY)                 \
-  _(JSOP_NEWARRAY_COPYONWRITE)     \
-  _(JSOP_INITELEM_ARRAY)           \
-  _(JSOP_NEWOBJECT)                \
-  _(JSOP_NEWINIT)                  \
-  _(JSOP_INITELEM)                 \
-  _(JSOP_INITELEM_GETTER)          \
-  _(JSOP_INITELEM_SETTER)          \
-  _(JSOP_INITELEM_INC)             \
-  _(JSOP_MUTATEPROTO)              \
-  _(JSOP_INITPROP)                 \
-  _(JSOP_INITLOCKEDPROP)           \
-  _(JSOP_INITHIDDENPROP)           \
-  _(JSOP_INITPROP_GETTER)          \
-  _(JSOP_INITPROP_SETTER)          \
-  _(JSOP_GETELEM)                  \
-  _(JSOP_SETELEM)                  \
-  _(JSOP_STRICTSETELEM)            \
-  _(JSOP_CALLELEM)                 \
-  _(JSOP_DELELEM)                  \
-  _(JSOP_STRICTDELELEM)            \
-  _(JSOP_GETELEM_SUPER)            \
-  _(JSOP_SETELEM_SUPER)            \
-  _(JSOP_STRICTSETELEM_SUPER)      \
-  _(JSOP_IN)                       \
-  _(JSOP_HASOWN)                   \
-  _(JSOP_GETGNAME)                 \
-  _(JSOP_BINDGNAME)                \
-  _(JSOP_SETGNAME)                 \
-  _(JSOP_STRICTSETGNAME)           \
-  _(JSOP_SETNAME)                  \
-  _(JSOP_STRICTSETNAME)            \
-  _(JSOP_GETPROP)                  \
-  _(JSOP_SETPROP)                  \
-  _(JSOP_STRICTSETPROP)            \
-  _(JSOP_CALLPROP)                 \
-  _(JSOP_DELPROP)                  \
-  _(JSOP_STRICTDELPROP)            \
-  _(JSOP_GETPROP_SUPER)            \
-  _(JSOP_SETPROP_SUPER)            \
-  _(JSOP_STRICTSETPROP_SUPER)      \
-  _(JSOP_LENGTH)                   \
-  _(JSOP_GETBOUNDNAME)             \
-  _(JSOP_GETALIASEDVAR)            \
-  _(JSOP_SETALIASEDVAR)            \
-  _(JSOP_GETNAME)                  \
-  _(JSOP_BINDNAME)                 \
-  _(JSOP_DELNAME)                  \
-  _(JSOP_GETIMPORT)                \
-  _(JSOP_GETINTRINSIC)             \
-  _(JSOP_SETINTRINSIC)             \
-  _(JSOP_BINDVAR)                  \
-  _(JSOP_DEFVAR)                   \
-  _(JSOP_DEFCONST)                 \
-  _(JSOP_DEFLET)                   \
-  _(JSOP_DEFFUN)                   \
-  _(JSOP_GETLOCAL)                 \
-  _(JSOP_SETLOCAL)                 \
-  _(JSOP_GETARG)                   \
-  _(JSOP_SETARG)                   \
-  _(JSOP_CHECKLEXICAL)             \
-  _(JSOP_INITLEXICAL)              \
-  _(JSOP_INITGLEXICAL)             \
-  _(JSOP_CHECKALIASEDLEXICAL)      \
-  _(JSOP_INITALIASEDLEXICAL)       \
-  _(JSOP_UNINITIALIZED)            \
-  _(JSOP_CALL)                     \
-  _(JSOP_CALL_IGNORES_RV)          \
-  _(JSOP_CALLITER)                 \
-  _(JSOP_FUNCALL)                  \
-  _(JSOP_FUNAPPLY)                 \
-  _(JSOP_NEW)                      \
-  _(JSOP_EVAL)                     \
-  _(JSOP_STRICTEVAL)               \
-  _(JSOP_SPREADCALL)               \
-  _(JSOP_SPREADNEW)                \
-  _(JSOP_SPREADEVAL)               \
-  _(JSOP_STRICTSPREADEVAL)         \
-  _(JSOP_OPTIMIZE_SPREADCALL)      \
-  _(JSOP_IMPLICITTHIS)             \
-  _(JSOP_GIMPLICITTHIS)            \
-  _(JSOP_INSTANCEOF)               \
-  _(JSOP_TYPEOF)                   \
-  _(JSOP_TYPEOFEXPR)               \
-  _(JSOP_THROWMSG)                 \
-  _(JSOP_THROW)                    \
-  _(JSOP_TRY)                      \
-  _(JSOP_FINALLY)                  \
-  _(JSOP_GOSUB)                    \
-  _(JSOP_RETSUB)                   \
-  _(JSOP_PUSHLEXICALENV)           \
-  _(JSOP_POPLEXICALENV)            \
-  _(JSOP_FRESHENLEXICALENV)        \
-  _(JSOP_RECREATELEXICALENV)       \
-  _(JSOP_DEBUGLEAVELEXICALENV)     \
-  _(JSOP_PUSHVARENV)               \
-  _(JSOP_POPVARENV)                \
-  _(JSOP_EXCEPTION)                \
-  _(JSOP_DEBUGGER)                 \
-  _(JSOP_ARGUMENTS)                \
-  _(JSOP_REST)                     \
-  _(JSOP_TOASYNCITER)              \
-  _(JSOP_TOID)                     \
-  _(JSOP_TOSTRING)                 \
-  _(JSOP_TABLESWITCH)              \
-  _(JSOP_ITER)                     \
-  _(JSOP_MOREITER)                 \
-  _(JSOP_ISNOITER)                 \
-  _(JSOP_ENDITER)                  \
-  _(JSOP_ISGENCLOSING)             \
-  _(JSOP_GENERATOR)                \
-  _(JSOP_INITIALYIELD)             \
-  _(JSOP_YIELD)                    \
-  _(JSOP_AWAIT)                    \
-  _(JSOP_TRYSKIPAWAIT)             \
-  _(JSOP_AFTERYIELD)               \
-  _(JSOP_FINALYIELDRVAL)           \
-  _(JSOP_RESUME)                   \
-  _(JSOP_ASYNCAWAIT)               \
-  _(JSOP_ASYNCRESOLVE)             \
-  _(JSOP_CALLEE)                   \
-  _(JSOP_ENVCALLEE)                \
-  _(JSOP_SUPERBASE)                \
-  _(JSOP_SUPERFUN)                 \
-  _(JSOP_GETRVAL)                  \
-  _(JSOP_SETRVAL)                  \
-  _(JSOP_RETRVAL)                  \
-  _(JSOP_RETURN)                   \
-  _(JSOP_FUNCTIONTHIS)             \
-  _(JSOP_GLOBALTHIS)               \
-  _(JSOP_CHECKISOBJ)               \
-  _(JSOP_CHECKISCALLABLE)          \
-  _(JSOP_CHECKTHIS)                \
-  _(JSOP_CHECKTHISREINIT)          \
-  _(JSOP_CHECKRETURN)              \
-  _(JSOP_NEWTARGET)                \
-  _(JSOP_SUPERCALL)                \
-  _(JSOP_SPREADSUPERCALL)          \
-  _(JSOP_THROWSETCONST)            \
-  _(JSOP_THROWSETALIASEDCONST)     \
-  _(JSOP_THROWSETCALLEE)           \
-  _(JSOP_INITHIDDENPROP_GETTER)    \
-  _(JSOP_INITHIDDENPROP_SETTER)    \
-  _(JSOP_INITHIDDENELEM)           \
-  _(JSOP_INITHIDDENELEM_GETTER)    \
-  _(JSOP_INITHIDDENELEM_SETTER)    \
-  _(JSOP_CHECKOBJCOERCIBLE)        \
-  _(JSOP_DEBUGCHECKSELFHOSTED)     \
-  _(JSOP_JUMPTARGET)               \
-  _(JSOP_IS_CONSTRUCTING)          \
-  _(JSOP_TRY_DESTRUCTURING)        \
-  _(JSOP_CHECKCLASSHERITAGE)       \
-  _(JSOP_INITHOMEOBJECT)           \
-  _(JSOP_BUILTINPROTO)             \
-  _(JSOP_OBJWITHPROTO)             \
-  _(JSOP_FUNWITHPROTO)             \
-  _(JSOP_CLASSCONSTRUCTOR)         \
-  _(JSOP_DERIVEDCONSTRUCTOR)       \
-  _(JSOP_IMPORTMETA)               \
-  _(JSOP_DYNAMIC_IMPORT)           \
-  _(JSOP_INC)                      \
-  _(JSOP_DEC)                      \
-  _(JSOP_INSTRUMENTATION_ACTIVE)   \
-  _(JSOP_INSTRUMENTATION_CALLBACK) \
-  _(JSOP_INSTRUMENTATION_SCRIPT_ID)
+#define OPCODE_LIST(_)              \
+  _(JSOP_NOP)                       \
+  _(JSOP_NOP_DESTRUCTURING)         \
+  _(JSOP_LABEL)                     \
+  _(JSOP_ITERNEXT)                  \
+  _(JSOP_POP)                       \
+  _(JSOP_POPN)                      \
+  _(JSOP_DUPAT)                     \
+  _(JSOP_ENTERWITH)                 \
+  _(JSOP_LEAVEWITH)                 \
+  _(JSOP_DUP)                       \
+  _(JSOP_DUP2)                      \
+  _(JSOP_SWAP)                      \
+  _(JSOP_PICK)                      \
+  _(JSOP_UNPICK)                    \
+  _(JSOP_GOTO)                      \
+  _(JSOP_IFEQ)                      \
+  _(JSOP_IFNE)                      \
+  _(JSOP_AND)                       \
+  _(JSOP_OR)                        \
+  _(JSOP_NOT)                       \
+  _(JSOP_POS)                       \
+  _(JSOP_TONUMERIC)                 \
+  _(JSOP_LOOPHEAD)                  \
+  _(JSOP_LOOPENTRY)                 \
+  _(JSOP_VOID)                      \
+  _(JSOP_UNDEFINED)                 \
+  _(JSOP_HOLE)                      \
+  _(JSOP_NULL)                      \
+  _(JSOP_TRUE)                      \
+  _(JSOP_FALSE)                     \
+  _(JSOP_ZERO)                      \
+  _(JSOP_ONE)                       \
+  _(JSOP_INT8)                      \
+  _(JSOP_INT32)                     \
+  _(JSOP_UINT16)                    \
+  _(JSOP_UINT24)                    \
+  _(JSOP_RESUMEINDEX)               \
+  _(JSOP_DOUBLE)                    \
+  _(JSOP_BIGINT)                    \
+  _(JSOP_STRING)                    \
+  _(JSOP_SYMBOL)                    \
+  _(JSOP_OBJECT)                    \
+  _(JSOP_CALLSITEOBJ)               \
+  _(JSOP_REGEXP)                    \
+  _(JSOP_LAMBDA)                    \
+  _(JSOP_LAMBDA_ARROW)              \
+  _(JSOP_SETFUNNAME)                \
+  _(JSOP_BITOR)                     \
+  _(JSOP_BITXOR)                    \
+  _(JSOP_BITAND)                    \
+  _(JSOP_LSH)                       \
+  _(JSOP_RSH)                       \
+  _(JSOP_URSH)                      \
+  _(JSOP_ADD)                       \
+  _(JSOP_SUB)                       \
+  _(JSOP_MUL)                       \
+  _(JSOP_DIV)                       \
+  _(JSOP_MOD)                       \
+  _(JSOP_POW)                       \
+  _(JSOP_LT)                        \
+  _(JSOP_LE)                        \
+  _(JSOP_GT)                        \
+  _(JSOP_GE)                        \
+  _(JSOP_EQ)                        \
+  _(JSOP_NE)                        \
+  _(JSOP_STRICTEQ)                  \
+  _(JSOP_STRICTNE)                  \
+  _(JSOP_CONDSWITCH)                \
+  _(JSOP_CASE)                      \
+  _(JSOP_DEFAULT)                   \
+  _(JSOP_LINENO)                    \
+  _(JSOP_BITNOT)                    \
+  _(JSOP_NEG)                       \
+  _(JSOP_NEWARRAY)                  \
+  _(JSOP_NEWARRAY_COPYONWRITE)      \
+  _(JSOP_INITELEM_ARRAY)            \
+  _(JSOP_NEWOBJECT)                 \
+  _(JSOP_NEWINIT)                   \
+  _(JSOP_INITELEM)                  \
+  _(JSOP_INITELEM_GETTER)           \
+  _(JSOP_INITELEM_SETTER)           \
+  _(JSOP_INITELEM_INC)              \
+  _(JSOP_MUTATEPROTO)               \
+  _(JSOP_INITPROP)                  \
+  _(JSOP_INITLOCKEDPROP)            \
+  _(JSOP_INITHIDDENPROP)            \
+  _(JSOP_INITPROP_GETTER)           \
+  _(JSOP_INITPROP_SETTER)           \
+  _(JSOP_GETELEM)                   \
+  _(JSOP_SETELEM)                   \
+  _(JSOP_STRICTSETELEM)             \
+  _(JSOP_CALLELEM)                  \
+  _(JSOP_DELELEM)                   \
+  _(JSOP_STRICTDELELEM)             \
+  _(JSOP_GETELEM_SUPER)             \
+  _(JSOP_SETELEM_SUPER)             \
+  _(JSOP_STRICTSETELEM_SUPER)       \
+  _(JSOP_IN)                        \
+  _(JSOP_HASOWN)                    \
+  _(JSOP_GETGNAME)                  \
+  _(JSOP_BINDGNAME)                 \
+  _(JSOP_SETGNAME)                  \
+  _(JSOP_STRICTSETGNAME)            \
+  _(JSOP_SETNAME)                   \
+  _(JSOP_STRICTSETNAME)             \
+  _(JSOP_GETPROP)                   \
+  _(JSOP_SETPROP)                   \
+  _(JSOP_STRICTSETPROP)             \
+  _(JSOP_CALLPROP)                  \
+  _(JSOP_DELPROP)                   \
+  _(JSOP_STRICTDELPROP)             \
+  _(JSOP_GETPROP_SUPER)             \
+  _(JSOP_SETPROP_SUPER)             \
+  _(JSOP_STRICTSETPROP_SUPER)       \
+  _(JSOP_LENGTH)                    \
+  _(JSOP_GETBOUNDNAME)              \
+  _(JSOP_GETALIASEDVAR)             \
+  _(JSOP_SETALIASEDVAR)             \
+  _(JSOP_GETNAME)                   \
+  _(JSOP_BINDNAME)                  \
+  _(JSOP_DELNAME)                   \
+  _(JSOP_GETIMPORT)                 \
+  _(JSOP_GETINTRINSIC)              \
+  _(JSOP_SETINTRINSIC)              \
+  _(JSOP_BINDVAR)                   \
+  _(JSOP_DEFVAR)                    \
+  _(JSOP_DEFCONST)                  \
+  _(JSOP_DEFLET)                    \
+  _(JSOP_DEFFUN)                    \
+  _(JSOP_GETLOCAL)                  \
+  _(JSOP_SETLOCAL)                  \
+  _(JSOP_GETARG)                    \
+  _(JSOP_SETARG)                    \
+  _(JSOP_CHECKLEXICAL)              \
+  _(JSOP_INITLEXICAL)               \
+  _(JSOP_INITGLEXICAL)              \
+  _(JSOP_CHECKALIASEDLEXICAL)       \
+  _(JSOP_INITALIASEDLEXICAL)        \
+  _(JSOP_UNINITIALIZED)             \
+  _(JSOP_CALL)                      \
+  _(JSOP_CALL_IGNORES_RV)           \
+  _(JSOP_CALLITER)                  \
+  _(JSOP_FUNCALL)                   \
+  _(JSOP_FUNAPPLY)                  \
+  _(JSOP_NEW)                       \
+  _(JSOP_EVAL)                      \
+  _(JSOP_STRICTEVAL)                \
+  _(JSOP_SPREADCALL)                \
+  _(JSOP_SPREADNEW)                 \
+  _(JSOP_SPREADEVAL)                \
+  _(JSOP_STRICTSPREADEVAL)          \
+  _(JSOP_OPTIMIZE_SPREADCALL)       \
+  _(JSOP_IMPLICITTHIS)              \
+  _(JSOP_GIMPLICITTHIS)             \
+  _(JSOP_INSTANCEOF)                \
+  _(JSOP_TYPEOF)                    \
+  _(JSOP_TYPEOFEXPR)                \
+  _(JSOP_THROWMSG)                  \
+  _(JSOP_THROW)                     \
+  _(JSOP_TRY)                       \
+  _(JSOP_FINALLY)                   \
+  _(JSOP_GOSUB)                     \
+  _(JSOP_RETSUB)                    \
+  _(JSOP_PUSHLEXICALENV)            \
+  _(JSOP_POPLEXICALENV)             \
+  _(JSOP_FRESHENLEXICALENV)         \
+  _(JSOP_RECREATELEXICALENV)        \
+  _(JSOP_DEBUGLEAVELEXICALENV)      \
+  _(JSOP_PUSHVARENV)                \
+  _(JSOP_POPVARENV)                 \
+  _(JSOP_EXCEPTION)                 \
+  _(JSOP_DEBUGGER)                  \
+  _(JSOP_ARGUMENTS)                 \
+  _(JSOP_REST)                      \
+  _(JSOP_TOASYNCITER)               \
+  _(JSOP_TOID)                      \
+  _(JSOP_TOSTRING)                  \
+  _(JSOP_TABLESWITCH)               \
+  _(JSOP_ITER)                      \
+  _(JSOP_MOREITER)                  \
+  _(JSOP_ISNOITER)                  \
+  _(JSOP_ENDITER)                   \
+  _(JSOP_ISGENCLOSING)              \
+  _(JSOP_GENERATOR)                 \
+  _(JSOP_INITIALYIELD)              \
+  _(JSOP_YIELD)                     \
+  _(JSOP_AWAIT)                     \
+  _(JSOP_TRYSKIPAWAIT)              \
+  _(JSOP_AFTERYIELD)                \
+  _(JSOP_FINALYIELDRVAL)            \
+  _(JSOP_RESUME)                    \
+  _(JSOP_ASYNCAWAIT)                \
+  _(JSOP_ASYNCRESOLVE)              \
+  _(JSOP_CALLEE)                    \
+  _(JSOP_ENVCALLEE)                 \
+  _(JSOP_SUPERBASE)                 \
+  _(JSOP_SUPERFUN)                  \
+  _(JSOP_GETRVAL)                   \
+  _(JSOP_SETRVAL)                   \
+  _(JSOP_RETRVAL)                   \
+  _(JSOP_RETURN)                    \
+  _(JSOP_FUNCTIONTHIS)              \
+  _(JSOP_GLOBALTHIS)                \
+  _(JSOP_CHECKISOBJ)                \
+  _(JSOP_CHECKISCALLABLE)           \
+  _(JSOP_CHECKTHIS)                 \
+  _(JSOP_CHECKTHISREINIT)           \
+  _(JSOP_CHECKRETURN)               \
+  _(JSOP_NEWTARGET)                 \
+  _(JSOP_SUPERCALL)                 \
+  _(JSOP_SPREADSUPERCALL)           \
+  _(JSOP_THROWSETCONST)             \
+  _(JSOP_THROWSETALIASEDCONST)      \
+  _(JSOP_THROWSETCALLEE)            \
+  _(JSOP_INITHIDDENPROP_GETTER)     \
+  _(JSOP_INITHIDDENPROP_SETTER)     \
+  _(JSOP_INITHIDDENELEM)            \
+  _(JSOP_INITHIDDENELEM_GETTER)     \
+  _(JSOP_INITHIDDENELEM_SETTER)     \
+  _(JSOP_CHECKOBJCOERCIBLE)         \
+  _(JSOP_DEBUGCHECKSELFHOSTED)      \
+  _(JSOP_JUMPTARGET)                \
+  _(JSOP_IS_CONSTRUCTING)           \
+  _(JSOP_TRY_DESTRUCTURING)         \
+  _(JSOP_CHECKCLASSHERITAGE)        \
+  _(JSOP_INITHOMEOBJECT)            \
+  _(JSOP_BUILTINPROTO)              \
+  _(JSOP_OBJWITHPROTO)              \
+  _(JSOP_FUNWITHPROTO)              \
+  _(JSOP_CLASSCONSTRUCTOR)          \
+  _(JSOP_DERIVEDCONSTRUCTOR)        \
+  _(JSOP_IMPORTMETA)                \
+  _(JSOP_DYNAMIC_IMPORT)            \
+  _(JSOP_INC)                       \
+  _(JSOP_DEC)                       \
+  _(JSOP_INSTRUMENTATION_ACTIVE)    \
+  _(JSOP_INSTRUMENTATION_CALLBACK)  \
+  _(JSOP_INSTRUMENTATION_SCRIPT_ID) \
+  _(JSOP_COALESCE)
 
 enum class ScriptGCThingType { RegExp, Function, Scope, BigInt };
 
 // Base class for BaselineCompiler and BaselineInterpreterGenerator. The Handler
 // template is a class storing fields/methods that are interpreter or compiler
 // specific. This can be combined with template specialization of methods in
 // this class to specialize behavior.
 template <typename Handler>