jseption 0.0.0-stage → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +191 -2
  3. package/dist/atoms.d.ts +255 -0
  4. package/dist/atoms.js +445 -0
  5. package/dist/atoms.js.map +1 -0
  6. package/dist/builtins/array.d.ts +3 -0
  7. package/dist/builtins/array.js +116 -0
  8. package/dist/builtins/array.js.map +1 -0
  9. package/dist/builtins/bigint.d.ts +3 -0
  10. package/dist/builtins/bigint.js +122 -0
  11. package/dist/builtins/bigint.js.map +1 -0
  12. package/dist/builtins/boolean.d.ts +2 -0
  13. package/dist/builtins/boolean.js +26 -0
  14. package/dist/builtins/boolean.js.map +1 -0
  15. package/dist/builtins/date.d.ts +3 -0
  16. package/dist/builtins/date.js +1046 -0
  17. package/dist/builtins/date.js.map +1 -0
  18. package/dist/builtins/error.d.ts +2 -0
  19. package/dist/builtins/error.js +154 -0
  20. package/dist/builtins/error.js.map +1 -0
  21. package/dist/builtins/function.d.ts +5 -0
  22. package/dist/builtins/function.js +164 -0
  23. package/dist/builtins/function.js.map +1 -0
  24. package/dist/builtins/global.d.ts +2 -0
  25. package/dist/builtins/global.js +29 -0
  26. package/dist/builtins/global.js.map +1 -0
  27. package/dist/builtins/index.d.ts +3 -0
  28. package/dist/builtins/index.js +139 -0
  29. package/dist/builtins/index.js.map +1 -0
  30. package/dist/builtins/json.d.ts +6 -0
  31. package/dist/builtins/json.js +984 -0
  32. package/dist/builtins/json.js.map +1 -0
  33. package/dist/builtins/mapset.d.ts +4 -0
  34. package/dist/builtins/mapset.js +234 -0
  35. package/dist/builtins/mapset.js.map +1 -0
  36. package/dist/builtins/math.d.ts +2 -0
  37. package/dist/builtins/math.js +62 -0
  38. package/dist/builtins/math.js.map +1 -0
  39. package/dist/builtins/native.d.ts +22 -0
  40. package/dist/builtins/native.js +250 -0
  41. package/dist/builtins/native.js.map +1 -0
  42. package/dist/builtins/number.d.ts +4 -0
  43. package/dist/builtins/number.js +76 -0
  44. package/dist/builtins/number.js.map +1 -0
  45. package/dist/builtins/object.d.ts +12 -0
  46. package/dist/builtins/object.js +575 -0
  47. package/dist/builtins/object.js.map +1 -0
  48. package/dist/builtins/promise.d.ts +13 -0
  49. package/dist/builtins/promise.js +582 -0
  50. package/dist/builtins/promise.js.map +1 -0
  51. package/dist/builtins/proxy.d.ts +3 -0
  52. package/dist/builtins/proxy.js +226 -0
  53. package/dist/builtins/proxy.js.map +1 -0
  54. package/dist/builtins/reflect.d.ts +2 -0
  55. package/dist/builtins/reflect.js +109 -0
  56. package/dist/builtins/reflect.js.map +1 -0
  57. package/dist/builtins/regexp.d.ts +2 -0
  58. package/dist/builtins/regexp.js +203 -0
  59. package/dist/builtins/regexp.js.map +1 -0
  60. package/dist/builtins/string.d.ts +4 -0
  61. package/dist/builtins/string.js +135 -0
  62. package/dist/builtins/string.js.map +1 -0
  63. package/dist/builtins/symbol.d.ts +3 -0
  64. package/dist/builtins/symbol.js +98 -0
  65. package/dist/builtins/symbol.js.map +1 -0
  66. package/dist/builtins/typedarray.d.ts +15 -0
  67. package/dist/builtins/typedarray.js +1838 -0
  68. package/dist/builtins/typedarray.js.map +1 -0
  69. package/dist/builtins/weakref.d.ts +18 -0
  70. package/dist/builtins/weakref.js +130 -0
  71. package/dist/builtins/weakref.js.map +1 -0
  72. package/dist/dump.d.ts +2 -0
  73. package/dist/dump.js +124 -0
  74. package/dist/dump.js.map +1 -0
  75. package/dist/embed.d.ts +18 -0
  76. package/dist/embed.js +286 -0
  77. package/dist/embed.js.map +1 -0
  78. package/dist/interpreter.d.ts +81 -0
  79. package/dist/interpreter.js +3768 -0
  80. package/dist/interpreter.js.map +1 -0
  81. package/dist/jit.d.ts +59 -0
  82. package/dist/jit.js +3440 -0
  83. package/dist/jit.js.map +1 -0
  84. package/dist/jit_hook.d.ts +21 -0
  85. package/dist/jit_hook.js +4 -0
  86. package/dist/jit_hook.js.map +1 -0
  87. package/dist/jit_runtime.d.ts +104 -0
  88. package/dist/jit_runtime.js +721 -0
  89. package/dist/jit_runtime.js.map +1 -0
  90. package/dist/jit_stack.d.ts +24 -0
  91. package/dist/jit_stack.js +227 -0
  92. package/dist/jit_stack.js.map +1 -0
  93. package/dist/jseption.d.ts +15 -0
  94. package/dist/jseption.js +61 -0
  95. package/dist/jseption.js.map +1 -0
  96. package/dist/opcodes.d.ts +347 -0
  97. package/dist/opcodes.js +322 -0
  98. package/dist/opcodes.js.map +1 -0
  99. package/dist/parser.d.ts +283 -0
  100. package/dist/parser.js +9752 -0
  101. package/dist/parser.js.map +1 -0
  102. package/dist/qjs.d.ts +2 -0
  103. package/dist/qjs.js +122 -0
  104. package/dist/qjs.js.map +1 -0
  105. package/dist/quickjs.d.ts +460 -0
  106. package/dist/quickjs.js +3408 -0
  107. package/dist/quickjs.js.map +1 -0
  108. package/dist/std.d.ts +4 -0
  109. package/dist/std.js +273 -0
  110. package/dist/std.js.map +1 -0
  111. package/dist/values.d.ts +447 -0
  112. package/dist/values.js +461 -0
  113. package/dist/values.js.map +1 -0
  114. package/package.json +59 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * jseption: TypeScript port of QuickJS\n *\n * Port of the QuickJS tokenizer, parser and bytecode compiler\n * (quickjs.c: js_parse_*, emit_*, resolve_variables, resolve_labels,\n * js_create_function, JS_EvalInternal).\n *\n * As in QuickJS, parsing is done in a single pass that directly emits\n * bytecode (\"phase 1\"), followed by a variable resolution pass\n * (\"phase 2\": resolve_variables) and a label resolution / peephole pass\n * (\"phase 3\": resolve_labels).\n */\nimport {\n JSContext, JSValue, JSObject, JSAtom, JS_ATOM_NULL, JS_EXCEPTION, JS_IsException, JSFunctionBytecode,\n JSVarDef, JSClosureVar, JSVarKind, JSFunctionKind, JS_MODE_STRICT, JS_MODE_ASYNC, JS_MODE_BACKTRACE_BARRIER,\n JS_EVAL_TYPE_GLOBAL, JS_EVAL_TYPE_MODULE, JS_EVAL_TYPE_DIRECT, JS_EVAL_TYPE_INDIRECT, JS_EVAL_TYPE_MASK,\n JS_EVAL_FLAG_STRICT, JS_EVAL_FLAG_COMPILE_ONLY, JS_EVAL_FLAG_BACKTRACE_BARRIER, JS_EVAL_FLAG_ASYNC,\n JS_NewAtom, JS_AtomToString, JS_AtomGetStr, JS_ThrowSyntaxError, JS_ThrowError2, JSErrorEnum, JS_Throw,\n JS_NewErrorNative, JS_DefinePropertyValue, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_PROP_C_W_E, JS_SetErrorBacktraceDone,\n JS_ATOM_stack, JS_ATOM_lineNumber, JS_ATOM_columnNumber, JS_ATOM_fileName, hooks, JS_Call,\n JS_ATOM_empty_string, JS_ATOM_arguments, JS_ATOM_eval, JS_ATOM_this, JS_ATOM_new_target, JS_ATOM_home_object,\n JS_ATOM_this_active_func, JS_ATOM__eval_, JS_ATOM__ret_, JS_ATOM__var_, JS_ATOM__arg_var_, JS_ATOM_length,\n JS_ATOM_name, JS_ATOM_prototype, JS_ATOM_constructor, JS_ATOM_get, JS_ATOM_set, JS_ATOM_of, JS_ATOM___proto__,\n JS_ATOM_let, JS_ATOM_yield, JS_ATOM_await, JS_ATOM_async, JS_ATOM_static, JS_ATOM_as, JS_ATOM_from, JS_ATOM_target,\n JS_ATOM_meta, JS_ATOM_undefined, JS_ATOM_class_fields_init, JS_ATOM_computed_field, JS_ATOM_static_computed_field,\n JS_ATOM_brand, JS_ATOM_hash_constructor, JS_ATOM_Private_brand, JS_ATOM_raw, JS_ATOM_implements, JS_ATOM_interface,\n JS_ATOM_package, JS_ATOM_private, JS_ATOM_protected, JS_ATOM_public, JS_ATOM_enum, JS_ATOM_null, JS_ATOM_false,\n JS_ATOM_true, JS_ATOM_default, JS_ATOM_Symbol_iterator, JS_ATOM_Symbol_asyncIterator, JS_ATOM_message,\n JS_ATOM_TYPE_PRIVATE, JS_ATOM_in, JS_ATOM_function, JS_ATOM_var, JS_ATOM_const, JS_ATOM_done, JS_ATOM_value,\n JS_NewArray, JS_DefinePropertyValueUint32, JS_PROP_ENUMERABLE, JS_ATOM_concat, JS_GetFunctionData,\n JSStackFrame, JS_IsFunction, __JS_AtomIsTaggedInt, __JS_AtomFromUInt32, JS_GetException, JS_ATOM_super, JS_ATOM__with_, JS_ATOM_return, JS_ATOM__default_,\n} from './quickjs.ts';\nimport { OP, OpFmt, opcode_info, short_opcode_info, OP_TEMP_START, OP_TEMP_END, OPSpecialObject, OP_DEFINE_METHOD_METHOD,\n OP_DEFINE_METHOD_GETTER, OP_DEFINE_METHOD_SETTER, OP_DEFINE_METHOD_ENUMERABLE, JS_DEFINE_CLASS_HAS_HERITAGE,\n JS_THROW_VAR_RO, JS_THROW_VAR_REDECL, JS_THROW_VAR_UNINITIALIZED, JS_THROW_ERROR_DELETE_SUPER,\n JS_THROW_ERROR_ITERATOR_THROW, DEFINE_GLOBAL_LEX_VAR, DEFINE_GLOBAL_FUNC_VAR,\n get_u8, get_i8, get_u16, get_i16, get_u32, get_i32, put_u8, put_u16, put_u32 } from './opcodes.ts';\n\n/* ---------------------------------------------------------------------\n Tokens\n --------------------------------------------------------------------- */\n\nexport const enum TOK {\n NUMBER = -128,\n STRING,\n TEMPLATE,\n IDENT,\n REGEXP,\n /* warning: order matters (see js_parse_assign_expr) */\n MUL_ASSIGN,\n DIV_ASSIGN,\n MOD_ASSIGN,\n PLUS_ASSIGN,\n MINUS_ASSIGN,\n SHL_ASSIGN,\n SAR_ASSIGN,\n SHR_ASSIGN,\n AND_ASSIGN,\n XOR_ASSIGN,\n OR_ASSIGN,\n POW_ASSIGN,\n LAND_ASSIGN,\n LOR_ASSIGN,\n DOUBLE_QUESTION_MARK_ASSIGN,\n DEC,\n INC,\n SHL,\n SAR,\n SHR,\n LT,\n LTE,\n GT,\n GTE,\n EQ,\n STRICT_EQ,\n NEQ,\n STRICT_NEQ,\n LAND,\n LOR,\n POW,\n ARROW,\n ELLIPSIS,\n DOUBLE_QUESTION_MARK,\n QUESTION_MARK_DOT,\n ERROR,\n PRIVATE_NAME,\n EOF,\n /* keywords: WARNING: same order as atoms */\n NULL, /* must be first */\n FALSE,\n TRUE,\n IF,\n ELSE,\n RETURN,\n VAR,\n THIS,\n DELETE,\n VOID,\n TYPEOF,\n NEW,\n IN,\n INSTANCEOF,\n DO,\n WHILE,\n FOR,\n BREAK,\n CONTINUE,\n SWITCH,\n CASE,\n DEFAULT,\n THROW,\n TRY,\n CATCH,\n FINALLY,\n FUNCTION,\n DEBUGGER,\n WITH,\n /* FutureReservedWord */\n CLASS,\n CONST,\n ENUM,\n EXPORT,\n EXTENDS,\n IMPORT,\n SUPER,\n /* FutureReservedWords when parsing strict mode code */\n IMPLEMENTS,\n INTERFACE,\n LET,\n PACKAGE,\n PRIVATE,\n PROTECTED,\n PUBLIC,\n STATIC,\n YIELD,\n AWAIT, /* must be last */\n OF, /* only used for js_parse_skip_parens_token() */\n}\n\nconst TOK_FIRST_KEYWORD = TOK.NULL;\nconst TOK_LAST_KEYWORD = TOK.AWAIT;\n\n/* unicode code points */\nconst CP_NBSP = 0x00a0;\nconst CP_BOM = 0xfeff;\nconst CP_LS = 0x2028;\nconst CP_PS = 0x2029;\n\nexport class JSToken {\n val: number = TOK.EOF;\n ptr = 0; /* position in the source */\n /* string */\n str = '';\n sep = 0;\n /* number */\n num: JSValue = undefined;\n /* identifier */\n atom: JSAtom = JS_ATOM_NULL;\n has_escape = false;\n is_reserved = false;\n /* regexp */\n regexp_body = '';\n regexp_flags = '';\n /* template: true if the cooked string contains an invalid escape */\n template_invalid = false;\n}\n\n/* parser flags */\nconst PF_IN_ACCEPTED = 1 << 0; /* allow the 'in' binary operator */\nconst PF_POSTFIX_CALL = 1 << 1; /* allow function calls parsing in js_parse_postfix_expr() */\nconst PF_ARROW_FUNC = 1 << 2; /* allow arrow functions parsing in js_parse_postfix_expr() */\nconst PF_POW_ALLOWED = 1 << 3; /* allow the exponentiation operator in js_parse_unary() */\nconst PF_POW_FORBIDDEN = 1 << 4; /* forbid the exponentiation operator in js_parse_unary() */\n\nexport const enum JSParseFunctionEnum {\n STATEMENT,\n VAR,\n EXPR,\n ARROW,\n GETTER,\n SETTER,\n METHOD,\n CLASS_STATIC_INIT,\n CLASS_CONSTRUCTOR,\n DERIVED_CLASS_CONSTRUCTOR,\n}\n\nexport const enum JSParseExportEnum { NONE, NAMED, DEFAULT }\n\nclass BlockEnv {\n prev: BlockEnv | null = null;\n label_name: JSAtom = JS_ATOM_NULL; /* JS_ATOM_NULL if none */\n label_break = -1; /* -1 if none */\n label_cont = -1; /* -1 if none */\n drop_count = 0; /* number of stack elements to drop */\n label_finally = -1; /* -1 if none */\n scope_level = 0;\n has_iterator = false;\n is_regular_stmt = false;\n}\n\nclass JSGlobalVar {\n cpool_idx = -1; /* if >= 0, index in the constant pool for hoisted function definition */\n force_init = false; /* force initialization to undefined */\n is_lexical = false; /* global let/const definition */\n is_const = false; /* const definition */\n scope_level = 0; /* scope of definition */\n var_name: JSAtom = JS_ATOM_NULL;\n}\n\nclass LabelSlot {\n ref_count = 0;\n pos = -1; /* phase 1 address, -1 means not resolved yet */\n pos2 = -1; /* phase 2 address, -1 means not resolved yet */\n addr = -1; /* phase 3 address, -1 means not resolved yet */\n first_reloc: RelocEntry | null = null;\n}\n\nclass RelocEntry {\n next: RelocEntry | null = null;\n addr = 0; /* address to patch */\n size = 0; /* address size: 1, 2 or 4 bytes */\n}\n\nclass JumpSlot {\n op = 0;\n size = 0;\n pos = 0;\n label = 0;\n}\n\nclass LineNumberSlot {\n pc = 0;\n line_num = 0;\n col_num = 0;\n}\n\nclass JSVarScope {\n parent = 0; /* index into fd->scopes of the enclosing scope */\n first = 0; /* index into fd->vars of the last variable in this scope */\n}\n\n/* growable byte buffer (DynBuf) */\nexport class DynBuf {\n buf: Uint8Array = new Uint8Array(256);\n size = 0;\n private ensure(n: number): void {\n if (this.size + n > this.buf.length) {\n let newlen = this.buf.length * 2;\n while (newlen < this.size + n) newlen *= 2;\n const nb = new Uint8Array(newlen);\n nb.set(this.buf.subarray(0, this.size));\n this.buf = nb;\n }\n }\n putc(c: number): void { this.ensure(1); this.buf[this.size++] = c & 0xff; }\n put_u16(v: number): void { this.ensure(2); put_u16(this.buf, this.size, v); this.size += 2; }\n put_u32(v: number): void { this.ensure(4); put_u32(this.buf, this.size, v); this.size += 4; }\n put_bytes(b: Uint8Array, start: number, len: number): void {\n this.ensure(len);\n this.buf.set(b.subarray(start, start + len), this.size);\n this.size += len;\n }\n put_leb128(v: number): void {\n for (;;) {\n const a = v % 128;\n v = Math.floor(v / 128);\n if (v === 0) { this.putc(a); break; }\n this.putc(a | 0x80);\n }\n }\n put_sleb128(v: number): void {\n this.put_leb128(v < 0 ? (-v) * 2 - 1 : v * 2);\n }\n toArray(): Uint8Array { return this.buf.slice(0, this.size); }\n}\n\nexport class JSFunctionDef {\n ctx: JSContext;\n parent: JSFunctionDef | null;\n parent_cpool_idx = -1; /* index in the constant pool of the parent or -1 if none */\n parent_scope_level = 0; /* scope level in parent at point of definition */\n child_list: JSFunctionDef[] = [];\n\n is_eval = false; /* TRUE if eval code */\n eval_type = 0; /* only valid if is_eval = TRUE */\n is_global_var = false; /* TRUE if variables are not defined locally: eval global, eval module or non strict eval */\n is_func_expr = false; /* TRUE if function expression */\n has_home_object = false; /* TRUE if the home object is available */\n has_prototype = false; /* true if a prototype field is necessary */\n has_simple_parameter_list = true;\n has_parameter_expressions = false; /* if true, an argument scope is created */\n has_use_strict = false; /* to reject directive in special cases */\n has_eval_call = false; /* true if the function contains a call to eval() */\n has_arguments_binding = false; /* true if the 'arguments' binding is available in the function */\n has_this_binding = false; /* true if the 'this' and new.target binding are available in the function */\n new_target_allowed = false; /* true if the 'new.target' does not throw a syntax error */\n super_call_allowed = false; /* true if super() is allowed */\n super_allowed = false; /* true if super. or super[] is allowed */\n arguments_allowed = false; /* true if the 'arguments' identifier is allowed */\n is_derived_class_constructor = false;\n in_function_body = false;\n func_kind: JSFunctionKind = JSFunctionKind.NORMAL;\n func_type: JSParseFunctionEnum = JSParseFunctionEnum.STATEMENT;\n js_mode = 0; /* bitmap of JS_MODE_x */\n func_name: JSAtom = JS_ATOM_NULL; /* JS_ATOM_NULL if no name */\n\n vars: JSVarDef[] = [];\n args: JSVarDef[] = [];\n defined_arg_count = 0;\n var_object_idx = -1; /* -1 if none */\n arg_var_object_idx = -1; /* -1 if none (var object for the argument scope) */\n arguments_var_idx = -1; /* -1 if none */\n arguments_arg_idx = -1; /* argument variable definition in argument scope, -1 if none */\n func_var_idx = -1; /* variable containing the current function (-1 if none, only used if is_func_expr is true) */\n eval_ret_idx = -1; /* variable containing the return value of the eval, -1 if none */\n this_var_idx = -1; /* variable containing the 'this' value, -1 if none */\n new_target_var_idx = -1; /* variable containing the 'new.target' value, -1 if none */\n this_active_func_var_idx = -1; /* variable containing the 'this.active_func' value, -1 if none */\n home_object_var_idx = -1;\n need_home_object = false;\n\n scope_level = 0; /* index into fd->scopes if the current lexical scope */\n scope_first = -1; /* index into vd->vars of first lexically scoped variable */\n scopes: JSVarScope[] = [];\n body_scope = 0; /* scope of the body of the function or eval */\n\n global_vars: JSGlobalVar[] = [];\n\n byte_code = new DynBuf();\n last_opcode_pos = -1; /* -1 if no last opcode */\n last_opcode_source_ptr = -1;\n use_short_opcodes = false; /* true if short opcodes are used in byte_code */\n\n label_slots: LabelSlot[] = [];\n top_break: BlockEnv | null = null; /* break/continue label stack */\n\n /* constant pool (strings, functions, numbers) */\n cpool: (JSValue | JSFunctionBytecode)[] = [];\n\n /* list of variables in the closure */\n closure_var: JSClosureVar[] = [];\n\n jump_slots: JumpSlot[] = [];\n\n line_number_slots: LineNumberSlot[] = [];\n line_number_last = 0;\n line_number_last_pc = 0;\n\n /* pc2line table */\n strip_debug = false;\n strip_source = false;\n filename: JSAtom = JS_ATOM_NULL;\n source_pos = 0; /* position in the eval() source */\n pc2line = new DynBuf();\n\n source: string | null = null; /* raw source */\n source_len = 0;\n\n module: any = null; /* != NULL when parsing a module */\n has_await = false; /* TRUE if await is used (used in module eval) */\n\n constructor(ctx: JSContext, parent: JSFunctionDef | null) {\n this.ctx = ctx;\n this.parent = parent;\n }\n get var_count(): number { return this.vars.length; }\n get arg_count(): number { return this.args.length; }\n get label_count(): number { return this.label_slots.length; }\n get cpool_count(): number { return this.cpool.length; }\n get closure_var_count(): number { return this.closure_var.length; }\n get scope_count(): number { return this.scopes.length; }\n}\n\nexport class JSParseState {\n ctx: JSContext;\n filename: string;\n token = new JSToken();\n got_lf = false; /* true if got line feed before the current token */\n last_ptr = 0;\n buf_start = 0;\n buf_ptr = 0;\n buf_end: number;\n buf: string;\n /* current function code */\n cur_func: JSFunctionDef | null = null;\n is_module = false; /* parsing a module */\n allow_html_comments = false;\n ext_json = false; /* true if accepting JSON superset */\n /* line/col cache */\n line_num = 1;\n /* used for error reporting: position of the last token start */\n constructor(ctx: JSContext, input: string, filename: string) {\n this.ctx = ctx;\n this.buf = input;\n this.buf_end = input.length;\n this.filename = filename;\n }\n}\n\nfunction tv(s: JSParseState): number { return s.token.val; }\n\n/* ---------------------------------------------------------------------\n Error reporting\n --------------------------------------------------------------------- */\n\n/* offsets at which each source line starts (built once per parse state).\n Line terminators: LF, CR not followed by LF (CRLF counts once), LS, PS. */\nconst line_start_cache = new WeakMap<JSParseState, { buf: string; starts: Int32Array }>();\n\nfunction get_line_starts(s: JSParseState): Int32Array {\n const cached = line_start_cache.get(s);\n if (cached !== undefined && cached.buf === s.buf) return cached.starts;\n const buf = s.buf;\n const starts: number[] = [0];\n for (let i = 0; i < buf.length; i++) {\n const c = buf.charCodeAt(i);\n if (c === 10 || c === CP_LS || c === CP_PS || (c === 13 && buf.charCodeAt(i + 1) !== 10)) starts.push(i + 1);\n }\n const tab = Int32Array.from(starts);\n line_start_cache.set(s, { buf, starts: tab });\n return tab;\n}\n\nfunction get_line_col(s: JSParseState, pos: number): [number, number] {\n const buf = s.buf;\n if (pos > buf.length) pos = buf.length;\n if (pos < 0) pos = 0;\n const starts = get_line_starts(s);\n /* last line start <= pos */\n let lo = 0, hi = starts.length - 1;\n while (lo < hi) {\n const mid = (lo + hi + 1) >> 1;\n if (starts[mid] <= pos) lo = mid; else hi = mid - 1;\n }\n let col = pos - starts[lo] + 1;\n /* the CR of a CRLF pair does not advance the column */\n if (pos > starts[lo] && buf.charCodeAt(pos - 1) === 13 && buf.charCodeAt(pos) === 10) col--;\n return [lo + 1, col];\n}\n\n/* reference implementation, kept for the equivalence test */\nexport function get_line_col_slow(buf: string, pos: number): [number, number] {\n let line = 1, col = 1;\n let i = 0;\n while (i < pos && i < buf.length) {\n const c = buf.charCodeAt(i);\n if (c === 10) { line++; col = 1; }\n else if (c === 13) { if (buf.charCodeAt(i + 1) !== 10) { line++; col = 1; } }\n else if (c === CP_LS || c === CP_PS) { line++; col = 1; }\n else col++;\n i++;\n }\n return [line, col];\n}\n\nexport function get_line_col_for_test(buf: string, pos: number): [number, number] {\n return get_line_col({ buf } as JSParseState, pos);\n}\n\nexport function js_parse_error_pos(s: JSParseState, pos: number, msg: string): number {\n const ctx = s.ctx;\n const [line, col] = get_line_col(s, pos);\n const obj = JS_NewErrorNative(ctx, JSErrorEnum.SYNTAX_ERROR, msg);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_fileName, s.filename, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_lineNumber, line, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_columnNumber, col, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_stack, ` at ${s.filename}:${line}:${col}\\n`, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_SetErrorBacktraceDone(obj);\n JS_Throw(ctx, obj);\n return -1;\n}\n\nexport function js_parse_error(s: JSParseState, msg: string): number {\n return js_parse_error_pos(s, s.token.ptr, msg);\n}\n\nfunction js_parse_expect(s: JSParseState, tok: number): number {\n if (tv(s) !== tok) {\n /* XXX: dump token correctly in all cases */\n return js_parse_error(s, `expecting '${tok >= 0 ? String.fromCharCode(tok) : token_name(tok)}'`);\n }\n return next_token(s);\n}\n\nfunction js_parse_expect_semi(s: JSParseState): number {\n if (tv(s) !== 59 /* ; */) {\n /* automatic insertion of ';' */\n if (tv(s) === TOK.EOF || tv(s) === 125 /* } */ || s.got_lf) return 0;\n return js_parse_error(s, \"expecting ';'\");\n }\n return next_token(s);\n}\n\nfunction js_parse_error_reserved_identifier(s: JSParseState): number {\n return js_parse_error(s, `'${JS_AtomGetStr(s.ctx, s.token.atom)}' is a reserved identifier`);\n}\n\nfunction token_name(tok: number): string {\n switch (tok) {\n case TOK.NUMBER: return 'number';\n case TOK.STRING: return 'string';\n case TOK.TEMPLATE: return 'template';\n case TOK.IDENT: return 'identifier';\n case TOK.REGEXP: return 'regexp';\n case TOK.EOF: return 'end of file';\n case TOK.ARROW: return '=>';\n case TOK.ELLIPSIS: return '...';\n case TOK.INC: return '++';\n case TOK.DEC: return '--';\n default:\n if (tok >= TOK_FIRST_KEYWORD && tok <= TOK_LAST_KEYWORD) return keyword_names[tok - TOK_FIRST_KEYWORD];\n return 'token';\n }\n}\n\nconst keyword_names = [\n 'null', 'false', 'true', 'if', 'else', 'return', 'var', 'this', 'delete', 'void', 'typeof', 'new', 'in',\n 'instanceof', 'do', 'while', 'for', 'break', 'continue', 'switch', 'case', 'default', 'throw', 'try', 'catch',\n 'finally', 'function', 'debugger', 'with', 'class', 'const', 'enum', 'export', 'extends', 'import', 'super',\n 'implements', 'interface', 'let', 'package', 'private', 'protected', 'public', 'static', 'yield', 'await',\n];\n\n/* ---------------------------------------------------------------------\n Lexer\n --------------------------------------------------------------------- */\n\nfunction lre_js_is_ident_first(c: number): boolean {\n if (c < 128) {\n return (c >= 97 && c <= 122) || (c >= 65 && c <= 90) || c === 36 || c === 95;\n }\n return id_start_re.test(String.fromCodePoint(c));\n}\n\nfunction lre_js_is_ident_next(c: number): boolean {\n if (c < 128) {\n return (c >= 97 && c <= 122) || (c >= 65 && c <= 90) || (c >= 48 && c <= 57) || c === 36 || c === 95;\n }\n /* ZWNJ and ZWJ are accepted in identifiers */\n if (c === 0x200c || c === 0x200d) return true;\n return id_continue_re.test(String.fromCodePoint(c));\n}\n\nconst id_start_re = /^\\p{ID_Start}$/u;\nconst id_continue_re = /^\\p{ID_Continue}$/u;\n\nfunction lre_is_space(c: number): boolean {\n switch (c) {\n case 0x09: case 0x0b: case 0x0c: case 0x20: case CP_NBSP: case CP_BOM:\n case 0x1680: case 0x2000: case 0x2001: case 0x2002: case 0x2003: case 0x2004: case 0x2005: case 0x2006:\n case 0x2007: case 0x2008: case 0x2009: case 0x200a: case 0x202f: case 0x205f: case 0x3000:\n return true;\n }\n return false;\n}\n\nfunction is_digit(c: number): boolean { return c >= 48 && c <= 57; }\n\nfunction from_hex(c: number): number {\n if (c >= 48 && c <= 57) return c - 48;\n if (c >= 65 && c <= 70) return c - 55;\n if (c >= 97 && c <= 102) return c - 87;\n return -1;\n}\n\n/* read a code point at position p (handles surrogate pairs) */\nfunction cp_at(buf: string, p: number): number {\n const c = buf.charCodeAt(p);\n if (c >= 0xd800 && c <= 0xdbff && p + 1 < buf.length) {\n const c2 = buf.charCodeAt(p + 1);\n if (c2 >= 0xdc00 && c2 <= 0xdfff) return ((c - 0xd800) << 10) + (c2 - 0xdc00) + 0x10000;\n }\n return c;\n}\nfunction cp_len(c: number): number { return c >= 0x10000 ? 2 : 1; }\n\n/* 'c' is the first character. Return -1 if error */\nfunction lre_parse_escape(s: JSParseState, p: number, allow_utf16: number): [number, number] {\n /* returns [codepoint, new_pos] or [-1, pos] on error, [-2, pos] for non escape */\n const buf = s.buf;\n let c = buf.charCodeAt(p++);\n switch (c) {\n case 98: c = 8; break; /* b */\n case 102: c = 12; break; /* f */\n case 110: c = 10; break; /* n */\n case 114: c = 13; break; /* r */\n case 116: c = 9; break; /* t */\n case 118: c = 11; break; /* v */\n case 120: /* x */\n case 117: { /* u */\n let h: number, n: number, i: number;\n if (c === 120) {\n n = 2;\n } else if (buf.charCodeAt(p) === 123 /* { */ && allow_utf16) {\n p++;\n c = 0;\n for (;;) {\n h = from_hex(buf.charCodeAt(p++));\n if (h < 0) return [-1, p];\n c = (c << 4) | h;\n if (c > 0x10ffff) return [-1, p];\n if (buf.charCodeAt(p) === 125 /* } */) { p++; break; }\n }\n return [c, p];\n } else {\n n = 4;\n }\n c = 0;\n for (i = 0; i < n; i++) {\n h = from_hex(buf.charCodeAt(p++));\n if (h < 0) return [-1, p];\n c = (c << 4) | h;\n }\n if (c >= 0xd800 && c < 0xdc00 && allow_utf16 === 2 && buf.charCodeAt(p) === 92 && buf.charCodeAt(p + 1) === 117) {\n /* convert an escaped surrogate pair into a unicode char */\n let c1 = 0;\n for (i = 0; i < 4; i++) {\n h = from_hex(buf.charCodeAt(p + 2 + i));\n if (h < 0) break;\n c1 = (c1 << 4) | h;\n }\n if (i === 4 && c1 >= 0xdc00 && c1 < 0xe000) {\n p += 6;\n c = (((c & 0x3ff) << 10) | (c1 & 0x3ff)) + 0x10000;\n }\n }\n break;\n }\n default:\n if (c >= 48 && c <= 55) {\n /* octal escape */\n c -= 48;\n if (allow_utf16 === 2) {\n /* only accept \\0 not followed by digit */\n if (c !== 0 || is_digit(buf.charCodeAt(p))) return [-1, p];\n } else {\n /* parse a legacy octal sequence */\n let v = buf.charCodeAt(p) - 48;\n if (v < 0 || v > 7) break;\n c = (c << 3) | v;\n p++;\n if (c >= 32) break;\n v = buf.charCodeAt(p) - 48;\n if (v < 0 || v > 7) break;\n c = (c << 3) | v;\n p++;\n }\n break;\n }\n return [-2, p - 1];\n }\n return [c, p];\n}\n\nfunction js_parse_string(s: JSParseState, sep: number, do_throw: boolean, p: number): [number, number] {\n /* returns [status, new_pos]; status 0 ok (s.token filled), -1 error */\n const buf = s.buf;\n const start = p;\n let str = '';\n for (;;) {\n if (p >= s.buf_end) {\n if (do_throw) js_parse_error_pos(s, start - 1, 'unexpected end of string');\n return [-1, p];\n }\n let c = buf.charCodeAt(p);\n if (c === sep) break;\n if (c === 10 || c === 13) {\n if (sep !== 96) {\n if (do_throw) js_parse_error_pos(s, p, 'unexpected line terminator in string');\n return [-1, p];\n }\n /* template: CR and CRLF are normalized to LF */\n if (c === 13) {\n if (buf.charCodeAt(p + 1) === 10) p++;\n c = 10;\n }\n str += '\\n';\n p++;\n continue;\n }\n if (c === 36 /* $ */ && buf.charCodeAt(p + 1) === 123 /* { */ && sep === 96) {\n /* template start or middle part */\n p += 2;\n break;\n }\n if (c === 92 /* \\ */) {\n p++;\n c = buf.charCodeAt(p);\n switch (c) {\n case 13:\n if (buf.charCodeAt(p + 1) === 10) p++;\n /* fall thru */\n case 10:\n case CP_LS:\n case CP_PS:\n p++;\n continue;\n case 13 + 0x10000: break; /* unreachable */\n default:\n if (c >= 48 && c <= 57) {\n if (!(s.cur_func!.js_mode & JS_MODE_STRICT) && sep !== 96 && !(c === 48 && !is_digit(buf.charCodeAt(p + 1)))) {\n /* legacy octal escapes allowed in non strict mode */\n const r = lre_parse_escape(s, p, 0);\n if (r[0] < 0) {\n if (do_throw) js_parse_error_pos(s, p, 'malformed escape sequence in string literal');\n return [-1, p];\n }\n str += String.fromCodePoint(r[0]);\n p = r[1];\n continue;\n }\n if (c === 48 && !is_digit(buf.charCodeAt(p + 1))) {\n str += '\\0';\n p++;\n continue;\n }\n if (sep === 96 || (s.cur_func!.js_mode & JS_MODE_STRICT)) {\n if (do_throw) js_parse_error_pos(s, p, sep === 96 ? 'invalid escape sequence in template' : 'octal escape sequences are not allowed in strict mode');\n return [-1, p];\n }\n break;\n }\n if (c === CP_LS || c === CP_PS) { p++; continue; }\n {\n const r = lre_parse_escape(s, p, 2);\n if (r[0] === -2) {\n /* not an escape: keep the character */\n const cp = cp_at(buf, p);\n str += String.fromCodePoint(cp);\n p += cp_len(cp);\n continue;\n }\n if (r[0] < 0) {\n if (do_throw) js_parse_error_pos(s, p, sep === 96 ? 'invalid escape sequence in template' : 'malformed escape sequence in string literal');\n return [-1, p];\n }\n str += String.fromCodePoint(r[0]);\n p = r[1];\n continue;\n }\n }\n }\n const cp = cp_at(buf, p);\n str += String.fromCodePoint(cp);\n p += cp_len(cp);\n }\n s.token.val = TOK.STRING;\n s.token.str = str;\n s.token.sep = sep;\n return [0, p + 1];\n}\n\n/* parse a template part: p points after the '`' or '}'. On return, the\n token is TOK.TEMPLATE, token.str is the cooked string, token.regexp_body\n the raw string and token.sep is '`' (96) if the template ends here or\n '$' (36) if an expression follows. Invalid escapes set template_invalid\n (the error is reported by js_parse_template if needed). */\nfunction js_parse_template_part(s: JSParseState, p: number): number {\n const buf = s.buf;\n const start = p;\n let str = '';\n let invalid = false;\n s.token.ptr = p - 1;\n let sep: number;\n for (;;) {\n if (p >= s.buf_end) return js_parse_error_pos(s, start, 'unexpected end of string');\n let c = buf.charCodeAt(p);\n if (c === 96) { sep = 96; break; }\n if (c === 36 && buf.charCodeAt(p + 1) === 123) { sep = 36; break; }\n if (c === 92) {\n p++;\n c = buf.charCodeAt(p);\n if (c === 13) { if (buf.charCodeAt(p + 1) === 10) p++; p++; continue; }\n if (c === 10 || c === CP_LS || c === CP_PS) { p++; continue; }\n if (c >= 48 && c <= 57) {\n if (c === 48 && !is_digit(buf.charCodeAt(p + 1))) { str += '\\0'; p++; continue; }\n invalid = true;\n p++;\n continue;\n }\n const r = lre_parse_escape(s, p, 2);\n if (r[0] === -2) {\n const cp = cp_at(buf, p);\n str += String.fromCodePoint(cp);\n p += cp_len(cp);\n continue;\n }\n if (r[0] < 0) { invalid = true; p++; continue; }\n str += String.fromCodePoint(r[0]);\n p = r[1];\n continue;\n }\n if (c === 13) {\n if (buf.charCodeAt(p + 1) === 10) p++;\n c = 10;\n }\n if (c === 10) { str += '\\n'; p++; continue; }\n const cp = cp_at(buf, p);\n str += String.fromCodePoint(cp);\n p += cp_len(cp);\n }\n s.token.val = TOK.TEMPLATE;\n s.token.str = str;\n s.token.sep = sep;\n s.token.template_invalid = invalid;\n s.token.regexp_body = buf.substring(start, p).replace(/\\r\\n?/g, '\\n');\n s.buf_ptr = p + (sep === 36 ? 2 : 1);\n return 0;\n}\n\n/* return -1 on error */\nfunction js_parse_regexp(s: JSParseState): number {\n const buf = s.buf;\n let p = s.buf_ptr;\n s.token.ptr = p - 1; /* position of the initial '/' */\n let body = '';\n let in_class = false;\n for (;;) {\n if (p >= s.buf_end) return js_parse_error_pos(s, s.token.ptr, 'unexpected end of regexp');\n let c = buf.charCodeAt(p);\n if (c === 10 || c === 13 || c === CP_LS || c === CP_PS) return js_parse_error_pos(s, s.token.ptr, 'unexpected line terminator in regexp');\n if (c === 47 /* / */ && !in_class) { p++; break; }\n if (c === 91) in_class = true;\n else if (c === 93) in_class = false;\n else if (c === 92) {\n body += '\\\\';\n p++;\n c = buf.charCodeAt(p);\n if (p >= s.buf_end) return js_parse_error_pos(s, s.token.ptr, 'unexpected end of regexp');\n if (c === 10 || c === 13 || c === CP_LS || c === CP_PS) return js_parse_error_pos(s, s.token.ptr, 'unexpected line terminator in regexp');\n }\n const cp = cp_at(buf, p);\n body += String.fromCodePoint(cp);\n p += cp_len(cp);\n }\n /* flags */\n let flags = '';\n for (;;) {\n const c = cp_at(buf, p);\n if (p >= s.buf_end) break;\n if (!lre_js_is_ident_next(c)) break;\n flags += String.fromCodePoint(c);\n p += cp_len(c);\n }\n s.token.val = TOK.REGEXP;\n s.token.regexp_body = body;\n s.token.regexp_flags = flags;\n s.buf_ptr = p;\n return 0;\n}\n\n/* identifier parsing: p points to the first char; c is the first code point\n (already decoded) or -1 if it was a '\\' escape start. Returns new pos. */\nfunction parse_ident(s: JSParseState, p: number, c: number, is_private: boolean): [number, string, boolean] {\n const buf = s.buf;\n let ident = '';\n let has_escape = false;\n for (;;) {\n if (c === 92 /* \\ */ && buf.charCodeAt(p + 1) === 117 /* u */) {\n const r = lre_parse_escape(s, p + 1, 1);\n if (r[0] < 0) break;\n c = r[0];\n p = r[1];\n has_escape = true;\n } else {\n p += cp_len(c);\n }\n ident += String.fromCodePoint(c);\n if (p >= s.buf_end) break;\n c = cp_at(buf, p);\n if (!(c === 92 && buf.charCodeAt(p + 1) === 117) && !lre_js_is_ident_next(c)) break;\n }\n return [p, ident, has_escape];\n}\n\n/* return TRUE if the identifier atom is a keyword / reserved word */\nfunction is_keyword_atom(atom: JSAtom): boolean {\n return atom >= JS_ATOM_null && atom <= JS_ATOM_await;\n}\n\nfunction js_parse_number(s: JSParseState, p: number): [number, number] {\n /* returns [status, new_pos]; sets s.token.num */\n const buf = s.buf;\n const start = p;\n const strict = (s.cur_func!.js_mode & JS_MODE_STRICT) !== 0;\n let radix = 10;\n let is_legacy_octal = false;\n let text = '';\n let c = buf.charCodeAt(p);\n if (c === 48) {\n const c1 = buf.charCodeAt(p + 1);\n if (c1 === 120 || c1 === 88) { radix = 16; p += 2; }\n else if (c1 === 111 || c1 === 79) { radix = 8; p += 2; }\n else if (c1 === 98 || c1 === 66) { radix = 2; p += 2; }\n else if (c1 >= 48 && c1 <= 57) {\n /* legacy octal or decimal with leading zero */\n if (strict) return [js_parse_error_pos(s, start, 'octal literals are deprecated in strict mode'), p];\n let q = p + 1;\n let is_octal = true;\n while (is_digit(buf.charCodeAt(q))) { if (buf.charCodeAt(q) >= 56) is_octal = false; q++; }\n if (is_octal) { radix = 8; is_legacy_octal = true; p++; }\n }\n }\n const digit_ok = (ch: number): boolean => {\n if (radix === 16) return from_hex(ch) >= 0;\n if (radix === 8) return ch >= 48 && ch <= 55;\n if (radix === 2) return ch === 48 || ch === 49;\n return is_digit(ch);\n };\n let last_was_sep = false;\n let ndigits = 0;\n for (;;) {\n c = buf.charCodeAt(p);\n if (c === 95 /* _ */ && !is_legacy_octal) {\n if (last_was_sep || ndigits === 0) return [js_parse_error_pos(s, p, 'invalid number literal'), p];\n last_was_sep = true;\n p++;\n continue;\n }\n if (!digit_ok(c)) break;\n text += String.fromCharCode(c);\n ndigits++;\n last_was_sep = false;\n p++;\n }\n if (last_was_sep) return [js_parse_error_pos(s, p, 'invalid number literal'), p];\n let is_bigint = false;\n if (radix === 10 && !is_legacy_octal) {\n /* fraction and exponent */\n if (buf.charCodeAt(p) === 46 /* . */) {\n text += '.';\n p++;\n last_was_sep = false;\n let nfrac = 0;\n for (;;) {\n c = buf.charCodeAt(p);\n if (c === 95) {\n if (last_was_sep || nfrac === 0) return [js_parse_error_pos(s, p, 'invalid number literal'), p];\n last_was_sep = true; p++; continue;\n }\n if (!is_digit(c)) break;\n text += String.fromCharCode(c);\n nfrac++;\n last_was_sep = false;\n p++;\n }\n if (last_was_sep) return [js_parse_error_pos(s, p, 'invalid number literal'), p];\n if (ndigits === 0 && nfrac === 0) return [js_parse_error_pos(s, start, 'invalid number literal'), p];\n }\n c = buf.charCodeAt(p);\n if (c === 101 || c === 69) {\n let q = p + 1;\n let etext = 'e';\n const c1 = buf.charCodeAt(q);\n if (c1 === 43 || c1 === 45) { etext += String.fromCharCode(c1); q++; }\n if (is_digit(buf.charCodeAt(q))) {\n last_was_sep = false;\n let nexp = 0;\n for (;;) {\n const ch = buf.charCodeAt(q);\n if (ch === 95) {\n if (last_was_sep || nexp === 0) return [js_parse_error_pos(s, q, 'invalid number literal'), q];\n last_was_sep = true; q++; continue;\n }\n if (!is_digit(ch)) break;\n etext += String.fromCharCode(ch);\n nexp++;\n last_was_sep = false;\n q++;\n }\n if (last_was_sep) return [js_parse_error_pos(s, q, 'invalid number literal'), q];\n text += etext;\n p = q;\n } else {\n return [js_parse_error_pos(s, p, 'invalid number literal'), p];\n }\n }\n } else if (ndigits === 0) {\n return [js_parse_error_pos(s, start, 'invalid number literal'), p];\n }\n if (buf.charCodeAt(p) === 110 /* n */ && !is_legacy_octal && !text.includes('.') && !/e/i.test(text)) {\n is_bigint = true;\n p++;\n }\n /* the number must not be followed by an identifier char or a digit */\n if (p < s.buf_end) {\n const cn = cp_at(buf, p);\n if (lre_js_is_ident_next(cn)) return [js_parse_error_pos(s, p, 'invalid number literal'), p];\n }\n if (is_bigint) {\n let prefix = '';\n if (radix === 16) prefix = '0x'; else if (radix === 8) prefix = '0o'; else if (radix === 2) prefix = '0b';\n s.token.num = BigInt(prefix + text);\n } else if (radix === 10) {\n s.token.num = Number(text);\n } else {\n s.token.num = parseInt(text, radix);\n }\n s.token.val = TOK.NUMBER;\n return [0, p];\n}\n\nexport function next_token(s: JSParseState): number {\n const buf = s.buf;\n let p = s.buf_ptr;\n let c: number;\n s.got_lf = false;\n s.last_ptr = p;\n s.token.atom = JS_ATOM_NULL;\n s.token.has_escape = false;\n s.token.is_reserved = false;\n for (;;) {\n if (p >= s.buf_end) {\n s.token.ptr = p;\n s.token.val = TOK.EOF;\n s.buf_ptr = p;\n return 0;\n }\n s.token.ptr = p;\n c = buf.charCodeAt(p);\n switch (c) {\n case 13: /* \\r */\n if (buf.charCodeAt(p + 1) === 10) p++;\n /* fall thru */\n case 10: /* \\n */\n p++;\n s.got_lf = true;\n continue;\n case 32: case 9: case 11: case 12:\n p++;\n continue;\n case 47: /* / */\n if (buf.charCodeAt(p + 1) === 42 /* * */) {\n /* comment */\n p += 2;\n for (;;) {\n if (p >= s.buf_end) return js_parse_error_pos(s, s.token.ptr, 'unexpected end of comment');\n const cc = buf.charCodeAt(p);\n if (cc === 42 && buf.charCodeAt(p + 1) === 47) { p += 2; break; }\n if (cc === 10 || cc === 13 || cc === CP_LS || cc === CP_PS) s.got_lf = true;\n p++;\n }\n continue;\n } else if (buf.charCodeAt(p + 1) === 47 /* / */) {\n /* line comment */\n p += 2;\n for (;;) {\n if (p >= s.buf_end) break;\n const cc = buf.charCodeAt(p);\n if (cc === 10 || cc === 13 || cc === CP_LS || cc === CP_PS) break;\n p++;\n }\n continue;\n }\n if (buf.charCodeAt(p + 1) === 61 /* = */) { p += 2; s.token.val = TOK.DIV_ASSIGN; }\n else { p++; s.token.val = c; }\n break;\n case 92: /* \\ */\n if (buf.charCodeAt(p + 1) === 117 /* u */) {\n const r = lre_parse_escape(s, p + 1, 1);\n if (r[0] >= 0 && lre_js_is_ident_first(r[0])) {\n /* identifier starting with an escape */\n const [np, ident, has_escape] = parse_ident(s, p, 92, false);\n p = np;\n return finish_ident(s, p, ident, has_escape);\n }\n }\n return js_parse_error_pos(s, p, 'unexpected character');\n case 39: /* ' */\n case 34: { /* \" */\n const r = js_parse_string(s, c, true, p + 1);\n if (r[0] < 0) return -1;\n p = r[1];\n break;\n }\n case 96: /* ` */\n if (js_parse_template_part(s, p + 1) < 0) return -1;\n return 0;\n case 46: /* . */\n if (buf.charCodeAt(p + 1) === 46 && buf.charCodeAt(p + 2) === 46) { p += 3; s.token.val = TOK.ELLIPSIS; break; }\n if (is_digit(buf.charCodeAt(p + 1))) {\n const r = js_parse_number(s, p);\n if (r[0] < 0) return -1;\n p = r[1];\n break;\n }\n p++;\n s.token.val = c;\n break;\n case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: {\n const r = js_parse_number(s, p);\n if (r[0] < 0) return -1;\n p = r[1];\n break;\n }\n case 42: /* * */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.MUL_ASSIGN; }\n else if (buf.charCodeAt(p + 1) === 42) {\n if (buf.charCodeAt(p + 2) === 61) { p += 3; s.token.val = TOK.POW_ASSIGN; }\n else { p += 2; s.token.val = TOK.POW; }\n } else { p++; s.token.val = c; }\n break;\n case 37: /* % */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.MOD_ASSIGN; }\n else { p++; s.token.val = c; }\n break;\n case 43: /* + */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.PLUS_ASSIGN; }\n else if (buf.charCodeAt(p + 1) === 43) { p += 2; s.token.val = TOK.INC; }\n else { p++; s.token.val = c; }\n break;\n case 45: /* - */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.MINUS_ASSIGN; }\n else if (buf.charCodeAt(p + 1) === 45) {\n if (s.allow_html_comments && buf.charCodeAt(p + 2) === 62 && s.got_lf) {\n /* Annex B: `-->` at the beginning of a line is an html comment end */\n p += 3;\n while (p < s.buf_end) {\n const cc = buf.charCodeAt(p);\n if (cc === 10 || cc === 13 || cc === CP_LS || cc === CP_PS) break;\n p++;\n }\n continue;\n }\n p += 2; s.token.val = TOK.DEC;\n } else { p++; s.token.val = c; }\n break;\n case 60: /* < */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.LTE; }\n else if (buf.charCodeAt(p + 1) === 60) {\n if (buf.charCodeAt(p + 2) === 61) { p += 3; s.token.val = TOK.SHL_ASSIGN; }\n else { p += 2; s.token.val = TOK.SHL; }\n } else if (s.allow_html_comments && buf.charCodeAt(p + 1) === 33 && buf.charCodeAt(p + 2) === 45 && buf.charCodeAt(p + 3) === 45) {\n /* Annex B: html comment start */\n p += 4;\n while (p < s.buf_end) {\n const cc = buf.charCodeAt(p);\n if (cc === 10 || cc === 13 || cc === CP_LS || cc === CP_PS) break;\n p++;\n }\n continue;\n } else { p++; s.token.val = c; }\n break;\n case 62: /* > */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.GTE; }\n else if (buf.charCodeAt(p + 1) === 62) {\n if (buf.charCodeAt(p + 2) === 61) { p += 3; s.token.val = TOK.SAR_ASSIGN; }\n else if (buf.charCodeAt(p + 2) === 62) {\n if (buf.charCodeAt(p + 3) === 61) { p += 4; s.token.val = TOK.SHR_ASSIGN; }\n else { p += 3; s.token.val = TOK.SHR; }\n } else { p += 2; s.token.val = TOK.SAR; }\n } else { p++; s.token.val = c; }\n break;\n case 61: /* = */\n if (buf.charCodeAt(p + 1) === 61) {\n if (buf.charCodeAt(p + 2) === 61) { p += 3; s.token.val = TOK.STRICT_EQ; }\n else { p += 2; s.token.val = TOK.EQ; }\n } else if (buf.charCodeAt(p + 1) === 62) { p += 2; s.token.val = TOK.ARROW; }\n else { p++; s.token.val = c; }\n break;\n case 33: /* ! */\n if (buf.charCodeAt(p + 1) === 61) {\n if (buf.charCodeAt(p + 2) === 61) { p += 3; s.token.val = TOK.STRICT_NEQ; }\n else { p += 2; s.token.val = TOK.NEQ; }\n } else { p++; s.token.val = c; }\n break;\n case 38: /* & */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.AND_ASSIGN; }\n else if (buf.charCodeAt(p + 1) === 38) {\n if (buf.charCodeAt(p + 2) === 61) { p += 3; s.token.val = TOK.LAND_ASSIGN; }\n else { p += 2; s.token.val = TOK.LAND; }\n } else { p++; s.token.val = c; }\n break;\n case 35: { /* # : private name */\n p++;\n const c1 = cp_at(buf, p);\n if (!lre_js_is_ident_first(c1) && !(c1 === 92 && buf.charCodeAt(p + 1) === 117)) return js_parse_error_pos(s, p, 'invalid first character of private name');\n const [np, ident, has_escape] = parse_ident(s, p, c1, true);\n p = np;\n s.token.atom = JS_NewAtom(s.ctx, '#' + ident);\n s.token.has_escape = has_escape;\n s.token.val = TOK.PRIVATE_NAME;\n break;\n }\n case 94: /* ^ */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.XOR_ASSIGN; }\n else { p++; s.token.val = c; }\n break;\n case 124: /* | */\n if (buf.charCodeAt(p + 1) === 61) { p += 2; s.token.val = TOK.OR_ASSIGN; }\n else if (buf.charCodeAt(p + 1) === 124) {\n if (buf.charCodeAt(p + 2) === 61) { p += 3; s.token.val = TOK.LOR_ASSIGN; }\n else { p += 2; s.token.val = TOK.LOR; }\n } else { p++; s.token.val = c; }\n break;\n case 63: /* ? */\n if (buf.charCodeAt(p + 1) === 63) {\n if (buf.charCodeAt(p + 2) === 61) { p += 3; s.token.val = TOK.DOUBLE_QUESTION_MARK_ASSIGN; }\n else { p += 2; s.token.val = TOK.DOUBLE_QUESTION_MARK; }\n } else if (buf.charCodeAt(p + 1) === 46 && !is_digit(buf.charCodeAt(p + 2))) {\n p += 2; s.token.val = TOK.QUESTION_MARK_DOT;\n } else { p++; s.token.val = c; }\n break;\n default: {\n const cp = cp_at(buf, p);\n if (lre_js_is_ident_first(cp)) {\n const [np, ident, has_escape] = parse_ident(s, p, cp, false);\n p = np;\n return finish_ident(s, p, ident, has_escape);\n }\n if (cp === CP_LS || cp === CP_PS) { p++; s.got_lf = true; continue; }\n if (lre_is_space(cp)) { p += cp_len(cp); continue; }\n if (c >= 33 && c < 127) { p++; s.token.val = c; break; }\n return js_parse_error_pos(s, p, 'unexpected character');\n }\n }\n break;\n }\n s.buf_ptr = p;\n return 0;\n}\n\nfunction finish_ident(s: JSParseState, p: number, ident: string, has_escape: boolean): number {\n const atom = JS_NewAtom(s.ctx, ident);\n s.token.atom = atom;\n s.token.has_escape = has_escape;\n s.token.is_reserved = false;\n s.token.val = TOK.IDENT;\n s.buf_ptr = p;\n update_token_ident(s);\n return 0;\n}\n\nconst JS_ATOM_LAST_KEYWORD = JS_ATOM_super;\nconst JS_ATOM_LAST_STRICT_KEYWORD = JS_ATOM_yield;\n\n/* convert an identifier token into a keyword token according to the\n current function type (port of update_token_ident) */\nfunction update_token_ident(s: JSParseState): void {\n const atom = s.token.atom;\n const fd = s.cur_func!;\n if (atom <= JS_ATOM_LAST_KEYWORD ||\n (atom <= JS_ATOM_LAST_STRICT_KEYWORD && (fd.js_mode & JS_MODE_STRICT)) ||\n (atom === JS_ATOM_yield &&\n ((fd.func_kind & JSFunctionKind.GENERATOR) ||\n (fd.func_type === JSParseFunctionEnum.ARROW && !fd.in_function_body && fd.parent &&\n (fd.parent.func_kind & JSFunctionKind.GENERATOR)))) ||\n (atom === JS_ATOM_await &&\n (s.is_module || (fd.func_kind & JSFunctionKind.ASYNC) || fd.func_type === JSParseFunctionEnum.CLASS_STATIC_INIT ||\n (fd.func_type === JSParseFunctionEnum.ARROW && !fd.in_function_body && fd.parent &&\n ((fd.parent.func_kind & JSFunctionKind.ASYNC) || fd.parent.func_type === JSParseFunctionEnum.CLASS_STATIC_INIT))))) {\n if (s.token.has_escape) {\n s.token.is_reserved = true;\n s.token.val = TOK.IDENT;\n } else {\n /* The keywords atoms are pre allocated */\n s.token.val = atom - 1 + TOK_FIRST_KEYWORD;\n }\n }\n}\n\n/* 'let', 'yield', 'await', 'static' and the strict mode reserved words are\n token values but may be used as identifiers in some contexts */\nfunction token_is_pseudo_keyword(s: JSParseState, atom: JSAtom): boolean {\n return tv(s) === TOK.IDENT && s.token.atom === atom && !s.token.has_escape;\n}\n\n/* return TRUE if the token is an identifier that can be used as a\n variable name (incl. let/yield/await/static depending on the context) */\nfunction token_is_ident(tok: number): boolean {\n return tok === TOK.IDENT || tok === TOK.LET || tok === TOK.YIELD || tok === TOK.AWAIT || tok === TOK.STATIC ||\n tok === TOK.IMPLEMENTS || tok === TOK.INTERFACE || tok === TOK.PACKAGE || tok === TOK.PRIVATE ||\n tok === TOK.PROTECTED || tok === TOK.PUBLIC;\n}\n\n/* save/restore the parser state (used for lookahead) */\ninterface JSParsePos {\n last_line_num: number;\n line_num: number;\n ptr: number;\n got_lf: boolean;\n token: JSToken;\n}\n\nfunction js_parse_get_pos(s: JSParseState): JSParsePos {\n const t = new JSToken();\n Object.assign(t, s.token);\n return { last_line_num: 0, line_num: s.line_num, ptr: s.token.ptr, got_lf: s.got_lf, token: t };\n}\n\nfunction js_parse_seek_token(s: JSParseState, sp: JSParsePos): number {\n s.buf_ptr = sp.ptr;\n s.got_lf = sp.got_lf;\n const r = next_token(s);\n /* restore the exact token (incl. template state) */\n Object.assign(s.token, sp.token);\n s.got_lf = sp.got_lf;\n return r;\n}\n\n/* peek the next token (lookahead of one token) */\nfunction peek_token(s: JSParseState, no_line_terminator: boolean): number {\n const sp = js_parse_get_pos(s);\n const saved_ptr = s.buf_ptr;\n if (next_token(s)) { /* error: restore */ Object.assign(s.token, sp.token); s.buf_ptr = saved_ptr; s.got_lf = sp.got_lf; return TOK.ERROR; }\n const tok = tv(s);\n const lf = s.got_lf;\n /* restore */\n Object.assign(s.token, sp.token);\n s.buf_ptr = saved_ptr;\n s.got_lf = sp.got_lf;\n if (no_line_terminator && lf) return 10; /* '\\n' */\n return tok;\n}\n\n/* Return true if the token at the current position starts a regexp\n (i.e. the '/' must be re-parsed as a regular expression) */\nfunction js_parse_regexp_token(s: JSParseState): number {\n /* tv(s) is '/' or TOK.DIV_ASSIGN: rewind to after the '/' */\n s.buf_ptr = s.token.ptr + 1;\n return js_parse_regexp(s);\n}\n\n/* return TRUE if a regexp literal is allowed after this token */\nfunction is_regexp_allowed(tok: number): boolean {\n switch (tok) {\n case TOK.NUMBER: case TOK.STRING: case TOK.REGEXP: case TOK.DEC: case TOK.INC: case TOK.NULL: case TOK.FALSE:\n case TOK.TRUE: case TOK.THIS: case 41: case 93: case 125: case TOK.IDENT:\n return false;\n default:\n return true;\n }\n}\n\n/* skip a balanced parenthesized or bracketed token sequence and return the\n token following it (used to detect arrow functions and destructuring).\n Returns TOK.ERROR on error. If no_line_terminator is true, returns '\\n' if a\n line terminator follows the closing token. The parser position is restored. */\nfunction js_parse_skip_parens_token(s: JSParseState, pbits: { bits: number } | null, no_line_terminator: boolean): number {\n const state: number[] = [];\n let level = 0;\n let last_tok = 0, tok: number = TOK.EOF;\n let bits = 0;\n const pos = js_parse_get_pos(s);\n const saved_ptr = s.buf_ptr;\n const saved_got_lf = s.got_lf;\n\n /* protect from underflow */\n state[level++] = 0;\n outer:\n for (;;) {\n switch (tv(s)) {\n case 40: /* ( */ case 91: /* [ */ case 123: /* { */\n if (level >= 256) break outer;\n state[level++] = tv(s);\n break;\n case 41: /* ) */\n if (state[--level] !== 40) break outer;\n break;\n case 93: /* ] */\n if (state[--level] !== 91) break outer;\n break;\n case 125: { /* } */\n const c = state[--level];\n if (c === 96) {\n /* continue the parsing of the template */\n s.got_lf = false;\n if (js_parse_template_part(s, s.buf_ptr)) break outer;\n /* handle_template */\n if (s.token.sep !== 96) {\n if (level >= 256) break outer;\n state[level++] = 96;\n }\n } else if (c !== 123) {\n break outer;\n }\n break;\n }\n case TOK.TEMPLATE:\n if (s.token.sep !== 96) {\n /* '${' inside the template : closing '}' and continue parsing the template */\n if (level >= 256) break outer;\n state[level++] = 96;\n }\n break;\n case TOK.EOF:\n break outer;\n case 59: /* ; */\n if (level === 2) bits |= SKIP_HAS_SEMI;\n break;\n case TOK.ELLIPSIS:\n if (level === 2) bits |= SKIP_HAS_ELLIPSIS;\n break;\n case 61: /* = */\n bits |= SKIP_HAS_ASSIGNMENT;\n break;\n case TOK.DIV_ASSIGN:\n case 47: /* / */\n if (is_regexp_allowed(last_tok)) {\n s.buf_ptr = s.token.ptr + 1;\n if (js_parse_regexp(s)) {\n /* clear the exception generated by js_parse_regexp */\n JS_GetException(s.ctx);\n break outer;\n }\n }\n break;\n }\n /* last_tok is only used to recognize regexps */\n if (tv(s) === TOK.IDENT && (token_is_pseudo_keyword(s, JS_ATOM_of) || token_is_pseudo_keyword(s, JS_ATOM_yield))) {\n last_tok = TOK.OF;\n } else {\n last_tok = tv(s);\n }\n const last_token_ptr = s.token.ptr;\n if (next_token(s)) {\n /* clear the exception generated by next_token() */\n JS_GetException(s.ctx);\n break;\n }\n if (level <= 1) {\n tok = tv(s);\n if (token_is_pseudo_keyword(s, JS_ATOM_of)) tok = TOK.OF;\n if (no_line_terminator && has_lf_in_range(s, last_token_ptr, s.token.ptr)) tok = 10;\n break;\n }\n }\n if (pbits) pbits.bits = bits;\n /* restore the parser state */\n Object.assign(s.token, pos.token);\n s.buf_ptr = saved_ptr;\n s.got_lf = saved_got_lf;\n return tok;\n}\nconst SKIP_HAS_SEMI = 1 << 0;\nconst SKIP_HAS_ELLIPSIS = 1 << 1;\nconst SKIP_HAS_ASSIGNMENT = 1 << 2;\n\n/* ---------------------------------------------------------------------\n Bytecode emission helpers\n --------------------------------------------------------------------- */\n\nfunction emit_u8(s: JSParseState, val: number): void { s.cur_func!.byte_code.putc(val); }\nfunction emit_u16(s: JSParseState, val: number): void { s.cur_func!.byte_code.put_u16(val); }\nfunction emit_u32(s: JSParseState, val: number): void { s.cur_func!.byte_code.put_u32(val); }\n\nfunction emit_op(s: JSParseState, val: number): void {\n const fd = s.cur_func!;\n const bc = fd.byte_code;\n fd.last_opcode_pos = bc.size;\n bc.putc(val);\n}\n\nfunction emit_atom(s: JSParseState, name: JSAtom): void { emit_u32(s, name); }\n\nfunction update_label(fd: JSFunctionDef, label: number, delta: number): number {\n const ls = fd.label_slots[label];\n ls.ref_count += delta;\n return ls.ref_count;\n}\n\nfunction new_label_fd(fd: JSFunctionDef): number {\n const ls = new LabelSlot();\n fd.label_slots.push(ls);\n return fd.label_slots.length - 1;\n}\n\nfunction new_label(s: JSParseState): number { return new_label_fd(s.cur_func!); }\n\n/* don't update the last opcode and don't emit line number info */\nfunction emit_label_raw(s: JSParseState, label: number): void {\n emit_u8(s, OP.label);\n emit_u32(s, label);\n s.cur_func!.label_slots[label].pos = s.cur_func!.byte_code.size;\n}\n\n/* return the label ID offset */\nfunction emit_label(s: JSParseState, label: number): number {\n if (label >= 0) {\n emit_op(s, OP.label);\n emit_u32(s, label);\n s.cur_func!.label_slots[label].pos = s.cur_func!.byte_code.size;\n return s.cur_func!.label_slots[label].pos - 4;\n }\n return -1;\n}\n\n/* return label or -1 if dead code */\nfunction emit_goto(s: JSParseState, opcode: number, label: number): number {\n if (js_is_live_code(s)) {\n if (label < 0) label = new_label(s);\n emit_op(s, opcode);\n emit_u32(s, label);\n s.cur_func!.label_slots[label].ref_count++;\n return label;\n }\n return -1;\n}\n\n/* return the constant pool index. 'val' is not duplicated. */\nfunction cpool_add(s: JSParseState, val: JSValue | JSFunctionBytecode): number {\n const fd = s.cur_func!;\n fd.cpool.push(val);\n return fd.cpool.length - 1;\n}\n\nfunction emit_push_const(s: JSParseState, val: JSValue, as_atom: boolean): number {\n if (typeof val === 'string' && as_atom) {\n /* warning: JS_NewAtomStr frees the string value */\n const atom = JS_NewAtom(s.ctx, val);\n if (!__JS_AtomIsTaggedInt(atom)) {\n emit_op(s, OP.push_atom_value);\n emit_u32(s, atom);\n return 0;\n }\n }\n const idx = cpool_add(s, val);\n emit_op(s, OP.push_const);\n emit_u32(s, idx);\n return 0;\n}\n\n/* return the last opcode or -1 if none */\nfunction get_prev_opcode(fd: JSFunctionDef): number {\n if (fd.last_opcode_pos < 0) return OP.invalid;\n return fd.byte_code.buf[fd.last_opcode_pos];\n}\n\nfunction js_is_live_code(s: JSParseState): boolean {\n switch (get_prev_opcode(s.cur_func!)) {\n case OP.tail_call:\n case OP.tail_call_method:\n case OP.return:\n case OP.return_undef:\n case OP.return_async:\n case OP.throw:\n case OP.throw_error:\n case OP.goto:\n case OP.ret:\n return false;\n default:\n return true;\n }\n}\n\n/* ---------------------------------------------------------------------\n Scopes and variables\n --------------------------------------------------------------------- */\n\nconst ARGUMENT_VAR_OFFSET = 0x40000000;\n\nfunction push_scope(s: JSParseState): number {\n const fd = s.cur_func;\n if (fd) {\n const sd = new JSVarScope();\n sd.parent = fd.scope_level;\n sd.first = fd.scope_first;\n fd.scopes.push(sd);\n const scope = fd.scopes.length - 1;\n fd.scope_level = scope;\n emit_op(s, OP.enter_scope);\n emit_u16(s, scope);\n return scope;\n }\n return 0;\n}\n\nfunction get_first_lexical_var(fd: JSFunctionDef, scope: number): number {\n while (scope >= 0) {\n const scope_idx = fd.scopes[scope].first;\n if (scope_idx >= 0) return scope_idx;\n scope = fd.scopes[scope].parent;\n }\n return -1;\n}\n\nfunction pop_scope(s: JSParseState): void {\n const fd = s.cur_func;\n if (fd) {\n const scope = fd.scope_level;\n emit_op(s, OP.leave_scope);\n emit_u16(s, scope);\n fd.scope_level = fd.scopes[scope].parent;\n fd.scope_first = get_first_lexical_var(fd, fd.scope_level);\n }\n}\n\nfunction close_scopes(s: JSParseState, scope: number, scope_stop: number): void {\n while (scope > scope_stop) {\n emit_op(s, OP.leave_scope);\n emit_u16(s, scope);\n scope = s.cur_func!.scopes[scope].parent;\n }\n}\n\n/* return the variable index or -1 if error */\nfunction add_var(ctx: JSContext, fd: JSFunctionDef, name: JSAtom): number {\n if (fd.vars.length >= 65535) { JS_ThrowSyntaxError(ctx, 'too many local variables'); return -1; }\n const vd = new JSVarDef(name);\n fd.vars.push(vd);\n return fd.vars.length - 1;\n}\n\nfunction add_scope_var(ctx: JSContext, fd: JSFunctionDef, name: JSAtom, var_kind: JSVarKind): number {\n const idx = add_var(ctx, fd, name);\n if (idx >= 0) {\n const vd = fd.vars[idx];\n vd.var_kind = var_kind;\n vd.scope_level = fd.scope_level;\n vd.scope_next = fd.scope_first;\n fd.scopes[fd.scope_level].first = idx;\n fd.scope_first = idx;\n }\n return idx;\n}\n\nfunction add_func_var(ctx: JSContext, fd: JSFunctionDef, name: JSAtom): number {\n let idx = fd.func_var_idx;\n if (idx < 0 && (idx = add_var(ctx, fd, name)) >= 0) {\n fd.func_var_idx = idx;\n fd.vars[idx].var_kind = JSVarKind.FUNCTION_NAME;\n if (fd.js_mode & JS_MODE_STRICT) fd.vars[idx].is_const = true;\n }\n return idx;\n}\n\nfunction add_arguments_var(ctx: JSContext, fd: JSFunctionDef): number {\n let idx = fd.arguments_var_idx;\n if (idx < 0 && (idx = add_var(ctx, fd, JS_ATOM_arguments)) >= 0) fd.arguments_var_idx = idx;\n return idx;\n}\n\n/* add an argument definition in the argument scope. Only needed when\n \"eval()\" may be called in the argument scope. Return 0 if OK. */\nfunction add_arguments_arg(ctx: JSContext, fd: JSFunctionDef): number {\n if (fd.arguments_arg_idx < 0) {\n let idx = find_var_in_scope(ctx, fd, JS_ATOM_arguments, ARG_SCOPE_INDEX);\n if (idx < 0) {\n /* XXX: the scope links are not fully updated. May be an issue if\n there are child scopes of the argument scope */\n idx = add_var(ctx, fd, JS_ATOM_arguments);\n if (idx < 0) return -1;\n fd.vars[idx].scope_next = fd.scopes[ARG_SCOPE_INDEX].first;\n fd.scopes[ARG_SCOPE_INDEX].first = idx;\n fd.vars[idx].scope_level = ARG_SCOPE_INDEX;\n fd.vars[idx].is_lexical = true;\n fd.arguments_arg_idx = idx;\n }\n }\n return 0;\n}\n\nconst ARG_SCOPE_INDEX = 1; /* scope of the function arguments */\nconst ARG_SCOPE_END = -2;\n\nfunction add_arg(ctx: JSContext, fd: JSFunctionDef, name: JSAtom): number {\n if (fd.args.length >= 65535) { JS_ThrowSyntaxError(ctx, 'too many arguments'); return -1; }\n const vd = new JSVarDef(name);\n fd.args.push(vd);\n return fd.args.length - 1;\n}\n\n/* add a global variable definition */\nfunction add_global_var(ctx: JSContext, s: JSFunctionDef, name: JSAtom): JSGlobalVar {\n const hf = new JSGlobalVar();\n hf.var_name = name;\n hf.cpool_idx = -1;\n hf.force_init = false;\n hf.is_lexical = false;\n hf.is_const = false;\n hf.scope_level = s.scope_level;\n s.global_vars.push(hf);\n return hf;\n}\n\nconst enum JSVarDefEnum {\n WITH,\n LET,\n CONST,\n FUNCTION_DECL, /* function declaration */\n NEW_FUNCTION_DECL, /* async/generator function declaration */\n CATCH,\n VAR,\n}\n\nfunction find_var(ctx: JSContext, fd: JSFunctionDef, name: JSAtom): number {\n for (let i = fd.vars.length; i-- > 0;) {\n if (fd.vars[i].var_name === name && fd.vars[i].scope_level === 0) return i;\n }\n return find_arg(ctx, fd, name);\n}\n\nfunction find_arg(ctx: JSContext, fd: JSFunctionDef, name: JSAtom): number {\n for (let i = fd.args.length; i-- > 0;) {\n if (fd.args[i].var_name === name) return i | ARGUMENT_VAR_OFFSET;\n }\n return -1;\n}\n\n/* find a variable declaration in a given scope */\nfunction find_var_in_scope(ctx: JSContext, fd: JSFunctionDef, name: JSAtom, scope_level: number): number {\n for (let scope_idx = fd.scopes[scope_level].first; scope_idx >= 0; scope_idx = fd.vars[scope_idx].scope_next) {\n const vd = fd.vars[scope_idx];\n if (vd.scope_level !== scope_level) break;\n if (vd.var_name === name) return scope_idx;\n }\n return -1;\n}\n\n/* return true if scope == parent_scope or if scope is a child of parent_scope */\nfunction is_child_scope(ctx: JSContext, fd: JSFunctionDef, scope: number, parent_scope: number): boolean {\n while (scope >= 0) {\n if (scope === parent_scope) return true;\n scope = fd.scopes[scope].parent;\n }\n return false;\n}\n\n/* find a 'var' declaration in the same scope or a child scope */\nfunction find_var_in_child_scope(ctx: JSContext, fd: JSFunctionDef, name: JSAtom, scope_level: number): number {\n for (let i = 0; i < fd.vars.length; i++) {\n const vd = fd.vars[i];\n if (vd.var_name === name && vd.scope_level === 0) {\n if (is_child_scope(ctx, fd, vd.scope_next, scope_level)) return i;\n }\n }\n return -1;\n}\n\nfunction find_global_var(fd: JSFunctionDef, name: JSAtom): JSGlobalVar | null {\n for (const hf of fd.global_vars) if (hf.var_name === name) return hf;\n return null;\n}\n\n/* find a 'var' declaration in the same scope or a child scope */\nfunction find_lexical_global_var(fd: JSFunctionDef, name: JSAtom): JSGlobalVar | null {\n const hf = find_global_var(fd, name);\n if (hf && hf.is_lexical) return hf;\n return null;\n}\n\nfunction find_lexical_decl(ctx: JSContext, fd: JSFunctionDef, name: JSAtom, scope_idx: number, check_catch_var: boolean): number {\n while (scope_idx >= 0) {\n const vd = fd.vars[scope_idx];\n if (vd.var_name === name && (vd.is_lexical || (vd.var_kind === JSVarKind.CATCH && check_catch_var))) return scope_idx;\n scope_idx = vd.scope_next;\n }\n if (fd.is_eval && fd.eval_type === JS_EVAL_TYPE_GLOBAL) {\n if (find_lexical_global_var(fd, name)) return GLOBAL_VAR_OFFSET;\n }\n return -1;\n}\nconst GLOBAL_VAR_OFFSET = 0x40000000;\n\nfunction push_break_entry(fd: JSFunctionDef, be: BlockEnv, label_name: JSAtom, label_break: number, label_cont: number, drop_count: number): void {\n be.prev = fd.top_break;\n fd.top_break = be;\n be.label_name = label_name;\n be.label_break = label_break;\n be.label_cont = label_cont;\n be.drop_count = drop_count;\n be.label_finally = -1;\n be.scope_level = fd.scope_level;\n be.has_iterator = false;\n be.is_regular_stmt = false;\n}\n\nfunction pop_break_entry(fd: JSFunctionDef): void {\n const be = fd.top_break!;\n fd.top_break = be.prev;\n}\n\nfunction js_define_var(s: JSParseState, name: JSAtom, tok: number): number {\n const fd = s.cur_func!;\n let var_def_type: JSVarDefEnum;\n if (name === JS_ATOM_yield && fd.func_kind === JSFunctionKind.GENERATOR) return js_parse_error(s, 'yield is a reserved identifier');\n if ((name === JS_ATOM_arguments || name === JS_ATOM_eval) && (fd.js_mode & JS_MODE_STRICT))\n return js_parse_error(s, `invalid variable name: '${JS_AtomGetStr(s.ctx, name)}'`);\n switch (tok) {\n case TOK.LET: var_def_type = JSVarDefEnum.LET; break;\n case TOK.CONST: var_def_type = JSVarDefEnum.CONST; break;\n case TOK.VAR: var_def_type = JSVarDefEnum.VAR; break;\n case TOK.CATCH: var_def_type = JSVarDefEnum.CATCH; break;\n default: throw new Error('js_define_var: bad token');\n }\n if (define_var(s, fd, name, var_def_type) < 0) return -1;\n return 0;\n}\n\n/* return the variable index or -1 if error (the parse error is set) */\nfunction define_var(s: JSParseState, fd: JSFunctionDef, name: JSAtom, var_def_type: JSVarDefEnum): number {\n const ctx = s.ctx;\n let idx: number;\n switch (var_def_type) {\n case JSVarDefEnum.WITH:\n idx = add_scope_var(ctx, fd, name, JSVarKind.NORMAL);\n break;\n case JSVarDefEnum.LET:\n case JSVarDefEnum.CONST:\n case JSVarDefEnum.FUNCTION_DECL:\n case JSVarDefEnum.NEW_FUNCTION_DECL: {\n idx = find_lexical_decl(ctx, fd, name, fd.scope_first, true);\n if (idx >= 0) {\n if (idx < GLOBAL_VAR_OFFSET) {\n if (fd.vars[idx].scope_level === fd.scope_level) {\n /* same scope: in non strict mode, functions can be redefined (annex B.3.3.4). */\n if (!(!(fd.js_mode & JS_MODE_STRICT) && var_def_type === JSVarDefEnum.FUNCTION_DECL &&\n fd.vars[idx].var_kind === JSVarKind.FUNCTION_DECL)) {\n return js_parse_error(s, 'invalid redefinition of lexical identifier');\n }\n } else if (fd.vars[idx].var_kind === JSVarKind.CATCH && (fd.vars[idx].scope_level + 2) === fd.scope_level) {\n return js_parse_error(s, 'invalid redefinition of lexical identifier');\n }\n } else {\n if (fd.scope_level === fd.body_scope) {\n /* redefining a scoped var in the same scope: error */\n return js_parse_error(s, 'invalid redefinition of lexical identifier');\n }\n }\n }\n if (var_def_type !== JSVarDefEnum.FUNCTION_DECL && var_def_type !== JSVarDefEnum.NEW_FUNCTION_DECL &&\n fd.scope_level === fd.body_scope && find_arg(ctx, fd, name) >= 0) {\n /* lexical variable redefines a parameter name */\n return js_parse_error(s, 'invalid redefinition of parameter name');\n }\n if (find_var_in_child_scope(ctx, fd, name, fd.scope_level) >= 0) {\n return js_parse_error(s, 'invalid redefinition of a variable');\n }\n if (fd.is_global_var) {\n const hf = find_global_var(fd, name);\n if (hf && is_child_scope(ctx, fd, hf.scope_level, fd.scope_level)) {\n return js_parse_error(s, 'invalid redefinition of global identifier');\n }\n }\n if (fd.is_eval && (fd.eval_type === JS_EVAL_TYPE_GLOBAL || fd.eval_type === JS_EVAL_TYPE_MODULE) && fd.scope_level === fd.body_scope) {\n const hf = add_global_var(ctx, fd, name);\n hf.is_lexical = true;\n hf.is_const = (var_def_type === JSVarDefEnum.CONST);\n idx = GLOBAL_VAR_OFFSET;\n } else {\n let var_kind: JSVarKind;\n if (var_def_type === JSVarDefEnum.FUNCTION_DECL) var_kind = JSVarKind.FUNCTION_DECL;\n else if (var_def_type === JSVarDefEnum.NEW_FUNCTION_DECL) var_kind = JSVarKind.NEW_FUNCTION_DECL;\n else var_kind = JSVarKind.NORMAL;\n idx = add_scope_var(ctx, fd, name, var_kind);\n if (idx >= 0) {\n const vd = fd.vars[idx];\n vd.is_lexical = true;\n vd.is_const = (var_def_type === JSVarDefEnum.CONST);\n }\n }\n break;\n }\n case JSVarDefEnum.CATCH:\n idx = add_scope_var(ctx, fd, name, JSVarKind.CATCH);\n break;\n case JSVarDefEnum.VAR:\n if (find_lexical_decl(ctx, fd, name, fd.scope_first, false) >= 0) {\n /* error to redefine a var that inside a lexical scope */\n return js_parse_error(s, 'invalid redefinition of lexical identifier');\n }\n if (fd.is_global_var) {\n let hf = find_global_var(fd, name);\n if (hf && hf.is_lexical && hf.scope_level === fd.scope_level && fd.eval_type === JS_EVAL_TYPE_MODULE) {\n return js_parse_error(s, 'invalid redefinition of lexical identifier');\n }\n hf = add_global_var(ctx, fd, name);\n idx = GLOBAL_VAR_OFFSET;\n } else {\n /* if the variable already exists, don't add it again */\n idx = find_var(ctx, fd, name);\n if (idx >= 0) break;\n idx = add_var(ctx, fd, name);\n if (idx >= 0) {\n if (name === JS_ATOM_arguments && fd.has_arguments_binding) fd.arguments_var_idx = idx;\n /* during compilation, scope_next holds the scope of the definition of 'var' variables */\n fd.vars[idx].scope_next = fd.scope_level;\n }\n }\n break;\n default:\n throw new Error('define_var');\n }\n return idx;\n}\n\n/* add a private field or method: 'name' starts with '#' */\nfunction add_private_class_field(s: JSParseState, fd: JSFunctionDef, name: JSAtom, var_kind: JSVarKind, is_static: boolean): number {\n const idx = add_scope_var(s.ctx, fd, name, var_kind);\n if (idx < 0) return idx;\n const vd = fd.vars[idx];\n vd.is_lexical = true;\n vd.is_const = true;\n vd.is_static_private = is_static;\n return idx;\n}\n\n/* ---------------------------------------------------------------------\n Function definition creation\n --------------------------------------------------------------------- */\n\nfunction js_new_function_def(ctx: JSContext, parent: JSFunctionDef | null, is_eval: boolean, is_func_expr: boolean,\n filename: string, source_pos: number): JSFunctionDef {\n const fd = new JSFunctionDef(ctx, parent);\n fd.is_eval = is_eval;\n fd.is_func_expr = is_func_expr;\n fd.js_mode = 0;\n if (parent) {\n parent.child_list.push(fd);\n fd.js_mode = parent.js_mode;\n fd.parent_scope_level = parent.scope_level;\n }\n fd.scope_level = 0;\n fd.scope_first = -1;\n /* scope 0 is the function scope, scope 1 is the arguments scope */\n const sc0 = new JSVarScope(); sc0.parent = -1; sc0.first = -1;\n fd.scopes.push(sc0);\n fd.body_scope = -1;\n fd.filename = JS_NewAtom(ctx, filename);\n fd.source_pos = source_pos;\n fd.line_number_last = 1;\n fd.line_number_last_pc = 0;\n return fd;\n}\n\n/* ---------------------------------------------------------------------\n Lvalues\n --------------------------------------------------------------------- */\n\nconst enum PutLValueEnum {\n PUT_LVALUE_NOKEEP, /* [depth] v -> */\n PUT_LVALUE_NOKEEP_DEPTH, /* [depth] v -> , keep depth (currently just disable optimizations) */\n PUT_LVALUE_KEEP_TOP, /* [depth] v -> v */\n PUT_LVALUE_KEEP_SECOND, /* [depth] v0 v -> v0 */\n PUT_LVALUE_NOKEEP_BOTTOM, /* v [depth] -> */\n}\n\ninterface LValue {\n opcode: number;\n scope: number;\n name: JSAtom;\n label: number;\n depth: number;\n}\n\n/* get the lvalue of the last emitted expression: returns the opcode,\n scope, name and the depth of the stack elements kept. If keep is true\n the object (and property) are kept on the stack for the subsequent put. */\nfunction get_lvalue(s: JSParseState, keep: boolean, tok: number, is_let: boolean): LValue | null {\n const fd = s.cur_func!;\n let scope = 0, name: JSAtom = JS_ATOM_NULL, label = -1, depth = 0;\n let opcode: number;\n\n /* we check the last opcode to get the lvalue type */\n opcode = get_prev_opcode(fd);\n const pos = fd.last_opcode_pos;\n const bc = fd.byte_code;\n switch (opcode) {\n case OP.scope_get_var:\n name = get_u32(bc.buf, pos + 1);\n scope = get_u16(bc.buf, pos + 5);\n if ((name === JS_ATOM_arguments || name === JS_ATOM_eval) && (fd.js_mode & JS_MODE_STRICT)) {\n js_parse_error(s, 'invalid lvalue in strict mode');\n return null;\n }\n if (name === JS_ATOM_this || name === JS_ATOM_new_target) {\n if (tok === TOK.FOR) js_parse_error(s, 'invalid for in/of left hand-side');\n else if (tok === TOK.INC || tok === TOK.DEC) js_parse_error(s, 'invalid increment/decrement operand');\n else if (tok === 91 || tok === 123) js_parse_error(s, 'invalid destructuring target');\n else js_parse_error(s, 'invalid assignment left-hand side');\n return null;\n }\n depth = 2; /* will generate OP_get_ref_value */\n break;\n case OP.get_field:\n name = get_u32(bc.buf, pos + 1);\n depth = 1;\n break;\n case OP.scope_get_private_field:\n name = get_u32(bc.buf, pos + 1);\n scope = get_u16(bc.buf, pos + 5);\n depth = 1;\n break;\n case OP.get_array_el:\n depth = 2;\n break;\n case OP.get_super_value:\n depth = 3;\n break;\n default:\n if (tok === TOK.FOR) js_parse_error(s, 'invalid for in/of left hand-side');\n else if (tok === TOK.INC || tok === TOK.DEC) js_parse_error(s, 'invalid increment/decrement operand');\n else if (tok === 91 /* [ */ || tok === 123 /* { */) js_parse_error(s, 'invalid destructuring target');\n else js_parse_error(s, 'invalid assignment left-hand side');\n return null;\n }\n /* remove the last opcode */\n fd.byte_code.size = pos;\n fd.last_opcode_pos = -1;\n\n if (keep) {\n /* get the value but keep the object/fields on the stack */\n switch (opcode) {\n case OP.scope_get_var:\n label = new_label(s);\n emit_op(s, OP.scope_make_ref);\n emit_atom(s, name);\n emit_u32(s, label);\n emit_u16(s, scope);\n update_label(fd, label, 1);\n emit_op(s, OP.get_ref_value);\n opcode = OP.get_ref_value;\n break;\n case OP.get_field:\n emit_op(s, OP.get_field2);\n emit_atom(s, name);\n break;\n case OP.scope_get_private_field:\n emit_op(s, OP.scope_get_private_field2);\n emit_atom(s, name);\n emit_u16(s, scope);\n break;\n case OP.get_array_el:\n /* XXX: replace by a single opcode ? */\n emit_op(s, OP.to_propkey2);\n emit_op(s, OP.dup2);\n emit_op(s, OP.get_array_el);\n break;\n case OP.get_super_value:\n emit_op(s, OP.to_propkey);\n emit_op(s, OP.dup3);\n emit_op(s, OP.get_super_value);\n break;\n default:\n throw new Error('get_lvalue');\n }\n } else {\n switch (opcode) {\n case OP.scope_get_var:\n label = new_label(s);\n emit_op(s, OP.scope_make_ref);\n emit_atom(s, name);\n emit_u32(s, label);\n emit_u16(s, scope);\n update_label(fd, label, 1);\n opcode = OP.get_ref_value;\n break;\n case OP.get_array_el:\n emit_op(s, OP.to_propkey2);\n break;\n case OP.get_super_value:\n emit_op(s, OP.to_propkey);\n break;\n default:\n break;\n }\n }\n return { opcode, scope, name, label, depth };\n}\n\n/* 'is_let' is only used with opcode = OP_scope_get_var which is never generated by get_lvalue(). */\nfunction put_lvalue(s: JSParseState, lv: LValue, special: PutLValueEnum, is_let: boolean): void {\n const { opcode, scope, name, label } = lv;\n switch (opcode) {\n case OP.get_field:\n case OP.scope_get_private_field:\n /* depth = 1 */\n switch (special) {\n case PutLValueEnum.PUT_LVALUE_NOKEEP:\n case PutLValueEnum.PUT_LVALUE_NOKEEP_DEPTH:\n break;\n case PutLValueEnum.PUT_LVALUE_KEEP_TOP:\n emit_op(s, OP.insert2); /* obj v -> v obj v */\n break;\n case PutLValueEnum.PUT_LVALUE_KEEP_SECOND:\n emit_op(s, OP.perm3); /* obj v0 v -> v0 obj v */\n break;\n case PutLValueEnum.PUT_LVALUE_NOKEEP_BOTTOM:\n emit_op(s, OP.swap);\n break;\n }\n break;\n case OP.get_array_el:\n case OP.get_ref_value:\n /* depth = 2 */\n if (opcode === OP.get_ref_value) emit_label(s, label);\n switch (special) {\n case PutLValueEnum.PUT_LVALUE_NOKEEP:\n emit_op(s, OP.nop); /* will trigger optimization */\n break;\n case PutLValueEnum.PUT_LVALUE_NOKEEP_DEPTH:\n break;\n case PutLValueEnum.PUT_LVALUE_KEEP_TOP:\n emit_op(s, OP.insert3); /* obj prop v -> v obj prop v */\n break;\n case PutLValueEnum.PUT_LVALUE_KEEP_SECOND:\n emit_op(s, OP.perm4); /* obj prop v0 v -> v0 obj prop v */\n break;\n case PutLValueEnum.PUT_LVALUE_NOKEEP_BOTTOM:\n emit_op(s, OP.rot3l);\n break;\n }\n break;\n case OP.get_super_value:\n /* depth = 3 */\n switch (special) {\n case PutLValueEnum.PUT_LVALUE_NOKEEP:\n case PutLValueEnum.PUT_LVALUE_NOKEEP_DEPTH:\n break;\n case PutLValueEnum.PUT_LVALUE_KEEP_TOP:\n emit_op(s, OP.insert4); /* this obj prop v -> v this obj prop v */\n break;\n case PutLValueEnum.PUT_LVALUE_KEEP_SECOND:\n emit_op(s, OP.perm5); /* this obj prop v0 v -> v0 this obj prop v */\n break;\n case PutLValueEnum.PUT_LVALUE_NOKEEP_BOTTOM:\n emit_op(s, OP.rot4l);\n break;\n }\n break;\n default:\n break;\n }\n\n switch (opcode) {\n case OP.scope_get_var: /* val -- */\n emit_op(s, is_let ? OP.scope_put_var_init : OP.scope_put_var);\n emit_u32(s, name);\n emit_u16(s, scope);\n break;\n case OP.get_field:\n emit_op(s, OP.put_field);\n emit_u32(s, name);\n break;\n case OP.scope_get_private_field:\n emit_op(s, OP.scope_put_private_field);\n emit_u32(s, name);\n emit_u16(s, scope);\n break;\n case OP.get_array_el:\n emit_op(s, OP.put_array_el);\n break;\n case OP.get_ref_value:\n emit_op(s, OP.put_ref_value);\n break;\n case OP.get_super_value:\n emit_op(s, OP.put_super_value);\n break;\n default:\n throw new Error('put_lvalue');\n }\n}\n\n/* emit the code appending the remaining iterator values into a new array */\nfunction js_emit_spread_code(s: JSParseState, depth: number): void {\n /* XXX: could check if enum object is an actual array and optimize\n slice extraction. enumeration record and target array are in a\n different order from OP_append case. */\n /* enum_rec xxx -- enum_rec xxx array 0 */\n emit_op(s, OP.array_from);\n emit_u16(s, 0);\n emit_op(s, OP.push_i32);\n emit_u32(s, 0);\n const label_rest_next = new_label(s);\n emit_label(s, label_rest_next);\n emit_op(s, OP.for_of_next);\n emit_u8(s, 2 + depth);\n const label_rest_done = emit_goto(s, OP.if_true, -1);\n /* array idx val -- array idx */\n emit_op(s, OP.define_array_el);\n emit_op(s, OP.inc);\n emit_goto(s, OP.goto, label_rest_next);\n emit_label(s, label_rest_done);\n /* enum_rec xxx array idx undef -- enum_rec xxx array */\n emit_op(s, OP.drop);\n emit_op(s, OP.drop);\n}\n\n/* emit a variable read (scope_get_var) */\nfunction emit_ident_ref(s: JSParseState, name: JSAtom): void {\n emit_op(s, OP.scope_get_var);\n emit_atom(s, name);\n emit_u16(s, s.cur_func!.scope_level);\n}\n\n/* set the name of the anonymous function or class in the previous\n opcode if it was a 'fclosure' or 'define_class' */\nfunction set_object_name(s: JSParseState, name: JSAtom): void {\n const fd = s.cur_func!;\n const opcode = get_prev_opcode(fd);\n if (opcode === OP.set_name) {\n /* XXX: should free atom after OP_set_name? */\n put_u32(fd.byte_code.buf, fd.last_opcode_pos + 1, name);\n } else if (opcode === OP.set_class_name) {\n const define_class_pos = fd.last_opcode_pos + 1 - get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1);\n /* XXX: should free atom after OP_define_class? */\n put_u32(fd.byte_code.buf, define_class_pos + 1, name);\n fd.last_opcode_pos = -1;\n }\n}\n\nfunction set_object_name_computed(s: JSParseState): void {\n const fd = s.cur_func!;\n const opcode = get_prev_opcode(fd);\n if (opcode === OP.set_name) {\n /* XXX: should free atom after OP_set_name? */\n fd.byte_code.size = fd.last_opcode_pos;\n fd.last_opcode_pos = -1;\n emit_op(s, OP.set_name_computed);\n } else if (opcode === OP.set_class_name) {\n const define_class_pos = fd.last_opcode_pos + 1 - get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1);\n fd.byte_code.buf[define_class_pos] = OP.define_class_computed;\n fd.last_opcode_pos = -1;\n }\n}\n\n/* ---------------------------------------------------------------------\n Source position tracking (line numbers)\n --------------------------------------------------------------------- */\n\n/* emit a line number marker for the given source position. It does not\n update last_opcode_pos so that the previous opcode can still be examined. */\nfunction emit_source_pos(s: JSParseState, source_ptr: number): void {\n const fd = s.cur_func!;\n if (fd.strip_debug) return;\n if (fd.last_opcode_source_ptr !== source_ptr) {\n const bc = fd.byte_code;\n bc.putc(OP.line_num);\n bc.put_u32(source_ptr);\n fd.last_opcode_source_ptr = source_ptr;\n }\n}\n\n/* ---------------------------------------------------------------------\n Expressions\n --------------------------------------------------------------------- */\n\nconst PROP_TYPE_IDENT = 0;\nconst PROP_TYPE_VAR = 1;\nconst PROP_TYPE_GET = 2;\nconst PROP_TYPE_SET = 3;\nconst PROP_TYPE_STAR = 4;\nconst PROP_TYPE_ASYNC = 5;\nconst PROP_TYPE_ASYNC_STAR = 6;\nconst PROP_TYPE_PRIVATE = 1 << 4;\n\n/* Accept keywords and reserved words as property names */\nfunction token_is_ident_or_keyword(tok: number): boolean {\n return tok === TOK.IDENT || (tok >= TOK_FIRST_KEYWORD && tok <= TOK_LAST_KEYWORD);\n}\n\n/* if the property is an expression, name = JS_ATOM_NULL. Returns the\n prop_type (or -1 on error) and the name in out.name */\nfunction js_parse_property_name(s: JSParseState, out: { name: JSAtom }, allow_method: boolean,\n allow_var: boolean, allow_private: boolean): number {\n let is_private = 0;\n let is_non_reserved_ident = false;\n let name: JSAtom = JS_ATOM_NULL;\n let prop_type = PROP_TYPE_IDENT;\n let ident_found = false;\n out.name = JS_ATOM_NULL;\n if (allow_method) {\n /* if allow_private is true (for class field parsing) and get/set is\n followed by ';' (or LF with ASI), then it is a field name */\n if ((token_is_pseudo_keyword(s, JS_ATOM_get) || token_is_pseudo_keyword(s, JS_ATOM_set)) &&\n (!allow_private || peek_token(s, true) !== 10)) {\n /* get x(), set x() */\n name = s.token.atom;\n if (next_token(s)) return -1;\n if (tv(s) === 58 || tv(s) === 44 || tv(s) === 125 || tv(s) === 40 || tv(s) === 61 ||\n (tv(s) === 59 && allow_private)) {\n is_non_reserved_ident = true;\n ident_found = true;\n } else {\n prop_type = PROP_TYPE_GET + (name === JS_ATOM_set ? 1 : 0);\n }\n } else if (tv(s) === 42 /* * */) {\n if (next_token(s)) return -1;\n prop_type = PROP_TYPE_STAR;\n } else if (token_is_pseudo_keyword(s, JS_ATOM_async) && peek_token(s, true) !== 10) {\n name = s.token.atom;\n if (next_token(s)) return -1;\n if (tv(s) === 58 || tv(s) === 44 || tv(s) === 125 || tv(s) === 40 || tv(s) === 61) {\n is_non_reserved_ident = true;\n ident_found = true;\n } else if (tv(s) === 42) {\n if (next_token(s)) return -1;\n prop_type = PROP_TYPE_ASYNC_STAR;\n } else {\n prop_type = PROP_TYPE_ASYNC;\n }\n }\n }\n if (!ident_found) {\n if (token_is_ident_or_keyword(tv(s))) {\n /* variable can only be a non-reserved identifier */\n is_non_reserved_ident = (tv(s) === TOK.IDENT && !s.token.is_reserved);\n /* keywords and reserved words have a valid atom */\n name = s.token.atom;\n if (next_token(s)) return -1;\n ident_found = true;\n } else if (tv(s) === TOK.STRING) {\n name = JS_NewAtom(s.ctx, s.token.str);\n if (next_token(s)) return -1;\n } else if (tv(s) === TOK.NUMBER) {\n const val = s.token.num;\n name = js_value_to_atom_num(s.ctx, val);\n if (next_token(s)) return -1;\n } else if (tv(s) === 91 /* [ */) {\n if (next_token(s)) return -1;\n if (js_parse_expr(s)) return -1;\n if (js_parse_expect(s, 93)) return -1;\n name = JS_ATOM_NULL;\n } else if (tv(s) === TOK.PRIVATE_NAME && allow_private) {\n name = s.token.atom;\n if (next_token(s)) return -1;\n is_private = PROP_TYPE_PRIVATE;\n } else {\n js_parse_error(s, 'invalid property name');\n return -1;\n }\n }\n if (ident_found) {\n if (is_non_reserved_ident && prop_type === PROP_TYPE_IDENT && allow_var) {\n if (!(tv(s) === 58 || (tv(s) === 40 && allow_method))) prop_type = PROP_TYPE_VAR;\n }\n }\n if (prop_type !== PROP_TYPE_IDENT && prop_type !== PROP_TYPE_VAR && tv(s) !== 40) {\n js_parse_error(s, 'invalid property name');\n return -1;\n }\n out.name = name;\n return prop_type | is_private;\n}\n\nfunction js_value_to_atom_num(ctx: JSContext, val: JSValue): JSAtom {\n if (typeof val === 'bigint') return JS_NewAtom(ctx, val.toString());\n return JS_NewAtom(ctx, String(val));\n}\n\n/* template literal. If call is true, the template object is created and\n the number of arguments is returned in out.argc */\nfunction js_parse_template(s: JSParseState, call: boolean, out: { argc: number } | null): number {\n const ctx = s.ctx;\n let raw_array: JSValue = undefined, template_object: JSValue = undefined;\n let depth = 0;\n if (call) {\n /* Create a template object: an array of cooked strings. Create an\n array of raw strings and store it to the raw property */\n template_object = JS_NewArray(ctx);\n if (emit_push_const(s, template_object, false)) return -1;\n raw_array = JS_NewArray(ctx);\n JS_DefinePropertyValue(ctx, template_object, JS_ATOM_raw, raw_array, 0);\n }\n while (tv(s) === TOK.TEMPLATE) {\n if (call) {\n JS_DefinePropertyValueUint32(ctx, raw_array, depth, s.token.regexp_body, JS_PROP_ENUMERABLE);\n JS_DefinePropertyValueUint32(ctx, template_object, depth, s.token.template_invalid ? undefined : s.token.str, JS_PROP_ENUMERABLE);\n } else {\n if (s.token.template_invalid) return js_parse_error(s, 'invalid escape sequence in template');\n const str = s.token.str;\n if (str.length !== 0 || depth === 0) {\n if (emit_push_const(s, str, true)) return -1;\n if (depth === 0) {\n if (s.token.sep === 96) return next_token(s); /* done1 */\n emit_op(s, OP.get_field2);\n emit_atom(s, JS_NewAtom(ctx, 'concat'));\n }\n depth++;\n }\n }\n if (s.token.sep === 96) {\n /* done */\n if (call) {\n seal_template_obj(ctx, raw_array);\n seal_template_obj(ctx, template_object);\n out!.argc = depth + 1;\n } else {\n emit_op(s, OP.call_method);\n emit_u16(s, depth - 1);\n }\n return next_token(s);\n }\n if (next_token(s)) return -1;\n if (js_parse_expr(s)) return -1;\n depth++;\n if (tv(s) !== 125 /* } */) return js_parse_error(s, \"expected '}' after template expression\");\n /* Resume TOK_TEMPLATE parsing (s->token.ptr is OK) */\n s.got_lf = false;\n if (js_parse_template_part(s, s.buf_ptr)) return -1;\n }\n return js_parse_expect(s, TOK.TEMPLATE);\n}\n\nfunction seal_template_obj(ctx: JSContext, obj: JSValue): void {\n /* freeze: elements are non writable/configurable, length not writable */\n Object.freeze(obj as object);\n}\n\nfunction js_parse_object_literal(s: JSParseState): number {\n const out = { name: JS_ATOM_NULL as JSAtom };\n let has_proto = false;\n if (next_token(s)) return -1;\n /* XXX: add an initial length that will be patched back */\n emit_op(s, OP.object);\n while (tv(s) !== 125 /* } */) {\n /* specific case for getter/setter */\n const start_ptr = s.token.ptr;\n if (tv(s) === TOK.ELLIPSIS) {\n if (next_token(s)) return -1;\n if (js_parse_assign_expr(s)) return -1;\n emit_op(s, OP.null); /* dummy excludeList */\n emit_op(s, OP.copy_data_properties);\n emit_u8(s, 2 | (1 << 2) | (0 << 5));\n emit_op(s, OP.drop); /* pop excludeList */\n emit_op(s, OP.drop); /* pop src object */\n } else {\n const prop_type = js_parse_property_name(s, out, true, true, false);\n if (prop_type < 0) return -1;\n const name = out.name;\n if (prop_type === PROP_TYPE_VAR) {\n /* shortcut for x: x */\n emit_op(s, OP.scope_get_var);\n emit_atom(s, name);\n emit_u16(s, s.cur_func!.scope_level);\n emit_op(s, OP.define_field);\n emit_atom(s, name);\n } else if (tv(s) === 40 /* ( */) {\n const is_getset = (prop_type === PROP_TYPE_GET || prop_type === PROP_TYPE_SET);\n let func_type: JSParseFunctionEnum;\n let func_kind: JSFunctionKind = JSFunctionKind.NORMAL;\n if (is_getset) {\n func_type = JSParseFunctionEnum.GETTER + prop_type - PROP_TYPE_GET;\n } else {\n func_type = JSParseFunctionEnum.METHOD;\n if (prop_type === PROP_TYPE_STAR) func_kind = JSFunctionKind.GENERATOR;\n else if (prop_type === PROP_TYPE_ASYNC) func_kind = JSFunctionKind.ASYNC;\n else if (prop_type === PROP_TYPE_ASYNC_STAR) func_kind = JSFunctionKind.ASYNC_GENERATOR;\n }\n if (js_parse_function_decl(s, func_type, func_kind, JS_ATOM_NULL, start_ptr)) return -1;\n if (name === JS_ATOM_NULL) {\n emit_op(s, OP.define_method_computed);\n } else {\n emit_op(s, OP.define_method);\n emit_atom(s, name);\n }\n let op_flags: number;\n if (is_getset) op_flags = OP_DEFINE_METHOD_GETTER + prop_type - PROP_TYPE_GET;\n else op_flags = OP_DEFINE_METHOD_METHOD;\n emit_u8(s, op_flags | OP_DEFINE_METHOD_ENUMERABLE);\n } else {\n if (name === JS_ATOM_NULL) {\n /* must be done before evaluating expr */\n emit_op(s, OP.to_propkey);\n }\n if (js_parse_expect(s, 58 /* : */)) return -1;\n if (js_parse_assign_expr(s)) return -1;\n if (name === JS_ATOM_NULL) {\n set_object_name_computed(s);\n emit_op(s, OP.define_array_el);\n emit_op(s, OP.drop);\n } else if (name === JS_ATOM___proto__) {\n if (has_proto) return js_parse_error(s, 'duplicate __proto__ property name');\n emit_op(s, OP.set_proto);\n has_proto = true;\n } else {\n set_object_name(s, name);\n emit_op(s, OP.define_field);\n emit_atom(s, name);\n }\n }\n }\n if (tv(s) !== 44 /* , */) break;\n if (next_token(s)) return -1;\n }\n if (js_parse_expect(s, 125)) return -1;\n return 0;\n}\n\nfunction js_parse_array_literal(s: JSParseState): number {\n let idx = 0;\n let need_length: boolean;\n if (next_token(s)) return -1;\n /* small regular arrays are created on the stack */\n let done = false;\n while (tv(s) !== 93 /* ] */ && idx < 32) {\n if (tv(s) === 44 || tv(s) === TOK.ELLIPSIS) break;\n if (js_parse_assign_expr(s)) return -1;\n idx++;\n /* accept trailing comma */\n if (tv(s) === 44) {\n if (next_token(s)) return -1;\n } else if (tv(s) !== 93) {\n done = true;\n break;\n }\n }\n emit_op(s, OP.array_from);\n emit_u16(s, idx);\n if (done) return js_parse_expect(s, 93);\n\n /* larger arrays and holes are handled with explicit indices */\n need_length = false;\n while (tv(s) !== 93 && idx < 0x7fffffff) {\n if (tv(s) === TOK.ELLIPSIS) break;\n need_length = true;\n if (tv(s) !== 44) {\n if (js_parse_assign_expr(s)) return -1;\n emit_op(s, OP.define_field);\n emit_u32(s, __JS_AtomFromUInt32(idx));\n need_length = false;\n }\n idx++;\n /* accept trailing comma */\n if (tv(s) === 44) {\n if (next_token(s)) return -1;\n }\n }\n if (tv(s) === 93) {\n if (need_length) {\n /* Set the length: Cannot use OP_define_field because length is not configurable */\n emit_op(s, OP.dup);\n emit_op(s, OP.push_i32);\n emit_u32(s, idx);\n emit_op(s, OP.put_field);\n emit_atom(s, JS_ATOM_length);\n }\n return js_parse_expect(s, 93);\n }\n\n /* huge arrays and spread elements require a dynamic index on the stack */\n emit_op(s, OP.push_i32);\n emit_u32(s, idx);\n\n /* stack has array, index */\n while (tv(s) !== 93) {\n if (tv(s) === TOK.ELLIPSIS) {\n if (next_token(s)) return -1;\n if (js_parse_assign_expr(s)) return -1;\n emit_op(s, OP.append);\n } else {\n need_length = true;\n if (tv(s) !== 44) {\n if (js_parse_assign_expr(s)) return -1;\n /* a idx val */\n emit_op(s, OP.define_array_el);\n need_length = false;\n }\n emit_op(s, OP.inc);\n }\n if (tv(s) !== 44) break;\n if (next_token(s)) return -1;\n }\n if (need_length) {\n /* Set the length: cannot use OP_define_field because length is not configurable */\n emit_op(s, OP.dup1); /* array length - array array length */\n emit_op(s, OP.put_field);\n emit_atom(s, JS_ATOM_length);\n } else {\n emit_op(s, OP.drop); /* array length - array */\n }\n return js_parse_expect(s, 93);\n}\n\nfunction js_parse_expr_paren(s: JSParseState): number {\n if (js_parse_expect(s, 40)) return -1;\n if (js_parse_expr(s)) return -1;\n if (js_parse_expect(s, 41)) return -1;\n return 0;\n}\n\nfunction js_unsupported_keyword(s: JSParseState, atom: JSAtom): number {\n return js_parse_error(s, `unsupported keyword: ${JS_AtomGetStr(s.ctx, atom)}`);\n}\n\nfunction js_parse_check_duplicate_parameter(s: JSParseState, name: JSAtom): number {\n /* Check for duplicate parameter names */\n const fd = s.cur_func!;\n for (let i = 0; i < fd.args.length; i++) if (fd.args[i].var_name === name) return js_parse_error(s, 'duplicate parameter names not allowed in this context');\n for (let i = 0; i < fd.vars.length; i++) if (fd.vars[i].var_name === name) return js_parse_error(s, 'duplicate parameter names not allowed in this context');\n return 0;\n}\n\n/* tok = TOK_VAR, TOK_LET or TOK_CONST. Return whether a reference\n must be taken to the variable for proper 'with' or global variable evaluation */\nfunction need_var_reference(s: JSParseState, tok: number): boolean {\n const fd = s.cur_func!;\n if (tok !== TOK.VAR) return false; /* no reference for let/const */\n if (fd.js_mode & JS_MODE_STRICT) {\n if (!fd.is_global_var) return false; /* local definitions in strict mode in function or direct eval */\n if (s.is_module) return false; /* in a module global variables are like closure variables */\n }\n return true;\n}\n\nfunction js_parse_destructuring_var(s: JSParseState, tok: number, is_arg: number): JSAtom {\n if (!(tv(s) === TOK.IDENT && !s.token.is_reserved) ||\n ((s.cur_func!.js_mode & JS_MODE_STRICT) && (s.token.atom === JS_ATOM_eval || s.token.atom === JS_ATOM_arguments))) {\n js_parse_error(s, 'invalid destructuring target');\n return JS_ATOM_NULL;\n }\n const name = s.token.atom;\n if (is_arg && js_parse_check_duplicate_parameter(s, name)) return JS_ATOM_NULL;\n if (next_token(s)) return JS_ATOM_NULL;\n return name;\n}\n\n/* Return -1 if error, 0 if no initializer, 1 if an initializer is present at the top level. */\nfunction js_parse_destructuring_element(s: JSParseState, tok: number, is_arg: number, hasval: boolean,\n has_ellipsis: number, allow_initializer: boolean, export_flag: boolean): number {\n let label_parse: number, label_assign: number, label_done: number;\n let start_addr: number, assign_addr: number;\n let var_name: JSAtom = JS_ATOM_NULL;\n let has_initializer: boolean;\n const fd = s.cur_func!;\n\n if (has_ellipsis < 0) {\n /* pre-parse destructuration target for spread detection */\n const bits = { bits: 0 };\n js_parse_skip_parens_token(s, bits, false);\n has_ellipsis = bits.bits & SKIP_HAS_ELLIPSIS;\n }\n\n label_parse = new_label(s);\n label_assign = new_label(s);\n\n start_addr = fd.byte_code.size;\n if (hasval) {\n /* consume value from the stack */\n emit_op(s, OP.dup);\n emit_op(s, OP.undefined);\n emit_op(s, OP.strict_eq);\n emit_goto(s, OP.if_true, label_parse);\n emit_label(s, label_assign);\n } else {\n emit_goto(s, OP.goto, label_parse);\n emit_label(s, label_assign);\n /* leave value on the stack */\n emit_op(s, OP.dup);\n }\n assign_addr = fd.byte_code.size;\n if (tv(s) === 123 /* { */) {\n if (next_token(s)) return -1;\n /* throw an exception if the value cannot be converted to an object */\n emit_op(s, OP.to_object);\n if (has_ellipsis) {\n /* add excludeList on stack just below src object */\n emit_op(s, OP.object);\n emit_op(s, OP.swap);\n }\n while (tv(s) !== 125) {\n let lv: LValue | null = null;\n let opcode: number, scope: number, label_lvalue: number, depth_lvalue: number;\n let prop_name: JSAtom = JS_ATOM_NULL;\n let goto_set_val = false;\n if (tv(s) === TOK.ELLIPSIS) {\n if (!has_ellipsis) { JS_ThrowSyntaxError(s.ctx, 'unexpected ellipsis token'); return -1; }\n if (next_token(s)) return -1;\n if (tok) {\n var_name = js_parse_destructuring_var(s, tok, is_arg);\n if (var_name === JS_ATOM_NULL) return -1;\n if (need_var_reference(s, tok)) {\n /* Must make a reference for proper `with` semantics */\n emit_op(s, OP.scope_get_var);\n emit_atom(s, var_name);\n emit_u16(s, fd.scope_level);\n lv = get_lvalue(s, false, 123, false);\n if (!lv) return -1;\n } else {\n lv = { opcode: OP.scope_get_var, scope: fd.scope_level, name: var_name, label: -1, depth: 0 };\n }\n } else {\n if (js_parse_left_hand_side_expr(s)) return -1;\n lv = get_lvalue(s, false, 123, false);\n if (!lv) return -1;\n var_name = lv.name;\n }\n if (tv(s) !== 125) return js_parse_error(s, 'assignment rest property must be last');\n emit_op(s, OP.object); /* target */\n emit_op(s, OP.copy_data_properties);\n emit_u8(s, 0 | ((lv.depth + 1) << 2) | ((lv.depth + 2) << 5));\n goto_set_val = true;\n }\n if (!goto_set_val) {\n const out = { name: JS_ATOM_NULL as JSAtom };\n const prop_type = js_parse_property_name(s, out, false, true, false);\n if (prop_type < 0) return -1;\n prop_name = out.name;\n var_name = JS_ATOM_NULL;\n if (prop_type === PROP_TYPE_IDENT) {\n if (next_token(s)) return -1;\n let tok1: number;\n const bits = { bits: 0 };\n if ((tv(s) === 91 || tv(s) === 123) &&\n ((tok1 = js_parse_skip_parens_token(s, bits, false)) === 44 || tok1 === 61 || tok1 === 125)) {\n if (prop_name === JS_ATOM_NULL) {\n /* computed property name on stack */\n if (has_ellipsis) {\n /* define the property in excludeList */\n emit_op(s, OP.to_propkey); /* avoid calling ToString twice */\n emit_op(s, OP.perm3); /* TOS: src excludeList prop */\n emit_op(s, OP.null); /* TOS: src excludeList prop null */\n emit_op(s, OP.define_array_el); /* TOS: src excludeList prop */\n emit_op(s, OP.perm3); /* TOS: excludeList src prop */\n }\n /* get the computed property from the source object */\n emit_op(s, OP.get_array_el2);\n } else {\n /* named property */\n if (has_ellipsis) {\n /* define the property in excludeList */\n emit_op(s, OP.swap); /* TOS: src excludeList */\n emit_op(s, OP.null); /* TOS: src excludeList null */\n emit_op(s, OP.define_field); /* TOS: src excludeList */\n emit_atom(s, prop_name);\n emit_op(s, OP.swap); /* TOS: excludeList src */\n }\n /* get the named property from the source object */\n emit_op(s, OP.get_field2);\n emit_u32(s, prop_name);\n }\n if (js_parse_destructuring_element(s, tok, is_arg, true, -1, true, export_flag) < 0) return -1;\n if (tv(s) === 125) break;\n /* accept a trailing comma before the '}' */\n if (js_parse_expect(s, 44)) return -1;\n continue;\n }\n if (prop_name === JS_ATOM_NULL) {\n emit_op(s, OP.to_propkey2);\n if (has_ellipsis) {\n /* define the property in excludeList */\n emit_op(s, OP.perm3);\n emit_op(s, OP.null);\n emit_op(s, OP.define_array_el);\n emit_op(s, OP.perm3);\n }\n /* source prop -- source source prop */\n emit_op(s, OP.dup1);\n } else {\n if (has_ellipsis) {\n /* define the property in excludeList */\n emit_op(s, OP.swap);\n emit_op(s, OP.null);\n emit_op(s, OP.define_field);\n emit_atom(s, prop_name);\n emit_op(s, OP.swap);\n }\n /* source -- source source */\n emit_op(s, OP.dup);\n }\n let do_lvalue1 = false;\n if (tok) {\n var_name = js_parse_destructuring_var(s, tok, is_arg);\n if (var_name === JS_ATOM_NULL) return -1;\n if (need_var_reference(s, tok)) {\n /* Must make a reference for proper `with` semantics */\n emit_op(s, OP.scope_get_var);\n emit_atom(s, var_name);\n emit_u16(s, fd.scope_level);\n do_lvalue1 = true;\n } else {\n /* no need to make a reference for let/const */\n lv = { opcode: OP.scope_get_var, scope: fd.scope_level, name: var_name, label: -1, depth: 0 };\n }\n } else {\n if (js_parse_left_hand_side_expr(s)) return -1;\n do_lvalue1 = true;\n }\n if (do_lvalue1) {\n lv = get_lvalue(s, false, 123, false);\n if (!lv) return -1;\n var_name = lv.name;\n /* swap ref and lvalue object if any */\n if (prop_name === JS_ATOM_NULL) {\n switch (lv.depth) {\n case 1: emit_op(s, OP.rot3r); break; /* source prop x -> x source prop */\n case 2: emit_op(s, OP.swap2); break; /* source prop x y -> x y source prop */\n case 3: emit_op(s, OP.rot5l); emit_op(s, OP.rot5l); break; /* source prop x y z -> x y z source prop */\n }\n } else {\n switch (lv.depth) {\n case 1: emit_op(s, OP.swap); break; /* source x -> x source */\n case 2: emit_op(s, OP.rot3l); break; /* source x y -> x y source */\n case 3: emit_op(s, OP.rot4l); break; /* source x y z -> x y z source */\n }\n }\n }\n if (prop_name === JS_ATOM_NULL) {\n /* computed property name on stack */\n /* source prop -- val */\n emit_op(s, OP.get_array_el);\n } else {\n /* named property */\n /* source -- val */\n emit_op(s, OP.get_field);\n emit_u32(s, prop_name);\n }\n } else {\n /* prop_type = PROP_TYPE_VAR, cannot be a computed property */\n if (is_arg && js_parse_check_duplicate_parameter(s, prop_name)) return -1;\n if ((fd.js_mode & JS_MODE_STRICT) && (prop_name === JS_ATOM_eval || prop_name === JS_ATOM_arguments)) {\n return js_parse_error(s, 'invalid destructuring target');\n }\n if (has_ellipsis) {\n /* define the property in excludeList */\n emit_op(s, OP.swap);\n emit_op(s, OP.null);\n emit_op(s, OP.define_field);\n emit_atom(s, prop_name);\n emit_op(s, OP.swap);\n }\n if (!tok || need_var_reference(s, tok)) {\n /* generate reference */\n /* source -- source source */\n emit_op(s, OP.dup);\n emit_op(s, OP.scope_get_var);\n emit_atom(s, prop_name);\n emit_u16(s, fd.scope_level);\n lv = get_lvalue(s, false, 123, false);\n if (!lv) return -1;\n var_name = lv.name;\n /* swap ref and lvalue object if any (lvalue1) */\n switch (lv.depth) {\n case 1: emit_op(s, OP.swap); break;\n case 2: emit_op(s, OP.rot3l); break;\n case 3: emit_op(s, OP.rot4l); break;\n }\n emit_op(s, OP.get_field);\n emit_u32(s, prop_name);\n } else {\n /* no need to make a reference for let/const */\n var_name = prop_name;\n lv = { opcode: OP.scope_get_var, scope: fd.scope_level, name: var_name, label: -1, depth: 0 };\n /* source -- source val */\n emit_op(s, OP.get_field2);\n emit_u32(s, prop_name);\n }\n }\n }\n /* set_val: */\n opcode = lv!.opcode; scope = lv!.scope; label_lvalue = lv!.label; depth_lvalue = lv!.depth;\n void depth_lvalue;\n if (tok) {\n if (js_define_var(s, var_name, tok)) return -1;\n scope = fd.scope_level; /* XXX: check */\n }\n if (tv(s) === 61 /* = */) { /* handle optional default value */\n emit_op(s, OP.dup);\n emit_op(s, OP.undefined);\n emit_op(s, OP.strict_eq);\n const label_hasval = emit_goto(s, OP.if_false, -1);\n if (next_token(s)) return -1;\n emit_op(s, OP.drop);\n if (js_parse_assign_expr(s)) return -1;\n if (opcode === OP.scope_get_var || opcode === OP.get_ref_value) set_object_name(s, var_name);\n emit_label(s, label_hasval);\n }\n /* store value into lvalue object */\n put_lvalue(s, { opcode, scope, name: var_name, label: label_lvalue, depth: 0 }, PutLValueEnum.PUT_LVALUE_NOKEEP_DEPTH,\n (tok === TOK.CONST || tok === TOK.LET));\n if (tv(s) === 125) break;\n /* accept a trailing comma before the '}' */\n if (js_parse_expect(s, 44)) return -1;\n }\n /* drop the source object */\n emit_op(s, OP.drop);\n if (has_ellipsis) emit_op(s, OP.drop); /* pop excludeList */\n if (next_token(s)) return -1;\n } else if (tv(s) === 91 /* [ */) {\n let has_spread = false;\n const block_env = new BlockEnv();\n if (next_token(s)) return -1;\n /* the block environment is only needed in generators in case 'yield' triggers a 'return' */\n push_break_entry(fd, block_env, JS_ATOM_NULL, -1, -1, 2);\n block_env.has_iterator = true;\n emit_op(s, OP.for_of_start);\n while (tv(s) !== 93) {\n /* get the next value */\n if (tv(s) === TOK.ELLIPSIS) {\n if (next_token(s)) return -1;\n if (tv(s) === 44 || tv(s) === 93) return js_parse_error(s, 'missing binding pattern...');\n has_spread = true;\n }\n let tok1: number;\n const bits = { bits: 0 };\n if (tv(s) === 44) {\n /* do nothing, skip the value, has_spread is false */\n emit_op(s, OP.for_of_next);\n emit_u8(s, 0);\n emit_op(s, OP.drop);\n emit_op(s, OP.drop);\n } else if ((tv(s) === 91 || tv(s) === 123) &&\n ((tok1 = js_parse_skip_parens_token(s, bits, false)) === 44 || tok1 === 61 || tok1 === 93)) {\n if (has_spread) {\n if (tok1 === 61) return js_parse_error(s, 'rest element cannot have a default value');\n js_emit_spread_code(s, 0);\n } else {\n emit_op(s, OP.for_of_next);\n emit_u8(s, 0);\n emit_op(s, OP.drop);\n }\n if (js_parse_destructuring_element(s, tok, is_arg, true, bits.bits & SKIP_HAS_ELLIPSIS, true, export_flag) < 0) return -1;\n } else {\n var_name = JS_ATOM_NULL;\n let lv: LValue | null;\n if (tok) {\n var_name = js_parse_destructuring_var(s, tok, is_arg);\n if (var_name === JS_ATOM_NULL) return -1;\n if (js_define_var(s, var_name, tok)) return -1;\n if (need_var_reference(s, tok)) {\n /* Must make a reference for proper `with` semantics */\n emit_op(s, OP.scope_get_var);\n emit_atom(s, var_name);\n emit_u16(s, fd.scope_level);\n lv = get_lvalue(s, false, 91, false);\n if (!lv) return -1;\n } else {\n /* no need to make a reference for let/const */\n lv = { opcode: OP.scope_get_var, scope: fd.scope_level, name: var_name, label: -1, depth: 0 };\n }\n } else {\n if (js_parse_left_hand_side_expr(s)) return -1;\n lv = get_lvalue(s, false, 91, false);\n if (!lv) return -1;\n var_name = lv.name;\n }\n if (has_spread) {\n js_emit_spread_code(s, lv.depth);\n } else {\n emit_op(s, OP.for_of_next);\n emit_u8(s, lv.depth);\n emit_op(s, OP.drop);\n }\n if (tv(s) === 61 && !has_spread) {\n /* handle optional default value */\n emit_op(s, OP.dup);\n emit_op(s, OP.undefined);\n emit_op(s, OP.strict_eq);\n const label_hasval = emit_goto(s, OP.if_false, -1);\n if (next_token(s)) return -1;\n emit_op(s, OP.drop);\n if (js_parse_assign_expr(s)) return -1;\n if (lv.opcode === OP.scope_get_var || lv.opcode === OP.get_ref_value) set_object_name(s, var_name);\n emit_label(s, label_hasval);\n }\n /* store value into lvalue object */\n put_lvalue(s, lv, PutLValueEnum.PUT_LVALUE_NOKEEP_DEPTH, (tok === TOK.CONST || tok === TOK.LET));\n }\n if (tv(s) === 93) break;\n if (has_spread) return js_parse_error(s, 'rest element must be the last one');\n /* accept a trailing comma before the ']' */\n if (js_parse_expect(s, 44)) return -1;\n }\n /* close iterator object: if completed, enum_obj has been replaced by undefined */\n emit_op(s, OP.iterator_close);\n pop_break_entry(fd);\n if (next_token(s)) return -1;\n } else {\n return js_parse_error(s, 'invalid assignment syntax');\n }\n if (tv(s) === 61 && allow_initializer) {\n label_done = emit_goto(s, OP.goto, -1);\n if (next_token(s)) return -1;\n emit_label(s, label_parse);\n if (hasval) emit_op(s, OP.drop);\n if (js_parse_assign_expr(s)) return -1;\n emit_goto(s, OP.goto, label_assign);\n emit_label(s, label_done);\n has_initializer = true;\n } else {\n /* normally hasval is true except if js_parse_skip_parens_token() was wrong in the parsing */\n if (!hasval) return js_parse_error(s, 'too complicated destructuring expression');\n /* remove test and decrement label ref count */\n fd.byte_code.buf.fill(OP.nop, start_addr, assign_addr);\n fd.label_slots[label_parse].ref_count--;\n has_initializer = false;\n }\n return has_initializer ? 1 : 0;\n}\n\nconst enum FuncCallType { NORMAL, NEW, SUPER_CTOR, TEMPLATE }\n\nfunction optional_chain_test(s: JSParseState, pl: { label: number }, drop_count: number): void {\n if (pl.label < 0) pl.label = new_label(s);\n /* XXX: could be more efficient with a specific opcode */\n emit_op(s, OP.dup);\n emit_op(s, OP.is_undefined_or_null);\n const label_next = emit_goto(s, OP.if_false, -1);\n for (let i = 0; i < drop_count; i++) emit_op(s, OP.drop);\n emit_op(s, OP.undefined);\n emit_goto(s, OP.goto, pl.label);\n emit_label(s, label_next);\n}\n\n/* allowed parse_flags: PF_POSTFIX_CALL */\nfunction js_parse_postfix_expr(s: JSParseState, parse_flags: number): number {\n let call_type = FuncCallType.NORMAL;\n let accept_lparen = (parse_flags & PF_POSTFIX_CALL) !== 0;\n let op_token_ptr = 0;\n\n switch (tv(s)) {\n case TOK.NUMBER: {\n const val = s.token.num;\n if (typeof val === 'number' && Number.isInteger(val) && val >= -2147483648 && val <= 2147483647 && !(val === 0 && 1 / val < 0)) {\n emit_op(s, OP.push_i32);\n emit_u32(s, val >>> 0);\n } else if (typeof val === 'bigint' && val >= -2147483648n && val <= 2147483647n) {\n emit_op(s, OP.push_bigint_i32);\n emit_u32(s, Number(val) >>> 0);\n } else {\n if (emit_push_const(s, val, false) < 0) return -1;\n }\n if (next_token(s)) return -1;\n break;\n }\n case TOK.TEMPLATE:\n if (js_parse_template(s, false, null)) return -1;\n break;\n case TOK.STRING:\n if (emit_push_const(s, s.token.str, true)) return -1;\n if (next_token(s)) return -1;\n break;\n case TOK.DIV_ASSIGN:\n case 47: /* / */ {\n /* the previous token is '/' or '/=': re-parse as a regexp */\n s.buf_ptr = s.token.ptr + 1;\n if (js_parse_regexp(s)) return -1;\n /* validate the regexp with the host engine now so that syntax\n errors are reported at compile time */\n const body = s.token.regexp_body, flags = s.token.regexp_flags;\n const err = js_check_regexp(body, flags);\n if (err !== null) return js_parse_error(s, err);\n if (emit_push_const(s, body, false)) return -1;\n if (emit_push_const(s, flags, false)) return -1;\n /* we use a specific opcode to be sure the correct function is called */\n emit_op(s, OP.regexp);\n if (next_token(s)) return -1;\n break;\n }\n case 40: /* ( */\n if (js_parse_expr_paren(s)) return -1;\n break;\n case TOK.FUNCTION:\n if (js_parse_function_decl(s, JSParseFunctionEnum.EXPR, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr)) return -1;\n break;\n case TOK.CLASS:\n if (js_parse_class(s, true, JSParseExportEnum.NONE)) return -1;\n break;\n case TOK.NULL:\n if (next_token(s)) return -1;\n emit_op(s, OP.null);\n break;\n case TOK.THIS:\n if (next_token(s)) return -1;\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n break;\n case TOK.FALSE:\n if (next_token(s)) return -1;\n emit_op(s, OP.push_false);\n break;\n case TOK.TRUE:\n if (next_token(s)) return -1;\n emit_op(s, OP.push_true);\n break;\n case TOK.IDENT: {\n let name: JSAtom;\n if (s.token.is_reserved) return js_parse_error_reserved_identifier(s);\n const source_ptr = s.token.ptr;\n let do_get_var = false;\n if (token_is_pseudo_keyword(s, JS_ATOM_async) && peek_token(s, true) !== 10) {\n if (next_token(s)) return -1;\n if (tv(s) === TOK.FUNCTION) {\n if (js_parse_function_decl(s, JSParseFunctionEnum.EXPR, JSFunctionKind.ASYNC, JS_ATOM_NULL, source_ptr)) return -1;\n name = JS_ATOM_NULL;\n } else {\n name = JS_ATOM_async;\n do_get_var = true;\n }\n } else {\n if (s.token.atom === JS_ATOM_arguments && !s.cur_func!.arguments_allowed) {\n return js_parse_error(s, \"'arguments' identifier is not allowed in class field initializer\");\n }\n name = s.token.atom;\n if (next_token(s)) return -1;\n do_get_var = true;\n }\n if (do_get_var) {\n emit_source_pos(s, source_ptr);\n emit_op(s, OP.scope_get_var);\n emit_u32(s, name);\n emit_u16(s, s.cur_func!.scope_level);\n }\n break;\n }\n case 123: /* { */\n if (js_parse_object_literal(s)) return -1;\n break;\n case 91: /* [ */\n if (js_parse_array_literal(s)) return -1;\n break;\n case TOK.NEW:\n if (next_token(s)) return -1;\n if (tv(s) === 46 /* . */) {\n if (next_token(s)) return -1;\n if (!token_is_pseudo_keyword(s, JS_ATOM_target)) return js_parse_error(s, 'expecting target');\n if (!s.cur_func!.new_target_allowed) return js_parse_error(s, 'new.target only allowed within functions');\n if (next_token(s)) return -1;\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_new_target);\n emit_u16(s, 0);\n } else {\n if (js_parse_postfix_expr(s, 0)) return -1;\n accept_lparen = true;\n if (tv(s) !== 40) {\n /* new operator on an object */\n emit_source_pos(s, s.token.ptr);\n emit_op(s, OP.dup);\n emit_op(s, OP.call_constructor);\n emit_u16(s, 0);\n } else {\n call_type = FuncCallType.NEW;\n }\n }\n break;\n case TOK.SUPER:\n if (next_token(s)) return -1;\n if (tv(s) === 40) {\n if (!s.cur_func!.super_call_allowed) return js_parse_error(s, 'super() is only valid in a derived class constructor');\n call_type = FuncCallType.SUPER_CTOR;\n } else if (tv(s) === 46 || tv(s) === 91) {\n if (!s.cur_func!.super_allowed) return js_parse_error(s, \"'super' is only valid in a method\");\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_home_object);\n emit_u16(s, 0);\n emit_op(s, OP.get_super);\n } else {\n return js_parse_error(s, \"invalid use of 'super'\");\n }\n break;\n case TOK.IMPORT:\n if (next_token(s)) return -1;\n if (tv(s) === 46) {\n if (next_token(s)) return -1;\n if (!token_is_pseudo_keyword(s, JS_ATOM_meta)) return js_parse_error(s, 'meta expected');\n if (!s.is_module) return js_parse_error(s, 'import.meta only valid in module code');\n if (next_token(s)) return -1;\n emit_op(s, OP.special_object);\n emit_u8(s, OPSpecialObject.IMPORT_META);\n } else {\n if (js_parse_expect(s, 40)) return -1;\n if (!accept_lparen) return js_parse_error(s, \"invalid use of 'import()'\");\n if (js_parse_assign_expr(s)) return -1;\n if (js_parse_expect(s, 41)) return -1;\n emit_op(s, OP.import);\n }\n break;\n default:\n return js_parse_error(s, `unexpected token in expression: '${s.buf.substring(s.token.ptr, s.buf_ptr)}'`);\n }\n\n const optional_chaining = { label: -1 };\n for (;;) {\n const fd = s.cur_func!;\n let has_optional_chain = false;\n let action: 'call' | 'array' | 'prop' | 'none' = 'none';\n\n if (tv(s) === TOK.QUESTION_MARK_DOT) {\n op_token_ptr = s.token.ptr;\n /* optional chaining */\n if (next_token(s)) return -1;\n has_optional_chain = true;\n if (tv(s) === 40 && accept_lparen) action = 'call';\n else if (tv(s) === 91) action = 'array';\n else action = 'prop';\n } else if (tv(s) === TOK.TEMPLATE && call_type === FuncCallType.NORMAL) {\n if (optional_chaining.label >= 0) return js_parse_error(s, 'template literal cannot appear in an optional chain');\n call_type = FuncCallType.TEMPLATE;\n op_token_ptr = s.token.ptr;\n action = 'call';\n } else if (tv(s) === 40 && accept_lparen) {\n action = 'call';\n } else if (tv(s) === 46) {\n op_token_ptr = s.token.ptr;\n if (next_token(s)) return -1;\n action = 'prop';\n } else if (tv(s) === 91) {\n op_token_ptr = s.token.ptr;\n action = 'array';\n } else {\n break;\n }\n\n if (action === 'call') {\n let opcode: number, arg_count = 0, drop_count = 1;\n /* function call */\n if (call_type !== FuncCallType.TEMPLATE) {\n op_token_ptr = s.token.ptr;\n if (next_token(s)) return -1;\n }\n if (call_type === FuncCallType.NORMAL || call_type === FuncCallType.TEMPLATE) {\n switch (opcode = get_prev_opcode(fd)) {\n case OP.get_field:\n /* keep the object on the stack */\n fd.byte_code.buf[fd.last_opcode_pos] = OP.get_field2;\n drop_count = 2;\n break;\n case OP.get_field_opt_chain: {\n const opt_chain_label = get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1 + 4 + 1);\n /* keep the object on the stack */\n fd.byte_code.buf[fd.last_opcode_pos] = OP.get_field2;\n fd.byte_code.size = fd.last_opcode_pos + 1 + 4;\n const next_label = emit_goto(s, OP.goto, -1);\n emit_label(s, opt_chain_label);\n /* need an additional undefined value for the case where the optional field does not exists */\n emit_op(s, OP.undefined);\n emit_label(s, next_label);\n drop_count = 2;\n opcode = OP.get_field;\n break;\n }\n case OP.scope_get_private_field:\n /* keep the object on the stack */\n fd.byte_code.buf[fd.last_opcode_pos] = OP.scope_get_private_field2;\n drop_count = 2;\n break;\n case OP.get_array_el:\n /* keep the object on the stack */\n fd.byte_code.buf[fd.last_opcode_pos] = OP.get_array_el2;\n drop_count = 2;\n break;\n case OP.get_array_el_opt_chain: {\n const opt_chain_label = get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1 + 1);\n /* keep the object on the stack */\n fd.byte_code.buf[fd.last_opcode_pos] = OP.get_array_el2;\n fd.byte_code.size = fd.last_opcode_pos + 1;\n const next_label = emit_goto(s, OP.goto, -1);\n emit_label(s, opt_chain_label);\n emit_op(s, OP.undefined);\n emit_label(s, next_label);\n drop_count = 2;\n opcode = OP.get_array_el;\n break;\n }\n case OP.scope_get_var: {\n const name = get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1);\n const scope = get_u16(fd.byte_code.buf, fd.last_opcode_pos + 5);\n if (name === JS_ATOM_eval && call_type === FuncCallType.NORMAL && !has_optional_chain) {\n /* direct 'eval' */\n opcode = OP.eval;\n } else {\n /* verify if function name resolves to a simple get_loc/get_arg:\n a function call inside a `with` statement can resolve to a\n method call of the `with` context object */\n if (has_with_scope(fd, scope)) {\n opcode = OP.scope_get_ref;\n fd.byte_code.buf[fd.last_opcode_pos] = opcode;\n }\n }\n drop_count = 1;\n break;\n }\n case OP.get_super_value:\n fd.byte_code.buf[fd.last_opcode_pos] = OP.get_array_el;\n /* on stack: this func_obj */\n opcode = OP.get_array_el;\n drop_count = 2;\n break;\n default:\n opcode = OP.invalid;\n drop_count = 1;\n break;\n }\n if (has_optional_chain) optional_chain_test(s, optional_chaining, drop_count);\n } else {\n opcode = OP.invalid;\n }\n\n let emit_direct_call = false;\n if (call_type === FuncCallType.TEMPLATE) {\n const out = { argc: 0 };\n if (js_parse_template(s, true, out)) return -1;\n arg_count = out.argc;\n emit_direct_call = true;\n } else {\n if (call_type === FuncCallType.SUPER_CTOR) {\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_this_active_func);\n emit_u16(s, 0);\n emit_op(s, OP.get_super);\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_new_target);\n emit_u16(s, 0);\n } else if (call_type === FuncCallType.NEW) {\n emit_op(s, OP.dup); /* new.target = function */\n }\n /* parse arguments */\n arg_count = 0;\n while (tv(s) !== 41) {\n if (arg_count >= 65535) return js_parse_error(s, 'Too many call arguments');\n if (tv(s) === TOK.ELLIPSIS) break;\n if (js_parse_assign_expr(s)) return -1;\n arg_count++;\n if (tv(s) === 41) break;\n /* accept a trailing comma before the ')' */\n if (js_parse_expect(s, 44)) return -1;\n }\n if (tv(s) === TOK.ELLIPSIS) {\n emit_op(s, OP.array_from);\n emit_u16(s, arg_count);\n emit_op(s, OP.push_i32);\n emit_u32(s, arg_count);\n /* on stack: array idx */\n while (tv(s) !== 41) {\n if (tv(s) === TOK.ELLIPSIS) {\n if (next_token(s)) return -1;\n if (js_parse_assign_expr(s)) return -1;\n emit_op(s, OP.append);\n } else {\n if (js_parse_assign_expr(s)) return -1;\n /* array idx val */\n emit_op(s, OP.define_array_el);\n emit_op(s, OP.inc);\n }\n if (tv(s) === 41) break;\n /* accept a trailing comma before the ')' */\n if (js_parse_expect(s, 44)) return -1;\n }\n if (next_token(s)) return -1;\n /* drop the index */\n emit_op(s, OP.drop);\n emit_source_pos(s, op_token_ptr);\n /* apply function call */\n switch (opcode) {\n case OP.get_field:\n case OP.scope_get_private_field:\n case OP.get_array_el:\n case OP.scope_get_ref:\n /* obj func array -> func obj array */\n emit_op(s, OP.perm3);\n emit_op(s, OP.apply);\n emit_u16(s, call_type === FuncCallType.NEW ? 1 : 0);\n break;\n case OP.eval:\n emit_op(s, OP.apply_eval);\n emit_u16(s, fd.scope_level);\n fd.has_eval_call = true;\n break;\n default:\n if (call_type === FuncCallType.SUPER_CTOR) {\n emit_op(s, OP.apply);\n emit_u16(s, 1);\n /* set the 'this' value */\n emit_op(s, OP.dup);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n emit_class_field_init(s);\n } else if (call_type === FuncCallType.NEW) {\n /* obj func array -> func obj array */\n emit_op(s, OP.perm3);\n emit_op(s, OP.apply);\n emit_u16(s, 1);\n } else {\n /* func array -> func undef array */\n emit_op(s, OP.undefined);\n emit_op(s, OP.swap);\n emit_op(s, OP.apply);\n emit_u16(s, 0);\n }\n break;\n }\n } else {\n if (next_token(s)) return -1;\n emit_direct_call = true;\n }\n }\n if (emit_direct_call) {\n emit_source_pos(s, op_token_ptr);\n switch (opcode) {\n case OP.get_field:\n case OP.scope_get_private_field:\n case OP.get_array_el:\n case OP.scope_get_ref:\n emit_op(s, OP.call_method);\n emit_u16(s, arg_count);\n break;\n case OP.eval:\n emit_op(s, OP.eval);\n emit_u16(s, arg_count);\n emit_u16(s, fd.scope_level);\n fd.has_eval_call = true;\n break;\n default:\n if (call_type === FuncCallType.SUPER_CTOR) {\n emit_op(s, OP.call_constructor);\n emit_u16(s, arg_count);\n /* set the 'this' value */\n emit_op(s, OP.dup);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n emit_class_field_init(s);\n } else if (call_type === FuncCallType.NEW) {\n emit_op(s, OP.call_constructor);\n emit_u16(s, arg_count);\n } else {\n emit_op(s, OP.call);\n emit_u16(s, arg_count);\n }\n break;\n }\n }\n call_type = FuncCallType.NORMAL;\n } else if (action === 'prop') {\n emit_source_pos(s, op_token_ptr);\n if (tv(s) === TOK.PRIVATE_NAME) {\n /* private class field */\n if (get_prev_opcode(fd) === OP.get_super) return js_parse_error(s, 'private class field forbidden after super');\n if (has_optional_chain) optional_chain_test(s, optional_chaining, 1);\n emit_op(s, OP.scope_get_private_field);\n emit_atom(s, s.token.atom);\n emit_u16(s, fd.scope_level);\n } else {\n if (!token_is_ident_or_keyword(tv(s))) return js_parse_error(s, 'expecting field name');\n if (get_prev_opcode(fd) === OP.get_super) {\n const val = JS_AtomToString(s.ctx, s.token.atom);\n if (emit_push_const(s, val, true)) return -1;\n emit_op(s, OP.get_super_value);\n } else {\n if (has_optional_chain) optional_chain_test(s, optional_chaining, 1);\n emit_op(s, OP.get_field);\n emit_atom(s, s.token.atom);\n }\n }\n if (next_token(s)) return -1;\n } else if (action === 'array') {\n const prev_op = get_prev_opcode(fd);\n if (has_optional_chain) optional_chain_test(s, optional_chaining, 1);\n if (next_token(s)) return -1;\n if (js_parse_expr(s)) return -1;\n if (js_parse_expect(s, 93)) return -1;\n emit_source_pos(s, op_token_ptr);\n if (prev_op === OP.get_super) emit_op(s, OP.get_super_value);\n else emit_op(s, OP.get_array_el);\n }\n }\n if (optional_chaining.label >= 0) {\n const fd = s.cur_func!;\n emit_label_raw(s, optional_chaining.label);\n /* modify the last opcode so that it is an indicator of an optional chain */\n let opcode = get_prev_opcode(fd);\n if (opcode === OP.get_field || opcode === OP.get_array_el) {\n if (opcode === OP.get_field) opcode = OP.get_field_opt_chain;\n else opcode = OP.get_array_el_opt_chain;\n fd.byte_code.buf[fd.last_opcode_pos] = opcode;\n } else {\n fd.last_opcode_pos = -1;\n }\n }\n return 0;\n}\n\n/* return true if the scope is a 'with' scope or inside one */\nfunction has_with_scope(fd: JSFunctionDef, scope_level: number): boolean {\n /* check if scope chain contains a with statement */\n while (scope_level > 0) {\n let scope_idx = fd.scopes[scope_level].first;\n while (scope_idx >= 0) {\n const vd = fd.vars[scope_idx];\n if (vd.scope_level !== scope_level) break;\n if (vd.var_name === JS_ATOM__with_) return true;\n scope_idx = vd.scope_next;\n }\n /* check parent scopes */\n scope_level = fd.scopes[scope_level].parent;\n }\n return false;\n}\n\n/* validate a regexp literal with the host engine; returns an error message or null */\nfunction js_check_regexp(body: string, flags: string): string | null {\n /* flags must be valid and not duplicated */\n const seen = new Set<string>();\n for (const f of flags) {\n if (!'dgimsuvy'.includes(f) || seen.has(f)) return 'invalid regular expression flags';\n seen.add(f);\n }\n if (seen.has('u') && seen.has('v')) return 'invalid regular expression flags';\n try {\n new RegExp(body, flags);\n } catch (e) {\n return (e as Error).message;\n }\n return null;\n}\n\nfunction js_parse_left_hand_side_expr(s: JSParseState): number {\n return js_parse_postfix_expr(s, PF_POSTFIX_CALL);\n}\n\nfunction js_parse_delete(s: JSParseState): number {\n const fd = s.cur_func!;\n let name: JSAtom;\n if (next_token(s)) return -1;\n if (js_parse_unary(s, PF_POW_FORBIDDEN)) return -1;\n const opcode = get_prev_opcode(fd);\n switch (opcode) {\n case OP.get_field:\n case OP.get_field_opt_chain: {\n let opt_chain_label: number;\n if (opcode === OP.get_field_opt_chain) opt_chain_label = get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1 + 4 + 1);\n else opt_chain_label = -1;\n name = get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1);\n fd.byte_code.size = fd.last_opcode_pos;\n const val = JS_AtomToString(s.ctx, name);\n if (emit_push_const(s, val, true)) return -1;\n emit_op(s, OP.delete);\n if (opt_chain_label >= 0) {\n const next_label = emit_goto(s, OP.goto, -1);\n emit_label(s, opt_chain_label);\n /* if the optional chain is not taken, return 'true' */\n emit_op(s, OP.drop);\n emit_op(s, OP.push_true);\n emit_label(s, next_label);\n }\n fd.last_opcode_pos = -1;\n break;\n }\n case OP.get_array_el:\n fd.byte_code.size = fd.last_opcode_pos;\n fd.last_opcode_pos = -1;\n emit_op(s, OP.delete);\n break;\n case OP.get_array_el_opt_chain: {\n const opt_chain_label = get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1 + 1);\n fd.byte_code.size = fd.last_opcode_pos;\n emit_op(s, OP.delete);\n const next_label = emit_goto(s, OP.goto, -1);\n emit_label(s, opt_chain_label);\n /* if the optional chain is not taken, return 'true' */\n emit_op(s, OP.drop);\n emit_op(s, OP.push_true);\n emit_label(s, next_label);\n fd.last_opcode_pos = -1;\n break;\n }\n case OP.scope_get_var:\n /* 'delete this': this is not a reference */\n name = get_u32(fd.byte_code.buf, fd.last_opcode_pos + 1);\n if (name === JS_ATOM_this || name === JS_ATOM_new_target) {\n emit_op(s, OP.drop);\n emit_op(s, OP.push_true);\n break;\n }\n if (fd.js_mode & JS_MODE_STRICT) return js_parse_error(s, 'cannot delete a direct reference in strict mode');\n fd.byte_code.buf[fd.last_opcode_pos] = OP.scope_delete_var;\n break;\n case OP.scope_get_private_field:\n return js_parse_error(s, 'cannot delete a private class field');\n case OP.get_super_value:\n fd.byte_code.size = fd.last_opcode_pos;\n fd.last_opcode_pos = -1;\n emit_op(s, OP.throw_error);\n emit_atom(s, JS_ATOM_NULL);\n emit_u8(s, JS_THROW_ERROR_DELETE_SUPER);\n break;\n default:\n emit_op(s, OP.drop);\n emit_op(s, OP.push_true);\n break;\n }\n return 0;\n}\n\n/* allowed parse_flags: PF_POW_ALLOWED, PF_POW_FORBIDDEN */\nfunction js_parse_unary(s: JSParseState, parse_flags: number): number {\n let op_token_ptr: number;\n switch (tv(s)) {\n case 43: /* + */\n case 45: /* - */\n case 33: /* ! */\n case 126: /* ~ */\n case TOK.VOID: {\n op_token_ptr = s.token.ptr;\n const op = tv(s);\n if (next_token(s)) return -1;\n if (js_parse_unary(s, PF_POW_FORBIDDEN)) return -1;\n switch (op) {\n case 45: emit_source_pos(s, op_token_ptr); emit_op(s, OP.neg); break;\n case 43: emit_source_pos(s, op_token_ptr); emit_op(s, OP.plus); break;\n case 33: emit_op(s, OP.lnot); break;\n case 126: emit_source_pos(s, op_token_ptr); emit_op(s, OP.not); break;\n case TOK.VOID: emit_op(s, OP.drop); emit_op(s, OP.undefined); break;\n }\n parse_flags = 0;\n break;\n }\n case TOK.DEC:\n case TOK.INC: {\n const op = tv(s);\n op_token_ptr = s.token.ptr;\n if (next_token(s)) return -1;\n if (js_parse_unary(s, 0)) return -1;\n const lv = get_lvalue(s, true, op, false);\n if (!lv) return -1;\n emit_source_pos(s, op_token_ptr);\n emit_op(s, OP.dec + op - TOK.DEC);\n put_lvalue(s, lv, PutLValueEnum.PUT_LVALUE_KEEP_TOP, false);\n break;\n }\n case TOK.TYPEOF: {\n if (next_token(s)) return -1;\n if (js_parse_unary(s, PF_POW_FORBIDDEN)) return -1;\n /* reference access should not return an exception, so we patch the get_var */\n const fd = s.cur_func!;\n if (get_prev_opcode(fd) === OP.scope_get_var) fd.byte_code.buf[fd.last_opcode_pos] = OP.scope_get_var_undef;\n emit_op(s, OP.typeof);\n parse_flags = 0;\n break;\n }\n case TOK.DELETE:\n if (js_parse_delete(s)) return -1;\n parse_flags = 0;\n break;\n case TOK.AWAIT:\n if (!(s.cur_func!.func_kind & JSFunctionKind.ASYNC)) return js_parse_error(s, \"unexpected 'await' keyword\");\n if (!s.cur_func!.in_function_body) return js_parse_error(s, 'await in default expression');\n if (next_token(s)) return -1;\n if (js_parse_unary(s, PF_POW_FORBIDDEN)) return -1;\n s.cur_func!.has_await = true;\n emit_op(s, OP.await);\n parse_flags = 0;\n break;\n default:\n if (js_parse_postfix_expr(s, PF_POSTFIX_CALL)) return -1;\n if (!s.got_lf && (tv(s) === TOK.DEC || tv(s) === TOK.INC)) {\n const op = tv(s);\n op_token_ptr = s.token.ptr;\n const lv = get_lvalue(s, true, op, false);\n if (!lv) return -1;\n emit_source_pos(s, op_token_ptr);\n emit_op(s, OP.post_dec + op - TOK.DEC);\n put_lvalue(s, lv, PutLValueEnum.PUT_LVALUE_KEEP_SECOND, false);\n if (next_token(s)) return -1;\n }\n break;\n }\n if (parse_flags & (PF_POW_ALLOWED | PF_POW_FORBIDDEN)) {\n if (tv(s) === TOK.POW) {\n /* Strict ES7 exponentiation syntax rules: -2**2 is a syntax error. */\n if (parse_flags & PF_POW_FORBIDDEN) {\n return js_parse_error(s, \"unparenthesized unary expression can't appear on the left-hand side of '**'\");\n }\n op_token_ptr = s.token.ptr;\n if (next_token(s)) return -1;\n if (js_parse_unary(s, PF_POW_ALLOWED)) return -1;\n emit_source_pos(s, op_token_ptr);\n emit_op(s, OP.pow);\n }\n }\n return 0;\n}\n\n/* allowed parse_flags: PF_IN_ACCEPTED */\nfunction js_parse_expr_binary(s: JSParseState, level: number, parse_flags: number): number {\n if (level === 0) {\n return js_parse_unary(s, PF_POW_ALLOWED);\n } else if (tv(s) === TOK.PRIVATE_NAME && (parse_flags & PF_IN_ACCEPTED) && level === 4 && peek_token(s, false) === TOK.IN) {\n const atom = s.token.atom;\n if (next_token(s)) return -1;\n if (tv(s) !== TOK.IN) return -1;\n if (next_token(s)) return -1;\n if (js_parse_expr_binary(s, level - 1, parse_flags)) return -1;\n emit_op(s, OP.scope_in_private_field);\n emit_atom(s, atom);\n emit_u16(s, s.cur_func!.scope_level);\n return 0;\n } else {\n if (js_parse_expr_binary(s, level - 1, parse_flags)) return -1;\n }\n for (;;) {\n const op = tv(s);\n const op_token_ptr = s.token.ptr;\n let opcode: number;\n switch (level) {\n case 1:\n switch (op) {\n case 42: opcode = OP.mul; break;\n case 47: opcode = OP.div; break;\n case 37: opcode = OP.mod; break;\n default: return 0;\n }\n break;\n case 2:\n switch (op) {\n case 43: opcode = OP.add; break;\n case 45: opcode = OP.sub; break;\n default: return 0;\n }\n break;\n case 3:\n switch (op) {\n case TOK.SHL: opcode = OP.shl; break;\n case TOK.SAR: opcode = OP.sar; break;\n case TOK.SHR: opcode = OP.shr; break;\n default: return 0;\n }\n break;\n case 4:\n switch (op) {\n case 60: opcode = OP.lt; break;\n case 62: opcode = OP.gt; break;\n case TOK.LTE: opcode = OP.lte; break;\n case TOK.GTE: opcode = OP.gte; break;\n case TOK.INSTANCEOF: opcode = OP.instanceof; break;\n case TOK.IN:\n if (parse_flags & PF_IN_ACCEPTED) opcode = OP.in;\n else return 0;\n break;\n default: return 0;\n }\n break;\n case 5:\n switch (op) {\n case TOK.EQ: opcode = OP.eq; break;\n case TOK.NEQ: opcode = OP.neq; break;\n case TOK.STRICT_EQ: opcode = OP.strict_eq; break;\n case TOK.STRICT_NEQ: opcode = OP.strict_neq; break;\n default: return 0;\n }\n break;\n case 6:\n if (op === 38) opcode = OP.and; else return 0;\n break;\n case 7:\n if (op === 94) opcode = OP.xor; else return 0;\n break;\n case 8:\n if (op === 124) opcode = OP.or; else return 0;\n break;\n default:\n throw new Error('js_parse_expr_binary');\n }\n if (next_token(s)) return -1;\n if (js_parse_expr_binary(s, level - 1, parse_flags)) return -1;\n emit_source_pos(s, op_token_ptr);\n emit_op(s, opcode);\n }\n}\n\n/* allowed parse_flags: PF_IN_ACCEPTED */\nfunction js_parse_logical_and_or(s: JSParseState, op: number, parse_flags: number): number {\n if (op === TOK.LAND) {\n if (js_parse_expr_binary(s, 8, parse_flags)) return -1;\n } else {\n if (js_parse_logical_and_or(s, TOK.LAND, parse_flags)) return -1;\n }\n if (tv(s) === op) {\n const label1 = new_label(s);\n for (;;) {\n if (next_token(s)) return -1;\n emit_op(s, OP.dup);\n emit_goto(s, op === TOK.LAND ? OP.if_false : OP.if_true, label1);\n emit_op(s, OP.drop);\n if (op === TOK.LAND) {\n if (js_parse_expr_binary(s, 8, parse_flags)) return -1;\n } else {\n if (js_parse_logical_and_or(s, TOK.LAND, parse_flags)) return -1;\n }\n if (tv(s) !== op) {\n if (tv(s) === TOK.DOUBLE_QUESTION_MARK) return js_parse_error(s, 'cannot mix ?? with && or ||');\n break;\n }\n }\n emit_label(s, label1);\n }\n return 0;\n}\n\nfunction js_parse_coalesce_expr(s: JSParseState, parse_flags: number): number {\n if (js_parse_logical_and_or(s, TOK.LOR, parse_flags)) return -1;\n if (tv(s) === TOK.DOUBLE_QUESTION_MARK) {\n const label1 = new_label(s);\n for (;;) {\n if (next_token(s)) return -1;\n emit_op(s, OP.dup);\n emit_op(s, OP.is_undefined_or_null);\n emit_goto(s, OP.if_false, label1);\n emit_op(s, OP.drop);\n if (js_parse_expr_binary(s, 8, parse_flags)) return -1;\n if (tv(s) !== TOK.DOUBLE_QUESTION_MARK) break;\n }\n emit_label(s, label1);\n }\n return 0;\n}\n\n/* allowed parse_flags: PF_IN_ACCEPTED */\nfunction js_parse_cond_expr(s: JSParseState, parse_flags: number): number {\n if (js_parse_coalesce_expr(s, parse_flags)) return -1;\n if (tv(s) === 63 /* ? */) {\n if (next_token(s)) return -1;\n const label1 = emit_goto(s, OP.if_false, -1);\n if (js_parse_assign_expr(s)) return -1;\n if (js_parse_expect(s, 58)) return -1;\n const label2 = emit_goto(s, OP.goto, -1);\n emit_label(s, label1);\n if (js_parse_assign_expr2(s, parse_flags & PF_IN_ACCEPTED)) return -1;\n emit_label(s, label2);\n }\n return 0;\n}\n\n/* allowed parse_flags: PF_IN_ACCEPTED */\nfunction js_parse_assign_expr2(s: JSParseState, parse_flags: number): number {\n let name0: JSAtom = JS_ATOM_NULL;\n const fd = s.cur_func!;\n if (tv(s) === TOK.YIELD) {\n let is_star = false;\n if (!(fd.func_kind & JSFunctionKind.GENERATOR)) return js_parse_error(s, \"unexpected 'yield' keyword\");\n if (!fd.in_function_body) return js_parse_error(s, 'yield in default expression');\n if (next_token(s)) return -1;\n /* XXX: is there a better method to detect 'yield' without parameters ? */\n if (tv(s) !== 59 && tv(s) !== 41 && tv(s) !== 93 && tv(s) !== 125 &&\n tv(s) !== 44 && tv(s) !== 58 && !s.got_lf) {\n if (tv(s) === 42) {\n is_star = true;\n if (next_token(s)) return -1;\n }\n if (js_parse_assign_expr2(s, parse_flags)) return -1;\n } else {\n emit_op(s, OP.undefined);\n }\n const is_async = (fd.func_kind === JSFunctionKind.ASYNC_GENERATOR);\n if (is_star) {\n const label_loop = new_label(s);\n const label_yield = new_label(s);\n emit_op(s, is_async ? OP.for_await_of_start : OP.for_of_start);\n /* remove the catch offset (XXX: could avoid pushing back undefined) */\n emit_op(s, OP.drop);\n emit_op(s, OP.undefined);\n emit_op(s, OP.undefined); /* initial value */\n emit_label(s, label_loop);\n emit_op(s, OP.iterator_next);\n if (is_async) emit_op(s, OP.await);\n emit_op(s, OP.iterator_check_object);\n emit_op(s, OP.get_field2);\n emit_atom(s, JS_ATOM_done);\n const label_next = emit_goto(s, OP.if_true, -1); /* end of loop */\n emit_label(s, label_yield);\n if (is_async) {\n /* OP_async_yield_star takes the value as parameter */\n emit_op(s, OP.get_field);\n emit_atom(s, JS_ATOM_value);\n emit_op(s, OP.async_yield_star);\n } else {\n /* OP_yield_star takes (value, done) as parameter */\n emit_op(s, OP.yield_star);\n }\n emit_op(s, OP.dup);\n const label_return = emit_goto(s, OP.if_true, -1);\n emit_op(s, OP.drop);\n emit_goto(s, OP.goto, label_loop);\n emit_label(s, label_return);\n emit_op(s, OP.push_i32);\n emit_u32(s, 2);\n emit_op(s, OP.strict_eq);\n const label_throw = emit_goto(s, OP.if_true, -1);\n /* return handling */\n if (is_async) emit_op(s, OP.await);\n emit_op(s, OP.iterator_call);\n emit_u8(s, 0);\n const label_return1 = emit_goto(s, OP.if_true, -1);\n if (is_async) emit_op(s, OP.await);\n emit_op(s, OP.iterator_check_object);\n emit_op(s, OP.get_field2);\n emit_atom(s, JS_ATOM_done);\n emit_goto(s, OP.if_false, label_yield);\n emit_op(s, OP.get_field);\n emit_atom(s, JS_ATOM_value);\n emit_label(s, label_return1);\n emit_op(s, OP.nip);\n emit_op(s, OP.nip);\n emit_op(s, OP.nip);\n emit_return(s, true);\n /* throw handling */\n emit_label(s, label_throw);\n emit_op(s, OP.iterator_call);\n emit_u8(s, 1);\n const label_throw1 = emit_goto(s, OP.if_true, -1);\n if (is_async) emit_op(s, OP.await);\n emit_op(s, OP.iterator_check_object);\n emit_op(s, OP.get_field2);\n emit_atom(s, JS_ATOM_done);\n emit_goto(s, OP.if_false, label_yield);\n emit_goto(s, OP.goto, label_next);\n /* close the iterator and throw a type error exception */\n emit_label(s, label_throw1);\n emit_op(s, OP.iterator_call);\n emit_u8(s, 2);\n const label_throw2 = emit_goto(s, OP.if_true, -1);\n if (is_async) emit_op(s, OP.await);\n emit_label(s, label_throw2);\n emit_op(s, OP.throw_error);\n emit_atom(s, JS_ATOM_NULL);\n emit_u8(s, JS_THROW_ERROR_ITERATOR_THROW);\n emit_label(s, label_next);\n emit_op(s, OP.get_field);\n emit_atom(s, JS_ATOM_value);\n emit_op(s, OP.nip); /* keep the value associated with done = true */\n emit_op(s, OP.nip);\n emit_op(s, OP.nip);\n } else {\n if (is_async) emit_op(s, OP.await);\n emit_op(s, OP.yield);\n const label_next = emit_goto(s, OP.if_false, -1);\n emit_return(s, true);\n emit_label(s, label_next);\n }\n return 0;\n } else if (tv(s) === 40 && js_parse_skip_parens_token(s, null, true) === TOK.ARROW) {\n return js_parse_function_decl(s, JSParseFunctionEnum.ARROW, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr);\n } else if (token_is_pseudo_keyword(s, JS_ATOM_async)) {\n /* fast test */\n const tok = peek_token(s, true);\n if (!(tok === TOK.FUNCTION || tok === 10)) {\n const source_ptr = s.token.ptr;\n const pos = js_parse_get_pos(s);\n if (next_token(s)) return -1;\n if ((tv(s) === 40 && js_parse_skip_parens_token(s, null, true) === TOK.ARROW) ||\n (tv(s) === TOK.IDENT && !s.token.is_reserved && peek_token(s, true) === TOK.ARROW)) {\n return js_parse_function_decl(s, JSParseFunctionEnum.ARROW, JSFunctionKind.ASYNC, JS_ATOM_NULL, source_ptr);\n } else {\n /* undo the token parsing */\n if (js_parse_seek_token(s, pos)) return -1;\n }\n }\n } else if (tv(s) === TOK.IDENT && peek_token(s, true) === TOK.ARROW) {\n return js_parse_function_decl(s, JSParseFunctionEnum.ARROW, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr);\n } else if (tv(s) === 123 || tv(s) === 91) {\n const bits = { bits: 0 };\n if (js_parse_skip_parens_token(s, bits, false) === 61) {\n if (js_parse_destructuring_element(s, 0, 0, false, bits.bits & SKIP_HAS_ELLIPSIS, true, false) < 0) return -1;\n return 0;\n }\n }\n /* next: */\n if (tv(s) === TOK.IDENT) {\n /* name0 is used to check for OP_set_name pattern, not duplicated */\n name0 = s.token.atom;\n }\n if (js_parse_cond_expr(s, parse_flags)) return -1;\n let op = tv(s);\n if (op === 61 || (op >= TOK.MUL_ASSIGN && op <= TOK.POW_ASSIGN)) {\n const op_token_ptr = s.token.ptr;\n if (next_token(s)) return -1;\n const lv = get_lvalue(s, op !== 61, op, false);\n if (!lv) return -1;\n if (js_parse_assign_expr2(s, parse_flags)) return -1;\n if (op === 61) {\n if (lv.opcode === OP.get_ref_value && lv.name === name0) set_object_name(s, lv.name);\n } else {\n const assign_opcodes = [OP.mul, OP.div, OP.mod, OP.add, OP.sub, OP.shl, OP.sar, OP.shr, OP.and, OP.xor, OP.or, OP.pow];\n op = assign_opcodes[op - TOK.MUL_ASSIGN];\n emit_source_pos(s, op_token_ptr);\n emit_op(s, op);\n }\n put_lvalue(s, lv, PutLValueEnum.PUT_LVALUE_KEEP_TOP, false);\n } else if (op >= TOK.LAND_ASSIGN && op <= TOK.DOUBLE_QUESTION_MARK_ASSIGN) {\n if (next_token(s)) return -1;\n const lv = get_lvalue(s, true, op, false);\n if (!lv) return -1;\n let depth_lvalue = lv.depth;\n emit_op(s, OP.dup);\n if (op === TOK.DOUBLE_QUESTION_MARK_ASSIGN) emit_op(s, OP.is_undefined_or_null);\n const label1 = emit_goto(s, op === TOK.LOR_ASSIGN ? OP.if_true : OP.if_false, -1);\n emit_op(s, OP.drop);\n if (js_parse_assign_expr2(s, parse_flags)) return -1;\n if (lv.opcode === OP.get_ref_value && lv.name === name0) set_object_name(s, lv.name);\n switch (depth_lvalue) {\n case 1: emit_op(s, OP.insert2); break;\n case 2: emit_op(s, OP.insert3); break;\n case 3: emit_op(s, OP.insert4); break;\n default: throw new Error('js_parse_assign_expr2');\n }\n /* XXX: we disable the OP_put_ref_value optimization by not using\n put_lvalue() otherwise depth_lvalue is not correct */\n put_lvalue(s, lv, PutLValueEnum.PUT_LVALUE_NOKEEP_DEPTH, false);\n const label2 = emit_goto(s, OP.goto, -1);\n emit_label(s, label1);\n /* remove the lvalue stack entries */\n while (depth_lvalue !== 0) {\n emit_op(s, OP.nip);\n depth_lvalue--;\n }\n emit_label(s, label2);\n }\n return 0;\n}\n\n\n/* ---------------------------------------------------------------------\n Statements\n --------------------------------------------------------------------- */\n\nfunction emit_break(s: JSParseState, name: JSAtom, is_cont: number): number {\n let scope_level = s.cur_func!.scope_level;\n let top = s.cur_func!.top_break;\n while (top !== null) {\n close_scopes(s, scope_level, top.scope_level);\n scope_level = top.scope_level;\n if (is_cont && top.label_cont !== -1 && (name === JS_ATOM_NULL || top.label_name === name)) {\n /* continue stays inside the same block */\n emit_goto(s, OP.goto, top.label_cont);\n return 0;\n }\n if (!is_cont && top.label_break !== -1 && ((name === JS_ATOM_NULL && !top.is_regular_stmt) || top.label_name === name)) {\n emit_goto(s, OP.goto, top.label_break);\n return 0;\n }\n let i = 0;\n if (top.has_iterator) {\n emit_op(s, OP.iterator_close);\n i += 3;\n }\n for (; i < top.drop_count; i++) emit_op(s, OP.drop);\n if (top.label_finally !== -1) {\n /* must push dummy value to keep same stack depth */\n emit_op(s, OP.undefined);\n emit_goto(s, OP.gosub, top.label_finally);\n emit_op(s, OP.drop);\n }\n top = top.prev;\n }\n if (name === JS_ATOM_NULL) {\n if (is_cont) return js_parse_error(s, 'continue must be inside loop');\n return js_parse_error(s, 'break must be inside loop or switch');\n }\n return js_parse_error(s, 'break/continue label not found');\n}\n\n/* execute the finally blocks before return */\nfunction emit_return(s: JSParseState, hasval: boolean): void {\n const fd = s.cur_func!;\n if (fd.func_kind !== JSFunctionKind.NORMAL) {\n if (!hasval) {\n /* no value: direct return in case of async generator */\n emit_op(s, OP.undefined);\n hasval = true;\n } else if (fd.func_kind === JSFunctionKind.ASYNC_GENERATOR) {\n /* the await must be done before handling the \"finally\" in case it raises an exception */\n emit_op(s, OP.await);\n }\n }\n let top = fd.top_break;\n while (top !== null) {\n if (top.has_iterator || top.label_finally !== -1) {\n if (!hasval) {\n emit_op(s, OP.undefined);\n hasval = true;\n }\n /* Remove the stack elements up to and including the catch offset. */\n emit_op(s, OP.nip_catch);\n /* stack: iter_obj next ret_val */\n if (top.has_iterator) {\n if (fd.func_kind === JSFunctionKind.ASYNC_GENERATOR) {\n emit_op(s, OP.nip); /* next */\n emit_op(s, OP.swap);\n emit_op(s, OP.get_field2);\n emit_atom(s, JS_ATOM_return);\n /* stack: iter_obj return_func */\n emit_op(s, OP.dup);\n emit_op(s, OP.is_undefined_or_null);\n const label_next = emit_goto(s, OP.if_true, -1);\n emit_op(s, OP.call_method);\n emit_u16(s, 0);\n emit_op(s, OP.iterator_check_object);\n emit_op(s, OP.await);\n const label_next2 = emit_goto(s, OP.goto, -1);\n emit_label(s, label_next);\n emit_op(s, OP.drop);\n emit_label(s, label_next2);\n emit_op(s, OP.drop);\n } else {\n emit_op(s, OP.rot3r);\n emit_op(s, OP.undefined); /* dummy catch offset */\n emit_op(s, OP.iterator_close);\n }\n } else {\n /* execute the \"finally\" block */\n emit_goto(s, OP.gosub, top.label_finally);\n }\n }\n top = top.prev;\n }\n if (fd.is_derived_class_constructor) {\n let label_return: number;\n /* 'this' can be uninitialized, so it may be accessed only if the\n derived class constructor does not return an object */\n if (hasval) {\n emit_op(s, OP.check_ctor_return);\n label_return = emit_goto(s, OP.if_false, -1);\n emit_op(s, OP.drop);\n } else {\n label_return = -1;\n }\n /* The error should be raised in the caller context, so we use a specific opcode */\n emit_op(s, OP.scope_get_var_checkthis);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n emit_label(s, label_return);\n emit_op(s, OP.return);\n } else if (fd.func_kind !== JSFunctionKind.NORMAL) {\n emit_op(s, OP.return_async);\n } else {\n emit_op(s, hasval ? OP.return : OP.return_undef);\n }\n}\n\nconst DECL_MASK_FUNC = 1 << 0; /* allow normal function declaration */\n/* ored with DECL_MASK_FUNC if function declarations are allowed with a label */\nconst DECL_MASK_FUNC_WITH_LABEL = 1 << 1;\nconst DECL_MASK_OTHER = 1 << 2; /* all other declarations */\nconst DECL_MASK_ALL = DECL_MASK_FUNC | DECL_MASK_FUNC_WITH_LABEL | DECL_MASK_OTHER;\n\nfunction js_parse_statement(s: JSParseState): number {\n return js_parse_statement_or_decl(s, 0);\n}\n\nfunction js_parse_block(s: JSParseState): number {\n if (js_parse_expect(s, 123)) return -1;\n if (tv(s) !== 125) {\n push_scope(s);\n for (;;) {\n if (js_parse_statement_or_decl(s, DECL_MASK_ALL)) return -1;\n if (tv(s) === 125) break;\n }\n pop_scope(s);\n }\n if (next_token(s)) return -1;\n return 0;\n}\n\n/* allowed parse_flags: PF_IN_ACCEPTED */\nfunction js_parse_var(s: JSParseState, parse_flags: number, tok: number, export_flag: boolean): number {\n const fd = s.cur_func!;\n for (;;) {\n if (tv(s) === TOK.IDENT) {\n if (s.token.is_reserved) return js_parse_error_reserved_identifier(s);\n const name = s.token.atom;\n if (name === JS_ATOM_let && (tok === TOK.LET || tok === TOK.CONST)) return js_parse_error(s, \"'let' is not a valid lexical identifier\");\n if (next_token(s)) return -1;\n if (js_define_var(s, name, tok)) return -1;\n if (tv(s) === 61 /* = */) {\n if (next_token(s)) return -1;\n if (need_var_reference(s, tok)) {\n /* Must make a reference for proper `with` semantics */\n emit_op(s, OP.scope_get_var);\n emit_atom(s, name);\n emit_u16(s, fd.scope_level);\n const lv = get_lvalue(s, false, 61, false);\n if (!lv) return -1;\n if (js_parse_assign_expr2(s, parse_flags)) return -1;\n set_object_name(s, name);\n put_lvalue(s, lv, PutLValueEnum.PUT_LVALUE_NOKEEP, false);\n } else {\n if (js_parse_assign_expr2(s, parse_flags)) return -1;\n set_object_name(s, name);\n emit_op(s, (tok === TOK.CONST || tok === TOK.LET) ? OP.scope_put_var_init : OP.scope_put_var);\n emit_atom(s, name);\n emit_u16(s, fd.scope_level);\n }\n } else {\n if (tok === TOK.CONST) return js_parse_error(s, 'missing initializer for const variable');\n if (tok === TOK.LET) {\n /* initialize lexical variable upon entering its scope */\n emit_op(s, OP.undefined);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, name);\n emit_u16(s, fd.scope_level);\n }\n }\n } else {\n const bits = { bits: 0 };\n if ((tv(s) === 91 || tv(s) === 123) && js_parse_skip_parens_token(s, bits, false) === 61) {\n emit_op(s, OP.undefined);\n if (js_parse_destructuring_element(s, tok, 0, true, bits.bits & SKIP_HAS_ELLIPSIS, true, export_flag) < 0) return -1;\n } else {\n return js_parse_error(s, 'variable name expected');\n }\n }\n if (tv(s) !== 44) break;\n if (next_token(s)) return -1;\n }\n return 0;\n}\n\n/* test if the current token is a label. Use simplistic look-ahead scanner */\nfunction is_label(s: JSParseState): boolean {\n return tv(s) === TOK.IDENT && !s.token.is_reserved && peek_token(s, false) === 58;\n}\n\n/* test if the current token is a let keyword. Use simplistic look-ahead scanner.\n Returns 1 (true), 0 (false) or -1 (error) */\nfunction is_let(s: JSParseState, decl_mask: number): number {\n let res = 0;\n if (token_is_pseudo_keyword(s, JS_ATOM_let)) {\n const pos = js_parse_get_pos(s);\n for (;;) {\n const last_token_ptr = s.token.ptr;\n if (next_token(s)) { res = -1; break; }\n if (tv(s) === 91) {\n /* let [ is a syntax restriction: it never introduces an ExpressionStatement */\n res = 1;\n break;\n }\n if (tv(s) === 123 || (tv(s) === TOK.IDENT && !s.token.is_reserved) ||\n tv(s) === TOK.LET || tv(s) === TOK.YIELD || tv(s) === TOK.AWAIT) {\n /* Check for possible ASI if not scanning for Declaration */\n if (!has_lf_in_range(s, last_token_ptr, s.token.ptr) || (decl_mask & DECL_MASK_OTHER)) {\n res = 1;\n break;\n }\n break;\n }\n break;\n }\n if (js_parse_seek_token(s, pos)) res = -1;\n }\n return res;\n}\n\nfunction has_lf_in_range(s: JSParseState, p1: number, p2: number): boolean {\n if (p1 > p2) { const t = p1; p1 = p2; p2 = t; }\n for (let i = p1; i < p2; i++) {\n const c = s.buf.charCodeAt(i);\n if (c === 10 || c === 13 || c === CP_LS || c === CP_PS) return true;\n }\n return false;\n}\n\n/* XXX: handle IteratorClose when exiting the loop before the enumeration is done */\nfunction js_parse_for_in_of(s: JSParseState, label_name: JSAtom, is_async: boolean): number {\n const fd = s.cur_func!;\n let var_name: JSAtom = JS_ATOM_NULL;\n let has_initializer = false, is_for_of = false, has_destructuring = false;\n const block_scope_level = fd.scope_level;\n const label_cont = new_label(s);\n const label_body = new_label(s);\n const label_break = new_label(s);\n const label_next = new_label(s);\n const break_entry = new BlockEnv();\n\n /* create scope for the lexical variables declared in the enumeration expressions. */\n push_scope(s);\n\n /* local for_in scope starts here so individual elements can be closed in statement. */\n push_break_entry(fd, break_entry, label_name, label_break, label_cont, 1);\n break_entry.scope_level = block_scope_level;\n\n const label_expr = emit_goto(s, OP.goto, -1);\n const pos_next = fd.byte_code.size;\n emit_label(s, label_next);\n\n let tok = tv(s);\n switch (is_let(s, DECL_MASK_OTHER)) {\n case 1: tok = TOK.LET; break;\n case 0: break;\n default: return -1;\n }\n if (tok === TOK.VAR || tok === TOK.LET || tok === TOK.CONST) {\n if (next_token(s)) return -1;\n if (!(tv(s) === TOK.IDENT && !s.token.is_reserved)) {\n if (tv(s) === 91 || tv(s) === 123) {\n if (js_parse_destructuring_element(s, tok, 0, true, -1, false, false) < 0) return -1;\n has_destructuring = true;\n } else {\n return js_parse_error(s, 'variable name expected');\n }\n var_name = JS_ATOM_NULL;\n } else {\n var_name = s.token.atom;\n if (next_token(s)) return -1;\n if (js_define_var(s, var_name, tok)) return -1;\n emit_op(s, (tok === TOK.CONST || tok === TOK.LET) ? OP.scope_put_var_init : OP.scope_put_var);\n emit_atom(s, var_name);\n emit_u16(s, fd.scope_level);\n }\n } else if (!is_async && token_is_pseudo_keyword(s, JS_ATOM_async) && peek_token(s, false) === TOK.OF) {\n return js_parse_error(s, \"'for of' expression cannot start with 'async'\");\n } else {\n const bits = { bits: 0 };\n let tok1: number;\n if ((tv(s) === 91 || tv(s) === 123) &&\n ((tok1 = js_parse_skip_parens_token(s, bits, false)) === TOK.IN || tok1 === TOK.OF)) {\n if (js_parse_destructuring_element(s, 0, 0, true, bits.bits & SKIP_HAS_ELLIPSIS, true, false) < 0) return -1;\n } else {\n if (js_parse_left_hand_side_expr(s)) return -1;\n const lv = get_lvalue(s, false, TOK.FOR, false);\n if (!lv) return -1;\n put_lvalue(s, lv, PutLValueEnum.PUT_LVALUE_NOKEEP_BOTTOM, false);\n }\n var_name = JS_ATOM_NULL;\n }\n emit_goto(s, OP.goto, label_body);\n\n const pos_expr = fd.byte_code.size;\n emit_label(s, label_expr);\n if (tv(s) === 61) {\n /* XXX: potential scoping issue if inside `with` statement */\n has_initializer = true;\n /* parse and evaluate initializer prior to evaluating the object (only\n used with \"for in\" with a non lexical variable in non strict mode */\n if (next_token(s) || js_parse_assign_expr2(s, 0)) return -1;\n if (var_name !== JS_ATOM_NULL) {\n emit_op(s, OP.scope_put_var);\n emit_atom(s, var_name);\n emit_u16(s, fd.scope_level);\n }\n }\n\n if (token_is_pseudo_keyword(s, JS_ATOM_of)) {\n break_entry.has_iterator = is_for_of = true;\n break_entry.drop_count += 2;\n if (has_initializer) return js_parse_error(s, \"a declaration in the head of a for-of loop can't have an initializer\");\n } else if (tv(s) === TOK.IN) {\n if (is_async) return js_parse_error(s, \"'for await' loop should be used with 'of'\");\n if (has_initializer && (tok !== TOK.VAR || (fd.js_mode & JS_MODE_STRICT) || has_destructuring)) {\n return js_parse_error(s, \"a declaration in the head of a for-in loop can't have an initializer\");\n }\n } else {\n return js_parse_error(s, \"expected 'of' or 'in' in for control expression\");\n }\n if (next_token(s)) return -1;\n if (is_for_of) {\n if (js_parse_assign_expr(s)) return -1;\n } else {\n if (js_parse_expr(s)) return -1;\n }\n /* close the scope after having evaluated the expression so that the TDZ values are in the closures */\n close_scopes(s, fd.scope_level, block_scope_level);\n if (is_for_of) {\n if (is_async) emit_op(s, OP.for_await_of_start);\n else emit_op(s, OP.for_of_start);\n /* on stack: enum_rec */\n } else {\n emit_op(s, OP.for_in_start);\n /* on stack: enum_obj */\n }\n emit_goto(s, OP.goto, label_cont);\n\n if (js_parse_expect(s, 41)) return -1;\n\n {\n /* move the `next` code here */\n const bc = fd.byte_code;\n const chunk_size = pos_expr - pos_next;\n const offset = bc.size - pos_next;\n const chunk = bc.buf.slice(pos_next, pos_expr);\n bc.put_bytes(chunk, 0, chunk_size);\n bc.buf.fill(OP.nop, pos_next, pos_expr);\n /* `next` part ends with a goto */\n fd.last_opcode_pos = bc.size - 5;\n /* relocate labels */\n for (let i = label_cont; i < fd.label_slots.length; i++) {\n const ls = fd.label_slots[i];\n if (ls.pos >= pos_next && ls.pos < pos_expr) ls.pos += offset;\n }\n }\n\n emit_label(s, label_body);\n if (js_parse_statement(s)) return -1;\n\n close_scopes(s, fd.scope_level, block_scope_level);\n\n emit_label(s, label_cont);\n if (is_for_of) {\n if (is_async) {\n /* stack: iter_obj next catch_offset */\n /* call the next method */\n emit_op(s, OP.for_await_of_next);\n /* get the result of the promise */\n emit_op(s, OP.await);\n /* unwrap the value and done values */\n emit_op(s, OP.iterator_get_value_done);\n } else {\n emit_op(s, OP.for_of_next);\n emit_u8(s, 0);\n }\n } else {\n emit_op(s, OP.for_in_next);\n }\n /* on stack: enum_rec / enum_obj value bool */\n emit_goto(s, OP.if_false, label_next);\n /* drop the undefined value from for_xx_next */\n emit_op(s, OP.drop);\n\n emit_label(s, label_break);\n if (is_for_of) {\n /* close and drop enum_rec */\n emit_op(s, OP.iterator_close);\n } else {\n emit_op(s, OP.drop);\n }\n pop_break_entry(fd);\n pop_scope(s);\n return 0;\n}\n\nfunction set_eval_ret_undefined(s: JSParseState): void {\n if (s.cur_func!.eval_ret_idx >= 0) {\n emit_op(s, OP.undefined);\n emit_op(s, OP.put_loc);\n emit_u16(s, s.cur_func!.eval_ret_idx);\n }\n}\n\nfunction js_parse_statement_or_decl(s: JSParseState, decl_mask: number): number {\n const ctx = s.ctx;\n let label_name: JSAtom = JS_ATOM_NULL;\n const fd = s.cur_func!;\n\n /* specific label handling */\n /* XXX: support multiple labels on loop statements */\n if (is_label(s)) {\n label_name = s.token.atom;\n for (let be = fd.top_break; be; be = be.prev) {\n if (be.label_name === label_name) return js_parse_error(s, 'duplicate label name');\n }\n if (next_token(s)) return -1;\n if (js_parse_expect(s, 58)) return -1;\n if (tv(s) !== TOK.FOR && tv(s) !== TOK.DO && tv(s) !== TOK.WHILE) {\n /* labelled regular statement */\n const break_entry = new BlockEnv();\n const label_break = new_label(s);\n push_break_entry(fd, break_entry, label_name, label_break, -1, 0);\n break_entry.is_regular_stmt = true;\n let mask: number;\n if (!(fd.js_mode & JS_MODE_STRICT) && (decl_mask & DECL_MASK_FUNC_WITH_LABEL)) mask = DECL_MASK_FUNC | DECL_MASK_FUNC_WITH_LABEL;\n else mask = 0;\n if (js_parse_statement_or_decl(s, mask)) return -1;\n emit_label(s, label_break);\n pop_break_entry(fd);\n return 0;\n }\n }\n\n let tok = tv(s);\n switch (tok) {\n case 123: /* { */\n if (js_parse_block(s)) return -1;\n break;\n case TOK.RETURN: {\n if (fd.is_eval) return js_parse_error(s, 'return not in a function');\n if (fd.func_type === JSParseFunctionEnum.CLASS_STATIC_INIT) return js_parse_error(s, 'return in a static initializer block');\n const op_token_ptr = s.token.ptr;\n if (next_token(s)) return -1;\n if (tv(s) !== 59 && tv(s) !== 125 && !s.got_lf) {\n if (js_parse_expr(s)) return -1;\n emit_source_pos(s, op_token_ptr);\n emit_return(s, true);\n } else {\n emit_source_pos(s, op_token_ptr);\n emit_return(s, false);\n }\n if (js_parse_expect_semi(s)) return -1;\n break;\n }\n case TOK.THROW: {\n const op_token_ptr = s.token.ptr;\n if (next_token(s)) return -1;\n if (s.got_lf) return js_parse_error(s, 'line terminator not allowed after throw');\n if (js_parse_expr(s)) return -1;\n emit_source_pos(s, op_token_ptr);\n emit_op(s, OP.throw);\n if (js_parse_expect_semi(s)) return -1;\n break;\n }\n case TOK.LET:\n case TOK.CONST:\n case TOK.VAR:\n haslet:\n if (tok !== TOK.VAR && !(decl_mask & DECL_MASK_OTHER)) return js_parse_error(s, \"lexical declarations can't appear in single-statement context\");\n if (next_token(s)) return -1;\n if (js_parse_var(s, PF_IN_ACCEPTED, tok, false)) return -1;\n if (js_parse_expect_semi(s)) return -1;\n break;\n case TOK.IF: {\n if (next_token(s)) return -1;\n /* create a new scope for `let f;if(1) function f(){}` */\n push_scope(s);\n set_eval_ret_undefined(s);\n if (js_parse_expr_paren(s)) return -1;\n let label1 = emit_goto(s, OP.if_false, -1);\n const mask = (fd.js_mode & JS_MODE_STRICT) ? 0 : DECL_MASK_FUNC; /* Annex B.3.4 */\n if (js_parse_statement_or_decl(s, mask)) return -1;\n if (tv(s) === TOK.ELSE) {\n const label2 = emit_goto(s, OP.goto, -1);\n if (next_token(s)) return -1;\n emit_label(s, label1);\n if (js_parse_statement_or_decl(s, mask)) return -1;\n label1 = label2;\n }\n emit_label(s, label1);\n pop_scope(s);\n break;\n }\n case TOK.WHILE: {\n const break_entry = new BlockEnv();\n const label_cont = new_label(s);\n const label_break = new_label(s);\n push_break_entry(fd, break_entry, label_name, label_break, label_cont, 0);\n if (next_token(s)) return -1;\n set_eval_ret_undefined(s);\n emit_label(s, label_cont);\n if (js_parse_expr_paren(s)) return -1;\n emit_goto(s, OP.if_false, label_break);\n if (js_parse_statement(s)) return -1;\n emit_goto(s, OP.goto, label_cont);\n emit_label(s, label_break);\n pop_break_entry(fd);\n break;\n }\n case TOK.DO: {\n const break_entry = new BlockEnv();\n const label_cont = new_label(s);\n const label_break = new_label(s);\n const label1 = new_label(s);\n push_break_entry(fd, break_entry, label_name, label_break, label_cont, 0);\n if (next_token(s)) return -1;\n emit_label(s, label1);\n set_eval_ret_undefined(s);\n if (js_parse_statement(s)) return -1;\n emit_label(s, label_cont);\n if (js_parse_expect(s, TOK.WHILE)) return -1;\n if (js_parse_expr_paren(s)) return -1;\n /* Insert semicolon if missing */\n if (tv(s) === 59) {\n if (next_token(s)) return -1;\n }\n emit_goto(s, OP.if_true, label1);\n emit_label(s, label_break);\n pop_break_entry(fd);\n break;\n }\n case TOK.FOR: {\n const break_entry = new BlockEnv();\n let is_async = false;\n if (next_token(s)) return -1;\n set_eval_ret_undefined(s);\n const bits = { bits: 0 };\n if (tv(s) === 40) {\n js_parse_skip_parens_token(s, bits, false);\n } else if (tv(s) === TOK.AWAIT) {\n if (!(fd.func_kind & JSFunctionKind.ASYNC)) return js_parse_error(s, 'for await is only valid in asynchronous functions');\n is_async = true;\n if (next_token(s)) return -1;\n fd.has_await = true;\n }\n if (js_parse_expect(s, 40)) return -1;\n if (!(bits.bits & SKIP_HAS_SEMI)) {\n /* parse for/in or for/of */\n if (js_parse_for_in_of(s, label_name, is_async)) return -1;\n break;\n }\n const block_scope_level = fd.scope_level;\n /* create scope for the lexical variables declared in the initial, test and increment expressions */\n push_scope(s);\n /* initial expression */\n let tok2 = tv(s);\n if (tok2 !== 59) {\n switch (is_let(s, DECL_MASK_OTHER)) {\n case 1: tok2 = TOK.LET; break;\n case 0: break;\n default: return -1;\n }\n if (tok2 === TOK.VAR || tok2 === TOK.LET || tok2 === TOK.CONST) {\n if (next_token(s)) return -1;\n if (js_parse_var(s, 0, tok2, false)) return -1;\n } else {\n if (js_parse_expr2(s, 0)) return -1;\n emit_op(s, OP.drop);\n }\n /* close the closures before the first iteration */\n close_scopes(s, fd.scope_level, block_scope_level);\n }\n if (js_parse_expect(s, 59)) return -1;\n\n let label_test = new_label(s);\n let label_cont = new_label(s);\n const label_body = new_label(s);\n const label_break = new_label(s);\n push_break_entry(fd, break_entry, label_name, label_break, label_cont, 0);\n\n /* test expression */\n if (tv(s) === 59) {\n /* no test expression */\n label_test = label_body;\n } else {\n emit_label(s, label_test);\n if (js_parse_expr(s)) return -1;\n emit_goto(s, OP.if_false, label_break);\n }\n if (js_parse_expect(s, 59)) return -1;\n\n let pos_cont = 0;\n if (tv(s) === 41) {\n /* no end expression */\n break_entry.label_cont = label_cont = label_test;\n } else {\n /* skip the end expression */\n emit_goto(s, OP.goto, label_body);\n pos_cont = fd.byte_code.size;\n emit_label(s, label_cont);\n if (js_parse_expr(s)) return -1;\n emit_op(s, OP.drop);\n if (label_test !== label_body) emit_goto(s, OP.goto, label_test);\n }\n if (js_parse_expect(s, 41)) return -1;\n\n const pos_body = fd.byte_code.size;\n emit_label(s, label_body);\n if (js_parse_statement(s)) return -1;\n\n /* close the closures before the next iteration */\n /* XXX: check continue case */\n close_scopes(s, fd.scope_level, block_scope_level);\n\n if (label_test !== label_body && label_cont !== label_test) {\n /* move the increment code here */\n const bc = fd.byte_code;\n const chunk_size = pos_body - pos_cont;\n const offset = bc.size - pos_cont;\n const chunk = bc.buf.slice(pos_cont, pos_body);\n bc.put_bytes(chunk, 0, chunk_size);\n bc.buf.fill(OP.nop, pos_cont, pos_body);\n /* increment part ends with a goto */\n fd.last_opcode_pos = bc.size - 5;\n /* relocate labels */\n for (let i = label_cont; i < fd.label_slots.length; i++) {\n const ls = fd.label_slots[i];\n if (ls.pos >= pos_cont && ls.pos < pos_body) ls.pos += offset;\n }\n } else {\n emit_goto(s, OP.goto, label_cont);\n }\n\n emit_label(s, label_break);\n pop_break_entry(fd);\n pop_scope(s);\n break;\n }\n case TOK.BREAK:\n case TOK.CONTINUE: {\n const is_cont = tv(s) - TOK.BREAK;\n let label: JSAtom;\n if (next_token(s)) return -1;\n if (!s.got_lf && tv(s) === TOK.IDENT && !s.token.is_reserved) label = s.token.atom;\n else label = JS_ATOM_NULL;\n if (emit_break(s, label, is_cont)) return -1;\n if (label !== JS_ATOM_NULL) {\n if (next_token(s)) return -1;\n }\n if (js_parse_expect_semi(s)) return -1;\n break;\n }\n case TOK.SWITCH: {\n const break_entry = new BlockEnv();\n if (next_token(s)) return -1;\n set_eval_ret_undefined(s);\n if (js_parse_expr_paren(s)) return -1;\n push_scope(s);\n const label_break = new_label(s);\n push_break_entry(fd, break_entry, label_name, label_break, -1, 1);\n if (js_parse_expect(s, 123)) return -1;\n let default_label_pos = -1;\n let label_case = -1;\n while (tv(s) !== 125) {\n if (tv(s) === TOK.CASE) {\n let label1 = -1;\n if (label_case >= 0) {\n /* skip the case if needed */\n label1 = emit_goto(s, OP.goto, -1);\n }\n emit_label(s, label_case);\n label_case = -1;\n for (;;) {\n /* parse a sequence of case clauses */\n if (next_token(s)) return -1;\n emit_op(s, OP.dup);\n if (js_parse_expr(s)) return -1;\n if (js_parse_expect(s, 58)) return -1;\n emit_op(s, OP.strict_eq);\n if (tv(s) === TOK.CASE) {\n label1 = emit_goto(s, OP.if_true, label1);\n } else {\n label_case = emit_goto(s, OP.if_false, -1);\n emit_label(s, label1);\n break;\n }\n }\n } else if (tv(s) === TOK.DEFAULT) {\n if (next_token(s)) return -1;\n if (js_parse_expect(s, 58)) return -1;\n if (default_label_pos >= 0) return js_parse_error(s, 'duplicate default');\n if (label_case < 0) {\n /* falling thru direct from switch expression */\n label_case = emit_goto(s, OP.goto, -1);\n }\n /* Emit a dummy label opcode. Label will be patched after the end of the switch body. */\n emit_op(s, OP.label);\n emit_u32(s, 0);\n default_label_pos = fd.byte_code.size - 4;\n } else {\n if (label_case < 0) {\n /* falling thru direct from switch expression */\n return js_parse_error(s, 'invalid switch statement');\n }\n if (js_parse_statement_or_decl(s, DECL_MASK_ALL)) return -1;\n }\n }\n if (js_parse_expect(s, 125)) return -1;\n if (default_label_pos >= 0) {\n /* Ugly patch for the the `default` label, shameful and risky */\n put_u32(fd.byte_code.buf, default_label_pos, label_case);\n fd.label_slots[label_case].pos = default_label_pos + 4;\n } else {\n emit_label(s, label_case);\n }\n emit_label(s, label_break);\n emit_op(s, OP.drop); /* drop the switch expression */\n pop_break_entry(fd);\n pop_scope(s);\n break;\n }\n case TOK.TRY: {\n const block_env = new BlockEnv();\n set_eval_ret_undefined(s);\n if (next_token(s)) return -1;\n const label_catch = new_label(s);\n const label_catch2 = new_label(s);\n const label_finally = new_label(s);\n const label_end = new_label(s);\n\n emit_goto(s, OP.catch, label_catch);\n\n push_break_entry(fd, block_env, JS_ATOM_NULL, -1, -1, 1);\n block_env.label_finally = label_finally;\n\n if (js_parse_block(s)) return -1;\n\n pop_break_entry(fd);\n\n if (js_is_live_code(s)) {\n /* drop the catch offset */\n emit_op(s, OP.drop);\n /* must push dummy value to keep same stack size */\n emit_op(s, OP.undefined);\n emit_goto(s, OP.gosub, label_finally);\n emit_op(s, OP.drop);\n emit_goto(s, OP.goto, label_end);\n }\n\n if (tv(s) === TOK.CATCH) {\n if (next_token(s)) return -1;\n push_scope(s); /* catch variable */\n emit_label(s, label_catch);\n if (tv(s) === 123) {\n /* support optional-catch-binding feature */\n emit_op(s, OP.drop); /* pop the exception object */\n } else {\n if (js_parse_expect(s, 40)) return -1;\n if (!(tv(s) === TOK.IDENT && !s.token.is_reserved)) {\n if (tv(s) === 91 || tv(s) === 123) {\n /* XXX: TOK_LET is not completely correct */\n if (js_parse_destructuring_element(s, TOK.LET, 0, true, -1, true, false) < 0) return -1;\n } else {\n return js_parse_error(s, 'identifier expected');\n }\n } else {\n const name = s.token.atom;\n if (next_token(s) || js_define_var(s, name, TOK.CATCH) < 0) return -1;\n /* store the exception value in the catch variable */\n emit_op(s, OP.scope_put_var);\n emit_u32(s, name);\n emit_u16(s, fd.scope_level);\n }\n if (js_parse_expect(s, 41)) return -1;\n }\n /* XXX: should keep the address to nop it out if there is no finally block */\n emit_goto(s, OP.catch, label_catch2);\n\n push_scope(s); /* catch block */\n push_break_entry(fd, block_env, JS_ATOM_NULL, -1, -1, 1);\n block_env.label_finally = label_finally;\n\n if (js_parse_block(s)) return -1;\n\n pop_break_entry(fd);\n pop_scope(s); /* catch block */\n pop_scope(s); /* catch variable */\n\n if (js_is_live_code(s)) {\n /* drop the catch2 offset */\n emit_op(s, OP.drop);\n /* must push dummy value to keep same stack size */\n emit_op(s, OP.undefined);\n emit_goto(s, OP.gosub, label_finally);\n emit_op(s, OP.drop);\n emit_goto(s, OP.goto, label_end);\n }\n /* catch exceptions thrown in the catch block to execute the\n finally clause and rethrow the exception */\n emit_label(s, label_catch2);\n /* catch value is at TOS, no need to push undefined */\n emit_goto(s, OP.gosub, label_finally);\n emit_op(s, OP.throw);\n } else if (tv(s) === TOK.FINALLY) {\n /* finally without catch : execute the finally clause and rethrow the exception */\n emit_label(s, label_catch);\n /* catch value is at TOS, no need to push undefined */\n emit_goto(s, OP.gosub, label_finally);\n emit_op(s, OP.throw);\n } else {\n return js_parse_error(s, 'expecting catch or finally');\n }\n emit_label(s, label_finally);\n if (tv(s) === TOK.FINALLY) {\n let saved_eval_ret_idx = 0;\n if (next_token(s)) return -1;\n /* on the stack: ret_value gosub_ret_value */\n push_break_entry(fd, block_env, JS_ATOM_NULL, -1, -1, 2);\n if (fd.eval_ret_idx >= 0) {\n /* 'finally' updates eval_ret only if not a normal termination */\n saved_eval_ret_idx = add_var(ctx, fd, JS_ATOM__ret_);\n if (saved_eval_ret_idx < 0) return -1;\n emit_op(s, OP.get_loc);\n emit_u16(s, fd.eval_ret_idx);\n emit_op(s, OP.put_loc);\n emit_u16(s, saved_eval_ret_idx);\n set_eval_ret_undefined(s);\n }\n if (js_parse_block(s)) return -1;\n if (fd.eval_ret_idx >= 0) {\n emit_op(s, OP.get_loc);\n emit_u16(s, saved_eval_ret_idx);\n emit_op(s, OP.put_loc);\n emit_u16(s, fd.eval_ret_idx);\n }\n pop_break_entry(fd);\n }\n emit_op(s, OP.ret);\n emit_label(s, label_end);\n break;\n }\n case 59: /* ; : empty statement */\n if (next_token(s)) return -1;\n break;\n case TOK.WITH: {\n if (fd.js_mode & JS_MODE_STRICT) return js_parse_error(s, 'invalid keyword: with');\n if (next_token(s)) return -1;\n if (js_parse_expr_paren(s)) return -1;\n push_scope(s);\n const with_idx = define_var(s, fd, JS_ATOM__with_, JSVarDefEnum.WITH);\n if (with_idx < 0) return -1;\n emit_op(s, OP.to_object);\n emit_op(s, OP.put_loc);\n emit_u16(s, with_idx);\n set_eval_ret_undefined(s);\n if (js_parse_statement(s)) return -1;\n /* Popping scope drops lexical context for the with object variable */\n pop_scope(s);\n break;\n }\n case TOK.FUNCTION:\n /* ES6 Annex B.3.2 and B.3.3 semantics */\n if (!(decl_mask & DECL_MASK_FUNC)) return js_parse_error(s, \"function declarations can't appear in single-statement context\");\n if (!(decl_mask & DECL_MASK_OTHER) && peek_token(s, false) === 42) return js_parse_error(s, \"function declarations can't appear in single-statement context\");\n if (js_parse_function_decl(s, JSParseFunctionEnum.VAR, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr)) return -1;\n break;\n case TOK.IDENT: {\n if (s.token.is_reserved) return js_parse_error_reserved_identifier(s);\n /* Determine if `let` introduces a Declaration or an ExpressionStatement */\n switch (is_let(s, decl_mask)) {\n case 1:\n tok = TOK.LET;\n if (!(decl_mask & DECL_MASK_OTHER)) return js_parse_error(s, \"lexical declarations can't appear in single-statement context\");\n if (next_token(s)) return -1;\n if (js_parse_var(s, PF_IN_ACCEPTED, tok, false)) return -1;\n if (js_parse_expect_semi(s)) return -1;\n return 0;\n case 0: break;\n default: return -1;\n }\n if (token_is_pseudo_keyword(s, JS_ATOM_async) && peek_token(s, true) === TOK.FUNCTION) {\n if (!(decl_mask & DECL_MASK_OTHER)) return js_parse_error(s, \"function declarations can't appear in single-statement context\");\n if (js_parse_function_decl(s, JSParseFunctionEnum.VAR, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr)) return -1;\n break;\n }\n /* fall thru: expression statement */\n return js_parse_expr_statement(s);\n }\n case TOK.CLASS:\n if (!(decl_mask & DECL_MASK_OTHER)) return js_parse_error(s, \"class declarations can't appear in single-statement context\");\n if (js_parse_class(s, false, JSParseExportEnum.NONE)) return -1;\n break;\n case TOK.DEBUGGER:\n /* currently no debugger, so just skip the keyword */\n if (next_token(s)) return -1;\n if (js_parse_expect_semi(s)) return -1;\n break;\n case TOK.ENUM:\n case TOK.EXPORT:\n case TOK.EXTENDS:\n return js_unsupported_keyword(s, s.token.atom);\n case TOK.IMPORT:\n if (peek_token(s, false) !== 40 && peek_token(s, false) !== 46) return js_parse_error(s, 'import declarations are only supported in modules');\n return js_parse_expr_statement(s);\n default:\n return js_parse_expr_statement(s);\n }\n return 0;\n}\n\nfunction js_parse_expr_statement(s: JSParseState): number {\n emit_source_pos(s, s.token.ptr);\n if (js_parse_expr(s)) return -1;\n if (s.cur_func!.eval_ret_idx >= 0) {\n /* store the expression value so that it can be returned by eval() */\n emit_op(s, OP.put_loc);\n emit_u16(s, s.cur_func!.eval_ret_idx);\n } else {\n emit_op(s, OP.drop); /* drop the result */\n }\n if (js_parse_expect_semi(s)) return -1;\n return 0;\n}\n\nfunction js_parse_assign_expr(s: JSParseState): number {\n return js_parse_assign_expr2(s, PF_IN_ACCEPTED);\n}\n\n/* allowed parse_flags: PF_IN_ACCEPTED */\nfunction js_parse_expr2(s: JSParseState, parse_flags: number): number {\n let comma = false;\n for (;;) {\n if (js_parse_assign_expr2(s, parse_flags)) return -1;\n if (comma) {\n /* prevent get_lvalue from using the last expression as an lvalue.\n This also prevents the conversion of get_var to get_ref for\n method lookup in function call inside `with` statement. */\n s.cur_func!.last_opcode_pos = -1;\n }\n if (tv(s) !== 44) break;\n comma = true;\n if (next_token(s)) return -1;\n emit_op(s, OP.drop);\n }\n return 0;\n}\n\nfunction js_parse_expr(s: JSParseState): number {\n return js_parse_expr2(s, PF_IN_ACCEPTED);\n}\n\n/* ---------------------------------------------------------------------\n Classes\n --------------------------------------------------------------------- */\n\nfunction js_parse_class_default_ctor(s: JSParseState, has_super: boolean): JSFunctionDef {\n let fd = s.cur_func!;\n fd = js_new_function_def(s.ctx, fd, false, false, s.filename, s.token.ptr);\n s.cur_func = fd;\n fd.has_home_object = true;\n fd.super_allowed = true;\n fd.has_prototype = false;\n fd.has_this_binding = true;\n fd.new_target_allowed = true;\n push_scope(s); /* enter body scope */\n fd.body_scope = fd.scope_level;\n let func_type: JSParseFunctionEnum;\n if (has_super) {\n fd.is_derived_class_constructor = true;\n fd.super_call_allowed = true;\n fd.arguments_allowed = true;\n fd.has_arguments_binding = true;\n func_type = JSParseFunctionEnum.DERIVED_CLASS_CONSTRUCTOR;\n emit_op(s, OP.init_ctor);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n emit_class_field_init(s);\n } else {\n func_type = JSParseFunctionEnum.CLASS_CONSTRUCTOR;\n /* error if not invoked as a constructor */\n emit_op(s, OP.check_ctor);\n emit_class_field_init(s);\n }\n fd.func_kind = JSFunctionKind.NORMAL;\n fd.func_type = func_type;\n emit_return(s, false);\n s.cur_func = fd.parent;\n /* the real object will be set at the end of the compilation */\n const idx = cpool_add(s, null);\n fd.parent_cpool_idx = idx;\n return fd;\n}\n\n/* find field in the current scope */\nfunction find_private_class_field(ctx: JSContext, fd: JSFunctionDef, name: JSAtom, scope_level: number): number {\n let idx = fd.scopes[scope_level].first;\n while (idx !== -1) {\n if (fd.vars[idx].scope_level !== scope_level) break;\n if (fd.vars[idx].var_name === name) return idx;\n idx = fd.vars[idx].scope_next;\n }\n return -1;\n}\n\n/* initialize the class fields, called by the constructor. Note: super()\n can be called in an arrow function, so <this> and <class_fields_init>\n can be variable references */\nfunction emit_class_field_init(s: JSParseState): void {\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_class_fields_init);\n emit_u16(s, s.cur_func!.scope_level);\n /* no need to call the class field initializer if not defined */\n emit_op(s, OP.dup);\n const label_next = emit_goto(s, OP.if_false, -1);\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n emit_op(s, OP.swap);\n emit_op(s, OP.call_method);\n emit_u16(s, 0);\n emit_label(s, label_next);\n emit_op(s, OP.drop);\n}\n\n/* build a private setter function name from the private getter name */\nfunction get_private_setter_name(ctx: JSContext, name: JSAtom): JSAtom {\n return JS_NewAtom(ctx, JS_AtomToString(ctx, name) + '<set>');\n}\n\nclass ClassFieldsDef {\n fields_init_fd: JSFunctionDef | null = null;\n computed_fields_count = 0;\n need_brand = false;\n brand_push_pos = 0;\n is_static = false;\n}\n\nfunction emit_class_init_start(s: JSParseState, cf: ClassFieldsDef): number {\n cf.fields_init_fd = js_parse_function_class_fields_init(s);\n s.cur_func = cf.fields_init_fd;\n if (!cf.is_static) {\n /* add the brand to the newly created instance */\n emit_op(s, OP.push_false); /* will be patched later */\n cf.brand_push_pos = cf.fields_init_fd.last_opcode_pos;\n const label_add_brand = emit_goto(s, OP.if_false, -1);\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_home_object);\n emit_u16(s, 0);\n emit_op(s, OP.add_brand);\n emit_label(s, label_add_brand);\n }\n s.cur_func = s.cur_func!.parent;\n return 0;\n}\n\nfunction emit_class_init_end(s: JSParseState, cf: ClassFieldsDef): void {\n s.cur_func = cf.fields_init_fd;\n emit_op(s, OP.return_undef);\n s.cur_func = s.cur_func!.parent;\n const cpool_idx = cpool_add(s, null);\n cf.fields_init_fd!.parent_cpool_idx = cpool_idx;\n emit_op(s, OP.fclosure);\n emit_u32(s, cpool_idx);\n emit_op(s, OP.set_home_object);\n}\n\nfunction js_parse_class(s: JSParseState, is_class_expr: boolean, export_flag: JSParseExportEnum): number {\n const ctx = s.ctx;\n const fd = s.cur_func!;\n let name: JSAtom = JS_ATOM_NULL, class_name: JSAtom = JS_ATOM_NULL, class_name1: JSAtom;\n let class_var_name: JSAtom = JS_ATOM_NULL;\n let ctor_fd: JSFunctionDef | null = null;\n let class_flags = 0;\n const class_start_ptr = s.token.ptr;\n const class_fields: ClassFieldsDef[] = [new ClassFieldsDef(), new ClassFieldsDef()];\n class_fields[1].is_static = true;\n\n /* classes are parsed and executed in strict mode */\n const saved_js_mode = fd.js_mode;\n fd.js_mode |= JS_MODE_STRICT;\n const fail = (): number => { fd.js_mode = saved_js_mode; return -1; };\n\n if (next_token(s)) return fail();\n if (tv(s) === TOK.IDENT) {\n if (s.token.is_reserved) { js_parse_error_reserved_identifier(s); return fail(); }\n class_name = s.token.atom;\n if (next_token(s)) return fail();\n } else if (!is_class_expr && export_flag !== JSParseExportEnum.DEFAULT) {\n js_parse_error(s, 'class statement requires a name');\n return fail();\n }\n if (!is_class_expr) {\n if (class_name === JS_ATOM_NULL) class_var_name = JS_ATOM__default_; /* export default */\n else class_var_name = class_name;\n }\n\n push_scope(s);\n\n if (tv(s) === TOK.EXTENDS) {\n class_flags = JS_DEFINE_CLASS_HAS_HERITAGE;\n if (next_token(s)) return fail();\n if (js_parse_left_hand_side_expr(s)) return fail();\n } else {\n emit_op(s, OP.undefined);\n }\n\n /* add a 'const' definition for the class name */\n if (class_name !== JS_ATOM_NULL) {\n if (define_var(s, fd, class_name, JSVarDefEnum.CONST) < 0) return fail();\n }\n\n if (js_parse_expect(s, 123)) return fail();\n\n /* this scope contains the private fields */\n push_scope(s);\n\n emit_op(s, OP.push_const);\n const ctor_cpool_offset = fd.byte_code.size;\n emit_u32(s, 0); /* will be patched at the end of the class parsing */\n\n if (class_name === JS_ATOM_NULL) {\n if (class_var_name !== JS_ATOM_NULL) class_name1 = JS_ATOM_default;\n else class_name1 = JS_ATOM_empty_string;\n } else {\n class_name1 = class_name;\n }\n\n emit_op(s, OP.define_class);\n emit_atom(s, class_name1);\n emit_u8(s, class_flags);\n const define_class_offset = fd.last_opcode_pos;\n\n while (tv(s) !== 125) {\n if (tv(s) === 59) {\n if (next_token(s)) return fail();\n continue;\n }\n let is_static = false;\n if (tv(s) === TOK.STATIC) {\n const next = peek_token(s, true);\n if (!(next === 59 || next === 125 || next === 40 || next === 61)) is_static = true;\n }\n let prop_type = -1;\n if (is_static) {\n if (next_token(s)) return fail();\n if (tv(s) === 123) {\n const cf = class_fields[1];\n if (!cf.fields_init_fd) {\n if (emit_class_init_start(s, cf)) return fail();\n }\n s.cur_func = cf.fields_init_fd;\n /* static initialization block */\n // stack is now: <empty>\n const out: { fd: JSFunctionDef | null } = { fd: null };\n if (js_parse_function_decl2(s, JSParseFunctionEnum.CLASS_STATIC_INIT, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr,\n JSParseExportEnum.NONE, out) < 0) return fail();\n // stack is now: fclosure\n push_scope(s);\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n // stack is now: fclosure this\n emit_op(s, OP.swap);\n // stack is now: this fclosure\n emit_op(s, OP.call_method);\n emit_u16(s, 0);\n // stack is now: returnvalue\n emit_op(s, OP.drop);\n // stack is now: <empty>\n pop_scope(s);\n s.cur_func = s.cur_func!.parent;\n continue;\n }\n /* allow \"static\" field name */\n if (tv(s) === 59 || tv(s) === 61) {\n is_static = false;\n name = JS_ATOM_static;\n prop_type = PROP_TYPE_IDENT;\n }\n }\n if (is_static) emit_op(s, OP.swap);\n const start_ptr = s.token.ptr;\n if (prop_type < 0) {\n const out = { name: JS_ATOM_NULL as JSAtom };\n prop_type = js_parse_property_name(s, out, true, false, true);\n if (prop_type < 0) return fail();\n name = out.name;\n }\n const is_private = prop_type & PROP_TYPE_PRIVATE;\n prop_type &= ~PROP_TYPE_PRIVATE;\n\n if ((name === JS_ATOM_constructor && !is_static && prop_type !== PROP_TYPE_IDENT) ||\n (name === JS_ATOM_prototype && is_static) || name === JS_ATOM_hash_constructor) {\n js_parse_error(s, 'invalid method name');\n return fail();\n }\n if (prop_type === PROP_TYPE_GET || prop_type === PROP_TYPE_SET) {\n const is_set = prop_type - PROP_TYPE_GET;\n if (is_private) {\n const idx = find_private_class_field(ctx, fd, name, fd.scope_level);\n if (idx >= 0) {\n const var_kind = fd.vars[idx].var_kind;\n const is_static1 = fd.vars[idx].is_static_private;\n if (var_kind === JSVarKind.PRIVATE_FIELD || var_kind === JSVarKind.PRIVATE_METHOD ||\n var_kind === JSVarKind.PRIVATE_GETTER_SETTER || var_kind === (JSVarKind.PRIVATE_GETTER + is_set) ||\n (var_kind === (JSVarKind.PRIVATE_GETTER + 1 - is_set) && is_static !== is_static1)) {\n js_parse_error(s, 'private class field is already defined');\n return fail();\n }\n fd.vars[idx].var_kind = JSVarKind.PRIVATE_GETTER_SETTER;\n } else {\n if (add_private_class_field(s, fd, name, JSVarKind.PRIVATE_GETTER + is_set, is_static) < 0) return fail();\n }\n class_fields[is_static ? 1 : 0].need_brand = true;\n }\n const out: { fd: JSFunctionDef | null } = { fd: null };\n if (js_parse_function_decl2(s, JSParseFunctionEnum.GETTER + is_set, JSFunctionKind.NORMAL, JS_ATOM_NULL, start_ptr,\n JSParseExportEnum.NONE, out)) return fail();\n const method_fd = out.fd!;\n if (is_private) {\n method_fd.need_home_object = true; /* needed for brand check */\n emit_op(s, OP.set_home_object);\n /* XXX: missing function name */\n emit_op(s, OP.scope_put_var_init);\n if (is_set) {\n const setter_name = get_private_setter_name(ctx, name);\n emit_atom(s, setter_name);\n if (add_private_class_field(s, fd, setter_name, JSVarKind.PRIVATE_SETTER, is_static) < 0) return fail();\n } else {\n emit_atom(s, name);\n }\n emit_u16(s, s.cur_func!.scope_level);\n } else {\n if (name === JS_ATOM_NULL) {\n emit_op(s, OP.define_method_computed);\n } else {\n emit_op(s, OP.define_method);\n emit_atom(s, name);\n }\n emit_u8(s, OP_DEFINE_METHOD_GETTER + is_set);\n }\n } else if (prop_type === PROP_TYPE_IDENT && tv(s) !== 40) {\n const cf = class_fields[is_static ? 1 : 0];\n let field_var_name: JSAtom = JS_ATOM_NULL;\n /* class field */\n /* XXX: spec: not consistent with method name checks */\n if (name === JS_ATOM_constructor || name === JS_ATOM_prototype) {\n js_parse_error(s, 'invalid field name');\n return fail();\n }\n if (is_private) {\n if (find_private_class_field(ctx, fd, name, fd.scope_level) >= 0) {\n js_parse_error(s, 'private class field is already defined');\n return fail();\n }\n if (add_private_class_field(s, fd, name, JSVarKind.PRIVATE_FIELD, is_static) < 0) return fail();\n emit_op(s, OP.private_symbol);\n emit_atom(s, name);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, name);\n emit_u16(s, s.cur_func!.scope_level);\n }\n if (!cf.fields_init_fd) {\n if (emit_class_init_start(s, cf)) return fail();\n }\n if (name === JS_ATOM_NULL) {\n /* save the computed field name into a variable */\n field_var_name = JS_NewAtom(ctx, JS_AtomToString(ctx, JS_ATOM_computed_field + (is_static ? 1 : 0)) + cf.computed_fields_count);\n if (define_var(s, fd, field_var_name, JSVarDefEnum.CONST) < 0) return fail();\n emit_op(s, OP.to_propkey);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, field_var_name);\n emit_u16(s, s.cur_func!.scope_level);\n }\n s.cur_func = cf.fields_init_fd;\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n\n if (name === JS_ATOM_NULL) {\n emit_op(s, OP.scope_get_var);\n emit_atom(s, field_var_name);\n emit_u16(s, s.cur_func!.scope_level);\n cf.computed_fields_count++;\n } else if (is_private) {\n emit_op(s, OP.scope_get_var);\n emit_atom(s, name);\n emit_u16(s, s.cur_func!.scope_level);\n }\n\n if (tv(s) === 61) {\n if (next_token(s)) return fail();\n if (js_parse_assign_expr(s)) return fail();\n } else {\n emit_op(s, OP.undefined);\n }\n if (is_private) {\n set_object_name_computed(s);\n emit_op(s, OP.define_private_field);\n } else if (name === JS_ATOM_NULL) {\n set_object_name_computed(s);\n emit_op(s, OP.define_array_el);\n emit_op(s, OP.drop);\n } else {\n set_object_name(s, name);\n emit_op(s, OP.define_field);\n emit_atom(s, name);\n }\n s.cur_func = s.cur_func!.parent;\n if (js_parse_expect_semi(s)) return fail();\n } else {\n let func_type = JSParseFunctionEnum.METHOD;\n let func_kind = JSFunctionKind.NORMAL;\n if (prop_type === PROP_TYPE_STAR) {\n func_kind = JSFunctionKind.GENERATOR;\n } else if (prop_type === PROP_TYPE_ASYNC) {\n func_kind = JSFunctionKind.ASYNC;\n } else if (prop_type === PROP_TYPE_ASYNC_STAR) {\n func_kind = JSFunctionKind.ASYNC_GENERATOR;\n } else if (name === JS_ATOM_constructor && !is_static) {\n if (ctor_fd) {\n js_parse_error(s, 'property constructor appears more than once');\n return fail();\n }\n if (class_flags & JS_DEFINE_CLASS_HAS_HERITAGE) func_type = JSParseFunctionEnum.DERIVED_CLASS_CONSTRUCTOR;\n else func_type = JSParseFunctionEnum.CLASS_CONSTRUCTOR;\n }\n if (is_private) class_fields[is_static ? 1 : 0].need_brand = true;\n const out: { fd: JSFunctionDef | null } = { fd: null };\n if (js_parse_function_decl2(s, func_type, func_kind, JS_ATOM_NULL, start_ptr, JSParseExportEnum.NONE, out)) return fail();\n const method_fd = out.fd!;\n if (func_type === JSParseFunctionEnum.DERIVED_CLASS_CONSTRUCTOR || func_type === JSParseFunctionEnum.CLASS_CONSTRUCTOR) {\n ctor_fd = method_fd;\n } else if (is_private) {\n method_fd.need_home_object = true; /* needed for brand check */\n if (find_private_class_field(ctx, fd, name, fd.scope_level) >= 0) {\n js_parse_error(s, 'private class field is already defined');\n return fail();\n }\n if (add_private_class_field(s, fd, name, JSVarKind.PRIVATE_METHOD, is_static) < 0) return fail();\n emit_op(s, OP.set_home_object);\n emit_op(s, OP.set_name);\n emit_atom(s, name);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, name);\n emit_u16(s, s.cur_func!.scope_level);\n } else {\n if (name === JS_ATOM_NULL) {\n emit_op(s, OP.define_method_computed);\n } else {\n emit_op(s, OP.define_method);\n emit_atom(s, name);\n }\n emit_u8(s, OP_DEFINE_METHOD_METHOD);\n }\n }\n if (is_static) emit_op(s, OP.swap);\n name = JS_ATOM_NULL;\n }\n\n if (tv(s) !== 125) {\n js_parse_error(s, \"expecting '}'\");\n return fail();\n }\n\n if (!ctor_fd) {\n ctor_fd = js_parse_class_default_ctor(s, (class_flags & JS_DEFINE_CLASS_HAS_HERITAGE) !== 0);\n }\n /* patch the constant pool index for the constructor */\n put_u32(fd.byte_code.buf, ctor_cpool_offset, ctor_fd.parent_cpool_idx);\n\n /* store the class source code in the constructor. */\n if (!fd.strip_source) {\n ctor_fd.source = s.buf.substring(class_start_ptr, s.buf_ptr);\n ctor_fd.source_len = ctor_fd.source.length;\n }\n\n /* consume the '}' */\n if (next_token(s)) return fail();\n\n {\n const cf = class_fields[0];\n if (cf.need_brand) {\n /* add a private brand to the prototype */\n emit_op(s, OP.dup);\n emit_op(s, OP.null);\n emit_op(s, OP.swap);\n emit_op(s, OP.add_brand);\n /* define the brand field in 'this' of the initializer */\n if (!cf.fields_init_fd) {\n if (emit_class_init_start(s, cf)) return fail();\n }\n /* patch the start of the function to enable the OP_add_brand_instance code */\n cf.fields_init_fd!.byte_code.buf[cf.brand_push_pos] = OP.push_true;\n }\n /* store the function to initialize the fields to that it can be referenced by the constructor */\n if (define_var(s, fd, JS_ATOM_class_fields_init, JSVarDefEnum.CONST) < 0) return fail();\n if (cf.fields_init_fd) {\n emit_class_init_end(s, cf);\n } else {\n emit_op(s, OP.undefined);\n }\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, JS_ATOM_class_fields_init);\n emit_u16(s, s.cur_func!.scope_level);\n }\n\n /* drop the prototype */\n emit_op(s, OP.drop);\n\n if (class_fields[1].need_brand) {\n /* add a private brand to the class */\n emit_op(s, OP.dup);\n emit_op(s, OP.dup);\n emit_op(s, OP.add_brand);\n }\n\n if (class_name !== JS_ATOM_NULL) {\n /* store the class name in the scoped class name variable (it is\n independent from the class statement variable definition) */\n emit_op(s, OP.dup);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, class_name);\n emit_u16(s, fd.scope_level);\n }\n\n /* initialize the static fields */\n if (class_fields[1].fields_init_fd !== null) {\n const cf = class_fields[1];\n emit_op(s, OP.dup);\n emit_class_init_end(s, cf);\n emit_op(s, OP.call_method);\n emit_u16(s, 0);\n emit_op(s, OP.drop);\n }\n\n pop_scope(s);\n pop_scope(s);\n\n /* the class statements have a block level scope */\n if (class_var_name !== JS_ATOM_NULL) {\n if (define_var(s, fd, class_var_name, JSVarDefEnum.LET) < 0) return fail();\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, class_var_name);\n emit_u16(s, fd.scope_level);\n } else {\n if (class_name === JS_ATOM_NULL) {\n /* cannot use OP_set_name because the name of the class must be\n defined before the static initializers are executed */\n emit_op(s, OP.set_class_name);\n emit_u32(s, fd.last_opcode_pos + 1 - define_class_offset);\n }\n }\n fd.js_mode = saved_js_mode;\n return 0;\n}\n\n/* ---------------------------------------------------------------------\n Functions\n --------------------------------------------------------------------- */\n\nfunction js_parse_directives(s: JSParseState): number {\n if (tv(s) !== TOK.STRING) return 0;\n const pos = js_parse_get_pos(s);\n while (tv(s) === TOK.STRING) {\n /* Copy actual source string representation */\n const str = s.buf.substring(s.token.ptr + 1, s.buf_ptr - 1);\n if (next_token(s)) return -1;\n let has_semi = false;\n switch (tv(s)) {\n case 59:\n if (next_token(s)) return -1;\n has_semi = true;\n break;\n case 125:\n case TOK.EOF:\n has_semi = true;\n break;\n case TOK.NUMBER: case TOK.STRING: case TOK.TEMPLATE: case TOK.IDENT: case TOK.REGEXP:\n case TOK.DEC: case TOK.INC: case TOK.NULL: case TOK.FALSE: case TOK.TRUE: case TOK.IF:\n case TOK.RETURN: case TOK.VAR: case TOK.THIS: case TOK.DELETE: case TOK.TYPEOF: case TOK.NEW:\n case TOK.DO: case TOK.WHILE: case TOK.FOR: case TOK.SWITCH: case TOK.THROW: case TOK.TRY:\n case TOK.FUNCTION: case TOK.DEBUGGER: case TOK.WITH: case TOK.CLASS: case TOK.CONST:\n case TOK.ENUM: case TOK.EXPORT: case TOK.IMPORT: case TOK.SUPER: case TOK.INTERFACE:\n case TOK.LET: case TOK.PACKAGE: case TOK.PRIVATE: case TOK.PROTECTED: case TOK.PUBLIC: case TOK.STATIC:\n /* automatic insertion of ';' */\n if (s.got_lf) has_semi = true;\n break;\n default:\n break;\n }\n if (!has_semi) break;\n if (str === 'use strict') {\n s.cur_func!.has_use_strict = true;\n s.cur_func!.js_mode |= JS_MODE_STRICT;\n }\n }\n return js_parse_seek_token(s, pos);\n}\n\n/* return TRUE if the keyword is forbidden only in strict mode */\nfunction is_strict_future_keyword(atom: JSAtom): boolean {\n return atom >= JS_ATOM_implements && atom <= JS_ATOM_static;\n}\n\nfunction js_parse_function_check_names(s: JSParseState, fd: JSFunctionDef, func_name: JSAtom): number {\n if (fd.js_mode & JS_MODE_STRICT) {\n if (!fd.has_simple_parameter_list && fd.has_use_strict) {\n return js_parse_error(s, '\"use strict\" not allowed in function with default or destructuring parameter');\n }\n if (func_name === JS_ATOM_eval || func_name === JS_ATOM_arguments || is_strict_future_keyword(func_name)) {\n return js_parse_error(s, 'invalid function name in strict code');\n }\n for (let idx = 0; idx < fd.args.length; idx++) {\n const name = fd.args[idx].var_name;\n if (name === JS_ATOM_eval || name === JS_ATOM_arguments || is_strict_future_keyword(name)) {\n return js_parse_error(s, 'invalid argument name in strict code');\n }\n }\n }\n /* check async_generator case */\n if ((fd.js_mode & JS_MODE_STRICT) || !fd.has_simple_parameter_list ||\n (fd.func_type === JSParseFunctionEnum.METHOD && fd.func_kind === JSFunctionKind.ASYNC) ||\n fd.func_type === JSParseFunctionEnum.ARROW || fd.func_type === JSParseFunctionEnum.METHOD) {\n for (let idx = 0; idx < fd.args.length; idx++) {\n const name = fd.args[idx].var_name;\n if (name !== JS_ATOM_NULL) {\n for (let i = 0; i < idx; i++) {\n if (fd.args[i].var_name === name) return js_parse_error(s, 'duplicate argument names not allowed in this context');\n }\n /* Check if argument name duplicates a destructuring parameter */\n for (let i = 0; i < fd.vars.length; i++) {\n if (fd.vars[i].var_name === name && fd.vars[i].scope_level === 0)\n return js_parse_error(s, 'duplicate argument names not allowed in this context');\n }\n }\n }\n }\n return 0;\n}\n\n/* create a function to initialize class fields */\nfunction js_parse_function_class_fields_init(s: JSParseState): JSFunctionDef {\n const fd = js_new_function_def(s.ctx, s.cur_func, false, false, s.filename, s.buf_start);\n fd.func_name = JS_ATOM_NULL;\n fd.has_prototype = false;\n fd.has_home_object = true;\n fd.has_arguments_binding = false;\n fd.has_this_binding = true;\n fd.is_derived_class_constructor = false;\n fd.new_target_allowed = true;\n fd.super_call_allowed = false;\n fd.super_allowed = fd.has_home_object;\n fd.arguments_allowed = false;\n fd.func_kind = JSFunctionKind.NORMAL;\n fd.func_type = JSParseFunctionEnum.METHOD;\n return fd;\n}\n\n/* if the current token is an identifier or keyword, reparse it according\n to the current function type */\nfunction reparse_ident_token(s: JSParseState): void {\n if (tv(s) === TOK.IDENT || (tv(s) >= TOK_FIRST_KEYWORD && tv(s) <= TOK_LAST_KEYWORD)) {\n s.token.val = TOK.IDENT;\n s.token.is_reserved = false;\n update_token_ident(s);\n }\n}\n\n/* func_name must be JS_ATOM_NULL for JS_PARSE_FUNC_STATEMENT and\n JS_PARSE_FUNC_EXPR, JS_PARSE_FUNC_ARROW and JS_PARSE_FUNC_VAR */\nfunction js_parse_function_decl2(s: JSParseState, func_type: JSParseFunctionEnum, func_kind: JSFunctionKind,\n func_name: JSAtom, ptr: number, export_flag: JSParseExportEnum,\n pfd: { fd: JSFunctionDef | null } | null): number {\n const ctx = s.ctx;\n let fd = s.cur_func!;\n let lexical_func_idx = -1;\n let create_func_var = false;\n const is_expr = (func_type !== JSParseFunctionEnum.STATEMENT && func_type !== JSParseFunctionEnum.VAR);\n\n if (func_type === JSParseFunctionEnum.STATEMENT || func_type === JSParseFunctionEnum.VAR || func_type === JSParseFunctionEnum.EXPR) {\n if (func_kind === JSFunctionKind.NORMAL && token_is_pseudo_keyword(s, JS_ATOM_async) && peek_token(s, true) !== 10) {\n if (next_token(s)) return -1;\n func_kind = JSFunctionKind.ASYNC;\n }\n if (next_token(s)) return -1;\n if (tv(s) === 42) {\n if (next_token(s)) return -1;\n func_kind |= JSFunctionKind.GENERATOR;\n }\n if (tv(s) === TOK.IDENT) {\n if (s.token.is_reserved ||\n (s.token.atom === JS_ATOM_yield && func_type === JSParseFunctionEnum.EXPR && (func_kind & JSFunctionKind.GENERATOR)) ||\n (s.token.atom === JS_ATOM_await && ((func_type === JSParseFunctionEnum.EXPR && (func_kind & JSFunctionKind.ASYNC)) ||\n (func_type as number) === JSParseFunctionEnum.CLASS_STATIC_INIT))) {\n return js_parse_error_reserved_identifier(s);\n }\n }\n if (tv(s) === TOK.IDENT ||\n (((tv(s) === TOK.YIELD && !(fd.js_mode & JS_MODE_STRICT)) || (tv(s) === TOK.AWAIT && !s.is_module)) &&\n func_type === JSParseFunctionEnum.EXPR)) {\n func_name = s.token.atom;\n if (next_token(s)) return -1;\n } else {\n if (func_type !== JSParseFunctionEnum.EXPR && export_flag !== JSParseExportEnum.DEFAULT) {\n return js_parse_error(s, 'function name expected');\n }\n }\n } else if (func_type !== JSParseFunctionEnum.ARROW) {\n /* func_name given by the caller */\n }\n\n if (fd.is_eval && fd.eval_type === JS_EVAL_TYPE_MODULE &&\n (func_type === JSParseFunctionEnum.STATEMENT || func_type === JSParseFunctionEnum.VAR)) {\n const hf = find_global_var(fd, func_name);\n /* XXX: should check scope chain */\n if (hf && hf.scope_level === fd.scope_level) return js_parse_error(s, 'invalid redefinition of global identifier in module code');\n }\n\n if (func_type === JSParseFunctionEnum.VAR) {\n let func_idx: number;\n if (!(fd.js_mode & JS_MODE_STRICT) && func_kind === JSFunctionKind.NORMAL &&\n find_lexical_decl(ctx, fd, func_name, fd.scope_first, false) < 0 &&\n !((func_idx = find_var(ctx, fd, func_name)) >= 0 && (func_idx & ARGUMENT_VAR_OFFSET)) &&\n !(func_name === JS_ATOM_arguments && fd.has_arguments_binding)) {\n create_func_var = true;\n }\n /* Create the lexical name here so that the function closure contains it */\n if (fd.is_eval && (fd.eval_type === JS_EVAL_TYPE_GLOBAL || fd.eval_type === JS_EVAL_TYPE_MODULE) && fd.scope_level === fd.body_scope) {\n /* avoid creating a lexical variable in the global scope. XXX: check annex B */\n const hf = find_global_var(fd, func_name);\n /* XXX: should check scope chain */\n if (hf && hf.scope_level === fd.scope_level) return js_parse_error(s, 'invalid redefinition of global identifier');\n } else {\n /* Always create a lexical name, fail if at the same scope as existing name */\n /* Lexical variable will be initialized upon entering scope */\n lexical_func_idx = define_var(s, fd, func_name,\n func_kind !== JSFunctionKind.NORMAL ? JSVarDefEnum.NEW_FUNCTION_DECL : JSVarDefEnum.FUNCTION_DECL);\n if (lexical_func_idx < 0) return -1;\n }\n }\n\n fd = js_new_function_def(ctx, fd, false, is_expr, s.filename, ptr);\n if (pfd) pfd.fd = fd;\n s.cur_func = fd;\n fd.func_name = func_name;\n /* XXX: test !fd->is_generator is always false */\n fd.has_prototype = (func_type === JSParseFunctionEnum.STATEMENT || func_type === JSParseFunctionEnum.VAR ||\n func_type === JSParseFunctionEnum.EXPR) && func_kind === JSFunctionKind.NORMAL;\n fd.has_home_object = (func_type === JSParseFunctionEnum.METHOD || func_type === JSParseFunctionEnum.GETTER ||\n func_type === JSParseFunctionEnum.SETTER || func_type === JSParseFunctionEnum.CLASS_CONSTRUCTOR ||\n func_type === JSParseFunctionEnum.DERIVED_CLASS_CONSTRUCTOR);\n fd.has_arguments_binding = (func_type !== JSParseFunctionEnum.ARROW && func_type !== JSParseFunctionEnum.CLASS_STATIC_INIT);\n fd.has_this_binding = fd.has_arguments_binding;\n fd.is_derived_class_constructor = (func_type === JSParseFunctionEnum.DERIVED_CLASS_CONSTRUCTOR);\n if (func_type === JSParseFunctionEnum.ARROW) {\n fd.new_target_allowed = fd.parent!.new_target_allowed;\n fd.super_call_allowed = fd.parent!.super_call_allowed;\n fd.super_allowed = fd.parent!.super_allowed;\n fd.arguments_allowed = fd.parent!.arguments_allowed;\n } else if (func_type === JSParseFunctionEnum.CLASS_STATIC_INIT) {\n fd.new_target_allowed = true; // although new.target === undefined\n fd.super_call_allowed = false;\n fd.super_allowed = true;\n fd.arguments_allowed = false;\n } else {\n fd.new_target_allowed = true;\n fd.super_call_allowed = fd.is_derived_class_constructor;\n fd.super_allowed = fd.has_home_object;\n fd.arguments_allowed = true;\n }\n\n /* fd->in_function_body == FALSE prevents yield/await during the parsing\n of the arguments in generator/async functions. They are parsed as\n regular identifiers for other function kinds. */\n fd.func_kind = func_kind;\n fd.func_type = func_type;\n\n const fail = (): number => { s.cur_func = fd.parent; if (pfd) pfd.fd = null; return -1; };\n\n if (func_type === JSParseFunctionEnum.CLASS_CONSTRUCTOR || func_type === JSParseFunctionEnum.DERIVED_CLASS_CONSTRUCTOR) {\n /* error if not invoked as a constructor */\n emit_op(s, OP.check_ctor);\n }\n if (func_type === JSParseFunctionEnum.CLASS_CONSTRUCTOR) {\n emit_class_field_init(s);\n }\n\n /* parse arguments */\n fd.has_simple_parameter_list = true;\n fd.has_parameter_expressions = false;\n let has_opt_arg = false;\n if (func_type === JSParseFunctionEnum.ARROW && tv(s) === TOK.IDENT) {\n if (s.token.is_reserved) { js_parse_error_reserved_identifier(s); return fail(); }\n const name = s.token.atom;\n if (add_arg(ctx, fd, name) < 0) return fail();\n fd.defined_arg_count = 1;\n } else if (func_type !== JSParseFunctionEnum.CLASS_STATIC_INIT) {\n if (tv(s) === 40) {\n const bits = { bits: 0 };\n /* if there is an '=' inside the parameter list, we consider there is a parameter expression inside */\n js_parse_skip_parens_token(s, bits, false);\n if (bits.bits & SKIP_HAS_ASSIGNMENT) fd.has_parameter_expressions = true;\n if (next_token(s)) return fail();\n } else {\n if (js_parse_expect(s, 40)) return fail();\n }\n\n if (fd.has_parameter_expressions) {\n fd.scope_level = -1; /* force no parent scope */\n push_scope(s);\n }\n\n while (tv(s) !== 41) {\n let rest = false;\n if (tv(s) === TOK.ELLIPSIS) {\n if (func_type === JSParseFunctionEnum.SETTER) { js_parse_error(s, 'invalid number of arguments for getter or setter'); return fail(); }\n fd.has_simple_parameter_list = false;\n rest = true;\n if (next_token(s)) return fail();\n }\n if (tv(s) === 91 || tv(s) === 123) {\n fd.has_simple_parameter_list = false;\n if (rest) {\n emit_op(s, OP.rest);\n emit_u16(s, fd.args.length);\n } else {\n /* unnamed arg for destructuring */\n const idx = add_arg(ctx, fd, JS_ATOM_NULL);\n emit_op(s, OP.get_arg);\n emit_u16(s, idx);\n }\n const has_initializer = js_parse_destructuring_element(s, fd.has_parameter_expressions ? TOK.LET : TOK.VAR, 1, true, -1, true, false);\n if (has_initializer < 0) return fail();\n if (has_initializer) has_opt_arg = true;\n if (!has_opt_arg) fd.defined_arg_count++;\n } else if (tv(s) === TOK.IDENT) {\n if (s.token.is_reserved) { js_parse_error_reserved_identifier(s); return fail(); }\n const name = s.token.atom;\n if (name === JS_ATOM_yield && fd.func_kind === JSFunctionKind.GENERATOR) { js_parse_error_reserved_identifier(s); return fail(); }\n if (fd.has_parameter_expressions) {\n if (js_parse_check_duplicate_parameter(s, name)) return fail();\n if (define_var(s, fd, name, JSVarDefEnum.LET) < 0) return fail();\n }\n /* XXX: could avoid allocating an argument if rest is true */\n const idx = add_arg(ctx, fd, name);\n if (idx < 0) return fail();\n if (next_token(s)) return fail();\n if (rest) {\n emit_op(s, OP.rest);\n emit_u16(s, idx);\n if (fd.has_parameter_expressions) {\n emit_op(s, OP.dup);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, name);\n emit_u16(s, fd.scope_level);\n }\n emit_op(s, OP.put_arg);\n emit_u16(s, idx);\n fd.has_simple_parameter_list = false;\n has_opt_arg = true;\n } else if (tv(s) === 61) {\n fd.has_simple_parameter_list = false;\n has_opt_arg = true;\n if (next_token(s)) return fail();\n const label = new_label(s);\n emit_op(s, OP.get_arg);\n emit_u16(s, idx);\n emit_op(s, OP.dup);\n emit_op(s, OP.undefined);\n emit_op(s, OP.strict_eq);\n emit_goto(s, OP.if_false, label);\n emit_op(s, OP.drop);\n if (js_parse_assign_expr(s)) return fail();\n set_object_name(s, name);\n emit_op(s, OP.dup);\n emit_op(s, OP.put_arg);\n emit_u16(s, idx);\n emit_label(s, label);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, name);\n emit_u16(s, fd.scope_level);\n } else {\n if (!has_opt_arg) fd.defined_arg_count++;\n if (fd.has_parameter_expressions) {\n /* copy the argument to the argument scope */\n emit_op(s, OP.get_arg);\n emit_u16(s, idx);\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, name);\n emit_u16(s, fd.scope_level);\n }\n }\n } else {\n js_parse_error(s, 'missing formal parameter');\n return fail();\n }\n if (rest && tv(s) !== 41) {\n js_parse_expect(s, 41);\n return fail();\n }\n if (tv(s) === 41) break;\n if (js_parse_expect(s, 44)) return fail();\n }\n if ((func_type === JSParseFunctionEnum.GETTER && fd.args.length !== 0) ||\n (func_type === JSParseFunctionEnum.SETTER && fd.args.length !== 1)) {\n js_parse_error(s, 'invalid number of arguments for getter or setter');\n return fail();\n }\n }\n\n if (fd.has_parameter_expressions) {\n /* Copy the variables in the argument scope to the variable scope\n (see FunctionDeclarationInstantiation() in spec). The normal\n arguments are already present, so no need to copy them. */\n let idx = fd.scopes[fd.scope_level].first;\n while (idx >= 0) {\n const vd = fd.vars[idx];\n if (vd.scope_level !== fd.scope_level) break;\n if (find_var(ctx, fd, vd.var_name) < 0) {\n if (add_var(ctx, fd, vd.var_name) < 0) return fail();\n emit_op(s, OP.scope_get_var);\n emit_atom(s, vd.var_name);\n emit_u16(s, fd.scope_level);\n emit_op(s, OP.scope_put_var);\n emit_atom(s, vd.var_name);\n emit_u16(s, 0);\n }\n idx = vd.scope_next;\n }\n /* the argument scope has no parent, hence we don't use pop_scope(s) */\n emit_op(s, OP.leave_scope);\n emit_u16(s, fd.scope_level);\n /* set the variable scope as the current scope */\n fd.scope_level = 0;\n fd.scope_first = fd.scopes[fd.scope_level].first;\n }\n\n if (next_token(s)) return fail();\n\n /* generator function: yield after the parameters are evaluated */\n if (func_kind === JSFunctionKind.GENERATOR || func_kind === JSFunctionKind.ASYNC_GENERATOR) emit_op(s, OP.initial_yield);\n\n /* in generators, yield expression is forbidden during the parsing of the arguments */\n fd.in_function_body = true;\n push_scope(s); /* enter body scope */\n fd.body_scope = fd.scope_level;\n\n let done = false;\n if (tv(s) === TOK.ARROW) {\n if (next_token(s)) return fail();\n if (tv(s) !== 123) {\n if (js_parse_function_check_names(s, fd, func_name)) return fail();\n if (js_parse_assign_expr(s)) return fail();\n if (func_kind !== JSFunctionKind.NORMAL) emit_op(s, OP.return_async);\n else emit_op(s, OP.return);\n if (!fd.strip_source) {\n /* save the function source code: the end of the function source\n code is after the last token of the function source stored into s->last_ptr */\n fd.source = s.buf.substring(ptr, s.last_ptr);\n fd.source_len = fd.source.length;\n }\n done = true;\n }\n }\n if (!done) {\n if (func_type !== JSParseFunctionEnum.CLASS_STATIC_INIT) {\n if (js_parse_expect(s, 123)) return fail();\n }\n if (js_parse_directives(s)) return fail();\n /* in strict_mode, check function and argument names */\n if (js_parse_function_check_names(s, fd, func_name)) return fail();\n while (tv(s) !== 125) {\n if (js_parse_source_element(s)) return fail();\n }\n if (!fd.strip_source) {\n /* save the function source code */\n fd.source = s.buf.substring(ptr, s.buf_ptr);\n fd.source_len = fd.source.length;\n }\n if (next_token(s)) {\n /* consume the '}' */\n return fail();\n }\n /* in case there is no return, add one */\n if (js_is_live_code(s)) emit_return(s, false);\n }\n /* done: */\n s.cur_func = fd.parent;\n\n /* Reparse identifiers after the function is terminated so that the\n token is parsed in the englobing function. It could be done by just\n using next_token() here for normal functions, but it is necessary\n for arrow functions with an expression body. */\n reparse_ident_token(s);\n\n /* create the function object */\n {\n const func_name2 = fd.func_name;\n const cur = s.cur_func!;\n /* the real object will be set at the end of the compilation */\n const idx = cpool_add(s, null);\n fd.parent_cpool_idx = idx;\n\n if (is_expr) {\n /* for constructors, no code needs to be generated here */\n if (func_type !== JSParseFunctionEnum.CLASS_CONSTRUCTOR && func_type !== JSParseFunctionEnum.DERIVED_CLASS_CONSTRUCTOR) {\n /* OP_fclosure creates the function object from the bytecode and adds the scope information */\n emit_op(s, OP.fclosure);\n emit_u32(s, idx);\n if (func_name2 === JS_ATOM_NULL) {\n emit_op(s, OP.set_name);\n emit_u32(s, JS_ATOM_NULL);\n }\n }\n } else if (func_type === JSParseFunctionEnum.VAR) {\n emit_op(s, OP.fclosure);\n emit_u32(s, idx);\n if (create_func_var) {\n if (cur.is_global_var) {\n /* the global variable must be defined at the start of the function */\n const hf = add_global_var(ctx, cur, func_name2);\n /* it is considered as defined at the top level (needed for annex B.3.3.4 and B.3.3.5 checks) */\n hf.scope_level = 0;\n hf.force_init = (cur.js_mode & JS_MODE_STRICT) !== 0;\n /* store directly into global var, bypass lexical scope */\n emit_op(s, OP.dup);\n emit_op(s, OP.scope_put_var);\n emit_atom(s, func_name2);\n emit_u16(s, 0);\n } else {\n /* do not call define_var to bypass lexical scope check */\n let func_idx = find_var(ctx, cur, func_name2);\n if (func_idx < 0) {\n func_idx = add_var(ctx, cur, func_name2);\n if (func_idx < 0) return -1;\n }\n /* store directly into local var, bypass lexical catch scope */\n emit_op(s, OP.dup);\n emit_op(s, OP.scope_put_var);\n emit_atom(s, func_name2);\n emit_u16(s, 0);\n }\n }\n if (lexical_func_idx >= 0) {\n /* lexical variable will be initialized upon entering scope */\n cur.vars[lexical_func_idx].func_pool_idx = idx;\n emit_op(s, OP.drop);\n } else {\n /* store function object into its lexical name */\n /* XXX: could use OP_put_loc directly */\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, func_name2);\n emit_u16(s, cur.scope_level);\n }\n } else {\n if (!cur.is_global_var) {\n const var_idx = define_var(s, cur, func_name2, JSVarDefEnum.VAR);\n if (var_idx < 0) return -1;\n /* the variable will be assigned at the top of the function */\n if (var_idx & ARGUMENT_VAR_OFFSET) {\n cur.args[var_idx - ARGUMENT_VAR_OFFSET].func_pool_idx = idx;\n } else {\n cur.vars[var_idx].func_pool_idx = idx;\n }\n } else {\n let func_var_name: JSAtom;\n if (func_name2 === JS_ATOM_NULL) func_var_name = JS_ATOM__default_; /* export default */\n else func_var_name = func_name2;\n /* the variable will be assigned at the top of the function */\n const hf = add_global_var(ctx, cur, func_var_name);\n hf.cpool_idx = idx;\n }\n }\n }\n return 0;\n}\n\nfunction js_parse_function_decl(s: JSParseState, func_type: JSParseFunctionEnum, func_kind: JSFunctionKind,\n func_name: JSAtom, ptr: number): number {\n return js_parse_function_decl2(s, func_type, func_kind, func_name, ptr, JSParseExportEnum.NONE, null);\n}\n\nfunction js_parse_source_element(s: JSParseState): number {\n if (tv(s) === TOK.FUNCTION || (token_is_pseudo_keyword(s, JS_ATOM_async) && peek_token(s, true) === TOK.FUNCTION)) {\n if (js_parse_function_decl(s, JSParseFunctionEnum.STATEMENT, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr)) return -1;\n } else if (tv(s) === TOK.EXPORT && s.cur_func!.module) {\n return js_parse_error(s, 'modules are not supported');\n } else if (tv(s) === TOK.IMPORT && s.cur_func!.module) {\n return js_parse_error(s, 'modules are not supported');\n } else {\n if (js_parse_statement_or_decl(s, DECL_MASK_ALL)) return -1;\n }\n return 0;\n}\n\nfunction js_parse_program(s: JSParseState): number {\n const fd = s.cur_func!;\n if (next_token(s)) return -1;\n if (js_parse_directives(s)) return -1;\n fd.is_global_var = (fd.eval_type === JS_EVAL_TYPE_GLOBAL) || (fd.eval_type === JS_EVAL_TYPE_MODULE) || !(fd.js_mode & JS_MODE_STRICT);\n if (!s.is_module) {\n /* hidden variable for the return value */\n const idx = add_var(s.ctx, fd, JS_ATOM__ret_);\n fd.eval_ret_idx = idx;\n if (idx < 0) return -1;\n }\n while (tv(s) !== TOK.EOF) {\n if (js_parse_source_element(s)) return -1;\n }\n if (!s.is_module) {\n /* return the value of the hidden variable eval_ret_idx */\n if (fd.func_kind === JSFunctionKind.ASYNC) {\n /* wrap the return value in an object so that promises can be safely returned */\n emit_op(s, OP.object);\n emit_op(s, OP.dup);\n emit_op(s, OP.get_loc);\n emit_u16(s, fd.eval_ret_idx);\n emit_op(s, OP.put_field);\n emit_atom(s, JS_ATOM_value);\n } else {\n emit_op(s, OP.get_loc);\n emit_u16(s, fd.eval_ret_idx);\n }\n emit_return(s, true);\n } else {\n emit_return(s, false);\n }\n return 0;\n}\n\nfunction skip_shebang(s: JSParseState): void {\n if (s.buf.startsWith('#!', s.buf_ptr)) {\n let p = s.buf_ptr + 2;\n while (p < s.buf_end) {\n const c = s.buf.charCodeAt(p);\n if (c === 10 || c === 13 || c === CP_LS || c === CP_PS) break;\n p++;\n }\n s.buf_ptr = p;\n }\n}\n\n/* ---------------------------------------------------------------------\n Phase 2: variable resolution\n --------------------------------------------------------------------- */\n\nfunction add_closure_var(ctx: JSContext, s: JSFunctionDef, is_local: boolean, is_arg: boolean, var_idx: number,\n var_name: JSAtom, is_const: boolean, is_lexical: boolean, var_kind: JSVarKind): number {\n /* the closure variable indexes are currently stored on 16 bits */\n if (s.closure_var.length >= 65535) {\n JS_ThrowSyntaxError(ctx, 'too many closure variables');\n return -1;\n }\n const cv = new JSClosureVar();\n cv.is_local = is_local;\n cv.is_arg = is_arg;\n cv.is_const = is_const;\n cv.is_lexical = is_lexical;\n cv.var_kind = var_kind;\n cv.var_idx = var_idx;\n cv.var_name = var_name;\n s.closure_var.push(cv);\n return s.closure_var.length - 1;\n}\n\n/* 'fd' must be a parent of 's'. Create in 's' a closure referencing a\n local variable (is_local = TRUE) or a closure (is_local = FALSE) in 'fd' */\nfunction get_closure_var2(ctx: JSContext, s: JSFunctionDef, fd: JSFunctionDef, is_local: boolean, is_arg: boolean,\n var_idx: number, var_name: JSAtom, is_const: boolean, is_lexical: boolean, var_kind: JSVarKind): number {\n if (fd !== s.parent) {\n var_idx = get_closure_var2(ctx, s.parent!, fd, is_local, is_arg, var_idx, var_name, is_const, is_lexical, var_kind);\n if (var_idx < 0) return -1;\n is_local = false;\n }\n for (let i = 0; i < s.closure_var.length; i++) {\n const cv = s.closure_var[i];\n if (cv.var_idx === var_idx && cv.is_arg === is_arg && cv.is_local === is_local) return i;\n }\n return add_closure_var(ctx, s, is_local, is_arg, var_idx, var_name, is_const, is_lexical, var_kind);\n}\n\nfunction get_closure_var(ctx: JSContext, s: JSFunctionDef, fd: JSFunctionDef, is_arg: boolean, var_idx: number,\n var_name: JSAtom, is_const: boolean, is_lexical: boolean, var_kind: JSVarKind): number {\n return get_closure_var2(ctx, s, fd, true, is_arg, var_idx, var_name, is_const, is_lexical, var_kind);\n}\n\nfunction get_with_scope_opcode(op: number): number {\n if (op === OP.scope_get_var_undef) return OP.with_get_var;\n return OP.with_get_var + (op - OP.scope_get_var);\n}\n\nfunction can_opt_put_ref_value(bc_buf: Uint8Array, pos: number): boolean {\n const opcode = bc_buf[pos];\n return bc_buf[pos + 1] === OP.put_ref_value &&\n (opcode === OP.insert3 || opcode === OP.perm4 || opcode === OP.nop || opcode === OP.rot3l);\n}\n\nfunction optimize_scope_make_ref(ctx: JSContext, s: JSFunctionDef, bc: DynBuf, bc_buf: Uint8Array, ls: LabelSlot,\n pos_next: number, get_op: number, var_idx: number): number {\n /* replace the reference get/put with normal variable accesses */\n if (bc_buf[pos_next] === OP.get_ref_value) {\n bc.putc(get_op);\n bc.put_u16(var_idx);\n pos_next++;\n }\n /* remove the OP_label to make room for replacement */\n /* label should have a refcount of 0 anyway */\n const label_pos = ls.pos;\n let pos = label_pos - 5;\n /* label points to an instruction pair:\n - insert3 / put_ref_value\n - perm4 / put_ref_value\n - rot3l / put_ref_value\n - nop / put_ref_value */\n const end_pos = label_pos + 2;\n if (bc_buf[label_pos] === OP.insert3) bc_buf[pos++] = OP.dup;\n bc_buf[pos] = get_op + 1;\n put_u16(bc_buf, pos + 1, var_idx);\n pos += 3;\n /* pad with OP_nop */\n while (pos < end_pos) bc_buf[pos++] = OP.nop;\n return pos_next;\n}\n\nfunction optimize_scope_make_global_ref(ctx: JSContext, s: JSFunctionDef, bc: DynBuf, bc_buf: Uint8Array, ls: LabelSlot,\n pos_next: number, var_name: JSAtom): number {\n const is_strict = (s.js_mode & JS_MODE_STRICT) !== 0;\n /* replace the reference get/put with normal variable accesses */\n if (is_strict) {\n /* need to check if the variable exists before evaluating the right expression */\n bc.putc(OP.check_var);\n bc.put_u32(var_name);\n }\n if (bc_buf[pos_next] === OP.get_ref_value) {\n bc.putc(OP.get_var);\n bc.put_u32(var_name);\n pos_next++;\n }\n /* remove the OP_label to make room for replacement */\n const label_pos = ls.pos;\n let pos = label_pos - 5;\n const end_pos = label_pos + 2;\n let op = bc_buf[label_pos];\n if (is_strict) {\n if (op !== OP.nop) {\n switch (op) {\n case OP.insert3: op = OP.insert2; break;\n case OP.perm4: op = OP.perm3; break;\n case OP.rot3l: op = OP.swap; break;\n default: throw new Error('optimize_scope_make_global_ref');\n }\n bc_buf[pos++] = op;\n }\n } else {\n if (op === OP.insert3) bc_buf[pos++] = OP.dup;\n }\n if (is_strict) bc_buf[pos] = OP.put_var_strict;\n else bc_buf[pos] = OP.put_var;\n put_u32(bc_buf, pos + 1, var_name);\n pos += 5;\n /* pad with OP_nop */\n while (pos < end_pos) bc_buf[pos++] = OP.nop;\n return pos_next;\n}\n\nfunction add_var_this(ctx: JSContext, fd: JSFunctionDef): number {\n const idx = add_var(ctx, fd, JS_ATOM_this);\n if (idx >= 0 && fd.is_derived_class_constructor) {\n /* used to trigger 'uninitialized' checks in a derived class constructor */\n fd.vars[idx].is_lexical = true;\n }\n return idx;\n}\n\nfunction resolve_pseudo_var(ctx: JSContext, s: JSFunctionDef, var_name: JSAtom): number {\n let var_idx: number;\n if (!s.has_this_binding) return -1;\n switch (var_name) {\n case JS_ATOM_home_object:\n if (s.home_object_var_idx < 0) s.home_object_var_idx = add_var(ctx, s, var_name);\n var_idx = s.home_object_var_idx;\n break;\n case JS_ATOM_this_active_func:\n if (s.this_active_func_var_idx < 0) s.this_active_func_var_idx = add_var(ctx, s, var_name);\n var_idx = s.this_active_func_var_idx;\n break;\n case JS_ATOM_new_target:\n if (s.new_target_var_idx < 0) s.new_target_var_idx = add_var(ctx, s, var_name);\n var_idx = s.new_target_var_idx;\n break;\n case JS_ATOM_this:\n if (s.this_var_idx < 0) s.this_var_idx = add_var_this(ctx, s);\n var_idx = s.this_var_idx;\n break;\n default:\n var_idx = -1;\n break;\n }\n return var_idx;\n}\n\n/* test if 'var_name' is in the variable object on the stack. If is it\n the case, handle it and jump to 'label_done' */\nfunction var_object_test(ctx: JSContext, s: JSFunctionDef, var_name: JSAtom, op: number, bc: DynBuf,\n pl: { label: number }, is_with: number): void {\n bc.putc(get_with_scope_opcode(op));\n bc.put_u32(var_name);\n if (pl.label < 0) pl.label = new_label_fd(s);\n bc.put_u32(pl.label);\n bc.putc(is_with);\n update_label(s, pl.label, 1);\n s.jump_slots.length; /* jump_size++ in C: not needed here */\n}\n\n/* return the position of the next opcode */\nfunction resolve_scope_var(ctx: JSContext, s: JSFunctionDef, var_name: JSAtom, scope_level: number, op: number,\n bc: DynBuf, bc_buf: Uint8Array | null, ls: LabelSlot | null, pos_next: number): number {\n let idx: number, var_idx: number, is_put: boolean;\n const pl = { label: -1 };\n let fd: JSFunctionDef;\n let vd: JSVarDef;\n let is_arg_scope: boolean;\n const is_pseudo_var = (var_name === JS_ATOM_home_object || var_name === JS_ATOM_this_active_func ||\n var_name === JS_ATOM_new_target || var_name === JS_ATOM_this);\n\n const done = (): number => {\n if (pl.label >= 0) {\n bc.putc(OP.label);\n bc.put_u32(pl.label);\n s.label_slots[pl.label].pos2 = bc.size;\n }\n return pos_next;\n };\n\n /* resolve local scoped variables */\n var_idx = -1;\n for (idx = s.scopes[scope_level].first; idx >= 0;) {\n vd = s.vars[idx];\n if (vd.var_name === var_name) {\n if (op === OP.scope_put_var || op === OP.scope_make_ref) {\n if (vd.is_const) {\n bc.putc(OP.throw_error);\n bc.put_u32(var_name);\n bc.putc(JS_THROW_VAR_RO);\n return done();\n }\n }\n var_idx = idx;\n break;\n } else if (vd.var_name === JS_ATOM__with_ && !is_pseudo_var) {\n bc.putc(OP.get_loc);\n bc.put_u16(idx);\n var_object_test(ctx, s, var_name, op, bc, pl, 1);\n }\n idx = vd.scope_next;\n }\n is_arg_scope = (idx === ARG_SCOPE_END);\n if (var_idx < 0) {\n /* argument scope: variables are not visible but pseudo variables are visible */\n if (!is_arg_scope) var_idx = find_var(ctx, s, var_name);\n if (var_idx < 0 && is_pseudo_var) var_idx = resolve_pseudo_var(ctx, s, var_name);\n if (var_idx < 0 && var_name === JS_ATOM_arguments && s.has_arguments_binding) {\n /* 'arguments' pseudo variable */\n var_idx = add_arguments_var(ctx, s);\n }\n if (var_idx < 0 && s.is_func_expr && var_name === s.func_name) {\n /* add a new variable with the function name */\n var_idx = add_func_var(ctx, s, var_name);\n }\n }\n if (var_idx >= 0) {\n if ((op === OP.scope_put_var || op === OP.scope_make_ref) && !(var_idx & ARGUMENT_VAR_OFFSET) && s.vars[var_idx].is_const) {\n /* only happens when assigning a function expression name in strict mode */\n bc.putc(OP.throw_error);\n bc.put_u32(var_name);\n bc.putc(JS_THROW_VAR_RO);\n return done();\n }\n /* OP_scope_put_var_init is only used to initialize a lexical\n variable, so it is never used in a with or var object. It can be\n used with a closure (module global variable case). */\n switch (op) {\n case OP.scope_make_ref:\n if (!(var_idx & ARGUMENT_VAR_OFFSET) && s.vars[var_idx].var_kind === JSVarKind.FUNCTION_NAME) {\n /* Create a dummy object reference for the func_var */\n bc.putc(OP.object);\n bc.putc(OP.get_loc);\n bc.put_u16(var_idx);\n bc.putc(OP.define_field);\n bc.put_u32(var_name);\n bc.putc(OP.push_atom_value);\n bc.put_u32(var_name);\n } else if (pl.label === -1 && can_opt_put_ref_value(bc_buf!, ls!.pos)) {\n let get_op: number;\n if (var_idx & ARGUMENT_VAR_OFFSET) {\n get_op = OP.get_arg;\n var_idx -= ARGUMENT_VAR_OFFSET;\n } else {\n if (s.vars[var_idx].is_lexical) get_op = OP.get_loc_check;\n else get_op = OP.get_loc;\n }\n pos_next = optimize_scope_make_ref(ctx, s, bc, bc_buf!, ls!, pos_next, get_op, var_idx);\n } else {\n /* Create a dummy object with a named slot that is a reference to the local variable */\n if (var_idx & ARGUMENT_VAR_OFFSET) {\n bc.putc(OP.make_arg_ref);\n bc.put_u32(var_name);\n bc.put_u16(var_idx - ARGUMENT_VAR_OFFSET);\n } else {\n bc.putc(OP.make_loc_ref);\n bc.put_u32(var_name);\n bc.put_u16(var_idx);\n }\n }\n break;\n case OP.scope_get_ref:\n bc.putc(OP.undefined);\n /* fall thru */\n case OP.scope_get_var_checkthis:\n case OP.scope_get_var_undef:\n case OP.scope_get_var:\n case OP.scope_put_var:\n case OP.scope_put_var_init:\n is_put = (op === OP.scope_put_var || op === OP.scope_put_var_init);\n if (var_idx & ARGUMENT_VAR_OFFSET) {\n bc.putc(OP.get_arg + (is_put ? 1 : 0));\n bc.put_u16(var_idx - ARGUMENT_VAR_OFFSET);\n } else {\n if (is_put) {\n if (s.vars[var_idx].is_lexical) {\n if (op === OP.scope_put_var_init) {\n /* 'this' can only be initialized once */\n if (var_name === JS_ATOM_this) bc.putc(OP.put_loc_check_init);\n else bc.putc(OP.put_loc);\n } else {\n bc.putc(OP.put_loc_check);\n }\n } else {\n bc.putc(OP.put_loc);\n }\n } else {\n if (s.vars[var_idx].is_lexical) {\n if (op === OP.scope_get_var_checkthis) {\n /* only used for 'this' return in derived class constructors */\n bc.putc(OP.get_loc_checkthis);\n } else {\n bc.putc(OP.get_loc_check);\n }\n } else {\n bc.putc(OP.get_loc);\n }\n }\n bc.put_u16(var_idx);\n }\n break;\n case OP.scope_delete_var:\n bc.putc(OP.push_false);\n break;\n }\n return done();\n }\n /* check eval object */\n if (!is_arg_scope && s.var_object_idx >= 0 && !is_pseudo_var) {\n bc.putc(OP.get_loc);\n bc.put_u16(s.var_object_idx);\n var_object_test(ctx, s, var_name, op, bc, pl, 0);\n }\n /* check eval object in argument scope */\n if (s.arg_var_object_idx >= 0 && !is_pseudo_var) {\n bc.putc(OP.get_loc);\n bc.put_u16(s.arg_var_object_idx);\n var_object_test(ctx, s, var_name, op, bc, pl, 0);\n }\n\n /* check parent scopes */\n fd = s;\n while (fd.parent) {\n scope_level = fd.parent_scope_level;\n fd = fd.parent;\n for (idx = fd.scopes[scope_level].first; idx >= 0;) {\n vd = fd.vars[idx];\n if (vd.var_name === var_name) {\n if (op === OP.scope_put_var || op === OP.scope_make_ref) {\n if (vd.is_const) {\n bc.putc(OP.throw_error);\n bc.put_u32(var_name);\n bc.putc(JS_THROW_VAR_RO);\n return done();\n }\n }\n var_idx = idx;\n break;\n } else if (vd.var_name === JS_ATOM__with_ && !is_pseudo_var) {\n vd.is_captured = true;\n const cidx = get_closure_var(ctx, s, fd, false, idx, vd.var_name, false, false, JSVarKind.NORMAL);\n if (cidx >= 0) {\n bc.putc(OP.get_var_ref);\n bc.put_u16(cidx);\n var_object_test(ctx, s, var_name, op, bc, pl, 1);\n }\n }\n idx = vd.scope_next;\n }\n is_arg_scope = (idx === ARG_SCOPE_END);\n if (var_idx >= 0) break;\n\n if (!is_arg_scope) {\n var_idx = find_var(ctx, fd, var_name);\n if (var_idx >= 0) break;\n }\n if (is_pseudo_var) {\n var_idx = resolve_pseudo_var(ctx, fd, var_name);\n if (var_idx >= 0) break;\n }\n if (var_name === JS_ATOM_arguments && fd.has_arguments_binding) {\n var_idx = add_arguments_var(ctx, fd);\n break;\n }\n if (fd.is_func_expr && fd.func_name === var_name) {\n /* add a new variable with the function name */\n var_idx = add_func_var(ctx, fd, var_name);\n break;\n }\n\n /* check eval object */\n if (!is_arg_scope && fd.var_object_idx >= 0 && !is_pseudo_var) {\n vd = fd.vars[fd.var_object_idx];\n vd.is_captured = true;\n const cidx = get_closure_var(ctx, s, fd, false, fd.var_object_idx, vd.var_name, false, false, JSVarKind.NORMAL);\n bc.putc(OP.get_var_ref);\n bc.put_u16(cidx);\n var_object_test(ctx, s, var_name, op, bc, pl, 0);\n }\n /* check eval object in argument scope */\n if (fd.arg_var_object_idx >= 0 && !is_pseudo_var) {\n vd = fd.vars[fd.arg_var_object_idx];\n vd.is_captured = true;\n const cidx = get_closure_var(ctx, s, fd, false, fd.arg_var_object_idx, vd.var_name, false, false, JSVarKind.NORMAL);\n bc.putc(OP.get_var_ref);\n bc.put_u16(cidx);\n var_object_test(ctx, s, var_name, op, bc, pl, 0);\n }\n\n if (fd.is_eval) break; /* it it necessarily the top level function */\n }\n\n /* check direct eval scope (in the closure of the eval function which\n is necessarily at the top level) */\n let has_idx = -1;\n if (var_idx < 0 && fd.is_eval) {\n for (let idx1 = 0; idx1 < fd.closure_var.length; idx1++) {\n const cv = fd.closure_var[idx1];\n if (var_name === cv.var_name) {\n if (fd !== s) {\n has_idx = get_closure_var2(ctx, s, fd, false, cv.is_arg, idx1, cv.var_name, cv.is_const, cv.is_lexical, cv.var_kind);\n } else {\n has_idx = idx1;\n }\n break;\n } else if ((cv.var_name === JS_ATOM__var_ || cv.var_name === JS_ATOM__arg_var_ || cv.var_name === JS_ATOM__with_) && !is_pseudo_var) {\n const is_with = (cv.var_name === JS_ATOM__with_) ? 1 : 0;\n let cidx: number;\n if (fd !== s) {\n cidx = get_closure_var2(ctx, s, fd, false, cv.is_arg, idx1, cv.var_name, false, false, JSVarKind.NORMAL);\n } else {\n cidx = idx1;\n }\n bc.putc(OP.get_var_ref);\n bc.put_u16(cidx);\n var_object_test(ctx, s, var_name, op, bc, pl, is_with);\n }\n }\n }\n\n if (var_idx >= 0 || has_idx >= 0) {\n idx = has_idx;\n if (has_idx < 0) {\n /* find the corresponding closure variable */\n if (var_idx & ARGUMENT_VAR_OFFSET) {\n fd.args[var_idx - ARGUMENT_VAR_OFFSET].is_captured = true;\n idx = get_closure_var(ctx, s, fd, true, var_idx - ARGUMENT_VAR_OFFSET, var_name, false, false, JSVarKind.NORMAL);\n } else {\n fd.vars[var_idx].is_captured = true;\n idx = get_closure_var(ctx, s, fd, false, var_idx, var_name, fd.vars[var_idx].is_const, fd.vars[var_idx].is_lexical,\n fd.vars[var_idx].var_kind);\n }\n }\n if (idx >= 0) {\n if ((op === OP.scope_put_var || op === OP.scope_make_ref) && s.closure_var[idx].is_const) {\n bc.putc(OP.throw_error);\n bc.put_u32(var_name);\n bc.putc(JS_THROW_VAR_RO);\n return done();\n }\n switch (op) {\n case OP.scope_make_ref:\n if (s.closure_var[idx].var_kind === JSVarKind.FUNCTION_NAME) {\n /* Create a dummy object reference for the func_var */\n bc.putc(OP.object);\n bc.putc(OP.get_var_ref);\n bc.put_u16(idx);\n bc.putc(OP.define_field);\n bc.put_u32(var_name);\n bc.putc(OP.push_atom_value);\n bc.put_u32(var_name);\n } else if (pl.label === -1 && can_opt_put_ref_value(bc_buf!, ls!.pos)) {\n let get_op: number;\n if (s.closure_var[idx].is_lexical) get_op = OP.get_var_ref_check;\n else get_op = OP.get_var_ref;\n pos_next = optimize_scope_make_ref(ctx, s, bc, bc_buf!, ls!, pos_next, get_op, idx);\n } else {\n /* Create a dummy object with a named slot that is a reference to the closure variable */\n bc.putc(OP.make_var_ref_ref);\n bc.put_u32(var_name);\n bc.put_u16(idx);\n }\n break;\n case OP.scope_get_ref:\n /* XXX: should create a dummy object with a named slot that is a reference to the closure variable */\n bc.putc(OP.undefined);\n /* fall thru */\n case OP.scope_get_var_undef:\n case OP.scope_get_var:\n case OP.scope_put_var:\n case OP.scope_put_var_init:\n is_put = (op === OP.scope_put_var || op === OP.scope_put_var_init);\n if (is_put) {\n if (s.closure_var[idx].is_lexical) {\n if (op === OP.scope_put_var_init) {\n /* 'this' can only be initialized once */\n if (var_name === JS_ATOM_this) bc.putc(OP.put_var_ref_check_init);\n else bc.putc(OP.put_var_ref);\n } else {\n bc.putc(OP.put_var_ref_check);\n }\n } else {\n bc.putc(OP.put_var_ref);\n }\n } else {\n if (s.closure_var[idx].is_lexical) bc.putc(OP.get_var_ref_check);\n else bc.putc(OP.get_var_ref);\n }\n bc.put_u16(idx);\n break;\n case OP.scope_delete_var:\n bc.putc(OP.push_false);\n break;\n }\n return done();\n }\n }\n\n /* global variable access */\n switch (op) {\n case OP.scope_make_ref:\n if (pl.label === -1 && can_opt_put_ref_value(bc_buf!, ls!.pos)) {\n pos_next = optimize_scope_make_global_ref(ctx, s, bc, bc_buf!, ls!, pos_next, var_name);\n } else {\n bc.putc(OP.make_var_ref);\n bc.put_u32(var_name);\n }\n break;\n case OP.scope_get_ref:\n /* XXX: should create a dummy object with a named slot that is a reference to the global variable */\n bc.putc(OP.undefined);\n bc.putc(OP.get_var);\n bc.put_u32(var_name);\n break;\n case OP.scope_get_var_undef:\n case OP.scope_get_var:\n case OP.scope_put_var:\n bc.putc(OP.get_var_undef + (op - OP.scope_get_var_undef));\n bc.put_u32(var_name);\n break;\n case OP.scope_put_var_init:\n bc.putc(OP.put_var_init);\n bc.put_u32(var_name);\n break;\n case OP.scope_delete_var:\n bc.putc(OP.delete_var);\n bc.put_u32(var_name);\n break;\n case OP.scope_get_var_checkthis:\n /* cannot happen for globals: behave as get_var */\n bc.putc(OP.get_var);\n bc.put_u32(var_name);\n break;\n }\n return done();\n}\n\n/* search in all scopes */\nfunction find_private_class_field_all(ctx: JSContext, fd: JSFunctionDef, name: JSAtom, scope_level: number): number {\n let idx = fd.scopes[scope_level].first;\n while (idx >= 0) {\n if (fd.vars[idx].var_name === name) return idx;\n idx = fd.vars[idx].scope_next;\n }\n return -1;\n}\n\nfunction get_loc_or_ref(bc: DynBuf, is_ref: boolean, idx: number): void {\n /* if the field is not initialized, the error is catched when accessing it */\n if (is_ref) bc.putc(OP.get_var_ref);\n else bc.putc(OP.get_loc);\n bc.put_u16(idx);\n}\n\nfunction resolve_scope_private_field1(ctx: JSContext, out: { is_ref: boolean; var_kind: JSVarKind }, s: JSFunctionDef,\n var_name: JSAtom, scope_level: number): number {\n let fd = s;\n let is_ref = false;\n let idx: number;\n let var_kind: JSVarKind = JSVarKind.NORMAL;\n for (;;) {\n idx = find_private_class_field_all(ctx, fd, var_name, scope_level);\n if (idx >= 0) {\n var_kind = fd.vars[idx].var_kind;\n if (is_ref) {\n idx = get_closure_var(ctx, s, fd, false, idx, var_name, true, true, JSVarKind.NORMAL);\n if (idx < 0) return -1;\n }\n break;\n }\n scope_level = fd.parent_scope_level;\n if (!fd.parent) {\n if (fd.is_eval) {\n /* closure of the eval function (top level) */\n for (let i = 0; i < fd.closure_var.length; i++) {\n const cv = fd.closure_var[i];\n if (cv.var_name === var_name) {\n var_kind = cv.var_kind;\n is_ref = true;\n idx = i;\n if (fd !== s) {\n idx = get_closure_var2(ctx, s, fd, false, cv.is_arg, i, cv.var_name, cv.is_const, cv.is_lexical, cv.var_kind);\n if (idx < 0) return -1;\n }\n out.is_ref = is_ref;\n out.var_kind = var_kind;\n return idx;\n }\n }\n }\n /* XXX: no line number info */\n JS_ThrowSyntaxError(ctx, `undefined private field '${JS_AtomGetStr(ctx, var_name)}'`);\n return -1;\n } else {\n fd = fd.parent;\n }\n is_ref = true;\n }\n out.is_ref = is_ref;\n out.var_kind = var_kind;\n return idx;\n}\n\n/* return 0 if OK or -1 if the private field could not be resolved */\nfunction resolve_scope_private_field(ctx: JSContext, s: JSFunctionDef, var_name: JSAtom, scope_level: number, op: number, bc: DynBuf): number {\n const out = { is_ref: false, var_kind: JSVarKind.NORMAL };\n let idx = resolve_scope_private_field1(ctx, out, s, var_name, scope_level);\n if (idx < 0) return -1;\n const var_kind = out.var_kind;\n const is_ref = out.is_ref;\n switch (op) {\n case OP.scope_get_private_field:\n case OP.scope_get_private_field2:\n switch (var_kind) {\n case JSVarKind.PRIVATE_FIELD:\n if (op === OP.scope_get_private_field2) bc.putc(OP.dup);\n get_loc_or_ref(bc, is_ref, idx);\n bc.putc(OP.get_private_field);\n break;\n case JSVarKind.PRIVATE_METHOD:\n get_loc_or_ref(bc, is_ref, idx);\n bc.putc(OP.check_brand);\n if (op !== OP.scope_get_private_field2) bc.putc(OP.nip);\n break;\n case JSVarKind.PRIVATE_GETTER:\n case JSVarKind.PRIVATE_GETTER_SETTER:\n if (op === OP.scope_get_private_field2) bc.putc(OP.dup);\n get_loc_or_ref(bc, is_ref, idx);\n bc.putc(OP.check_brand);\n bc.putc(OP.call_method);\n bc.put_u16(0);\n break;\n case JSVarKind.PRIVATE_SETTER:\n /* XXX: add clearer error message */\n bc.putc(OP.throw_error);\n bc.put_u32(var_name);\n bc.putc(JS_THROW_VAR_RO);\n break;\n default:\n throw new Error('resolve_scope_private_field');\n }\n break;\n case OP.scope_put_private_field:\n switch (var_kind) {\n case JSVarKind.PRIVATE_FIELD:\n get_loc_or_ref(bc, is_ref, idx);\n bc.putc(OP.put_private_field);\n break;\n case JSVarKind.PRIVATE_METHOD:\n case JSVarKind.PRIVATE_GETTER:\n /* XXX: add clearer error message */\n bc.putc(OP.throw_error);\n bc.put_u32(var_name);\n bc.putc(JS_THROW_VAR_RO);\n break;\n case JSVarKind.PRIVATE_SETTER:\n case JSVarKind.PRIVATE_GETTER_SETTER: {\n const setter_name = get_private_setter_name(ctx, var_name);\n idx = resolve_scope_private_field1(ctx, out, s, setter_name, scope_level);\n if (idx < 0) return -1;\n get_loc_or_ref(bc, out.is_ref, idx);\n bc.putc(OP.swap);\n /* obj func value */\n bc.putc(OP.rot3r);\n /* value obj func */\n bc.putc(OP.check_brand);\n bc.putc(OP.rot3l);\n /* obj func value */\n bc.putc(OP.call_method);\n bc.put_u16(1);\n bc.putc(OP.drop);\n break;\n }\n default:\n throw new Error('resolve_scope_private_field');\n }\n break;\n case OP.scope_in_private_field:\n get_loc_or_ref(bc, is_ref, idx);\n bc.putc(OP.private_in);\n break;\n default:\n throw new Error('resolve_scope_private_field');\n }\n return 0;\n}\n\nfunction mark_eval_captured_variables(ctx: JSContext, s: JSFunctionDef, scope_level: number): void {\n for (let idx = s.scopes[scope_level].first; idx >= 0;) {\n const vd = s.vars[idx];\n vd.is_captured = true;\n idx = vd.scope_next;\n }\n}\n\n/* XXX: should handle the argument scope generically */\nfunction is_var_in_arg_scope(vd: JSVarDef): boolean {\n return (vd.var_name === JS_ATOM_home_object || vd.var_name === JS_ATOM_this_active_func ||\n vd.var_name === JS_ATOM_new_target || vd.var_name === JS_ATOM_this ||\n vd.var_name === JS_ATOM__arg_var_ || vd.var_kind === JSVarKind.FUNCTION_NAME);\n}\n\nfunction add_eval_variables(ctx: JSContext, s: JSFunctionDef): void {\n let fd: JSFunctionDef | null;\n let vd: JSVarDef;\n /* in non strict mode, variables are created in the caller's environment object */\n if (!s.is_eval && !(s.js_mode & JS_MODE_STRICT)) {\n s.var_object_idx = add_var(ctx, s, JS_ATOM__var_);\n if (s.has_parameter_expressions) {\n /* an additional variable object is needed for the argument scope */\n s.arg_var_object_idx = add_var(ctx, s, JS_ATOM__arg_var_);\n }\n }\n /* eval can potentially use 'arguments' so we must define it */\n let has_this_binding = s.has_this_binding;\n if (has_this_binding) {\n if (s.this_var_idx < 0) s.this_var_idx = add_var_this(ctx, s);\n if (s.new_target_var_idx < 0) s.new_target_var_idx = add_var(ctx, s, JS_ATOM_new_target);\n if (s.is_derived_class_constructor && s.this_active_func_var_idx < 0) s.this_active_func_var_idx = add_var(ctx, s, JS_ATOM_this_active_func);\n if (s.has_home_object && s.home_object_var_idx < 0) s.home_object_var_idx = add_var(ctx, s, JS_ATOM_home_object);\n }\n let has_arguments_binding = s.has_arguments_binding;\n if (has_arguments_binding) {\n add_arguments_var(ctx, s);\n /* also add an arguments binding in the argument scope to raise an\n error if a direct eval in the argument scope tries to redefine it */\n if (s.has_parameter_expressions && !(s.js_mode & JS_MODE_STRICT)) add_arguments_arg(ctx, s);\n }\n if (s.is_func_expr && s.func_name !== JS_ATOM_NULL) add_func_var(ctx, s, s.func_name);\n\n /* eval can use all the variables of the enclosing functions, so they\n must be all put in the closure. The closure variables are ordered by\n scope. It works only because no closure are created before. */\n fd = s;\n for (;;) {\n const scope_level = fd.parent_scope_level;\n fd = fd.parent;\n if (!fd) break;\n /* add 'this' if it was not previously added */\n if (!has_this_binding && fd.has_this_binding) {\n if (fd.this_var_idx < 0) fd.this_var_idx = add_var_this(ctx, fd);\n if (fd.new_target_var_idx < 0) fd.new_target_var_idx = add_var(ctx, fd, JS_ATOM_new_target);\n if (fd.is_derived_class_constructor && fd.this_active_func_var_idx < 0) fd.this_active_func_var_idx = add_var(ctx, fd, JS_ATOM_this_active_func);\n if (fd.has_home_object && fd.home_object_var_idx < 0) fd.home_object_var_idx = add_var(ctx, fd, JS_ATOM_home_object);\n has_this_binding = true;\n }\n /* add 'arguments' if it was not previously added */\n if (!has_arguments_binding && fd.has_arguments_binding) {\n add_arguments_var(ctx, fd);\n has_arguments_binding = true;\n }\n /* add function name */\n if (fd.is_func_expr && fd.func_name !== JS_ATOM_NULL) add_func_var(ctx, fd, fd.func_name);\n\n /* add lexical variables */\n let scope_idx = fd.scopes[scope_level].first;\n while (scope_idx >= 0) {\n vd = fd.vars[scope_idx];\n vd.is_captured = true;\n get_closure_var(ctx, s, fd, false, scope_idx, vd.var_name, vd.is_const, vd.is_lexical, vd.var_kind);\n scope_idx = vd.scope_next;\n }\n const is_arg_scope = (scope_idx === ARG_SCOPE_END);\n if (!is_arg_scope) {\n /* add unscoped variables */\n for (let i = 0; i < fd.args.length; i++) {\n vd = fd.args[i];\n if (vd.var_name !== JS_ATOM_NULL) get_closure_var(ctx, s, fd, true, i, vd.var_name, false, vd.is_lexical, JSVarKind.NORMAL);\n }\n for (let i = 0; i < fd.vars.length; i++) {\n vd = fd.vars[i];\n /* do not close top level last result */\n if (vd.scope_level === 0 && vd.var_name !== JS_ATOM__ret_ && vd.var_name !== JS_ATOM_NULL) {\n get_closure_var(ctx, s, fd, false, i, vd.var_name, false, vd.is_lexical, JSVarKind.NORMAL);\n }\n }\n } else {\n for (let i = 0; i < fd.vars.length; i++) {\n vd = fd.vars[i];\n /* do not close top level last result */\n if (vd.scope_level === 0 && is_var_in_arg_scope(vd)) {\n get_closure_var(ctx, s, fd, false, i, vd.var_name, false, vd.is_lexical, JSVarKind.NORMAL);\n }\n }\n }\n if (fd.is_eval) {\n /* add direct eval variables (we are necessarily at the top level) */\n for (let idx = 0; idx < fd.closure_var.length; idx++) {\n const cv = fd.closure_var[idx];\n get_closure_var2(ctx, s, fd, false, cv.is_arg, idx, cv.var_name, cv.is_const, cv.is_lexical, cv.var_kind);\n }\n }\n }\n}\n\nfunction set_closure_from_var(cv: JSClosureVar, vd: JSVarDef, var_idx: number): void {\n cv.is_local = true;\n cv.is_arg = false;\n cv.is_const = vd.is_const;\n cv.is_lexical = vd.is_lexical;\n cv.var_kind = vd.var_kind;\n cv.var_idx = var_idx;\n cv.var_name = vd.var_name;\n}\n\n/* for direct eval compilation: add references to the variables of the calling function */\nfunction add_closure_variables(ctx: JSContext, s: JSFunctionDef, b: JSFunctionBytecode, scope_idx: number): number {\n s.closure_var = [];\n /* Add lexical variables in scope at the point of evaluation */\n let i: number;\n for (i = scope_idx; i >= 0;) {\n const vd = b.vardefs[b.arg_count + i];\n if (vd.scope_level > 0) {\n const cv = new JSClosureVar();\n set_closure_from_var(cv, vd, i);\n s.closure_var.push(cv);\n }\n i = vd.scope_next;\n }\n const is_arg_scope = (i === ARG_SCOPE_END);\n if (!is_arg_scope) {\n /* Add argument variables */\n for (i = 0; i < b.arg_count; i++) {\n const cv = new JSClosureVar();\n const vd = b.vardefs[i];\n cv.is_local = true;\n cv.is_arg = true;\n cv.is_const = false;\n cv.is_lexical = false;\n cv.var_kind = JSVarKind.NORMAL;\n cv.var_idx = i;\n cv.var_name = vd.var_name;\n s.closure_var.push(cv);\n }\n /* Add local non lexical variables */\n for (i = 0; i < b.var_count; i++) {\n const vd = b.vardefs[b.arg_count + i];\n if (vd.scope_level === 0 && vd.var_name !== JS_ATOM__ret_) {\n const cv = new JSClosureVar();\n set_closure_from_var(cv, vd, i);\n s.closure_var.push(cv);\n }\n }\n } else {\n /* only add pseudo variables */\n for (i = 0; i < b.var_count; i++) {\n const vd = b.vardefs[b.arg_count + i];\n if (vd.scope_level === 0 && is_var_in_arg_scope(vd)) {\n const cv = new JSClosureVar();\n set_closure_from_var(cv, vd, i);\n s.closure_var.push(cv);\n }\n }\n }\n for (i = 0; i < b.closure_var.length; i++) {\n const cv0 = b.closure_var[i];\n const cv = new JSClosureVar();\n cv.is_local = false;\n cv.is_arg = cv0.is_arg;\n cv.is_const = cv0.is_const;\n cv.is_lexical = cv0.is_lexical;\n cv.var_kind = cv0.var_kind;\n cv.var_idx = i;\n cv.var_name = cv0.var_name;\n s.closure_var.push(cv);\n }\n return 0;\n}\n\n/* code pattern matcher (code_match in C) */\nclass CodeContext {\n bc_buf: Uint8Array;\n bc_len: number;\n pos = 0; /* position past the matched code pattern */\n line_num = -1; /* last visited OP_line_num parameter or -1 */\n op = 0;\n idx = 0;\n label = 0;\n val = 0;\n atom: JSAtom = 0;\n constructor(bc_buf: Uint8Array, bc_len: number) { this.bc_buf = bc_buf; this.bc_len = bc_len; }\n}\n\n/* pattern elements: an opcode (number), an array of alternative opcodes,\n or -1 for a wildcard operand (stored in cc.idx) */\ntype CodePat = number | number[];\n\nfunction code_match(s: CodeContext, pos: number, ...pats: (CodePat)[]): boolean {\n const tab = s.bc_buf;\n let line_num = -1;\n let i = 0;\n for (;;) {\n if (i >= pats.length) {\n s.pos = pos;\n s.line_num = line_num;\n return true;\n }\n const op1 = pats[i++];\n let op: number, len: number, pos_next: number;\n for (;;) {\n if (pos >= s.bc_len) return false;\n op = tab[pos];\n len = opcode_info[op].size;\n pos_next = pos + len;\n if (pos_next > s.bc_len) return false;\n if (op === OP.line_num) {\n line_num = get_u32(tab, pos + 1);\n pos = pos_next;\n } else {\n break;\n }\n }\n if (Array.isArray(op1)) {\n if (!op1.includes(op)) return false;\n s.op = op;\n } else if (op !== op1) {\n return false;\n }\n pos++;\n switch (opcode_info[op].fmt) {\n case OpFmt.loc8:\n case OpFmt.u8: {\n const idx = tab[pos];\n const arg = pats[i++] as number;\n if (arg === -1) s.idx = idx;\n else if (arg !== idx) return false;\n break;\n }\n case OpFmt.u16:\n case OpFmt.npop:\n case OpFmt.loc:\n case OpFmt.arg:\n case OpFmt.var_ref: {\n const idx = get_u16(tab, pos);\n const arg = pats[i++] as number;\n if (arg === -1) s.idx = idx;\n else if (arg !== idx) return false;\n break;\n }\n case OpFmt.i32:\n case OpFmt.u32:\n case OpFmt.label:\n case OpFmt.const:\n s.label = get_u32(tab, pos);\n break;\n case OpFmt.label_u16:\n s.label = get_u32(tab, pos);\n s.val = get_u16(tab, pos + 4);\n break;\n case OpFmt.atom:\n s.atom = get_u32(tab, pos);\n break;\n case OpFmt.atom_u8:\n s.atom = get_u32(tab, pos);\n s.val = get_u8(tab, pos + 4);\n break;\n case OpFmt.atom_u16:\n s.atom = get_u32(tab, pos);\n s.val = get_u16(tab, pos + 4);\n break;\n case OpFmt.atom_label_u8:\n s.atom = get_u32(tab, pos);\n s.label = get_u32(tab, pos + 4);\n s.val = get_u8(tab, pos + 8);\n break;\n default:\n break;\n }\n pos = pos_next;\n }\n}\n\nfunction instantiate_hoisted_definitions(ctx: JSContext, s: JSFunctionDef, bc: DynBuf): void {\n /* add the hoisted functions in arguments and local variables */\n for (let i = 0; i < s.args.length; i++) {\n const vd = s.args[i];\n if (vd.func_pool_idx >= 0) {\n bc.putc(OP.fclosure);\n bc.put_u32(vd.func_pool_idx);\n bc.putc(OP.put_arg);\n bc.put_u16(i);\n }\n }\n for (let i = 0; i < s.vars.length; i++) {\n const vd = s.vars[i];\n if (vd.scope_level === 0 && vd.func_pool_idx >= 0) {\n bc.putc(OP.fclosure);\n bc.put_u32(vd.func_pool_idx);\n bc.putc(OP.put_loc);\n bc.put_u16(i);\n }\n }\n /* add the global variables (only happens if s->is_global_var is true) */\n for (let i = 0; i < s.global_vars.length; i++) {\n const hf = s.global_vars[i];\n let has_closure = 0;\n let force_init = hf.force_init;\n let idx = 0;\n /* we are in an eval, so the closure contains all the enclosing variables */\n /* If the outer function has a variable environment, create a property for the variable there */\n for (idx = 0; idx < s.closure_var.length; idx++) {\n const cv = s.closure_var[idx];\n if (cv.var_name === hf.var_name) {\n has_closure = 2;\n force_init = false;\n break;\n }\n if (cv.var_name === JS_ATOM__var_ || cv.var_name === JS_ATOM__arg_var_) {\n bc.putc(OP.get_var_ref);\n bc.put_u16(idx);\n has_closure = 1;\n force_init = true;\n break;\n }\n }\n let skip = false;\n if (!has_closure) {\n let flags = 0;\n if (s.eval_type !== JS_EVAL_TYPE_GLOBAL) flags |= JS_PROP_CONFIGURABLE;\n if (hf.cpool_idx >= 0 && !hf.is_lexical) {\n /* global function definitions need a specific handling */\n bc.putc(OP.fclosure);\n bc.put_u32(hf.cpool_idx);\n bc.putc(OP.define_func);\n bc.put_u32(hf.var_name);\n bc.putc(flags);\n skip = true;\n } else {\n if (hf.is_lexical) {\n flags |= DEFINE_GLOBAL_LEX_VAR;\n if (!hf.is_const) flags |= JS_PROP_WRITABLE;\n }\n bc.putc(OP.define_var);\n bc.put_u32(hf.var_name);\n bc.putc(flags);\n }\n }\n if (!skip && (hf.cpool_idx >= 0 || force_init)) {\n if (hf.cpool_idx >= 0) {\n bc.putc(OP.fclosure);\n bc.put_u32(hf.cpool_idx);\n if (hf.var_name === JS_ATOM__default_) {\n /* set default export function name */\n bc.putc(OP.set_name);\n bc.put_u32(JS_ATOM_default);\n }\n } else {\n bc.putc(OP.undefined);\n }\n if (has_closure === 2) {\n bc.putc(OP.put_var_ref);\n bc.put_u16(idx);\n } else if (has_closure === 1) {\n bc.putc(OP.define_field);\n bc.put_u32(hf.var_name);\n bc.putc(OP.drop);\n } else {\n /* XXX: Check if variable is writable and enumerable */\n bc.putc(OP.put_var);\n bc.put_u32(hf.var_name);\n }\n }\n }\n s.global_vars = [];\n}\n\nfunction skip_dead_code(s: JSFunctionDef, bc_buf: Uint8Array, bc_len: number, pos: number, linep: { line: number }): number {\n let len: number;\n for (; pos < bc_len; pos += len) {\n const op = bc_buf[pos];\n len = opcode_info[op].size;\n if (op === OP.line_num) {\n linep.line = get_u32(bc_buf, pos + 1);\n } else if (op === OP.label) {\n const label = get_u32(bc_buf, pos + 1);\n if (update_label(s, label, 0) > 0) break;\n } else {\n /* XXX: output a warning for unreachable code? */\n switch (opcode_info[op].fmt) {\n case OpFmt.label:\n case OpFmt.label_u16:\n update_label(s, get_u32(bc_buf, pos + 1), -1);\n break;\n case OpFmt.atom_label_u8:\n case OpFmt.atom_label_u16:\n update_label(s, get_u32(bc_buf, pos + 5), -1);\n break;\n default:\n break;\n }\n }\n }\n return pos;\n}\n\nfunction get_label_pos(s: JSFunctionDef, label: number): number {\n let pos = 0;\n for (let i = 0; i < 20; i++) {\n pos = s.label_slots[label].pos;\n let again = false;\n for (;;) {\n switch (s.byte_code.buf[pos]) {\n case OP.line_num:\n case OP.label:\n pos += 5;\n continue;\n case OP.goto:\n label = get_u32(s.byte_code.buf, pos + 1);\n again = true;\n break;\n default:\n return pos;\n }\n break;\n }\n if (!again) return pos;\n }\n return pos;\n}\n\n/* convert global variable accesses to local variables or closure variables when necessary */\nfunction resolve_variables(ctx: JSContext, s: JSFunctionDef): number {\n const bc_buf = s.byte_code.buf;\n const bc_len = s.byte_code.size;\n const bc_out = new DynBuf();\n const cc = new CodeContext(bc_buf, bc_len);\n let pos: number, pos_next: number, op: number, len: number, line_num = 0;\n let var_name: JSAtom, scope: number;\n\n /* first pass for runtime checks (must be done before the variables are created) */\n for (let i = 0; i < s.global_vars.length; i++) {\n const hf = s.global_vars[i];\n let found = false;\n /* check if global variable (XXX: simplify) */\n for (let idx = 0; idx < s.closure_var.length; idx++) {\n const cv = s.closure_var[idx];\n if (cv.var_name === hf.var_name) {\n if (s.eval_type === JS_EVAL_TYPE_DIRECT && cv.is_lexical) {\n /* Check if a lexical variable is redefined as 'var'. XXX: Could\n abort compilation here, but for consistency with the other\n checks, we delay the error generation. */\n bc_out.putc(OP.throw_error);\n bc_out.put_u32(hf.var_name);\n bc_out.putc(JS_THROW_VAR_REDECL);\n }\n found = true;\n break;\n }\n if (cv.var_name === JS_ATOM__var_ || cv.var_name === JS_ATOM__arg_var_) { found = true; break; }\n }\n if (found) continue;\n bc_out.putc(OP.check_define_var);\n bc_out.put_u32(hf.var_name);\n let flags = 0;\n if (hf.is_lexical) flags |= DEFINE_GLOBAL_LEX_VAR;\n if (hf.cpool_idx >= 0) flags |= DEFINE_GLOBAL_FUNC_VAR;\n bc_out.putc(flags);\n }\n\n const no_change = (): void => { bc_out.put_bytes(bc_buf, pos, len); };\n const emit_line = (line: number): void => {\n line_num = line;\n bc_out.putc(OP.line_num);\n bc_out.put_u32(line_num);\n };\n\n for (pos = 0; pos < bc_len; pos = pos_next) {\n op = bc_buf[pos];\n len = opcode_info[op].size;\n pos_next = pos + len;\n switch (op) {\n case OP.line_num:\n line_num = get_u32(bc_buf, pos + 1);\n no_change();\n break;\n case OP.eval: { /* convert scope index to adjusted variable index */\n const call_argc = get_u16(bc_buf, pos + 1);\n scope = get_u16(bc_buf, pos + 1 + 2);\n mark_eval_captured_variables(ctx, s, scope);\n bc_out.putc(op);\n bc_out.put_u16(call_argc);\n bc_out.put_u16(s.scopes[scope].first - ARG_SCOPE_END);\n break;\n }\n case OP.apply_eval: /* convert scope index to adjusted variable index */\n scope = get_u16(bc_buf, pos + 1);\n mark_eval_captured_variables(ctx, s, scope);\n bc_out.putc(op);\n bc_out.put_u16(s.scopes[scope].first - ARG_SCOPE_END);\n break;\n case OP.scope_get_var_checkthis:\n case OP.scope_get_var_undef:\n case OP.scope_get_var:\n case OP.scope_put_var:\n case OP.scope_delete_var:\n case OP.scope_get_ref:\n case OP.scope_put_var_init:\n var_name = get_u32(bc_buf, pos + 1);\n scope = get_u16(bc_buf, pos + 5);\n pos_next = resolve_scope_var(ctx, s, var_name, scope, op, bc_out, null, null, pos_next);\n break;\n case OP.scope_make_ref: {\n var_name = get_u32(bc_buf, pos + 1);\n const label = get_u32(bc_buf, pos + 5);\n scope = get_u16(bc_buf, pos + 9);\n const ls = s.label_slots[label];\n ls.ref_count--; /* always remove label reference */\n pos_next = resolve_scope_var(ctx, s, var_name, scope, op, bc_out, bc_buf, ls, pos_next);\n break;\n }\n case OP.scope_get_private_field:\n case OP.scope_get_private_field2:\n case OP.scope_put_private_field:\n case OP.scope_in_private_field: {\n var_name = get_u32(bc_buf, pos + 1);\n scope = get_u16(bc_buf, pos + 5);\n const ret = resolve_scope_private_field(ctx, s, var_name, scope, op, bc_out);\n if (ret < 0) {\n s.byte_code = bc_out;\n return -1;\n }\n break;\n }\n case OP.gosub: {\n /* remove calls to empty finalizers */\n const label = get_u32(bc_buf, pos + 1);\n const ls = s.label_slots[label];\n if (code_match(cc, ls.pos, OP.ret)) {\n ls.ref_count--;\n break;\n }\n no_change();\n break;\n }\n case OP.insert3:\n /* Transformation: insert3 put_array_el|put_ref_value drop -> put_array_el|put_ref_value */\n if (code_match(cc, pos_next, [OP.put_array_el, OP.put_ref_value], OP.drop)) {\n bc_out.putc(cc.op);\n pos_next = cc.pos;\n if (cc.line_num !== -1 && cc.line_num !== line_num) emit_line(cc.line_num);\n break;\n }\n no_change();\n break;\n case OP.goto:\n case OP.tail_call:\n case OP.tail_call_method:\n case OP.return:\n case OP.return_undef:\n case OP.throw:\n case OP.throw_error:\n case OP.ret: {\n /* remove dead code */\n const linep = { line: -1 };\n bc_out.put_bytes(bc_buf, pos, len);\n pos = skip_dead_code(s, bc_buf, bc_len, pos + len, linep);\n pos_next = pos;\n if (pos < bc_len && linep.line >= 0 && line_num !== linep.line) emit_line(linep.line);\n break;\n }\n case OP.label: {\n const label = get_u32(bc_buf, pos + 1);\n const ls = s.label_slots[label];\n ls.pos2 = bc_out.size + opcode_info[op].size;\n no_change();\n break;\n }\n case OP.enter_scope: {\n const scope2 = get_u16(bc_buf, pos + 1);\n if (scope2 === s.body_scope) instantiate_hoisted_definitions(ctx, s, bc_out);\n for (let scope_idx = s.scopes[scope2].first; scope_idx >= 0;) {\n const vd = s.vars[scope_idx];\n if (vd.scope_level === scope2) {\n if (scope_idx !== s.arguments_arg_idx) {\n if (vd.var_kind === JSVarKind.FUNCTION_DECL || vd.var_kind === JSVarKind.NEW_FUNCTION_DECL) {\n /* Initialize lexical variable upon entering scope */\n bc_out.putc(OP.fclosure);\n bc_out.put_u32(vd.func_pool_idx);\n bc_out.putc(OP.put_loc);\n bc_out.put_u16(scope_idx);\n } else {\n /* XXX: should check if variable can be used before initialization */\n bc_out.putc(OP.set_loc_uninitialized);\n bc_out.put_u16(scope_idx);\n }\n }\n scope_idx = vd.scope_next;\n } else {\n break;\n }\n }\n break;\n }\n case OP.leave_scope: {\n const scope2 = get_u16(bc_buf, pos + 1);\n for (let scope_idx = s.scopes[scope2].first; scope_idx >= 0;) {\n const vd = s.vars[scope_idx];\n if (vd.scope_level === scope2) {\n if (vd.is_captured) {\n bc_out.putc(OP.close_loc);\n bc_out.put_u16(scope_idx);\n }\n scope_idx = vd.scope_next;\n } else {\n break;\n }\n }\n break;\n }\n case OP.set_name: {\n /* remove dummy set_name opcodes */\n const name = get_u32(bc_buf, pos + 1);\n if (name === JS_ATOM_NULL) break;\n no_change();\n break;\n }\n case OP.if_false:\n case OP.if_true:\n case OP.catch:\n no_change();\n break;\n case OP.dup: {\n /* Transformation: dup if_false(l1) drop, l1: if_false(l2) -> if_false(l2) */\n /* Transformation: dup if_true(l1) drop, l1: if_true(l2) -> if_true(l2) */\n if (code_match(cc, pos_next, [OP.if_false, OP.if_true], OP.drop)) {\n const lab0 = cc.label;\n let lab1 = lab0;\n const op1 = cc.op;\n const pos1 = cc.pos;\n const line1 = cc.line_num;\n let pos2: number;\n while (code_match(cc, (pos2 = get_label_pos(s, lab1)), OP.dup, op1, OP.drop)) {\n lab1 = cc.label;\n }\n if (code_match(cc, pos2, op1)) {\n update_label(s, lab0, -1);\n update_label(s, cc.label, +1);\n bc_out.putc(op1);\n bc_out.put_u32(cc.label);\n pos_next = pos1;\n if (line1 !== -1 && line1 !== line_num) emit_line(line1);\n break;\n }\n }\n no_change();\n break;\n }\n case OP.nop:\n /* remove erased code */\n break;\n case OP.set_class_name:\n /* only used during parsing */\n break;\n case OP.get_field_opt_chain: { /* equivalent to OP_get_field */\n const name = get_u32(bc_buf, pos + 1);\n bc_out.putc(OP.get_field);\n bc_out.put_u32(name);\n break;\n }\n case OP.get_array_el_opt_chain: /* equivalent to OP_get_array_el */\n bc_out.putc(OP.get_array_el);\n break;\n default:\n no_change();\n break;\n }\n }\n /* set the new byte code */\n s.byte_code = bc_out;\n return 0;\n}\n\n/* ---------------------------------------------------------------------\n Phase 3: label resolution and peephole optimizations\n --------------------------------------------------------------------- */\n\n/* the pc2line table gives a source position for each PC value */\nfunction add_pc2line_info(s: JSFunctionDef, pc: number, source_pos: number): void {\n if (!s.strip_debug && pc >= s.line_number_last_pc && source_pos !== s.line_number_last) {\n const slot = new LineNumberSlot();\n slot.pc = pc;\n slot.line_num = source_pos; /* source position, converted later */\n s.line_number_slots.push(slot);\n s.line_number_last_pc = pc;\n s.line_number_last = source_pos;\n }\n}\n\n/* encode the pc2line table: sequence of (pc delta leb128, line delta sleb128, col delta sleb128) */\nfunction compute_pc2line_info(s: JSFunctionDef, ps: JSParseState): void {\n if (s.strip_debug) return;\n s.pc2line = new DynBuf();\n let last_pc = 0;\n let [last_line, last_col] = get_line_col(ps, s.source_pos);\n /* initial entry for pc 0 */\n s.pc2line.put_leb128(0);\n s.pc2line.put_sleb128(last_line);\n s.pc2line.put_sleb128(last_col);\n for (const slot of s.line_number_slots) {\n const pc = slot.pc;\n const source_pos = slot.line_num;\n const diff_pc = pc - last_pc;\n if (diff_pc < 0) continue;\n const [line, col] = get_line_col(ps, source_pos);\n if (line === last_line && col === last_col) continue;\n s.pc2line.put_leb128(diff_pc);\n s.pc2line.put_sleb128(line - last_line);\n s.pc2line.put_sleb128(col - last_col);\n last_pc = pc;\n last_line = line;\n last_col = col;\n }\n}\n\nfunction add_reloc(ls: LabelSlot, addr: number, size: number): void {\n const re = new RelocEntry();\n re.addr = addr;\n re.size = size;\n re.next = ls.first_reloc;\n ls.first_reloc = re;\n}\n\nfunction code_has_label(s: CodeContext, pos: number, label: number): boolean {\n while (pos < s.bc_len) {\n const op = s.bc_buf[pos];\n if (op === OP.line_num) { pos += 5; continue; }\n if (op === OP.label) {\n const lab = get_u32(s.bc_buf, pos + 1);\n if (lab === label) return true;\n pos += 5;\n continue;\n }\n if (op === OP.goto) {\n const lab = get_u32(s.bc_buf, pos + 1);\n if (lab === label) return true;\n }\n break;\n }\n return false;\n}\n\n/* return the target label, following the OP_goto jumps. The first opcode\n at destination is stored in out.op */\nfunction find_jump_target(s: JSFunctionDef, label0: number, out: { op: number; line: number }): number {\n let label = label0;\n let op = 0;\n update_label(s, label, -1);\n let found = false;\n for (let i = 0; i < 10 && !found; i++) {\n let pos = s.label_slots[label].pos2;\n for (;;) {\n op = s.byte_code.buf[pos];\n switch (op) {\n case OP.line_num:\n out.line = get_u32(s.byte_code.buf, pos + 1);\n /* fall thru */\n case OP.label:\n pos += opcode_info[op].size;\n continue;\n case OP.goto:\n label = get_u32(s.byte_code.buf, pos + 1);\n break;\n case OP.drop:\n /* ignore drop opcodes if followed by OP_return_undef */\n while (s.byte_code.buf[++pos] === OP.drop) continue;\n if (s.byte_code.buf[pos] === OP.return_undef) op = OP.return_undef;\n found = true;\n break;\n default:\n found = true;\n break;\n }\n break;\n }\n }\n if (!found) {\n /* cycle detected, could issue a warning */\n label = label0;\n }\n out.op = op;\n update_label(s, label, +1);\n return label;\n}\n\nfunction push_short_int(bc_out: DynBuf, val: number): void {\n if (val >= -1 && val <= 7) {\n bc_out.putc(OP.push_0 + val);\n return;\n }\n if (val === ((val << 24) >> 24)) {\n bc_out.putc(OP.push_i8);\n bc_out.putc(val & 0xff);\n return;\n }\n if (val === ((val << 16) >> 16)) {\n bc_out.putc(OP.push_i16);\n bc_out.put_u16(val & 0xffff);\n return;\n }\n bc_out.putc(OP.push_i32);\n bc_out.put_u32(val >>> 0);\n}\n\nfunction put_short_code(bc_out: DynBuf, op: number, idx: number): void {\n if (idx < 4) {\n switch (op) {\n case OP.get_loc: bc_out.putc(OP.get_loc0 + idx); return;\n case OP.put_loc: bc_out.putc(OP.put_loc0 + idx); return;\n case OP.set_loc: bc_out.putc(OP.set_loc0 + idx); return;\n case OP.get_arg: bc_out.putc(OP.get_arg0 + idx); return;\n case OP.put_arg: bc_out.putc(OP.put_arg0 + idx); return;\n case OP.set_arg: bc_out.putc(OP.set_arg0 + idx); return;\n case OP.get_var_ref: bc_out.putc(OP.get_var_ref0 + idx); return;\n case OP.put_var_ref: bc_out.putc(OP.put_var_ref0 + idx); return;\n case OP.set_var_ref: bc_out.putc(OP.set_var_ref0 + idx); return;\n case OP.call: bc_out.putc(OP.call0 + idx); return;\n }\n }\n if (idx < 256) {\n switch (op) {\n case OP.get_loc: bc_out.putc(OP.get_loc8); bc_out.putc(idx); return;\n case OP.put_loc: bc_out.putc(OP.put_loc8); bc_out.putc(idx); return;\n case OP.set_loc: bc_out.putc(OP.set_loc8); bc_out.putc(idx); return;\n }\n }\n bc_out.putc(op);\n bc_out.put_u16(idx);\n}\n\n/* peephole optimizations and resolve goto/labels */\nfunction resolve_labels(ctx: JSContext, s: JSFunctionDef, ps: JSParseState): number {\n const label_slots = s.label_slots;\n let line_num = s.source_pos;\n const bc_buf = s.byte_code.buf;\n const bc_len = s.byte_code.size;\n const cc = new CodeContext(bc_buf, bc_len);\n const bc_out = new DynBuf();\n let pos: number, pos_next: number, op: number, len: number, label = 0, op1: number;\n const jump_slots: JumpSlot[] = [];\n\n s.line_number_slots = [];\n s.line_number_last = s.source_pos;\n s.line_number_last_pc = 0;\n\n /* initialize the 'home_object' variable if needed */\n if (s.home_object_var_idx >= 0) {\n bc_out.putc(OP.special_object);\n bc_out.putc(OPSpecialObject.HOME_OBJECT);\n put_short_code(bc_out, OP.put_loc, s.home_object_var_idx);\n }\n /* initialize the 'this.active_func' variable if needed */\n if (s.this_active_func_var_idx >= 0) {\n bc_out.putc(OP.special_object);\n bc_out.putc(OPSpecialObject.THIS_FUNC);\n put_short_code(bc_out, OP.put_loc, s.this_active_func_var_idx);\n }\n /* initialize the 'new.target' variable if needed */\n if (s.new_target_var_idx >= 0) {\n bc_out.putc(OP.special_object);\n bc_out.putc(OPSpecialObject.NEW_TARGET);\n put_short_code(bc_out, OP.put_loc, s.new_target_var_idx);\n }\n /* initialize the 'this' variable if needed. In a derived class\n constructor, this is initially uninitialized. */\n if (s.this_var_idx >= 0) {\n if (s.is_derived_class_constructor) {\n bc_out.putc(OP.set_loc_uninitialized);\n bc_out.put_u16(s.this_var_idx);\n } else {\n bc_out.putc(OP.push_this);\n put_short_code(bc_out, OP.put_loc, s.this_var_idx);\n }\n }\n /* initialize the 'arguments' variable if needed */\n if (s.arguments_var_idx >= 0) {\n if ((s.js_mode & JS_MODE_STRICT) || !s.has_simple_parameter_list) {\n bc_out.putc(OP.special_object);\n bc_out.putc(OPSpecialObject.ARGUMENTS);\n } else {\n bc_out.putc(OP.special_object);\n bc_out.putc(OPSpecialObject.MAPPED_ARGUMENTS);\n }\n if (s.arguments_arg_idx >= 0) put_short_code(bc_out, OP.set_loc, s.arguments_arg_idx);\n put_short_code(bc_out, OP.put_loc, s.arguments_var_idx);\n }\n /* initialize a reference to the current function if needed */\n if (s.func_var_idx >= 0) {\n bc_out.putc(OP.special_object);\n bc_out.putc(OPSpecialObject.THIS_FUNC);\n put_short_code(bc_out, OP.put_loc, s.func_var_idx);\n }\n /* initialize the variable environment object if needed */\n if (s.var_object_idx >= 0) {\n bc_out.putc(OP.special_object);\n bc_out.putc(OPSpecialObject.VAR_OBJECT);\n put_short_code(bc_out, OP.put_loc, s.var_object_idx);\n }\n if (s.arg_var_object_idx >= 0) {\n bc_out.putc(OP.special_object);\n bc_out.putc(OPSpecialObject.VAR_OBJECT);\n put_short_code(bc_out, OP.put_loc, s.arg_var_object_idx);\n }\n\n const no_change = (): void => {\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.put_bytes(bc_buf, pos, len);\n };\n\n /* emit a jump to 'label' with opcode 'op' (has_label in C) */\n const has_label = (): void => {\n add_pc2line_info(s, bc_out.size, line_num);\n if (op === OP.goto) {\n const linep = { line: line_num };\n pos_next = skip_dead_code(s, bc_buf, bc_len, pos_next, linep);\n line_num = linep.line;\n }\n const ls = label_slots[label];\n const jp = new JumpSlot();\n jp.op = op;\n jp.size = 4;\n jp.pos = bc_out.size + 1;\n jp.label = label;\n jump_slots.push(jp);\n if (ls.addr === -1) {\n const diff = ls.pos2 - pos - 1;\n if (diff < 128 && (op === OP.if_false || op === OP.if_true || op === OP.goto)) {\n jp.size = 1;\n jp.op = OP.if_false8 + (op - OP.if_false);\n bc_out.putc(OP.if_false8 + (op - OP.if_false));\n bc_out.putc(0);\n add_reloc(ls, bc_out.size - 1, 1);\n return;\n }\n if (diff < 32768 && op === OP.goto) {\n jp.size = 2;\n jp.op = OP.goto16;\n bc_out.putc(OP.goto16);\n bc_out.put_u16(0);\n add_reloc(ls, bc_out.size - 2, 2);\n return;\n }\n } else {\n const diff = ls.addr - bc_out.size - 1;\n if (diff === ((diff << 24) >> 24) && (op === OP.if_false || op === OP.if_true || op === OP.goto)) {\n jp.size = 1;\n jp.op = OP.if_false8 + (op - OP.if_false);\n bc_out.putc(OP.if_false8 + (op - OP.if_false));\n bc_out.putc(diff & 0xff);\n return;\n }\n if (diff === ((diff << 16) >> 16) && op === OP.goto) {\n jp.size = 2;\n jp.op = OP.goto16;\n bc_out.putc(OP.goto16);\n bc_out.put_u16(diff & 0xffff);\n return;\n }\n }\n bc_out.putc(op);\n bc_out.put_u32((ls.addr - bc_out.size) >>> 0);\n if (ls.addr === -1) {\n /* unresolved yet: create a new relocation entry */\n add_reloc(ls, bc_out.size - 4, 4);\n }\n };\n\n /* has_goto in C: optimize a goto to 'label' */\n const has_goto = (): void => {\n const out = { op: 0, line: -1 };\n /* Use custom matcher because multiple labels can follow */\n label = find_jump_target(s, label, out);\n op1 = out.op;\n if (code_has_label(cc, pos_next, label)) {\n /* jump to next instruction: remove jump */\n update_label(s, label, -1);\n return;\n }\n if (op1 === OP.return || op1 === OP.return_undef || op1 === OP.throw) {\n /* jump to return/throw: remove jump, append return/throw */\n update_label(s, label, -1);\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(op1);\n const linep = { line: line_num };\n pos_next = skip_dead_code(s, bc_buf, bc_len, pos_next, linep);\n line_num = linep.line;\n return;\n }\n has_label();\n };\n\n /* has_constant_test in C */\n const has_constant_test = (val: number): void => {\n if (cc.line_num >= 0) line_num = cc.line_num;\n if (val === cc.op - OP.if_false) {\n /* transform null if_false(l1) -> goto l1, false if_false(l1) -> goto l1, true if_true(l1) -> goto l1 */\n pos_next = cc.pos;\n op = OP.goto;\n label = cc.label;\n has_goto();\n } else {\n /* transform null if_true(l1) -> nop, false if_true(l1) -> nop, true if_false(l1) -> nop */\n pos_next = cc.pos;\n update_label(s, cc.label, -1);\n }\n };\n\n for (pos = 0; pos < bc_len; pos = pos_next) {\n op = bc_buf[pos];\n len = opcode_info[op].size;\n pos_next = pos + len;\n switch (op) {\n case OP.line_num:\n /* line number info (for debug). We put it in a separate compressed table */\n line_num = get_u32(bc_buf, pos + 1);\n break;\n case OP.label: {\n label = get_u32(bc_buf, pos + 1);\n const ls = label_slots[label];\n ls.addr = bc_out.size;\n /* resolve the relocation entries */\n for (let re = ls.first_reloc; re !== null; re = re.next) {\n const diff = ls.addr - re.addr;\n switch (re.size) {\n case 4: put_u32(bc_out.buf, re.addr, diff >>> 0); break;\n case 2: put_u16(bc_out.buf, re.addr, diff & 0xffff); break;\n case 1: put_u8(bc_out.buf, re.addr, diff & 0xff); break;\n }\n }\n ls.first_reloc = null;\n break;\n }\n case OP.call:\n case OP.call_method: {\n /* detect and transform tail calls */\n const argc = get_u16(bc_buf, pos + 1);\n if (code_match(cc, pos_next, OP.return)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n put_short_code(bc_out, op + 1, argc);\n const linep = { line: line_num };\n pos_next = skip_dead_code(s, bc_buf, bc_len, cc.pos, linep);\n line_num = linep.line;\n break;\n }\n add_pc2line_info(s, bc_out.size, line_num);\n put_short_code(bc_out, op, argc);\n break;\n }\n case OP.return:\n case OP.return_undef:\n case OP.return_async:\n case OP.throw:\n case OP.throw_error: {\n const linep = { line: line_num };\n pos_next = skip_dead_code(s, bc_buf, bc_len, pos_next, linep);\n line_num = linep.line;\n no_change();\n break;\n }\n case OP.goto:\n label = get_u32(bc_buf, pos + 1);\n has_goto();\n break;\n case OP.gosub:\n label = get_u32(bc_buf, pos + 1);\n has_label();\n break;\n case OP.catch:\n label = get_u32(bc_buf, pos + 1);\n has_label();\n break;\n case OP.if_true:\n case OP.if_false: {\n label = get_u32(bc_buf, pos + 1);\n const out = { op: 0, line: -1 };\n label = find_jump_target(s, label, out);\n /* transform if_false/if_true(l1) label(l1) -> drop label(l1) */\n if (code_has_label(cc, pos_next, label)) {\n update_label(s, label, -1);\n bc_out.putc(OP.drop);\n break;\n }\n /* transform if_false(l1) goto(l2) label(l1) -> if_false(l2) label(l1) */\n if (code_match(cc, pos_next, OP.goto)) {\n const pos1 = cc.pos;\n const line1 = cc.line_num;\n if (code_has_label(cc, pos1, label)) {\n if (line1 !== -1) line_num = line1;\n pos_next = pos1;\n update_label(s, label, -1);\n label = cc.label;\n op ^= OP.if_true ^ OP.if_false;\n }\n }\n has_label();\n break;\n }\n case OP.with_get_var:\n case OP.with_put_var:\n case OP.with_delete_var:\n case OP.with_make_ref:\n case OP.with_get_ref: {\n const atom = get_u32(bc_buf, pos + 1);\n label = get_u32(bc_buf, pos + 5);\n const is_with = bc_buf[pos + 9];\n const out = { op: 0, line: -1 };\n label = find_jump_target(s, label, out);\n const ls = label_slots[label];\n add_pc2line_info(s, bc_out.size, line_num);\n const jp = new JumpSlot();\n jp.op = op;\n jp.size = 4;\n jp.pos = bc_out.size + 5;\n jp.label = label;\n jump_slots.push(jp);\n bc_out.putc(op);\n bc_out.put_u32(atom);\n bc_out.put_u32((ls.addr - bc_out.size) >>> 0);\n if (ls.addr === -1) {\n /* unresolved yet: create a new relocation entry */\n add_reloc(ls, bc_out.size - 4, 4);\n }\n bc_out.putc(is_with);\n break;\n }\n case OP.drop:\n /* remove useless drops before return */\n if (code_match(cc, pos_next, OP.return_undef)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n break;\n }\n no_change();\n break;\n case OP.null:\n /* transform null strict_eq into is_null */\n if (code_match(cc, pos_next, OP.strict_eq)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.is_null);\n pos_next = cc.pos;\n break;\n }\n /* transform null strict_neq if_false/if_true -> is_null if_true/if_false */\n if (code_match(cc, pos_next, OP.strict_neq, [OP.if_false, OP.if_true])) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.is_null);\n pos_next = cc.pos;\n label = cc.label;\n op = cc.op ^ OP.if_false ^ OP.if_true;\n has_label();\n break;\n }\n /* fall thru */\n case OP.push_false:\n case OP.push_true: {\n const val = (op === OP.push_true) ? 1 : 0;\n if (code_match(cc, pos_next, [OP.if_false, OP.if_true])) {\n has_constant_test(val);\n break;\n }\n no_change();\n break;\n }\n case OP.push_i32: {\n /* transform i32(val) neg -> i32(-val) */\n let val = get_i32(bc_buf, pos + 1);\n if ((val !== -2147483648 && val !== 0) && code_match(cc, pos_next, OP.neg)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n if (code_match(cc, cc.pos, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n } else {\n add_pc2line_info(s, bc_out.size, line_num);\n push_short_int(bc_out, -val);\n }\n pos_next = cc.pos;\n break;\n }\n /* remove push/drop pairs generated by the parser */\n if (code_match(cc, pos_next, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n pos_next = cc.pos;\n break;\n }\n /* Optimize constant tests: `if (0)`, `if (1)`, `if (!0)`... */\n if (code_match(cc, pos_next, [OP.if_false, OP.if_true])) {\n val = (val !== 0) ? 1 : 0;\n has_constant_test(val);\n break;\n }\n add_pc2line_info(s, bc_out.size, line_num);\n push_short_int(bc_out, val);\n break;\n }\n case OP.push_bigint_i32: {\n /* transform i32(val) neg -> i32(-val) */\n const val = get_i32(bc_buf, pos + 1);\n if (val !== -2147483648 && code_match(cc, pos_next, OP.neg)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n if (code_match(cc, cc.pos, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n } else {\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.push_bigint_i32);\n bc_out.put_u32((-val) >>> 0);\n }\n pos_next = cc.pos;\n break;\n }\n no_change();\n break;\n }\n case OP.push_const:\n case OP.fclosure: {\n const idx = get_u32(bc_buf, pos + 1);\n if (idx < 256) {\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.push_const8 + op - OP.push_const);\n bc_out.putc(idx);\n break;\n }\n no_change();\n break;\n }\n case OP.get_field: {\n const atom = get_u32(bc_buf, pos + 1);\n if (atom === JS_ATOM_length) {\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.get_length);\n break;\n }\n no_change();\n break;\n }\n case OP.push_atom_value: {\n const atom = get_u32(bc_buf, pos + 1);\n /* remove push/drop pairs generated by the parser */\n if (code_match(cc, pos_next, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n pos_next = cc.pos;\n break;\n }\n if (atom === JS_ATOM_empty_string) {\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.push_empty_string);\n break;\n }\n no_change();\n break;\n }\n case OP.to_propkey:\n case OP.to_propkey2:\n /* remove redundant to_propkey/to_propkey2 opcodes when storing simple data */\n if (code_match(cc, pos_next, [OP.get_loc, OP.get_arg, OP.get_var_ref], -1, OP.put_array_el) ||\n code_match(cc, pos_next, [OP.push_i32, OP.push_const, OP.push_atom_value], OP.put_array_el) ||\n code_match(cc, pos_next, [OP.undefined, OP.null, OP.push_true, OP.push_false], OP.put_array_el)) {\n break;\n }\n no_change();\n break;\n case OP.undefined:\n /* remove push/drop pairs generated by the parser */\n if (code_match(cc, pos_next, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n pos_next = cc.pos;\n break;\n }\n /* transform undefined return -> return_undefined */\n if (code_match(cc, pos_next, OP.return)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.return_undef);\n pos_next = cc.pos;\n break;\n }\n /* transform undefined if_true(l1)/if_false(l1) -> nop/goto(l1) */\n if (code_match(cc, pos_next, [OP.if_false, OP.if_true])) {\n has_constant_test(0);\n break;\n }\n /* transform undefined strict_eq -> is_undefined */\n if (code_match(cc, pos_next, OP.strict_eq)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.is_undefined);\n pos_next = cc.pos;\n break;\n }\n /* transform undefined strict_neq if_false/if_true -> is_undefined if_true/if_false */\n if (code_match(cc, pos_next, OP.strict_neq, [OP.if_false, OP.if_true])) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.is_undefined);\n pos_next = cc.pos;\n label = cc.label;\n op = cc.op ^ OP.if_false ^ OP.if_true;\n has_label();\n break;\n }\n no_change();\n break;\n case OP.insert2:\n /* Transformation: insert2 put_field(a) drop -> put_field(a); insert2 put_var_strict(a) drop -> put_var_strict(a) */\n if (code_match(cc, pos_next, [OP.put_field, OP.put_var_strict], OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(cc.op);\n bc_out.put_u32(cc.atom);\n pos_next = cc.pos;\n break;\n }\n no_change();\n break;\n case OP.dup: {\n /* Transformation: dup put_x(n) drop -> put_x(n); dup put_x(n) -> set_x(n) */\n let line2 = -1;\n if (code_match(cc, pos_next, [OP.put_loc, OP.put_arg, OP.put_var_ref], -1)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n let opx = cc.op + 1; /* put_x -> set_x */\n pos_next = cc.pos;\n const idx = cc.idx;\n if (code_match(cc, cc.pos, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n opx -= 1; /* set_x drop -> put_x */\n pos_next = cc.pos;\n if (code_match(cc, cc.pos, opx - 1, idx)) {\n line2 = cc.line_num; /* delay line number update */\n opx += 1; /* put_x(n) get_x(n) -> set_x(n) */\n pos_next = cc.pos;\n }\n }\n add_pc2line_info(s, bc_out.size, line_num);\n put_short_code(bc_out, opx, idx);\n if (line2 >= 0) line_num = line2;\n break;\n }\n no_change();\n break;\n }\n case OP.get_loc: {\n /* transformation:\n get_loc(n) post_dec put_loc(n) drop -> dec_loc(n)\n get_loc(n) post_inc put_loc(n) drop -> inc_loc(n)\n get_loc(n) dec dup put_loc(n) drop -> dec_loc(n)\n get_loc(n) inc dup put_loc(n) drop -> inc_loc(n) */\n const idx = get_u16(bc_buf, pos + 1);\n if (idx >= 256) { no_change(); break; }\n if (code_match(cc, pos_next, [OP.post_dec, OP.post_inc], OP.put_loc, idx, OP.drop) ||\n code_match(cc, pos_next, [OP.dec, OP.inc], OP.dup, OP.put_loc, idx, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc((cc.op === OP.inc || cc.op === OP.post_inc) ? OP.inc_loc : OP.dec_loc);\n bc_out.putc(idx);\n pos_next = cc.pos;\n break;\n }\n /* transformation: get_loc(n) push_atom_value(x) add dup put_loc(n) drop -> push_atom_value(x) add_loc(n) */\n if (code_match(cc, pos_next, OP.push_atom_value, OP.add, OP.dup, OP.put_loc, idx, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n if (cc.atom === JS_ATOM_empty_string) {\n bc_out.putc(OP.push_empty_string);\n } else {\n bc_out.putc(OP.push_atom_value);\n bc_out.put_u32(cc.atom);\n }\n bc_out.putc(OP.add_loc);\n bc_out.putc(idx);\n pos_next = cc.pos;\n break;\n }\n /* transformation: get_loc(n) push_i32(x) add dup put_loc(n) drop -> push_i32(x) add_loc(n) */\n if (code_match(cc, pos_next, OP.push_i32, OP.add, OP.dup, OP.put_loc, idx, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n push_short_int(bc_out, cc.label | 0);\n bc_out.putc(OP.add_loc);\n bc_out.putc(idx);\n pos_next = cc.pos;\n break;\n }\n /* transformation: get_loc(n) get_x(x) add dup put_loc(n) drop -> get_x(x) add_loc(n) */\n if (code_match(cc, pos_next, [OP.get_loc, OP.get_arg, OP.get_var_ref], -1, OP.add, OP.dup, OP.put_loc, idx, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n put_short_code(bc_out, cc.op, cc.idx);\n bc_out.putc(OP.add_loc);\n bc_out.putc(idx);\n pos_next = cc.pos;\n break;\n }\n add_pc2line_info(s, bc_out.size, line_num);\n put_short_code(bc_out, op, idx);\n break;\n }\n case OP.get_arg:\n case OP.get_var_ref: {\n const idx = get_u16(bc_buf, pos + 1);\n add_pc2line_info(s, bc_out.size, line_num);\n put_short_code(bc_out, op, idx);\n break;\n }\n case OP.put_loc:\n case OP.put_arg:\n case OP.put_var_ref: {\n /* transformation: put_x(n) get_x(n) -> set_x(n) */\n const idx = get_u16(bc_buf, pos + 1);\n if (code_match(cc, pos_next, op - 1, idx)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n put_short_code(bc_out, op + 1, idx);\n pos_next = cc.pos;\n break;\n }\n add_pc2line_info(s, bc_out.size, line_num);\n put_short_code(bc_out, op, idx);\n break;\n }\n case OP.post_inc:\n case OP.post_dec: {\n /* transformation:\n post_inc put_x drop -> inc put_x\n post_inc perm3 put_field drop -> inc put_field\n post_inc perm3 put_var_strict drop -> inc put_var_strict\n post_inc perm4 put_array_el drop -> inc put_array_el */\n if (code_match(cc, pos_next, [OP.put_loc, OP.put_arg, OP.put_var_ref], -1, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n let opx = cc.op;\n const idx = cc.idx;\n pos_next = cc.pos;\n if (code_match(cc, cc.pos, opx - 1, idx)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n opx += 1; /* put_x(n) get_x(n) -> set_x(n) */\n pos_next = cc.pos;\n }\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.dec + (op - OP.post_dec));\n put_short_code(bc_out, opx, idx);\n break;\n }\n if (code_match(cc, pos_next, OP.perm3, [OP.put_field, OP.put_var_strict], OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.dec + (op - OP.post_dec));\n bc_out.putc(cc.op);\n bc_out.put_u32(cc.atom);\n pos_next = cc.pos;\n break;\n }\n if (code_match(cc, pos_next, OP.perm4, OP.put_array_el, OP.drop)) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(OP.dec + (op - OP.post_dec));\n bc_out.putc(OP.put_array_el);\n pos_next = cc.pos;\n break;\n }\n no_change();\n break;\n }\n case OP.typeof:\n /* simplify typeof tests */\n if (code_match(cc, pos_next, OP.push_atom_value, [OP.strict_eq, OP.strict_neq, OP.eq, OP.neq])) {\n if (cc.line_num >= 0) line_num = cc.line_num;\n const opx = (cc.op === OP.strict_eq || cc.op === OP.eq) ? OP.strict_eq : OP.strict_neq;\n let op2 = -1;\n switch (cc.atom) {\n case JS_ATOM_undefined: op2 = OP.typeof_is_undefined; break;\n case JS_ATOM_function: op2 = OP.typeof_is_function; break;\n }\n if (op2 >= 0) {\n /* transform typeof(s) == \"<type>\" into is_<type> */\n if (opx === OP.strict_eq) {\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(op2);\n pos_next = cc.pos;\n break;\n }\n if (opx === OP.strict_neq && code_match(cc, cc.pos, OP.if_false)) {\n /* transform typeof(s) != \"<type>\" if_false into is_<type> if_true */\n if (cc.line_num >= 0) line_num = cc.line_num;\n add_pc2line_info(s, bc_out.size, line_num);\n bc_out.putc(op2);\n pos_next = cc.pos;\n label = cc.label;\n op = OP.if_true;\n has_label();\n break;\n }\n }\n }\n no_change();\n break;\n default:\n no_change();\n break;\n }\n }\n\n /* check that there were no missing labels */\n for (let i = 0; i < label_slots.length; i++) {\n if (label_slots[i].first_reloc !== null) {\n JS_ThrowSyntaxError(ctx, 'internal error: unresolved label');\n return -1;\n }\n }\n\n /* more jump optimizations: shrink long jumps whose target is now known to be close */\n {\n let patch_offsets = 0;\n for (let i = 0; i < jump_slots.length; i++) {\n const jp = jump_slots[i];\n let delta = 3;\n op = jp.op;\n switch (op) {\n case OP.goto16:\n delta = 1;\n /* fall thru */\n case OP.if_false:\n case OP.if_true:\n case OP.goto: {\n const jpos = jp.pos;\n const diff = label_slots[jp.label].addr - jpos;\n let shrink = false;\n if (diff >= -128 && diff <= 127 + delta) {\n jp.size = 1;\n if (op === OP.goto16) bc_out.buf[jpos - 1] = jp.op = OP.goto8;\n else bc_out.buf[jpos - 1] = jp.op = OP.if_false8 + (op - OP.if_false);\n shrink = true;\n } else if (diff === ((diff << 16) >> 16) && op === OP.goto) {\n jp.size = 2;\n delta = 2;\n bc_out.buf[jpos - 1] = jp.op = OP.goto16;\n shrink = true;\n }\n if (shrink) {\n bc_out.buf.copyWithin(jpos + jp.size, jpos + jp.size + delta, bc_out.size);\n bc_out.size -= delta;\n patch_offsets++;\n for (let j = 0; j < label_slots.length; j++) {\n const ls = label_slots[j];\n if (ls.addr > jpos) ls.addr -= delta;\n }\n for (let j = i + 1; j < jump_slots.length; j++) {\n const jp1 = jump_slots[j];\n if (jp1.pos > jpos) jp1.pos -= delta;\n }\n for (const slot of s.line_number_slots) {\n if (slot.pc > jpos) slot.pc -= delta;\n }\n }\n break;\n }\n }\n }\n if (patch_offsets) {\n for (const jp1 of jump_slots) {\n const diff1 = label_slots[jp1.label].addr - jp1.pos;\n switch (jp1.size) {\n case 1: put_u8(bc_out.buf, jp1.pos, diff1 & 0xff); break;\n case 2: put_u16(bc_out.buf, jp1.pos, diff1 & 0xffff); break;\n case 4: put_u32(bc_out.buf, jp1.pos, diff1 >>> 0); break;\n }\n }\n }\n }\n\n compute_pc2line_info(s, ps);\n /* set the new byte code */\n s.byte_code = bc_out;\n s.use_short_opcodes = true;\n return 0;\n}\n\n/* ---------------------------------------------------------------------\n Stack size computation\n --------------------------------------------------------------------- */\n\nconst JS_STACK_SIZE_MAX = 65534;\n\nclass StackSizeState {\n bc_len: number;\n stack_len_max = 0;\n stack_level_tab: Int32Array;\n catch_pos_tab: Int32Array;\n pc_stack: number[] = [];\n constructor(bc_len: number) {\n this.bc_len = bc_len;\n this.stack_level_tab = new Int32Array(bc_len).fill(0xffff);\n this.catch_pos_tab = new Int32Array(bc_len);\n }\n}\n\n/* 'op' is only used for error indication */\nfunction ss_check(ctx: JSContext, s: StackSizeState, pos: number, op: number, stack_len: number, catch_pos: number): number {\n if (pos < 0 || pos >= s.bc_len) {\n JS_ThrowSyntaxError(ctx, `bytecode buffer overflow (op=${op}, pc=${pos})`);\n return -1;\n }\n if (stack_len > s.stack_len_max) {\n s.stack_len_max = stack_len;\n if (s.stack_len_max > JS_STACK_SIZE_MAX) {\n JS_ThrowSyntaxError(ctx, `stack overflow (op=${op}, pc=${pos})`);\n return -1;\n }\n }\n if (s.stack_level_tab[pos] !== 0xffff) {\n /* already explored: check that the stack size is consistent */\n if (s.stack_level_tab[pos] !== stack_len) {\n JS_ThrowSyntaxError(ctx, `inconsistent stack size: ${s.stack_level_tab[pos]} ${stack_len} (pc=${pos})`);\n return -1;\n } else if (s.catch_pos_tab[pos] !== catch_pos) {\n JS_ThrowSyntaxError(ctx, `inconsistent catch position: ${s.catch_pos_tab[pos]} ${catch_pos} (pc=${pos})`);\n return -1;\n }\n return 0;\n }\n /* mark as explored and store the stack size */\n s.stack_level_tab[pos] = stack_len;\n s.catch_pos_tab[pos] = catch_pos;\n /* queue the new PC to explore */\n s.pc_stack.push(pos);\n return 0;\n}\n\nfunction compute_stack_size(ctx: JSContext, fd: JSFunctionDef): number {\n const bc_buf = fd.byte_code.buf;\n const s = new StackSizeState(fd.byte_code.size);\n /* breadth-first graph exploration */\n if (ss_check(ctx, s, 0, OP.invalid, 0, -1)) return -1;\n while (s.pc_stack.length > 0) {\n const pos = s.pc_stack.pop()!;\n let stack_len = s.stack_level_tab[pos];\n let catch_pos = s.catch_pos_tab[pos];\n const op = bc_buf[pos];\n if (op === 0 || op >= OP.COUNT) {\n JS_ThrowSyntaxError(ctx, `invalid opcode (op=${op}, pc=${pos})`);\n return -1;\n }\n const oi = short_opcode_info(op);\n let pos_next = pos + oi.size;\n if (pos_next > s.bc_len) {\n JS_ThrowSyntaxError(ctx, `bytecode buffer overflow (op=${op}, pc=${pos})`);\n return -1;\n }\n let n_pop = oi.n_pop;\n /* call pops a variable number of arguments */\n if (oi.fmt === OpFmt.npop || oi.fmt === OpFmt.npop_u16) {\n n_pop += get_u16(bc_buf, pos + 1);\n } else if (oi.fmt === OpFmt.npopx) {\n n_pop += op - OP.call0;\n }\n if (stack_len < n_pop) {\n JS_ThrowSyntaxError(ctx, `stack underflow (op=${op}, pc=${pos})`);\n return -1;\n }\n stack_len += oi.n_push - n_pop;\n if (stack_len > s.stack_len_max) {\n s.stack_len_max = stack_len;\n if (s.stack_len_max > JS_STACK_SIZE_MAX) {\n JS_ThrowSyntaxError(ctx, `stack overflow (op=${op}, pc=${pos})`);\n return -1;\n }\n }\n let diff: number, catch_level: number;\n let check_catch = false;\n switch (op) {\n case OP.tail_call:\n case OP.tail_call_method:\n case OP.return:\n case OP.return_undef:\n case OP.return_async:\n case OP.throw:\n case OP.throw_error:\n case OP.ret:\n continue; /* done_insn */\n case OP.goto:\n diff = get_i32(bc_buf, pos + 1);\n pos_next = pos + 1 + diff;\n break;\n case OP.goto16:\n diff = get_i16(bc_buf, pos + 1);\n pos_next = pos + 1 + diff;\n break;\n case OP.goto8:\n diff = get_i8(bc_buf, pos + 1);\n pos_next = pos + 1 + diff;\n break;\n case OP.if_true8:\n case OP.if_false8:\n diff = get_i8(bc_buf, pos + 1);\n if (ss_check(ctx, s, pos + 1 + diff, op, stack_len, catch_pos)) return -1;\n break;\n case OP.if_true:\n case OP.if_false:\n diff = get_i32(bc_buf, pos + 1);\n if (ss_check(ctx, s, pos + 1 + diff, op, stack_len, catch_pos)) return -1;\n break;\n case OP.gosub:\n diff = get_i32(bc_buf, pos + 1);\n if (ss_check(ctx, s, pos + 1 + diff, op, stack_len + 1, catch_pos)) return -1;\n break;\n case OP.with_get_var:\n case OP.with_delete_var:\n diff = get_i32(bc_buf, pos + 5);\n if (ss_check(ctx, s, pos + 5 + diff, op, stack_len + 1, catch_pos)) return -1;\n break;\n case OP.with_make_ref:\n case OP.with_get_ref:\n diff = get_i32(bc_buf, pos + 5);\n if (ss_check(ctx, s, pos + 5 + diff, op, stack_len + 2, catch_pos)) return -1;\n break;\n case OP.with_put_var:\n diff = get_i32(bc_buf, pos + 5);\n if (ss_check(ctx, s, pos + 5 + diff, op, stack_len - 1, catch_pos)) return -1;\n break;\n case OP.catch:\n diff = get_i32(bc_buf, pos + 1);\n if (ss_check(ctx, s, pos + 1 + diff, op, stack_len, catch_pos)) return -1;\n catch_pos = pos;\n break;\n case OP.for_of_start:\n case OP.for_await_of_start:\n catch_pos = pos;\n break;\n /* we assume the catch offset entry is only removed with some op codes */\n case OP.drop:\n catch_level = stack_len;\n check_catch = true;\n break;\n case OP.nip:\n catch_level = stack_len - 1;\n check_catch = true;\n break;\n case OP.nip1:\n catch_level = stack_len - 1;\n check_catch = true;\n break;\n case OP.iterator_close:\n catch_level = stack_len + 2;\n check_catch = true;\n break;\n case OP.nip_catch:\n if (catch_pos < 0) {\n JS_ThrowSyntaxError(ctx, `nip_catch: no catch op (pc=${pos})`);\n return -1;\n }\n stack_len = s.stack_level_tab[catch_pos];\n if (bc_buf[catch_pos] !== OP.catch) stack_len++; /* for_of_start, for_wait_of_start */\n stack_len++; /* no stack overflow is possible by construction */\n catch_pos = s.catch_pos_tab[catch_pos];\n break;\n default:\n break;\n }\n if (check_catch) {\n /* Note: for for_of_start/for_await_of_start we consider the catch\n offset is on the first stack entry instead of the third */\n if (catch_pos >= 0) {\n let level = s.stack_level_tab[catch_pos];\n if (bc_buf[catch_pos] !== OP.catch) level++; /* for_of_start, for_wait_of_start */\n /* catch_level = stack_level before op_catch is executed ? */\n if (catch_level! === level) catch_pos = s.catch_pos_tab[catch_pos];\n }\n }\n if (ss_check(ctx, s, pos_next, op, stack_len, catch_pos)) return -1;\n }\n return s.stack_len_max;\n}\n\n/* ---------------------------------------------------------------------\n Function creation\n --------------------------------------------------------------------- */\n\nconst DUMP_BYTECODE = Number((globalThis as any).process?.env?.JSEPTION_DUMP ?? 0);\n\n/* debug helper: print the bytecode of a function definition after a pass */\nfunction dump_pass(ctx: JSContext, fd: JSFunctionDef, pass: number): void {\n const buf = fd.byte_code.buf;\n const len = fd.byte_code.size;\n let out = `pass ${pass}: ${fd.func_name ? JS_AtomGetStr(ctx, fd.func_name) : '<anonymous>'}\\n`;\n let pos = 0;\n while (pos < len) {\n const op = buf[pos];\n const oi = pass === 3 ? short_opcode_info(op) : opcode_info[op];\n if (!oi) { out += `${pos}: invalid opcode ${op}\\n`; break; }\n let line = `${String(pos).padStart(5)}: ${oi.name}`;\n const p = pos + 1;\n switch (oi.fmt) {\n case OpFmt.u8: case OpFmt.loc8: case OpFmt.const8: case OpFmt.i8: case OpFmt.label8: line += ` ${buf[p]}`; break;\n case OpFmt.u16: case OpFmt.npop: case OpFmt.loc: case OpFmt.arg: case OpFmt.var_ref: case OpFmt.i16: case OpFmt.label16: line += ` ${get_u16(buf, p)}`; break;\n case OpFmt.npop_u16: line += ` ${get_u16(buf, p)},${get_u16(buf, p + 2)}`; break;\n case OpFmt.u32: case OpFmt.i32: case OpFmt.const: case OpFmt.label: line += ` ${get_i32(buf, p)}`; break;\n case OpFmt.atom: line += ` ${JS_AtomGetStr(ctx, get_u32(buf, p))}`; break;\n case OpFmt.atom_u8: line += ` ${JS_AtomGetStr(ctx, get_u32(buf, p))},${buf[p + 4]}`; break;\n case OpFmt.atom_u16: line += ` ${JS_AtomGetStr(ctx, get_u32(buf, p))},${get_u16(buf, p + 4)}`; break;\n case OpFmt.atom_label_u8: line += ` ${JS_AtomGetStr(ctx, get_u32(buf, p))},L${get_i32(buf, p + 4)},${buf[p + 8]}`; break;\n case OpFmt.atom_label_u16: line += ` ${JS_AtomGetStr(ctx, get_u32(buf, p))},L${get_i32(buf, p + 4)},${get_u16(buf, p + 8)}`; break;\n case OpFmt.label_u16: line += ` L${get_i32(buf, p)},${get_u16(buf, p + 4)}`; break;\n default: break;\n }\n out += line + '\\n';\n pos += oi.size;\n }\n console.log(out);\n}\n\n/* create a function bytecode from a function definition. All the child\n functions are also created. It must be done this way to resolve all the variables. */\nexport function js_create_function(ctx: JSContext, fd: JSFunctionDef, ps: JSParseState): JSFunctionBytecode | null {\n /* recompute scope linkage */\n for (let scope = 0; scope < fd.scopes.length; scope++) fd.scopes[scope].first = -1;\n if (fd.has_parameter_expressions) {\n /* special end of variable list marker for the argument scope */\n fd.scopes[ARG_SCOPE_INDEX].first = ARG_SCOPE_END;\n }\n for (let idx = 0; idx < fd.vars.length; idx++) {\n const vd = fd.vars[idx];\n vd.scope_next = fd.scopes[vd.scope_level].first;\n fd.scopes[vd.scope_level].first = idx;\n }\n for (let scope = 2; scope < fd.scopes.length; scope++) {\n const sd = fd.scopes[scope];\n if (sd.first < 0) sd.first = fd.scopes[sd.parent].first;\n }\n for (let idx = 0; idx < fd.vars.length; idx++) {\n const vd = fd.vars[idx];\n if (vd.scope_next < 0 && vd.scope_level > 1) {\n const scope = fd.scopes[vd.scope_level].parent;\n vd.scope_next = fd.scopes[scope].first;\n }\n }\n\n /* if the function contains an eval call, the closure variables are\n used to compile the eval and they must be ordered by scope, so it is\n necessary to create the closure variables before any other variable\n lookup is done. */\n if (fd.has_eval_call) add_eval_variables(ctx, fd);\n\n /* first create all the child functions */\n for (const fd1 of fd.child_list) {\n const cpool_idx = fd1.parent_cpool_idx;\n const b1 = js_create_function(ctx, fd1, ps);\n if (!b1) return null;\n /* save it in the constant pool */\n fd.cpool[cpool_idx] = b1;\n }\n\n if (DUMP_BYTECODE & 4) dump_pass(ctx, fd, 1);\n if (resolve_variables(ctx, fd)) return null;\n if (DUMP_BYTECODE & 2) dump_pass(ctx, fd, 2);\n if (resolve_labels(ctx, fd, ps)) return null;\n if (DUMP_BYTECODE & 1) dump_pass(ctx, fd, 3);\n const stack_size = compute_stack_size(ctx, fd);\n if (stack_size < 0) return null;\n\n const b = new JSFunctionBytecode();\n b.byte_code_buf = fd.byte_code.toArray();\n b.byte_code_len = b.byte_code_buf.length;\n b.func_name = fd.func_name;\n b.vardefs = fd.args.concat(fd.vars);\n b.var_count = fd.vars.length;\n b.arg_count = fd.args.length;\n b.defined_arg_count = fd.defined_arg_count;\n b.cpool = fd.cpool;\n b.stack_size = stack_size;\n if (!fd.strip_debug) {\n b.has_debug = true;\n b.debug.filename = fd.filename;\n b.debug.pc2line = fd.pc2line.toArray();\n b.debug.source = fd.source;\n b.debug.source_len = fd.source_len;\n }\n b.closure_var = fd.closure_var;\n b.has_prototype = fd.has_prototype;\n b.has_simple_parameter_list = fd.has_simple_parameter_list;\n b.js_mode = fd.js_mode;\n b.is_derived_class_constructor = fd.is_derived_class_constructor;\n b.func_kind = fd.func_kind;\n b.need_home_object = (fd.home_object_var_idx >= 0 || fd.need_home_object);\n b.new_target_allowed = fd.new_target_allowed;\n b.super_call_allowed = fd.super_call_allowed;\n b.super_allowed = fd.super_allowed;\n b.arguments_allowed = fd.arguments_allowed;\n b.is_direct_or_indirect_eval = (fd.eval_type === JS_EVAL_TYPE_DIRECT || fd.eval_type === JS_EVAL_TYPE_INDIRECT);\n b.realm = ctx;\n return b;\n}\n\n/* ---------------------------------------------------------------------\n Eval entry point\n --------------------------------------------------------------------- */\n\n\nexport function __JS_EvalInternal(ctx: JSContext, this_obj: JSValue, input: string, filename: string, flags: number, scope_idx: number): JSValue {\n const s = new JSParseState(ctx, input, filename);\n skip_shebang(s);\n\n const eval_type = flags & JS_EVAL_TYPE_MASK;\n let sf: JSStackFrame | null = null;\n let b: JSFunctionBytecode | null = null;\n let var_refs: any = null;\n let js_mode = 0;\n if (eval_type === JS_EVAL_TYPE_DIRECT) {\n sf = ctx.rt.current_stack_frame;\n const fd = sf ? JS_GetFunctionData(sf.cur_func) : null;\n if (!fd) return JS_ThrowTypeError_(ctx, 'direct eval outside of a bytecode function');\n b = fd.function_bytecode;\n var_refs = fd.var_refs;\n js_mode = b.js_mode;\n } else {\n if (flags & JS_EVAL_FLAG_STRICT) js_mode |= JS_MODE_STRICT;\n if (eval_type === JS_EVAL_TYPE_MODULE) {\n return JS_ThrowSyntaxError(ctx, 'modules are not supported');\n }\n }\n const fd = js_new_function_def(ctx, null, true, false, filename, s.buf_start);\n s.cur_func = fd;\n fd.eval_type = eval_type;\n fd.has_this_binding = (eval_type !== JS_EVAL_TYPE_DIRECT);\n if (eval_type === JS_EVAL_TYPE_DIRECT) {\n fd.new_target_allowed = b!.new_target_allowed;\n fd.super_call_allowed = b!.super_call_allowed;\n fd.super_allowed = b!.super_allowed;\n fd.arguments_allowed = b!.arguments_allowed;\n } else {\n fd.new_target_allowed = false;\n fd.super_call_allowed = false;\n fd.super_allowed = false;\n fd.arguments_allowed = true;\n }\n fd.js_mode = js_mode;\n fd.func_name = JS_ATOM__eval_;\n if (b) {\n if (add_closure_variables(ctx, fd, b, scope_idx)) return JS_EXCEPTION;\n }\n if (flags & JS_EVAL_FLAG_ASYNC) {\n fd.in_function_body = true;\n fd.func_kind = JSFunctionKind.ASYNC;\n }\n s.is_module = false;\n s.allow_html_comments = !s.is_module;\n\n push_scope(s); /* body scope */\n fd.body_scope = fd.scope_level;\n\n if (js_parse_program(s)) return JS_EXCEPTION;\n\n /* create the function object and all the enclosed functions */\n const fb = js_create_function(ctx, fd, s);\n if (!fb) return JS_EXCEPTION;\n\n if (flags & JS_EVAL_FLAG_COMPILE_ONLY) {\n return hooks.js_closure(ctx, fb, var_refs, sf);\n }\n const fun_obj = hooks.js_closure(ctx, fb, var_refs, sf);\n if (JS_IsException(fun_obj)) return fun_obj;\n return JS_Call(ctx, fun_obj, this_obj, []);\n}\n\nfunction JS_ThrowTypeError_(ctx: JSContext, msg: string): JSValue {\n return JS_ThrowError2(ctx, JSErrorEnum.TYPE_ERROR, msg, true);\n}\n\nexport function JS_EvalInternal(ctx: JSContext, this_obj: JSValue, input: string, filename: string, flags: number, scope_idx: number): JSValue {\n const backtrace_barrier = (flags & JS_EVAL_FLAG_BACKTRACE_BARRIER) !== 0;\n let saved_js_mode = 0;\n if (backtrace_barrier && ctx.rt.current_stack_frame) {\n saved_js_mode = ctx.rt.current_stack_frame.js_mode;\n ctx.rt.current_stack_frame.js_mode |= JS_MODE_BACKTRACE_BARRIER;\n }\n const ret = __JS_EvalInternal(ctx, this_obj, input, filename, flags, scope_idx);\n if (backtrace_barrier && ctx.rt.current_stack_frame) ctx.rt.current_stack_frame.js_mode = saved_js_mode;\n return ret;\n}\n\n/* install the parser into the core hooks */\nhooks.JS_EvalInternal = JS_EvalInternal;\n"]}