Something went wrong. Try again.
javascript for 🐜's, a tiny runtime with big ambitions antjs.org
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518#ifdef OP_FMTOP_FMT(none)OP_FMT(u8)OP_FMT(i8)OP_FMT(u16)OP_FMT(i16)OP_FMT(u32)OP_FMT(i32)OP_FMT(u8_npop)OP_FMT(npop_u8_u8)OP_FMT(atom)OP_FMT(atom_u8)OP_FMT(atom_label)OP_FMT(label)OP_FMT(label8)OP_FMT(loc)OP_FMT(loc8)OP_FMT(loc_atom)OP_FMT(arg)OP_FMT(const)OP_FMT(const8)OP_FMT(npop)OP_FMT(var_ref)OP_FMT(map_template)#undef OP_FMT#endif
#ifdef OP_DEF#ifndef op_def#define op_def(name, size, n_pop, n_push, f) OP_DEF(name, size, n_pop, n_push, f)#endif
OP_DEF( INVALID, 1, 0, 0, none)OP_DEF( CONST, 5, 0, 1, const) /* push constant pool[idx] */OP_DEF( CONST_I8, 2, 0, 1, i8) /* push small integer */OP_DEF( CONST8, 2, 0, 1, const8) /* push constant pool[u8 idx] */OP_DEF( UNDEF, 1, 0, 1, none)OP_DEF( NULL, 1, 0, 1, none)OP_DEF( TRUE, 1, 0, 1, none)OP_DEF( FALSE, 1, 0, 1, none)OP_DEF( THIS, 1, 0, 1, none) /* push current 'this' */OP_DEF( GLOBAL, 1, 0, 1, none) /* push 'globalThis' (js->global) */OP_DEF( OBJECT, 1, 0, 1, none) /* push empty object {} */OP_DEF( PRIVATE_TOKEN, 5, 0, 1, u32) /* push private-name token with cached hash */OP_DEF( ARRAY, 3, 0, 1, npop) /* push array from stack items */OP_DEF( SET_BRAND, 2, 1, 1, u8) /* obj -> obj (brand id) */OP_DEF( REGEXP, 1, 2, 1, none) /* pattern flags -> regexp */OP_DEF( CLOSURE, 5, 0, 1, const) /* push closure from func pool */
OP_DEF( POP, 1, 1, 0, none) /* a -> */OP_DEF( DUP, 1, 1, 2, none) /* a -> a a */OP_DEF( DUP2, 1, 2, 4, none) /* a b -> a b a b */OP_DEF( SWAP, 1, 2, 2, none) /* a b -> b a */OP_DEF( ROT3L, 1, 3, 3, none) /* x a b -> a b x */OP_DEF( ROT3R, 1, 3, 3, none) /* a b x -> x a b */OP_DEF( NIP, 1, 2, 1, none) /* a b -> b */OP_DEF( NIP2, 1, 3, 1, none) /* a b c -> c */OP_DEF( INSERT2, 1, 2, 3, none) /* obj a -> a obj a */OP_DEF( INSERT3, 1, 3, 4, none) /* obj prop a -> a obj prop a */OP_DEF( SWAP_UNDER, 1, 3, 3, none) /* a b c -> b a c */OP_DEF( ROT4_UNDER, 1, 4, 4, none) /* a b c d -> c a b d */
OP_DEF( GET_LOCAL, 3, 0, 1, loc)OP_DEF( PUT_LOCAL, 3, 1, 0, loc) /* store, consume */OP_DEF( SET_LOCAL, 3, 1, 1, loc) /* store, keep on stack */OP_DEF( GET_LOCAL8, 2, 0, 1, loc8) /* short encoding */OP_DEF( PUT_LOCAL8, 2, 1, 0, loc8)OP_DEF( SET_LOCAL8, 2, 1, 1, loc8)OP_DEF( SET_LOCAL_UNDEF, 3, 0, 0, loc) /* mark TDZ uninitialized */OP_DEF( GET_LOCAL_CHK, 7, 0, 1, loc_atom) /* get + TDZ check (u16 slot, u32 atom) */OP_DEF( PUT_LOCAL_CHK, 7, 1, 0, loc_atom) /* put + TDZ check (u16 slot, u32 atom) */OP_DEF( GET_SLOT_RAW, 3, 0, 1, loc) /* push raw frame slot value (no builder read) */
OP_DEF( GET_ARG, 3, 0, 1, arg)OP_DEF( PUT_ARG, 3, 1, 0, arg)OP_DEF( SET_ARG, 3, 1, 1, arg)OP_DEF( REST, 3, 0, 1, u16) /* collect rest params */
OP_DEF( GET_UPVAL, 3, 0, 1, var_ref)OP_DEF( PUT_UPVAL, 3, 1, 0, var_ref)OP_DEF( SET_UPVAL, 3, 1, 1, var_ref)OP_DEF( CLOSE_UPVAL, 3, 0, 0, loc) /* close upvalues >= loc */
OP_DEF( GET_GLOBAL, 7, 0, 1, atom) /* push global[atom] (atom + ic_idx:u16) */OP_DEF( GET_GLOBAL_UNDEF, 7, 0, 1, atom) /* push undefined if missing (atom + ic_idx:u16) */OP_DEF( PUT_GLOBAL, 5, 1, 0, atom) /* global[atom] = TOS */OP_DEF( LOAD_STABLE_BUILTIN, 2, 0, 2, u8) /* push protected receiver + function (kind:u8) */
OP_DEF( GET_EVAL_GLOBAL, 7, 0, 1, atom) /* resolve through direct-eval environment */OP_DEF( GET_EVAL_GLOBAL_UNDEF, 7, 0, 1, atom) /* eval lookup, undefined if missing */OP_DEF( PUT_EVAL_GLOBAL, 5, 1, 0, atom) /* assign through direct-eval environment */
OP_DEF( GET_FIELD, 7, 1, 1, atom) /* obj -> val (atom + ic_idx:u16) */OP_DEF( GET_FIELD2, 7, 1, 2, atom) /* obj -> obj val (atom + ic_idx:u16) */OP_DEF( PUT_FIELD, 7, 2, 0, atom) /* obj val -> (atom + ic_idx:u16) */OP_DEF( GET_ELEM, 1, 2, 1, none) /* obj key -> val */OP_DEF( GET_ELEM2, 1, 2, 2, none) /* obj key -> obj val */OP_DEF( PUT_ELEM, 1, 3, 0, none) /* obj key val -> */OP_DEF( DEFINE_FIELD, 5, 2, 1, atom) /* obj val -> obj (own prop) */OP_DEF( DEFINE_SLOT, 7, 2, 1, atom) /* obj val -> obj (atom + slot:u16) */OP_DEF( GET_LENGTH, 3, 1, 1, u16) /* obj -> length (ic_idx:u16) */
OP_DEF( GET_FIELD_OPT, 7, 1, 1, atom) /* null-safe obj -> val (atom + ic_idx:u16) */OP_DEF( GET_ELEM_OPT, 1, 2, 1, none) /* null-safe obj key -> val */
OP_DEF( GET_PRIVATE, 1, 2, 1, none) /* obj private_name -> value */OP_DEF( GET_PRIVATE_OPT, 1, 2, 1, none) /* obj private_name -> value|undefined */OP_DEF( PUT_PRIVATE, 1, 3, 1, none) /* obj value private_name -> value */OP_DEF( DEF_PRIVATE, 2, 3, 1, u8) /* obj private_name value -> obj */OP_DEF( HAS_PRIVATE, 1, 2, 1, none) /* obj private_name -> bool */
OP_DEF( GET_SUPER, 1, 1, 1, none) /* obj -> super */OP_DEF( GET_SUPER_VAL, 1, 3, 1, none) /* this obj prop -> value */OP_DEF( PUT_SUPER_VAL, 1, 4, 0, none) /* this obj prop value -> */
OP_DEF( ADD, 1, 2, 1, none)OP_DEF( SUB, 1, 2, 1, none)OP_DEF( MUL, 1, 2, 1, none)OP_DEF( DIV, 1, 2, 1, none)OP_DEF( ADD_NUM, 1, 2, 1, none) /* numeric-only fast path */OP_DEF( SUB_NUM, 1, 2, 1, none) /* numeric-only fast path */OP_DEF( MUL_NUM, 1, 2, 1, none) /* numeric-only fast path */OP_DEF( DIV_NUM, 1, 2, 1, none) /* numeric-only fast path */OP_DEF( MOD, 1, 2, 1, none)OP_DEF( EXP, 1, 2, 1, none)OP_DEF( NEG, 1, 1, 1, none) /* unary minus */OP_DEF( UPLUS, 1, 1, 1, none) /* unary plus (ToNumber) */OP_DEF( INC, 1, 1, 1, none) /* +1 */OP_DEF( DEC, 1, 1, 1, none) /* -1 */OP_DEF( POST_INC, 1, 1, 2, none) /* -> old new */OP_DEF( POST_DEC, 1, 1, 2, none) /* -> old new */OP_DEF( INC_LOCAL, 2, 0, 0, loc8) /* locals[i]++ in-place */OP_DEF( DEC_LOCAL, 2, 0, 0, loc8) /* locals[i]-- in-place */OP_DEF( ADD_LOCAL, 2, 1, 0, loc8) /* locals[i] += TOS */OP_DEF( STR_APPEND_LOCAL, 3, 1, 0, loc) /* logical slot += TOS via builder */OP_DEF( STR_ALC_SNAPSHOT, 3, 2, 0, loc) /* logical slot = snapshot + TOS */OP_DEF( STR_FLUSH_LOCAL, 3, 0, 0, loc) /* materialize logical slot builder */
OP_DEF( EQ, 1, 2, 1, none) /* == (abstract) */OP_DEF( NE, 1, 2, 1, none) /* != */OP_DEF( SEQ, 1, 2, 1, none) /* === (strict, matches TOK_SEQ) */OP_DEF( SNE, 1, 2, 1, none) /* !== (strict, matches TOK_SNE) */OP_DEF( LT, 1, 2, 1, none)OP_DEF( LE, 1, 2, 1, none)OP_DEF( GT, 1, 2, 1, none)OP_DEF( GE, 1, 2, 1, none)OP_DEF( INSTANCEOF, 3, 2, 1, u16) /* l r -> bool (ic_idx:u16) */OP_DEF( IN, 1, 2, 1, none)OP_DEF( IN_FIELD, 7, 1, 1, atom) /* obj -> bool (atom in obj; atom + ic_idx:u16) */OP_DEF( IS_NULLISH, 1, 1, 1, none) /* TOS is null|undefined? */OP_DEF( IS_UNDEF_OR_NULL, 1, 1, 1, none) /* same, for ?? chains */
OP_DEF( BAND, 1, 2, 1, none) /* & (matches TOK_AND) */OP_DEF( BOR, 1, 2, 1, none) /* | (matches TOK_OR) */OP_DEF( BXOR, 1, 2, 1, none) /* ^ (matches TOK_XOR) */OP_DEF( BNOT, 1, 1, 1, none) /* ~ (matches TOK_TILDA) */OP_DEF( SHL, 1, 2, 1, none) /* << */OP_DEF( SHR, 1, 2, 1, none) /* >> (signed) */OP_DEF( USHR, 1, 2, 1, none) /* >>> (matches TOK_ZSHR) */
OP_DEF( NOT, 1, 1, 1, none) /* ! */OP_DEF( TYPEOF, 1, 1, 1, none)OP_DEF( IS_PRIMITIVE_TYPE, 2, 1, 1, u8) /* typeof primitive comparison without a string */OP_DEF( VOID, 1, 1, 1, none) /* eval + push undefined */OP_DEF( DELETE, 1, 2, 1, none) /* obj key -> bool */OP_DEF( DELETE_VAR, 5, 0, 1, atom) /* delete unqualified name */OP_DEF( DELETE_EVAL_VAR, 5, 0, 1, atom) /* delete through direct-eval environment */
OP_DEF( JMP, 5, 0, 0, label) /* unconditional */OP_DEF( JMP_FALSE, 5, 1, 0, label) /* pop + branch if falsy */OP_DEF( JMP_TRUE, 5, 1, 0, label) /* pop + branch if truthy */OP_DEF( JMP_FALSE_PEEK, 5, 1, 1, label) /* peek + branch if falsy */OP_DEF( JMP_TRUE_PEEK, 5, 1, 1, label) /* peek + branch if truthy */OP_DEF( JMP_NOT_NULLISH, 5, 1, 1, label) /* peek + branch if NOT null/undefined */OP_DEF( JMP8, 2, 0, 0, label8) /* short unconditional */OP_DEF( JMP_FALSE8, 2, 1, 0, label8) /* short conditional */OP_DEF( JMP_TRUE8, 2, 1, 0, label8) /* short conditional */
OP_DEF( CALL, 3, 1, 1, npop) /* func args... -> result */OP_DEF( CALL_METHOD, 3, 2, 1, npop) /* this func args... -> result */OP_DEF( CALL_SUPER, 3, 3, 1, npop) /* this super new.target args... -> this */OP_DEF( CALL_IS_PROTO, 3, 3, 1, u16) /* this func arg -> bool (ic_idx:u16) */OP_DEF( CALL_ARRAY_INCLUDES, 3, 2, 1, npop) /* this func args... -> bool */OP_DEF( CALL_CHAR_CODE_AT, 3, 2, 1, npop) /* this func args... -> result */OP_DEF( CALL_STRING_INTRINSIC, 4, 2, 1, u8_npop) /* this func args... -> result (kind:u8 argc:u16) */OP_DEF( CALL_MAP_TEMPLATE, 5, 2, 1, map_template) /* this func substitutions... -> result; descriptor:u32 */OP_DEF( CALL_STABLE_BUILTIN, 4, 2, 1, u8_npop) /* this func args... -> result (kind:u8 argc:u16) */OP_DEF( CALL_CALL, 3, 1, 1, npop_u8_u8) /* X a... b... -> X(a...)(b...); n1:u8 n2:u8 — fuses curried steps */OP_DEF( CALL_CALL_SLOT, 3, 2, 1, loc) /* X a -> X(a)(slot); slot read after X on fallback */OP_DEF( RE_LITERAL_EXEC, 1, 3, 1, none) /* pattern flags arg -> exec result */OP_DEF( STR_RE_LITERAL_REPLACE, 1, 4, 1, none) /* str pattern flags repl -> string */OP_DEF( RE_EXEC_TRUTHY, 1, 3, 1, none) /* this func arg -> bool */OP_DEF( RE_EXEC_DISCARD, 1, 3, 0, none) /* this func arg -> (exec side effects only) */OP_DEF( TAIL_MAP_TEMPLATE, 5, 2, 0, map_template) /* tail Map.get/has with descriptor:u32 */OP_DEF( TAIL_CALL, 3, 1, 0, npop) /* tail-position call */OP_DEF( TAIL_CALL_METHOD, 3, 2, 0, npop)OP_DEF( NEW, 3, 2, 1, npop) /* func new.target args -> obj */OP_DEF( APPLY, 3, 2, 1, npop) /* func this args... -> result */OP_DEF( SUPER_APPLY, 3, 3, 1, npop) /* this super new.target args... -> this */OP_DEF( NEW_APPLY, 3, 2, 1, npop) /* func new.target args... -> obj */OP_DEF( CALL_SPREAD, 3, 2, 1, npop) /* func this args... iterable -> result */OP_DEF( SUPER_FORWARD, 1, 3, 1, none) /* this super new.target -> this (frame arguments) */OP_DEF( EVAL, 5, 2, 1, u32) /* source new.target -> result (scope:u32) */OP_DEF( RETURN, 1, 1, 0, none)OP_DEF( RETURN_UNDEF, 1, 0, 0, none)OP_DEF( CHECK_CTOR, 1, 0, 0, none) /* verify called with new */OP_DEF( CHECK_CTOR_RET, 1, 1, 2, none) /* validate constructor return */OP_DEF( HALT, 1, 0, 0, none) /* stop execution */
OP_DEF( THROW, 1, 1, 0, none)OP_DEF( THROW_ERROR, 6, 0, 0, atom_u8) /* throw built-in error */OP_DEF( TRY_PUSH, 5, 0, 0, label) /* push catch handler */OP_DEF( TRY_PUSH_FINALLY, 5, 0, 0, label) /* push finally-protecting handler */OP_DEF( TRY_POP, 1, 0, 0, none) /* pop catch handler */OP_DEF( CATCH, 5, 0, 0, label) /* caught value already pushed by unwinder; finally addr */OP_DEF( FINALLY, 5, 0, 0, label) /* enter finally block */OP_DEF( FINALLY_RET, 1, 0, 0, none) /* return from finally (consumes the unwinder's completion, if any) */OP_DEF( FINALLY_DISCARD, 1, 0, 0, none) /* pop finally handler, drop completion */OP_DEF( UNWIND_JMP, 7, 0, 0, label) /* jump running n finally blocks */OP_DEF( NIP_CATCH, 1, 2, 1, none) /* catch ... a -> a */
OP_DEF( USING_PUSH, 1, 2, 1, none) /* entries resource -> resource */OP_DEF( USING_PUSH_ASYNC, 1, 2, 1, none) /* entries resource -> resource */OP_DEF( DISPOSE_RESOURCE, 1, 1, 1, none) /* resource -> completion */OP_DEF( DISPOSE_RESOURCE_ASYNC, 1, 1, 1, none) /* resource -> promise/completion */
OP_DEF( USING_DISPOSE, 1, 1, 1, none) /* entries -> completion */OP_DEF( USING_DISPOSE_ASYNC, 1, 1, 1, none) /* entries -> promise/completion */OP_DEF( USING_DISPOSE_SUPPRESSED, 1, 2, 1, none) /* entries completion -> completion */OP_DEF( USING_DISPOSE_ASYNC_SUPPRESSED, 1, 2, 1, none) /* entries completion -> promise/completion */
OP_DEF( FOR_IN, 1, 1, 1, none) /* obj -> iterator */OP_DEF( FOR_OF, 1, 1, 3, none) /* iterable -> iter next catch_off */OP_DEF( FOR_AWAIT_OF, 1, 1, 3, none) /* async iterable -> iter next catch_off */OP_DEF( ITER_NEXT, 2, 3, 5, u8) /* advance iterator (u8 hint) */OP_DEF( ITER_GET_VALUE, 1, 2, 3, none) /* catch_off obj -> catch_off value done */OP_DEF( ITER_CLOSE, 2, 3, 0, u8) /* close iterator; u8 suppresses close errors */OP_DEF( ITER_CLOSE_ASYNC, 1, 3, 1, none) /* close async iterator -> awaitable */OP_DEF( ITER_CLOSE_CHECK, 1, 1, 0, none) /* validate awaited async close result */OP_DEF( ITER_CALL, 2, 4, 5, u8) /* call iterator method */OP_DEF( AWAIT_ITER_NEXT, 1, 3, 5, none) /* async iterator next -> iter next tag value done */OP_DEF( DESTRUCTURE_INIT, 1, 1, 3, none) /* iterable -> iter next tag */OP_DEF( DESTRUCTURE_NEXT, 1, 3, 4, none) /* iter next tag -> iter next tag value|undef */OP_DEF( DESTRUCTURE_REST, 1, 3, 4, none) /* iter next tag -> iter next tag array */OP_DEF( DESTRUCTURE_CLOSE, 2, 3, 0, u8) /* close destructuring iterator; u8 suppresses errors */
OP_DEF( AWAIT, 1, 1, 1, none) /* promise -> resolved value */OP_DEF( AWAIT_RETURN, 1, 1, 0, none) /* value -> (settles the async promise once awaited) */OP_DEF( YIELD, 1, 1, 1, none) /* val -> received */OP_DEF( ASYNC_YIELD, 1, 1, 1, none) /* val -> awaited val, or yields a primitive and skips the next YIELD */OP_DEF( YIELD_STAR_INIT, 3, 1, 0, loc) /* iterable -> delegate locals */OP_DEF( YIELD_STAR_NEXT, 3, 1, 1, loc) /* sent -> final value | suspend */OP_DEF( YIELD_STAR_THROW, 3, 1, 1, loc) /* thrown -> final value | suspend */OP_DEF( YIELD_STAR_RETURN, 3, 1, 1, loc) /* return value -> final value | suspend */OP_DEF( SPREAD, 1, 1, 0, none) /* arr iterable -> arr */
OP_DEF( DEFINE_METHOD, 6, 2, 1, atom_u8) /* obj func -> obj (flags: get/set/static) */OP_DEF( DEFINE_METHOD_COMP,2, 3, 1, u8) /* obj key func -> obj (computed name) */OP_DEF( SET_NAME, 5, 1, 1, atom) /* set .name on function */OP_DEF( SET_NAME_COMP, 1, 2, 2, none) /* set .name from computed key */OP_DEF( SET_PROTO, 1, 2, 1, none) /* obj proto -> obj */OP_DEF( SET_HOME_OBJ, 1, 2, 2, none) /* func home -> func home */OP_DEF( APPEND, 1, 2, 1, none) /* arr val -> arr */OP_DEF( COPY_DATA_PROPS, 3, 2, 2, npop) /* dst src excluded... -> dst src (CopyDataProperties) */
OP_DEF( DEFINE_CLASS, 14, 2, 2, atom_u8) /* parent ctor -> ctor proto */OP_DEF( DEFINE_CLASS_COMP, 14, 3, 3, atom_u8) /* computed name variant */
OP_DEF( TO_OBJECT, 1, 1, 1, none) /* coerce to object wrapper */OP_DEF( TO_PROPKEY, 1, 1, 1, none) /* coerce to string/symbol */OP_DEF( IS_UNDEF, 1, 1, 1, none) /* TOS === undefined */OP_DEF( IS_NULL, 1, 1, 1, none) /* TOS === null */
OP_DEF( IMPORT, 1, 2, 1, none) /* dynamic import(specifier) */OP_DEF( IMPORT_SYNC, 1, 1, 1, none) /* sync module load for static import */OP_DEF( IMPORT_DEFAULT, 1, 1, 1, none) /* ns -> default (SLOT_DEFAULT or ns) */OP_DEF( IMPORT_NAMED, 5, 1, 1, atom) /* ns -> named export (throw if missing) */OP_DEF( EXPORT, 5, 1, 0, atom) /* value -> (module namespace[name] = value) */OP_DEF( EXPORT_ALL, 1, 1, 0, none) /* ns -> (export all properties) */
OP_DEF( WITH_TRY_GET, 9, 1, 1, atom_label)OP_DEF( WITH_TRY_CALL, 9, 1, 2, atom_label)OP_DEF( WITH_TRY_PUT, 9, 2, 1, atom_label)OP_DEF( WITH_TRY_DEL, 9, 1, 1, atom_label)
OP_DEF( SPECIAL_OBJ, 2, 0, 1, u8) /* arguments, new.target, super, module import, arguments.length */OP_DEF( EMPTY, 1, 0, 1, none) /* push T_EMPTY (array hole) */OP_DEF( DEBUGGER, 1, 0, 0, none) /* debugger statement (breakpoint hook) */OP_DEF( NOP, 1, 0, 0, none) /* no operation */OP_DEF( PUT_CONST, 5, 1, 0, const) /* constant pool[idx] = TOS */OP_DEF( TO_STRING, 1, 1, 1, none) /* val -> toString(val) */OP_DEF( TO_STRING_DEFER_NUMBER, 1, 1, 1, none) /* val -> number | toString(val) */
op_def( LABEL, 5, 0, 0, label) /* jump target marker */op_def( LINE_NUM, 5, 0, 0, u32) /* source line for debug info */op_def( COL_NUM, 5, 0, 0, u32) /* source column for debug info */
OP_DEF( INIT_EVAL_ENV, 1, 0, 0, none)OP_DEF( CLOSURE_EVAL, 9, 0, 1, u32)OP_DEF( PUT_EVAL_FUNCTION, 5, 1, 0, atom)OP_DEF( INIT_GLOBAL_LEX, 5, 1, 0, atom)OP_DEF( CLOSURE_ARGS, 5, 0, 1, const) /* closure in a function with mapped arguments: link captured params */#undef OP_DEF#undef op_def#endif
#ifdef OP_FLAGOP_FLAG(CONST , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(CONST_I8 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(CONST8 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(UNDEF , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(NULL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(TRUE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(FALSE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(THIS , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(GLOBAL , SV_OPF_JIT_ELIGIBLE)OP_FLAG(OBJECT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(ARRAY , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(EMPTY , SV_OPF_JIT_ELIGIBLE)OP_FLAG(REGEXP , SV_OPF_JIT_ELIGIBLE)OP_FLAG(CLOSURE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_CLOSE_UPVAL)
OP_FLAG(POP , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(DUP , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(DUP2 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(NIP , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(SWAP , SV_OPF_JIT_ELIGIBLE)OP_FLAG(SWAP_UNDER , SV_OPF_JIT_ELIGIBLE)OP_FLAG(ROT3L , SV_OPF_JIT_ELIGIBLE)OP_FLAG(ROT4_UNDER , SV_OPF_JIT_ELIGIBLE)OP_FLAG(INSERT2 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(INSERT3 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)
OP_FLAG(GET_LOCAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(PUT_LOCAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_LOCAL_NUMERIC_BAILOUT)OP_FLAG(SET_LOCAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_LOCAL_NUMERIC_BAILOUT)OP_FLAG(GET_LOCAL8 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(PUT_LOCAL8 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_LOCAL_NUMERIC_BAILOUT)OP_FLAG(SET_LOCAL8 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_LOCAL_NUMERIC_BAILOUT)OP_FLAG(SET_LOCAL_UNDEF , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(GET_SLOT_RAW , SV_OPF_JIT_ELIGIBLE)
OP_FLAG(GET_ARG , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(SET_ARG , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(PUT_ARG , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(REST , SV_OPF_JIT_ELIGIBLE)
OP_FLAG(GET_UPVAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(PUT_UPVAL , SV_OPF_JIT_ELIGIBLE)OP_FLAG(SET_UPVAL , SV_OPF_JIT_ELIGIBLE)OP_FLAG(CLOSE_UPVAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_CLOSE_UPVAL)
OP_FLAG(GET_GLOBAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(GET_GLOBAL_UNDEF , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(PUT_GLOBAL , SV_OPF_JIT_ELIGIBLE)OP_FLAG(LOAD_STABLE_BUILTIN , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(GET_EVAL_GLOBAL , SV_OPF_JIT_ELIGIBLE)OP_FLAG(GET_EVAL_GLOBAL_UNDEF , SV_OPF_JIT_ELIGIBLE)OP_FLAG(PUT_EVAL_GLOBAL , SV_OPF_JIT_ELIGIBLE)OP_FLAG(DELETE_EVAL_VAR , SV_OPF_JIT_ELIGIBLE)
OP_FLAG(IMPORT_DEFAULT , SV_OPF_JIT_ELIGIBLE)OP_FLAG(IMPORT_NAMED , SV_OPF_JIT_ELIGIBLE)OP_FLAG(EXPORT , SV_OPF_JIT_ELIGIBLE)
OP_FLAG(GET_FIELD , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(GET_FIELD2 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(PUT_FIELD , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(GET_ELEM , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(GET_ELEM2 , SV_OPF_JIT_ELIGIBLE)OP_FLAG(PUT_ELEM , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(DEFINE_FIELD , SV_OPF_JIT_ELIGIBLE)OP_FLAG(DEFINE_SLOT , SV_OPF_JIT_ELIGIBLE)OP_FLAG(GET_LENGTH , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(GET_FIELD_OPT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(GET_ELEM_OPT , SV_OPF_JIT_ELIGIBLE)OP_FLAG(GET_PRIVATE , SV_OPF_JIT_ELIGIBLE)OP_FLAG(PUT_PRIVATE , SV_OPF_JIT_ELIGIBLE)OP_FLAG(DEF_PRIVATE , SV_OPF_JIT_ELIGIBLE)
OP_FLAG(ADD , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(SUB , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(MUL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(DIV , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(ADD_NUM , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(SUB_NUM , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(MUL_NUM , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(DIV_NUM , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(MOD , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(NEG , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(INC , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_INC_LOCAL)OP_FLAG(DEC , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_INC_LOCAL)OP_FLAG(POST_INC , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_INC_LOCAL)OP_FLAG(POST_DEC , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_INC_LOCAL)OP_FLAG(INC_LOCAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_INC_LOCAL)OP_FLAG(DEC_LOCAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_INC_LOCAL)OP_FLAG(ADD_LOCAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(STR_APPEND_LOCAL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_BUILDER_TARGET)OP_FLAG(STR_ALC_SNAPSHOT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_BUILDER_TARGET)OP_FLAG(STR_FLUSH_LOCAL , SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_BUILDER_TARGET)
OP_FLAG(EQ , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(NE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(SEQ , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(SNE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(LT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(LE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(GT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(GE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(INSTANCEOF , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(IN , SV_OPF_JIT_ELIGIBLE)OP_FLAG(IN_FIELD , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(IS_UNDEF_OR_NULL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)
OP_FLAG(BAND , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(BOR , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(BXOR , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(BNOT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(SHL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(SHR , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(USHR , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_BAILOUT)
OP_FLAG(NOT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(TYPEOF , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT)OP_FLAG(IS_PRIMITIVE_TYPE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(VOID , SV_OPF_JIT_ELIGIBLE)OP_FLAG(DELETE , SV_OPF_JIT_ELIGIBLE)
OP_FLAG(JMP , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_BRANCH32 | SV_OPF_JIT_OSR_BACKEDGE | SV_OPF_TERMINAL)OP_FLAG(JMP_FALSE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_BRANCH32 | SV_OPF_JIT_OSR_BACKEDGE)OP_FLAG(JMP_TRUE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_BRANCH32 | SV_OPF_JIT_OSR_BACKEDGE)OP_FLAG(JMP_FALSE_PEEK , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_BRANCH32 | SV_OPF_JIT_OSR_BACKEDGE)OP_FLAG(JMP_TRUE_PEEK , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_BRANCH32 | SV_OPF_JIT_OSR_BACKEDGE)OP_FLAG(JMP_NOT_NULLISH , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_BRANCH32 | SV_OPF_JIT_OSR_BACKEDGE)OP_FLAG(JMP8 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_BRANCH8 | SV_OPF_JIT_OSR_BACKEDGE | SV_OPF_TERMINAL)OP_FLAG(JMP_FALSE8 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_BRANCH8 | SV_OPF_JIT_OSR_BACKEDGE)OP_FLAG(JMP_TRUE8 , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_BRANCH8 | SV_OPF_JIT_OSR_BACKEDGE)
OP_FLAG(CALL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_IC_EPOCH | SV_OPF_JIT_INLINE_ARGC)OP_FLAG(CALL_METHOD , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_IC_EPOCH | SV_OPF_JIT_INLINE_ARGC)OP_FLAG(CALL_SUPER , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(CALL_IS_PROTO , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(CALL_ARRAY_INCLUDES , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(CALL_CHAR_CODE_AT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(CALL_STRING_INTRINSIC , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(CALL_MAP_TEMPLATE , SV_OPF_JIT_ELIGIBLE)OP_FLAG(CALL_STABLE_BUILTIN , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(CALL_CALL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(CALL_CALL_SLOT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_IC_EPOCH)OP_FLAG(RE_EXEC_TRUTHY , SV_OPF_JIT_ELIGIBLE)OP_FLAG(RE_EXEC_DISCARD , SV_OPF_JIT_ELIGIBLE)OP_FLAG(TAIL_MAP_TEMPLATE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_TERMINAL)OP_FLAG(TAIL_CALL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_TCO_ARGS | SV_OPF_JIT_NEEDS_IC_EPOCH | SV_OPF_JIT_INLINE_ARGC | SV_OPF_TERMINAL)OP_FLAG(TAIL_CALL_METHOD , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_TCO_ARGS | SV_OPF_JIT_NEEDS_IC_EPOCH | SV_OPF_JIT_INLINE_ARGC | SV_OPF_TERMINAL)OP_FLAG(NEW , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(APPLY , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(CALL_SPREAD , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(SUPER_FORWARD , SV_OPF_JIT_ELIGIBLE)OP_FLAG(NEW_APPLY , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(RETURN , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_TERMINAL)OP_FLAG(RETURN_UNDEF , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE | SV_OPF_TERMINAL)OP_FLAG(AWAIT_RETURN , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_TERMINAL)OP_FLAG(AWAIT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(AWAIT_ITER_NEXT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_BAILOUT | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(CHECK_CTOR , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(HALT , SV_OPF_JIT_ELIGIBLE | SV_OPF_TERMINAL)
OP_FLAG(THROW , SV_OPF_JIT_ELIGIBLE | SV_OPF_TERMINAL)OP_FLAG(THROW_ERROR , SV_OPF_JIT_ELIGIBLE | SV_OPF_TERMINAL)OP_FLAG(TRY_PUSH , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_BRANCH32)OP_FLAG(TRY_PUSH_FINALLY , SV_OPF_JIT_BRANCH32)OP_FLAG(TRY_POP , SV_OPF_JIT_ELIGIBLE)OP_FLAG(CATCH , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_BRANCH32)OP_FLAG(FINALLY , SV_OPF_JIT_BRANCH32)OP_FLAG(UNWIND_JMP , SV_OPF_JIT_BRANCH32 | SV_OPF_TERMINAL)OP_FLAG(FINALLY_RET , SV_OPF_TERMINAL)OP_FLAG(NIP_CATCH , SV_OPF_JIT_ELIGIBLE)
OP_FLAG(FOR_OF , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_ITER_ROOTS)OP_FLAG(ITER_NEXT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_ITER_ROOTS)OP_FLAG(ITER_CLOSE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_ITER_ROOTS)OP_FLAG(DESTRUCTURE_INIT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_ITER_ROOTS)OP_FLAG(DESTRUCTURE_NEXT , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_ITER_ROOTS)OP_FLAG(DESTRUCTURE_CLOSE , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF | SV_OPF_JIT_NEEDS_ITER_ROOTS)
OP_FLAG(DEFINE_METHOD_COMP , SV_OPF_JIT_ELIGIBLE)OP_FLAG(SET_NAME , SV_OPF_JIT_ELIGIBLE)OP_FLAG(SET_PROTO , SV_OPF_JIT_ELIGIBLE)OP_FLAG(COPY_DATA_PROPS , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_NEEDS_ARGS_BUF)OP_FLAG(SPREAD , SV_OPF_JIT_ELIGIBLE)OP_FLAG(APPEND , SV_OPF_JIT_ELIGIBLE)OP_FLAG(TO_PROPKEY , SV_OPF_JIT_ELIGIBLE)OP_FLAG(IS_UNDEF , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(IS_NULL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)
OP_FLAG(SPECIAL_OBJ , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(NOP , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(LABEL , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(LINE_NUM , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(COL_NUM , SV_OPF_JIT_ELIGIBLE | SV_OPF_JIT_INLINEABLE)OP_FLAG(TO_STRING , SV_OPF_JIT_ELIGIBLE)OP_FLAG(TO_STRING_DEFER_NUMBER, SV_OPF_JIT_ELIGIBLE)#undef OP_FLAG#endif
#ifdef OP_IC_SLOTOP_IC_SLOT(GET_GLOBAL)OP_IC_SLOT(GET_GLOBAL_UNDEF)OP_IC_SLOT(GET_EVAL_GLOBAL)OP_IC_SLOT(GET_EVAL_GLOBAL_UNDEF)OP_IC_SLOT(GET_FIELD)OP_IC_SLOT(GET_FIELD2)OP_IC_SLOT(GET_FIELD_OPT)OP_IC_SLOT(IN_FIELD)OP_IC_SLOT(PUT_FIELD)#undef OP_IC_SLOT#endif