jseption 0.0.3 → 0.0.5

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.
@@ -1 +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"]}
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, JS_EVAL_FLAG_STRIP_TYPES, JS_EVAL_FLAG_JSX,\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_global, 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_HasException, JS_ATOM_super, JS_ATOM__with_, JS_ATOM_return, JS_ATOM__default_, JS_ATOM__star_,\n} from './quickjs.ts';\nimport { JSModuleDef, JSReqModuleEntry, JSExportEntry, JSExportType, JSStarExportEntry, JSImportEntry } from './values.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 /* TypeScript type stripping (JS_EVAL_FLAG_STRIP_TYPES) */\n ts = false;\n ts_cond_true = false; /* parsing the true branch of a conditional expression (arrow return type rule) */\n ts_atoms: TSAtoms | null = null;\n /* JSX (JS_EVAL_FLAG_JSX) */\n jsx = false;\n jsx_runtime: JSXRuntime | null = null; /* decided at the first element */\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 60: /* < */\n if (s.jsx && is_regexp_allowed(last_tok) && jsx_try_skip(s)) {\n /* a JSX element */\n last_tok = 41;\n continue;\n }\n break;\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 TypeScript type stripping (JS_EVAL_FLAG_STRIP_TYPES)\n\n Node's strip-only mode: the erasable TypeScript syntax (annotations,\n type declarations, generics, assertions, modifiers, overload\n signatures...) is consumed at the token level and never reaches the\n bytecode emitter, so the program compiles to exactly the bytecode of\n the JavaScript obtained by replacing the types with spaces, with the\n same source positions for errors, stacks and line tables. Constructs\n that need code generation (enum, namespaces with values, parameter\n properties, import =, export =) are rejected with a SyntaxError.\n\n The ts_skip_* functions consume tokens and return true, or false on a\n token they cannot accept (a lexer error leaves an exception pending).\n They never emit bytecode, so they also run speculatively: ts_save and\n ts_restore rewind the lexer and drop any pending exception.\n See docs/TYPESCRIPT.md for the grammar and the ambiguity rules.\n --------------------------------------------------------------------- */\n\nclass TSAtoms {\n type: JSAtom; declare: JSAtom; abstract: JSAtom; readonly: JSAtom; namespace: JSAtom; module: JSAtom;\n keyof: JSAtom; infer: JSAtom; is: JSAtom; asserts: JSAtom; satisfies: JSAtom; override: JSAtom;\n unique: JSAtom; out: JSAtom; assert: JSAtom; with_: JSAtom;\n constructor(ctx: JSContext) {\n const a = (n: string): JSAtom => JS_NewAtom(ctx, n);\n this.type = a('type'); this.declare = a('declare'); this.abstract = a('abstract'); this.readonly = a('readonly');\n this.namespace = a('namespace'); this.module = a('module'); this.keyof = a('keyof'); this.infer = a('infer');\n this.is = a('is'); this.asserts = a('asserts'); this.satisfies = a('satisfies'); this.override = a('override');\n this.unique = a('unique'); this.out = a('out'); this.assert = a('assert'); this.with_ = a('with');\n }\n}\n\nfunction ts_atoms(s: JSParseState): TSAtoms {\n return s.ts_atoms ?? (s.ts_atoms = new TSAtoms(s.ctx));\n}\n\n/* the current token is the identifier or keyword `atom`, written without escapes */\nfunction ts_word(s: JSParseState, atom: JSAtom): boolean {\n return s.token.atom === atom && !s.token.has_escape &&\n (tv(s) === TOK.IDENT || (tv(s) >= TOK_FIRST_KEYWORD && tv(s) <= TOK_LAST_KEYWORD));\n}\n\nfunction ts_is_keyword(t: number): boolean { return t >= TOK_FIRST_KEYWORD && t <= TOK_LAST_KEYWORD; }\n\nfunction ts_next(s: JSParseState): boolean { return next_token(s) === 0; }\n\ninterface TSPos { token: JSToken; buf_ptr: number; got_lf: boolean; last_ptr: number }\n\nfunction ts_save(s: JSParseState): TSPos {\n const t = new JSToken();\n Object.assign(t, s.token);\n return { token: t, buf_ptr: s.buf_ptr, got_lf: s.got_lf, last_ptr: s.last_ptr };\n}\n\nfunction ts_restore(s: JSParseState, p: TSPos): void {\n Object.assign(s.token, p.token);\n s.buf_ptr = p.buf_ptr;\n s.got_lf = p.got_lf;\n s.last_ptr = p.last_ptr;\n if (JS_HasException(s.ctx)) JS_GetException(s.ctx);\n}\n\n/* the token after the current one, without consuming anything */\ninterface TSPeek { val: number; atom: JSAtom; lf: boolean; escape: boolean }\nfunction ts_peek(s: JSParseState): TSPeek {\n const p = ts_save(s);\n const r: TSPeek = ts_next(s) ? { val: tv(s), atom: s.token.atom, lf: s.got_lf, escape: s.token.has_escape }\n : { val: TOK.ERROR, atom: JS_ATOM_NULL, lf: false, escape: false };\n ts_restore(s, p);\n return r;\n}\n\nfunction ts_peek_is_name(s: JSParseState): boolean {\n const n = ts_peek(s);\n return !n.lf && (n.val === TOK.IDENT || ts_is_keyword(n.val));\n}\n\n/* a skipper failed: report it unless the lexer already did */\nfunction ts_error(s: JSParseState, msg: string): number {\n if (JS_HasException(s.ctx)) return -1;\n return js_parse_error(s, msg);\n}\n\n/* Node's ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX */\nfunction ts_unsupported(s: JSParseState, what: string, pos: number): number {\n return js_parse_error_pos(s, pos, `TypeScript ${what} is not supported in strip-only mode`);\n}\n\n/* '<' opening a type argument or parameter list ('<<' is split) */\nfunction ts_eat_lt(s: JSParseState): boolean {\n if (tv(s) === 60) return ts_next(s);\n if (tv(s) === TOK.SHL) { s.buf_ptr = s.token.ptr + 1; return ts_next(s); }\n return false;\n}\n\nfunction ts_is_gt(t: number): boolean {\n return t === 62 || t === TOK.SAR || t === TOK.SHR || t === TOK.GTE || t === TOK.SAR_ASSIGN || t === TOK.SHR_ASSIGN;\n}\n\n/* '>' closing a type list: '>>', '>>>', '>=', ... are split and the rest rescanned */\nfunction ts_eat_gt(s: JSParseState): boolean {\n if (tv(s) === 62) return ts_next(s);\n if (!ts_is_gt(tv(s))) return false;\n s.buf_ptr = s.token.ptr + 1;\n return ts_next(s);\n}\n\n/* skip a balanced (...), [...], {...} or template literal, regexps, nested templates and JSX\n elements included; the token after it becomes current, or with lex_next false the position is\n just after its closing character. `info.ellipsis` records a '...' directly inside */\nfunction ts_skip_balanced(s: JSParseState, lex_next = true, info: { ellipsis: boolean } | null = null): boolean {\n const stack: number[] = [];\n let last_tok = 0;\n for (;;) {\n const t = tv(s);\n switch (t) {\n case 60:\n if (s.jsx && is_regexp_allowed(last_tok) && jsx_try_skip(s)) {\n last_tok = 41; /* an operand */\n continue;\n }\n break;\n case TOK.ELLIPSIS:\n if (info !== null && stack.length === 1) info.ellipsis = true;\n break;\n case 40: case 91: case 123:\n stack.push(t);\n break;\n case 41:\n if (stack.pop() !== 40) return false;\n break;\n case 93:\n if (stack.pop() !== 91) return false;\n break;\n case 125: {\n const c = stack.pop();\n if (c === 96) {\n /* end of a template substitution: continue the template */\n s.got_lf = false;\n if (js_parse_template_part(s, s.buf_ptr)) return false;\n if (s.token.sep !== 96) stack.push(96);\n } else if (c !== 123) {\n return false;\n }\n break;\n }\n case TOK.TEMPLATE:\n if (s.token.sep !== 96) stack.push(96);\n break;\n case TOK.EOF:\n return false;\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)) return false;\n }\n break;\n }\n last_tok = tv(s);\n if (stack.length === 0) return lex_next ? ts_next(s) : true;\n if (!ts_next(s)) return false;\n }\n}\n\nconst TS_NO_COND = 1; /* conditional types are not allowed (the extends clause of a conditional type) */\n\n/* Type: function type, constructor type, or a union with an optional conditional part */\nfunction ts_skip_type(s: JSParseState, flags = 0): boolean {\n const A = ts_atoms(s);\n if (tv(s) === 60) {\n /* generic function type: <T>(x: T) => T */\n return ts_skip_type_params(s) && ts_skip_fn_type_rest(s);\n }\n if (ts_word(s, A.abstract) && ts_peek(s).val === TOK.NEW) {\n if (!ts_next(s)) return false;\n }\n if (tv(s) === TOK.NEW) {\n if (!ts_next(s)) return false;\n if (tv(s) === 60 && !ts_skip_type_params(s)) return false;\n return ts_skip_fn_type_rest(s);\n }\n if (tv(s) === 40) {\n /* function type, or a parenthesized type */\n const p = ts_save(s);\n if (ts_skip_balanced(s) && tv(s) === TOK.ARROW) return ts_next(s) && ts_skip_return_type(s);\n ts_restore(s, p);\n }\n if (!ts_skip_union(s, flags)) return false;\n if (!(flags & TS_NO_COND) && tv(s) === TOK.EXTENDS && !s.got_lf) {\n /* conditional type: C extends E ? T : F */\n if (!ts_next(s) || !ts_skip_type(s, TS_NO_COND)) return false;\n if (tv(s) !== 63 || !ts_next(s) || !ts_skip_type(s)) return false;\n if (tv(s) !== 58 || !ts_next(s)) return false;\n return ts_skip_type(s);\n }\n return true;\n}\n\n/* '(' parameters ')' '=>' return type */\nfunction ts_skip_fn_type_rest(s: JSParseState): boolean {\n if (tv(s) !== 40 || !ts_skip_balanced(s)) return false;\n if (tv(s) !== TOK.ARROW || !ts_next(s)) return false;\n return ts_skip_return_type(s);\n}\n\nfunction ts_skip_union(s: JSParseState, flags: number): boolean {\n if (tv(s) === 124 && !ts_next(s)) return false;\n if (!ts_skip_intersection(s, flags)) return false;\n while (tv(s) === 124) {\n if (!ts_next(s) || !ts_skip_intersection(s, flags)) return false;\n }\n return true;\n}\n\nfunction ts_skip_intersection(s: JSParseState, flags: number): boolean {\n if (tv(s) === 38 && !ts_next(s)) return false;\n if (!ts_skip_type_operator(s, flags)) return false;\n while (tv(s) === 38) {\n if (!ts_next(s) || !ts_skip_type_operator(s, flags)) return false;\n }\n return true;\n}\n\n/* the next token can start the operand of a type operator */\nfunction ts_peek_starts_type(s: JSParseState): boolean {\n const n = ts_peek(s);\n switch (n.val) {\n case 44: case 62: case 41: case 93: case 125: case 59: case 61: case 124: case 38: case 46: case 63: case 58:\n case TOK.EOF: case TOK.ARROW: case TOK.EXTENDS: case TOK.ERROR: case TOK.SAR: case TOK.SHR: case TOK.GTE:\n return false;\n }\n return true;\n}\n\nfunction ts_skip_type_operator(s: JSParseState, flags: number): boolean {\n const A = ts_atoms(s);\n if ((ts_word(s, A.keyof) || ts_word(s, A.unique) || ts_word(s, A.readonly)) && ts_peek_starts_type(s)) {\n return ts_next(s) && ts_skip_type_operator(s, flags);\n }\n if (ts_word(s, A.infer) && ts_peek_is_name(s)) {\n if (!ts_next(s) || !ts_next(s)) return false;\n if (tv(s) === TOK.EXTENDS && !s.got_lf) {\n /* `infer U extends C`: a constraint, unless it reads as a conditional type */\n const p = ts_save(s);\n if (!(ts_next(s) && ts_skip_type(s, TS_NO_COND) && ((flags & TS_NO_COND) || tv(s) !== 63))) ts_restore(s, p);\n }\n return true;\n }\n return ts_skip_postfix_type(s);\n}\n\nfunction ts_skip_postfix_type(s: JSParseState): boolean {\n if (!ts_skip_primary_type(s)) return false;\n while (tv(s) === 91 && !s.got_lf) {\n /* T[] or T[K] */\n if (!ts_next(s)) return false;\n if (tv(s) === 93) {\n if (!ts_next(s)) return false;\n continue;\n }\n if (!ts_skip_type(s) || tv(s) !== 93 || !ts_next(s)) return false;\n }\n return true;\n}\n\n/* identifiers and the keywords that name types */\nfunction ts_is_type_name(t: number): boolean {\n return t === TOK.IDENT || t === TOK.VOID || t === TOK.NULL || t === TOK.THIS || t === TOK.TRUE || t === TOK.FALSE ||\n t === TOK.LET || t === TOK.YIELD || t === TOK.AWAIT || t === TOK.STATIC || t === TOK.IMPLEMENTS ||\n t === TOK.INTERFACE || t === TOK.PACKAGE || t === TOK.PRIVATE || t === TOK.PROTECTED || t === TOK.PUBLIC;\n}\n\nfunction ts_skip_primary_type(s: JSParseState): boolean {\n switch (tv(s)) {\n case 40: /* ( type ) */\n if (!ts_next(s) || !ts_skip_type(s)) return false;\n return tv(s) === 41 && ts_next(s);\n case 91: /* tuple */\n case 123: /* object type, mapped type */\n case TOK.TEMPLATE: /* template literal type */\n return ts_skip_balanced(s);\n case TOK.STRING:\n case TOK.NUMBER:\n return ts_next(s);\n case 45: /* negative number literal type */\n return ts_next(s) && tv(s) === TOK.NUMBER && ts_next(s);\n case TOK.TYPEOF:\n if (!ts_next(s)) return false;\n if (tv(s) === TOK.IMPORT) return ts_skip_import_type(s);\n if (!(ts_is_type_name(tv(s)) || ts_is_keyword(tv(s))) || !ts_skip_entity_name(s)) return false;\n if ((tv(s) === 60 || tv(s) === TOK.SHL) && !s.got_lf) return ts_skip_type_args(s);\n return true;\n case TOK.IMPORT:\n return ts_skip_import_type(s);\n }\n if (!ts_is_type_name(tv(s)) || !ts_skip_entity_name(s)) return false;\n if ((tv(s) === 60 || tv(s) === TOK.SHL) && !s.got_lf) return ts_skip_type_args(s);\n return true;\n}\n\n/* A.B.C */\nfunction ts_skip_entity_name(s: JSParseState): boolean {\n if (!ts_next(s)) return false;\n while (tv(s) === 46) {\n if (!ts_next(s)) return false;\n if (!token_is_ident_or_keyword(tv(s)) && tv(s) !== TOK.PRIVATE_NAME) return false;\n if (!ts_next(s)) return false;\n }\n return true;\n}\n\n/* import(\"m\").T<A> */\nfunction ts_skip_import_type(s: JSParseState): boolean {\n if (!ts_next(s) || tv(s) !== 40 || !ts_skip_balanced(s)) return false;\n while (tv(s) === 46) {\n if (!ts_next(s) || !token_is_ident_or_keyword(tv(s)) || !ts_next(s)) return false;\n }\n if ((tv(s) === 60 || tv(s) === TOK.SHL) && !s.got_lf) return ts_skip_type_args(s);\n return true;\n}\n\n/* <T, U> after a type name or in an expression */\nfunction ts_skip_type_args(s: JSParseState): boolean {\n if (!ts_eat_lt(s)) return false;\n for (;;) {\n if (!ts_skip_type(s)) return false;\n if (tv(s) !== 44) return ts_eat_gt(s);\n if (!ts_next(s)) return false;\n }\n}\n\n/* <const T extends C = D, in out U> */\nfunction ts_skip_type_params(s: JSParseState): boolean {\n if (!ts_eat_lt(s)) return false;\n const A = ts_atoms(s);\n while (!ts_is_gt(tv(s))) {\n while ((tv(s) === TOK.CONST || tv(s) === TOK.IN || ts_word(s, A.out)) && ts_peek_is_name(s)) {\n if (!ts_next(s)) return false;\n }\n if (!token_is_ident(tv(s)) || !ts_next(s)) return false;\n if (tv(s) === TOK.EXTENDS && !(ts_next(s) && ts_skip_type(s))) return false;\n if (tv(s) === 61 && !(ts_next(s) && ts_skip_type(s))) return false;\n if (tv(s) !== 44) break;\n if (!ts_next(s)) return false;\n }\n return ts_eat_gt(s);\n}\n\n/* a return type, type predicates included: `x is T`, `asserts x`, `asserts x is T`, `this is T` */\nfunction ts_skip_return_type(s: JSParseState): boolean {\n const A = ts_atoms(s);\n if (ts_word(s, A.asserts)) {\n const p = ts_save(s);\n if (ts_next(s) && !s.got_lf && (tv(s) === TOK.IDENT || tv(s) === TOK.THIS)) {\n if (!ts_next(s)) return false;\n if (ts_word(s, A.is) && !s.got_lf) return ts_next(s) && ts_skip_type(s);\n return true;\n }\n ts_restore(s, p);\n }\n if (tv(s) === TOK.IDENT || tv(s) === TOK.THIS) {\n const p = ts_save(s);\n if (ts_next(s) && ts_word(s, A.is) && !s.got_lf) return ts_next(s) && ts_skip_type(s);\n ts_restore(s, p);\n }\n return ts_skip_type(s);\n}\n\n/* ': Type' (the current token is ':'), in the parser's convention: 0 or -1 */\nfunction ts_parse_annotation(s: JSParseState): number {\n if (!ts_next(s) || !ts_skip_type(s)) return ts_error(s, 'type expected');\n return 0;\n}\n\n/* --- expressions --- */\n\nfunction ts_is_binary_operator(s: JSParseState): boolean {\n switch (tv(s)) {\n case 42: case 47: case 37: case TOK.POW: case TOK.SHL: case TOK.SAR: case TOK.SHR: case TOK.LTE: case TOK.GTE:\n case TOK.INSTANCEOF: case TOK.IN: case TOK.EQ: case TOK.NEQ: case TOK.STRICT_EQ: case TOK.STRICT_NEQ:\n case 38: case 94: case 124: case TOK.LAND: case TOK.LOR: case TOK.DOUBLE_QUESTION_MARK:\n return true;\n }\n return ts_word(s, JS_ATOM_as) || ts_word(s, ts_atoms(s).satisfies);\n}\n\nfunction ts_is_start_of_expression(s: JSParseState): boolean {\n switch (tv(s)) {\n case TOK.NUMBER: case TOK.STRING: case TOK.TEMPLATE: case TOK.IDENT: case TOK.PRIVATE_NAME:\n case 40: case 91: case 123: case 47: case TOK.DIV_ASSIGN: case 43: case 45: case 33: case 126: case 60: case 64:\n case TOK.INC: case TOK.DEC: case TOK.THIS: case TOK.SUPER: case TOK.NULL: case TOK.TRUE: case TOK.FALSE:\n case TOK.FUNCTION: case TOK.CLASS: case TOK.NEW: case TOK.TYPEOF: case TOK.VOID: case TOK.DELETE: case TOK.AWAIT:\n case TOK.YIELD: case TOK.IMPORT: case TOK.LET: case TOK.STATIC: case TOK.IMPLEMENTS: case TOK.INTERFACE:\n case TOK.PACKAGE: case TOK.PRIVATE: case TOK.PROTECTED: case TOK.PUBLIC:\n return true;\n }\n return false;\n}\n\n/* TypeScript's canFollowTypeArgumentsInExpression */\nfunction ts_can_follow_type_args(s: JSParseState): boolean {\n switch (tv(s)) {\n case 40: case TOK.TEMPLATE:\n return true;\n case 60: case 62: case 43: case 45:\n return false;\n }\n return s.got_lf || ts_is_binary_operator(s) || !ts_is_start_of_expression(s);\n}\n\n/* f<T>(x), new C<T>(), f<T>`t`, f<T>: type arguments in an expression, speculatively. As in\n TypeScript (reScanGreaterToken), the closing '>' must not be the start of '>=' or '>>':\n `a < b >= c` and `a < b >> c` are comparisons */\nfunction ts_try_expr_type_args(s: JSParseState): boolean {\n const p = ts_save(s);\n if (ts_eat_lt(s)) {\n for (;;) {\n if (!ts_skip_type(s)) break;\n if (tv(s) === 44) {\n if (!ts_next(s)) break;\n continue;\n }\n if (tv(s) === 62 && ts_next(s) && ts_can_follow_type_args(s)) return true;\n break;\n }\n }\n ts_restore(s, p);\n return false;\n}\n\n/* `as T`, `as const`, `satisfies T` after an operand: 1 if one was skipped, 0 if none, -1 on error */\nfunction ts_parse_as_expr(s: JSParseState): number {\n if (s.got_lf || !(ts_word(s, JS_ATOM_as) || ts_word(s, ts_atoms(s).satisfies))) return 0;\n if (next_token(s)) return -1;\n if (tv(s) === TOK.CONST) return next_token(s) ? -1 : 1;\n if (!ts_skip_type(s)) return ts_error(s, 'type expected');\n return 1;\n}\n\n/* skip an assignment expression approximately: stop before ',' ';' ')' ']' '}' or a ':'\n that does not close a '?' at depth 0 */\nfunction ts_skip_expr_tokens(s: JSParseState): boolean {\n let pending = 0, n = 0, last_tok = 0;\n for (;;) {\n const t = tv(s);\n switch (t) {\n case 44: case 59: case 41: case 93: case 125: case TOK.EOF:\n return n > 0;\n case 58:\n if (pending === 0) return n > 0;\n pending--;\n break;\n case 63:\n pending++;\n break;\n case 40: case 91: case 123: case TOK.TEMPLATE:\n if (!ts_skip_balanced(s)) return false;\n last_tok = t === 40 ? 41 : t === 91 ? 93 : t === 123 ? 125 : TOK.TEMPLATE;\n n++;\n continue;\n case 47: case TOK.DIV_ASSIGN:\n if (is_regexp_allowed(last_tok)) {\n s.buf_ptr = s.token.ptr + 1;\n if (js_parse_regexp(s)) return false;\n }\n break;\n }\n last_tok = tv(s);\n n++;\n if (!ts_next(s)) return false;\n }\n}\n\n/* after the parameters of an arrow function candidate: ': ReturnType =>' or '=>'. In the true\n branch of a conditional expression, an arrow function with a return type must be followed by\n the conditional's ':' (TypeScript's allowReturnTypeInArrowFunction rule) */\nfunction ts_arrow_rest_ahead(s: JSParseState): boolean {\n if (tv(s) === TOK.ARROW) return !s.got_lf;\n if (tv(s) !== 58 || !ts_next(s) || !ts_skip_return_type(s)) return false;\n if (tv(s) !== TOK.ARROW || s.got_lf) return false;\n if (!s.ts_cond_true) return true;\n if (!ts_next(s)) return false;\n if (tv(s) === 123 ? !ts_skip_balanced(s) : !ts_skip_expr_tokens(s)) return false;\n return tv(s) === 58;\n}\n\n/* '(' starts an arrow function whose parameters are followed by a return type */\nfunction ts_arrow_with_return_type_ahead(s: JSParseState): boolean {\n const p = ts_save(s);\n const ok = ts_skip_balanced(s) && ts_arrow_rest_ahead(s);\n ts_restore(s, p);\n return ok;\n}\n\n/* '<' starts a generic arrow function: <T>(x: T) => x. In a .tsx file, TypeScript decides from the\n first tokens: `<T,`, `<T =` and `<T extends U` (U not '=', '>' or '/') start a generic arrow\n function, anything else is JSX */\nfunction ts_generic_arrow_ahead(s: JSParseState): boolean {\n if (s.jsx) return tsx_generic_arrow_ahead(s);\n const p = ts_save(s);\n const ok = ts_skip_type_params(s) && tv(s) === 40 && ts_skip_balanced(s) && ts_arrow_rest_ahead(s);\n ts_restore(s, p);\n return ok;\n}\n\nfunction tsx_generic_arrow_ahead(s: JSParseState): boolean {\n const p = ts_save(s);\n let ok = false;\n if (ts_next(s) && (token_is_ident(tv(s)) || tv(s) === TOK.CONST) && (tv(s) !== TOK.CONST || ts_next(s)) && ts_next(s)) {\n if (tv(s) === TOK.EXTENDS) ok = ts_next(s) && tv(s) !== 61 && !ts_is_gt(tv(s)) && tv(s) !== 47;\n else ok = tv(s) === 44 || tv(s) === 61;\n }\n ts_restore(s, p);\n return ok;\n}\n\n/* '(' starts the parameter list of an arrow function */\nfunction js_arrow_ahead(s: JSParseState): boolean {\n const tok = js_parse_skip_parens_token(s, null, true);\n return tok === TOK.ARROW || (tok === 58 && s.ts && ts_arrow_with_return_type_ahead(s));\n}\n\n/* --- declarations and statements --- */\n\n/* ';' or automatic semicolon insertion, without reporting */\nfunction ts_skip_semi(s: JSParseState): boolean {\n if (tv(s) === 59) return ts_next(s);\n return tv(s) === TOK.EOF || tv(s) === 125 || s.got_lf;\n}\n\n/* interface I<T> extends A, B<C> { ... } */\nfunction ts_skip_interface(s: JSParseState): boolean {\n if (!ts_next(s) || !token_is_ident(tv(s)) || !ts_next(s)) return false;\n if (tv(s) === 60 && !ts_skip_type_params(s)) return false;\n if (tv(s) === TOK.EXTENDS) {\n do {\n if (!ts_next(s) || !ts_skip_type(s)) return false;\n } while (tv(s) === 44);\n }\n return tv(s) === 123 && ts_skip_balanced(s);\n}\n\n/* type A<T> = Type */\nfunction ts_skip_type_alias(s: JSParseState): boolean {\n if (!ts_next(s) || !token_is_ident(tv(s)) || !ts_next(s)) return false;\n if (tv(s) === 60 && !ts_skip_type_params(s)) return false;\n return tv(s) === 61 && ts_next(s) && ts_skip_type(s) && ts_skip_semi(s);\n}\n\n/* the rest of a variable declaration list without code: names, annotations, initializers */\nfunction ts_skip_var_list(s: JSParseState): boolean {\n for (;;) {\n if (tv(s) === 91 || tv(s) === 123) {\n if (!ts_skip_balanced(s)) return false;\n } else if (!token_is_ident(tv(s)) || !ts_next(s)) {\n return false;\n }\n if (tv(s) === 33 && !ts_next(s)) return false;\n if (tv(s) === 58 && !(ts_next(s) && ts_skip_type(s))) return false;\n if (tv(s) === 61 && !(ts_next(s) && ts_skip_expr_tokens(s))) return false;\n if (tv(s) !== 44) return ts_skip_semi(s);\n if (!ts_next(s)) return false;\n }\n}\n\n/* function f<T>(params): R (no body: overload signature or ambient function) */\nfunction ts_skip_function_signature(s: JSParseState): boolean {\n if (ts_word(s, JS_ATOM_async) && !ts_next(s)) return false;\n if (tv(s) !== TOK.FUNCTION || !ts_next(s)) return false;\n if (tv(s) === 42 && !ts_next(s)) return false;\n if ((tv(s) === TOK.IDENT || ts_is_keyword(tv(s))) && tv(s) !== TOK.EXTENDS && !ts_next(s)) return false;\n if (tv(s) === 60 && !ts_skip_type_params(s)) return false;\n if (tv(s) !== 40 || !ts_skip_balanced(s)) return false;\n if (tv(s) === 58 && !(ts_next(s) && ts_skip_return_type(s))) return false;\n return true;\n}\n\n/* class C<T> extends B<T> implements I { ... } without code (ambient class) */\nfunction ts_skip_class_decl(s: JSParseState): boolean {\n if (!ts_next(s)) return false;\n while (tv(s) !== 123) {\n if (tv(s) === TOK.EOF) return false;\n if (tv(s) === 60) {\n if (!ts_skip_type_args(s)) return false;\n } else if (tv(s) === 40 || tv(s) === 91) {\n if (!ts_skip_balanced(s)) return false;\n } else if (!ts_next(s)) {\n return false;\n }\n }\n return ts_skip_balanced(s);\n}\n\n/* namespace A.B { ... }, module \"m\" { ... }, global { ... }; `module \"m\";` */\nfunction ts_skip_ambient_module(s: JSParseState): boolean {\n if (!ts_next(s)) return false;\n if (tv(s) === TOK.STRING) {\n if (!ts_next(s)) return false;\n } else if (token_is_ident(tv(s))) {\n if (!ts_next(s)) return false;\n while (tv(s) === 46) {\n if (!ts_next(s) || !token_is_ident_or_keyword(tv(s)) || !ts_next(s)) return false;\n }\n }\n if (tv(s) === 123) return ts_skip_balanced(s);\n return ts_skip_semi(s);\n}\n\n/* the kinds of statement that are TypeScript only */\nconst enum TSStmt { NONE, INTERFACE, TYPE, DECLARE, ABSTRACT_CLASS, NAMESPACE, ENUM, IMPORT_TYPE, IMPORT_EQUALS, EXPORT, FUNCTION }\n\nfunction ts_statement_kind(s: JSParseState): TSStmt {\n const A = ts_atoms(s);\n const t = tv(s);\n if (t === TOK.ENUM) return TSStmt.ENUM;\n if (t === TOK.CONST) return ts_peek(s).val === TOK.ENUM ? TSStmt.ENUM : TSStmt.NONE;\n if (t === TOK.FUNCTION) return TSStmt.FUNCTION;\n if (t === TOK.IMPORT) {\n const n = ts_peek(s);\n if (n.val === 40 || n.val === 46) return TSStmt.NONE;\n if (n.atom === A.type && !n.escape) return TSStmt.IMPORT_TYPE;\n if (n.val === TOK.IDENT) {\n /* import x = ... */\n const p = ts_save(s);\n const eq = ts_next(s) && ts_next(s) && tv(s) === 61;\n ts_restore(s, p);\n if (eq) return TSStmt.IMPORT_EQUALS;\n }\n return TSStmt.NONE;\n }\n if (t === TOK.EXPORT) return TSStmt.EXPORT;\n if (t !== TOK.IDENT && !ts_is_keyword(t)) return TSStmt.NONE;\n if (s.token.has_escape) return TSStmt.NONE;\n const atom = s.token.atom;\n if (atom === JS_ATOM_async) return ts_peek(s).val === TOK.FUNCTION ? TSStmt.FUNCTION : TSStmt.NONE;\n if (atom !== JS_ATOM_interface && atom !== A.type && atom !== A.declare && atom !== A.abstract &&\n atom !== A.namespace && atom !== A.module) return TSStmt.NONE;\n const n = ts_peek(s);\n if (n.lf) return TSStmt.NONE;\n const name_next = n.val === TOK.IDENT || (ts_is_keyword(n.val) && n.val !== TOK.IN && n.val !== TOK.INSTANCEOF);\n if (atom === JS_ATOM_interface) return name_next ? TSStmt.INTERFACE : TSStmt.NONE;\n if (atom === A.type) return token_is_ident(n.val) ? TSStmt.TYPE : TSStmt.NONE;\n if (atom === A.abstract) return n.val === TOK.CLASS ? TSStmt.ABSTRACT_CLASS : TSStmt.NONE;\n if (atom === A.namespace) return token_is_ident(n.val) ? TSStmt.NAMESPACE : TSStmt.NONE;\n if (atom === A.module) return token_is_ident(n.val) || n.val === TOK.STRING ? TSStmt.NAMESPACE : TSStmt.NONE;\n /* declare */\n switch (n.val) {\n case TOK.VAR: case TOK.LET: case TOK.CONST: case TOK.FUNCTION: case TOK.CLASS: case TOK.ENUM: case TOK.INTERFACE:\n return TSStmt.DECLARE;\n case TOK.IDENT:\n return (n.atom === JS_ATOM_let || n.atom === A.type || n.atom === A.namespace || n.atom === A.module ||\n n.atom === JS_ATOM_global || n.atom === A.abstract || n.atom === JS_ATOM_interface || n.atom === JS_ATOM_async) &&\n !n.escape ? TSStmt.DECLARE : TSStmt.NONE;\n }\n return TSStmt.NONE;\n}\n\n/* skip a `declare ...` statement (the current token is `declare`) */\nfunction ts_skip_declare(s: JSParseState): boolean {\n const A = ts_atoms(s);\n if (!ts_next(s)) return false;\n switch (tv(s)) {\n case TOK.VAR: case TOK.LET:\n return ts_next(s) && ts_skip_var_list(s);\n case TOK.CONST:\n if (ts_peek(s).val === TOK.ENUM) return ts_next(s) && ts_skip_enum(s);\n return ts_next(s) && ts_skip_var_list(s);\n case TOK.FUNCTION:\n if (!ts_skip_function_signature(s)) return false;\n return tv(s) === 123 ? ts_skip_balanced(s) : ts_skip_semi(s);\n case TOK.CLASS:\n return ts_skip_class_decl(s);\n case TOK.ENUM:\n return ts_skip_enum(s);\n }\n if (ts_word(s, JS_ATOM_let)) return ts_next(s) && ts_skip_var_list(s);\n if (ts_word(s, JS_ATOM_async)) {\n if (!ts_skip_function_signature(s)) return false;\n return ts_skip_semi(s);\n }\n if (ts_word(s, A.abstract)) return ts_next(s) && tv(s) === TOK.CLASS && ts_skip_class_decl(s);\n if (ts_word(s, JS_ATOM_interface)) return ts_skip_interface(s);\n if (ts_word(s, A.type)) return ts_skip_type_alias(s);\n if (ts_word(s, A.namespace) || ts_word(s, A.module) || ts_word(s, JS_ATOM_global)) return ts_skip_ambient_module(s);\n return false;\n}\n\n/* enum E { ... } (ambient only) */\nfunction ts_skip_enum(s: JSParseState): boolean {\n return ts_next(s) && token_is_ident(tv(s)) && ts_next(s) && tv(s) === 123 && ts_skip_balanced(s);\n}\n\n/* a statement allowed in a type-only namespace body; false otherwise */\nfunction ts_skip_type_only_statement(s: JSParseState): boolean {\n if (tv(s) === 59) return ts_next(s);\n if (tv(s) === TOK.EXPORT && !ts_next(s)) return false;\n switch (ts_statement_kind(s)) {\n case TSStmt.INTERFACE: return ts_skip_interface(s);\n case TSStmt.TYPE: return ts_skip_type_alias(s);\n case TSStmt.DECLARE: return ts_skip_declare(s);\n case TSStmt.NAMESPACE: return ts_skip_type_only_namespace(s);\n case TSStmt.IMPORT_TYPE: return ts_skip_import_type_decl(s);\n }\n return false;\n}\n\n/* namespace N { <type-only statements> }: false if the body has values */\nfunction ts_skip_type_only_namespace(s: JSParseState): boolean {\n if (!ts_next(s)) return false;\n if (tv(s) === TOK.STRING) {\n if (!ts_next(s)) return false;\n } else {\n if (!token_is_ident(tv(s)) || !ts_next(s)) return false;\n while (tv(s) === 46) {\n if (!ts_next(s) || !token_is_ident_or_keyword(tv(s)) || !ts_next(s)) return false;\n }\n }\n if (tv(s) !== 123 || !ts_next(s)) return false;\n while (tv(s) !== 125) {\n if (tv(s) === TOK.EOF || !ts_skip_type_only_statement(s)) return false;\n }\n return ts_next(s);\n}\n\n/* import type ... from \"m\" [with { ... }] */\nfunction ts_skip_import_type_decl(s: JSParseState): boolean {\n const A = ts_atoms(s);\n if (!ts_next(s) || !ts_next(s)) return false; /* 'import' 'type' */\n while (tv(s) !== TOK.STRING) {\n if (tv(s) === 123) {\n if (!ts_skip_balanced(s)) return false;\n } else if (tv(s) === 61) {\n return false; /* import type x = require(...) */\n } else if (tv(s) === TOK.EOF || tv(s) === 59 || !ts_next(s)) {\n return false;\n }\n }\n if (!ts_next(s)) return false;\n if ((ts_word(s, A.with_) || tv(s) === TOK.WITH || ts_word(s, A.assert)) && !s.got_lf) {\n if (!ts_next(s) || tv(s) !== 123 || !ts_skip_balanced(s)) return false;\n }\n return ts_skip_semi(s);\n}\n\n/* TypeScript-only statements: -1 on error, 0 if the current token does not start one (the\n caller parses it as JavaScript; an `abstract` before `class` has been consumed), 1 if the\n statement was skipped */\nfunction ts_parse_statement(s: JSParseState): number {\n const A = ts_atoms(s);\n const start = s.token.ptr;\n switch (ts_statement_kind(s)) {\n case TSStmt.NONE:\n return 0;\n case TSStmt.INTERFACE:\n if (!ts_skip_interface(s)) return ts_error(s, 'invalid interface declaration');\n return 1;\n case TSStmt.TYPE:\n if (!ts_skip_type_alias(s)) return ts_error(s, 'invalid type alias');\n return 1;\n case TSStmt.DECLARE:\n if (!ts_skip_declare(s)) return ts_error(s, 'invalid ambient declaration');\n return 1;\n case TSStmt.ABSTRACT_CLASS:\n /* `abstract` is erased; the class is parsed as JavaScript (its abstract members are erased) */\n return next_token(s) ? -1 : 0;\n case TSStmt.NAMESPACE: {\n const p = ts_save(s);\n if (ts_skip_type_only_namespace(s)) return 1;\n ts_restore(s, p);\n return ts_unsupported(s, 'namespace declaration', start);\n }\n case TSStmt.ENUM:\n return ts_unsupported(s, 'enum', start);\n case TSStmt.IMPORT_EQUALS:\n return ts_unsupported(s, 'import equals declaration', start);\n case TSStmt.IMPORT_TYPE: {\n const p = ts_save(s);\n if (ts_skip_import_type_decl(s)) return 1;\n ts_restore(s, p);\n /* import type x = require(...) */\n return ts_unsupported(s, 'import equals declaration', start);\n }\n case TSStmt.FUNCTION: {\n /* an overload signature: a declaration without a body */\n const p = ts_save(s);\n if (ts_skip_function_signature(s) && tv(s) !== 123) {\n if (js_parse_expect_semi(s)) return -1;\n return 1;\n }\n ts_restore(s, p);\n return 0;\n }\n case TSStmt.EXPORT: {\n const n = ts_peek(s);\n if (n.val === 61) return ts_unsupported(s, 'export assignment', start);\n const p = ts_save(s);\n if (!ts_next(s)) return -1;\n if (ts_word(s, JS_ATOM_as)) {\n /* export as namespace N; */\n if (!(ts_next(s) && ts_word(s, A.namespace) && ts_next(s) && token_is_ident(tv(s)) && ts_next(s)))\n return ts_error(s, 'invalid export declaration');\n return js_parse_expect_semi(s) ? -1 : 1;\n }\n if (tv(s) === TOK.IMPORT && ts_peek(s).val === TOK.IDENT) return ts_unsupported(s, 'import equals declaration', start);\n if (ts_word(s, A.type)) {\n const n2 = ts_peek(s);\n if (n2.val === 123 || n2.val === 42) {\n /* export type { A } [from \"m\"]; */\n if (!(ts_next(s) && (tv(s) === 42 ? ts_next(s) : ts_skip_balanced(s)))) return ts_error(s, 'invalid export declaration');\n if (ts_word(s, JS_ATOM_from) && !(ts_next(s) && tv(s) === TOK.STRING && ts_next(s))) return ts_error(s, 'invalid export declaration');\n return js_parse_expect_semi(s) ? -1 : 1;\n }\n }\n const kind = ts_statement_kind(s);\n switch (kind) {\n case TSStmt.INTERFACE: case TSStmt.TYPE: case TSStmt.DECLARE: case TSStmt.NAMESPACE: case TSStmt.ENUM:\n case TSStmt.FUNCTION: {\n const r = ts_parse_statement(s);\n if (r !== 0) return r;\n break;\n }\n }\n /* an export of a value: JavaScript's error */\n ts_restore(s, p);\n return 0;\n }\n }\n return 0;\n}\n\n/* --- classes --- */\n\n/* public/private/protected/readonly/override/declare/abstract before a class member:\n -1 on error, else 1 if the member is erased (declare, abstract), 0 otherwise */\nfunction ts_parse_class_modifiers(s: JSParseState): number {\n const A = ts_atoms(s);\n let erase = 0;\n for (;;) {\n if (!(ts_word(s, JS_ATOM_public) || ts_word(s, JS_ATOM_private) || ts_word(s, JS_ATOM_protected) ||\n ts_word(s, A.readonly) || ts_word(s, A.override) || ts_word(s, A.declare) || ts_word(s, A.abstract))) return erase;\n /* TypeScript's nextTokenIsOnSameLineAndCanFollowModifier */\n const n = ts_peek(s);\n if (n.lf) return erase;\n switch (n.val) {\n case 91: case 123: case 42: case TOK.ELLIPSIS: case TOK.STRING: case TOK.NUMBER: case TOK.PRIVATE_NAME: case TOK.IDENT:\n break;\n default:\n if (!ts_is_keyword(n.val)) return erase;\n }\n if (ts_word(s, A.declare) || ts_word(s, A.abstract)) erase = 1;\n if (next_token(s)) return -1;\n }\n}\n\n/* a class member name, with its get/set/async/'*' prefix */\nfunction ts_skip_member_name(s: JSParseState): boolean {\n if (ts_word(s, JS_ATOM_get) || ts_word(s, JS_ATOM_set) || ts_word(s, JS_ATOM_async)) {\n const n = ts_peek(s);\n if (!(n.val === 40 || n.val === 61 || n.val === 59 || n.val === 58 || n.val === 63 || n.val === 33 ||\n n.val === 60 || n.val === 125 || n.lf) && !ts_next(s)) return false;\n }\n if (tv(s) === 42 && !ts_next(s)) return false;\n switch (tv(s)) {\n case 91: return ts_skip_balanced(s);\n case TOK.STRING: case TOK.NUMBER: case TOK.PRIVATE_NAME: return ts_next(s);\n }\n return token_is_ident_or_keyword(tv(s)) && ts_next(s);\n}\n\n/* the member is a method without a body (overload signature) */\nfunction ts_class_member_is_signature(s: JSParseState): boolean {\n const p = ts_save(s);\n let sig = false;\n if (ts_skip_member_name(s) && (tv(s) !== 63 || ts_next(s)) && (tv(s) === 60 || tv(s) === 40)) {\n sig = (tv(s) !== 60 || ts_skip_type_params(s)) && tv(s) === 40 && ts_skip_balanced(s) &&\n (tv(s) !== 58 || (ts_next(s) && ts_skip_return_type(s))) && tv(s) !== 123;\n }\n ts_restore(s, p);\n return sig;\n}\n\n/* [key: string]: T */\nfunction ts_is_index_signature(s: JSParseState): boolean {\n if (tv(s) !== 91) return false;\n const p = ts_save(s);\n const ok = ts_next(s) && token_is_ident_or_keyword(tv(s)) && ts_next(s) && tv(s) === 58;\n ts_restore(s, p);\n return ok;\n}\n\n/* erase a class member: signature, index signature, declare field, abstract member */\nfunction ts_skip_class_member(s: JSParseState): number {\n if (!ts_skip_member_name(s)) return ts_error(s, 'invalid class member');\n if ((tv(s) === 63 || tv(s) === 33) && next_token(s)) return -1;\n if (tv(s) === 60 && !ts_skip_type_params(s)) return ts_error(s, 'invalid type parameters');\n if (tv(s) === 40) {\n if (!ts_skip_balanced(s)) return ts_error(s, 'invalid parameters');\n if (tv(s) === 58 && ts_parse_annotation(s)) return -1;\n if (tv(s) === 123) return ts_skip_balanced(s) ? 0 : ts_error(s, 'invalid method body');\n return js_parse_expect_semi(s);\n }\n if (tv(s) === 58 && ts_parse_annotation(s)) return -1;\n if (tv(s) === 61) {\n if (next_token(s)) return -1;\n if (!ts_skip_expr_tokens(s)) return ts_error(s, 'invalid initializer');\n }\n return js_parse_expect_semi(s);\n}\n\n/* public/private/protected/readonly/override before a parameter (a parameter property) */\nfunction ts_is_param_modifier(s: JSParseState): boolean {\n const A = ts_atoms(s);\n if (!(ts_word(s, JS_ATOM_public) || ts_word(s, JS_ATOM_private) || ts_word(s, JS_ATOM_protected) ||\n ts_word(s, A.readonly) || ts_word(s, A.override))) return false;\n const n = ts_peek(s);\n return n.val === TOK.IDENT || n.val === 123 || n.val === 91 || n.val === TOK.ELLIPSIS || ts_is_keyword(n.val);\n}\n\n/* ---------------------------------------------------------------------\n JSX (JS_EVAL_FLAG_JSX)\n\n JSX is compiled by the parser, like the type stripping above: an\n element is read where a unary expression starts and emitted directly\n as the calls TypeScript makes for it. Modules use the automatic\n runtime (`jsx: \"react-jsx\"`): jsx, jsxs and Fragment are imported from\n `<importSource>/jsx-runtime`, and createElement from `<importSource>`\n for a key after a spread, under names no program can write (`*jsx*`,\n ...), and each import is added to the module record only when it is\n used. Scripts, and files with a `@jsxRuntime classic` pragma, use the\n classic runtime (`jsx: \"react\"`): React.createElement and\n React.Fragment, or the `@jsx` and `@jsxFrag` pragmas.\n\n Tags, attributes and text are scanned from the source by the jsx_*\n functions; expressions in braces go through the ordinary tokenizer\n and parser. Every position is a source position, so errors, stacks\n and the line table are those of the JSX source. jsx_skip_element\n skips an element without emitting anything, for the lookaheads that\n scan expressions token by token (arrow functions, destructuring,\n TypeScript). See docs/JSX.md.\n --------------------------------------------------------------------- */\n\n/* the named entities TypeScript decodes in JSX text and attribute strings (the HTML 4 list):\n name, then code point in hex */\nconst JSX_ENTITY_TABLE =\n 'quot 22 amp 26 apos 27 lt 3c gt 3e nbsp a0 iexcl a1 cent a2 pound a3 curren a4 yen a5 brvbar a6 ' +\n 'sect a7 uml a8 copy a9 ordf aa laquo ab not ac shy ad reg ae macr af deg b0 plusmn b1 sup2 b2 ' +\n 'sup3 b3 acute b4 micro b5 para b6 middot b7 cedil b8 sup1 b9 ordm ba raquo bb frac14 bc frac12 bd ' +\n 'frac34 be iquest bf Agrave c0 Aacute c1 Acirc c2 Atilde c3 Auml c4 Aring c5 AElig c6 Ccedil c7 ' +\n 'Egrave c8 Eacute c9 Ecirc ca Euml cb Igrave cc Iacute cd Icirc ce Iuml cf ETH d0 Ntilde d1 ' +\n 'Ograve d2 Oacute d3 Ocirc d4 Otilde d5 Ouml d6 times d7 Oslash d8 Ugrave d9 Uacute da Ucirc db ' +\n 'Uuml dc Yacute dd THORN de szlig df agrave e0 aacute e1 acirc e2 atilde e3 auml e4 aring e5 ' +\n 'aelig e6 ccedil e7 egrave e8 eacute e9 ecirc ea euml eb igrave ec iacute ed icirc ee iuml ef eth f0 ' +\n 'ntilde f1 ograve f2 oacute f3 ocirc f4 otilde f5 ouml f6 divide f7 oslash f8 ugrave f9 uacute fa ' +\n 'ucirc fb uuml fc yacute fd thorn fe yuml ff OElig 152 oelig 153 Scaron 160 scaron 161 Yuml 178 ' +\n 'fnof 192 circ 2c6 tilde 2dc Alpha 391 Beta 392 Gamma 393 Delta 394 Epsilon 395 Zeta 396 Eta 397 ' +\n 'Theta 398 Iota 399 Kappa 39a Lambda 39b Mu 39c Nu 39d Xi 39e Omicron 39f Pi 3a0 Rho 3a1 Sigma 3a3 ' +\n 'Tau 3a4 Upsilon 3a5 Phi 3a6 Chi 3a7 Psi 3a8 Omega 3a9 alpha 3b1 beta 3b2 gamma 3b3 delta 3b4 ' +\n 'epsilon 3b5 zeta 3b6 eta 3b7 theta 3b8 iota 3b9 kappa 3ba lambda 3bb mu 3bc nu 3bd xi 3be ' +\n 'omicron 3bf pi 3c0 rho 3c1 sigmaf 3c2 sigma 3c3 tau 3c4 upsilon 3c5 phi 3c6 chi 3c7 psi 3c8 ' +\n 'omega 3c9 thetasym 3d1 upsih 3d2 piv 3d6 ensp 2002 emsp 2003 thinsp 2009 zwnj 200c zwj 200d ' +\n 'lrm 200e rlm 200f ndash 2013 mdash 2014 lsquo 2018 rsquo 2019 sbquo 201a ldquo 201c rdquo 201d ' +\n 'bdquo 201e dagger 2020 Dagger 2021 bull 2022 hellip 2026 permil 2030 prime 2032 Prime 2033 ' +\n 'lsaquo 2039 rsaquo 203a oline 203e frasl 2044 euro 20ac image 2111 weierp 2118 real 211c trade 2122 ' +\n 'alefsym 2135 larr 2190 uarr 2191 rarr 2192 darr 2193 harr 2194 crarr 21b5 lArr 21d0 uArr 21d1 ' +\n 'rArr 21d2 dArr 21d3 hArr 21d4 forall 2200 part 2202 exist 2203 empty 2205 nabla 2207 isin 2208 ' +\n 'notin 2209 ni 220b prod 220f sum 2211 minus 2212 lowast 2217 radic 221a prop 221d infin 221e ' +\n 'ang 2220 and 2227 or 2228 cap 2229 cup 222a int 222b there4 2234 sim 223c cong 2245 asymp 2248 ' +\n 'ne 2260 equiv 2261 le 2264 ge 2265 sub 2282 sup 2283 nsub 2284 sube 2286 supe 2287 oplus 2295 ' +\n 'otimes 2297 perp 22a5 sdot 22c5 lceil 2308 rceil 2309 lfloor 230a rfloor 230b lang 2329 rang 232a ' +\n 'loz 25ca spades 2660 clubs 2663 hearts 2665 diams 2666';\nlet jsx_entities: Map<string, number> | null = null;\n\n/* TypeScript's decodeEntities: named, decimal (&#38;) and hex (&#x26;) entities; unknown ones are kept */\nfunction jsx_decode_entities(text: string): string {\n if (text.indexOf('&') < 0) return text;\n if (jsx_entities === null) {\n const t = JSX_ENTITY_TABLE.split(' ');\n jsx_entities = new Map();\n for (let i = 0; i + 1 < t.length; i += 2) jsx_entities.set(t[i], parseInt(t[i + 1], 16));\n }\n const names = jsx_entities;\n return text.replace(/&((#((\\d+)|x([\\da-fA-F]+)))|(\\w+));/g,\n (match: string, _all: string, _number: string, _digits: string, decimal?: string, hex?: string, word?: string) => {\n const cp = decimal !== undefined ? parseInt(decimal, 10) : hex !== undefined ? parseInt(hex, 16) : names.get(word!);\n return cp !== undefined && cp <= 0x10ffff ? String.fromCodePoint(cp) : match;\n });\n}\n\nfunction jsx_is_line_break(c: number): boolean {\n return c === 10 || c === 13 || c === CP_LS || c === CP_PS;\n}\n\n/* TypeScript's isWhiteSpaceSingleLine */\nfunction jsx_is_space(c: number): boolean {\n return c === 32 || c === 9 || c === 11 || c === 12 || c === 0xa0 || c === 0x85 || c === 0x1680 ||\n (c >= 0x2000 && c <= 0x200b) || c === 0x202f || c === 0x205f || c === 0x3000 || c === 0xfeff;\n}\n\n/* the string a JSX text child stands for (TypeScript's fixupWhitespaceAndDecodeEntities), or null\n if it produces no child: each line is trimmed, lines left empty are dropped, and the remaining\n lines are joined with a space. The first line keeps its leading white space and the last its\n trailing white space unless they hold a line break, so text on a single line is kept as is */\nfunction jsx_text_value(text: string): string | null {\n let acc: string | null = null;\n let first = 0, last = -1;\n const add = (line: string): void => {\n const decoded = jsx_decode_entities(line);\n acc = acc === null ? decoded : acc + ' ' + decoded;\n };\n for (let i = 0; i < text.length; i++) {\n const c = text.charCodeAt(i);\n if (jsx_is_line_break(c)) {\n if (first !== -1 && last !== -1) add(text.substring(first, last + 1));\n first = -1;\n } else if (!jsx_is_space(c)) {\n last = i;\n if (first === -1) first = i;\n }\n }\n if (first !== -1) add(text.substring(first));\n return acc;\n}\n\n/* --- the runtime --- */\n\n/* what JSX compiles to in a file */\nclass JSXRuntime {\n automatic = true;\n /* automatic: the import source (jsx, jsxs and Fragment come from `${source}/jsx-runtime`) */\n source = 'react';\n /* classic: the factory and fragment, as property paths */\n factory = ['React', 'createElement'];\n fragment = ['React', 'Fragment'];\n /* the module requests of the implicit imports, in order of first use */\n requests: number[] = [];\n}\n\n/* TypeScript's jsx pragmas: the multi-line comments before the first token are matched with\n TypeScript's regular expression (so one pragma per line), and each pragma takes the first word\n after it; @jsx and @jsxFrag take their first occurrence, @jsxImportSource and @jsxRuntime their\n last. An empty argument is '' */\nfunction jsx_pragmas(buf: string): Map<string, string[]> {\n const pragmas = new Map<string, string[]>();\n let p = 0;\n const skip_line = (): void => { while (p < buf.length && !jsx_is_line_break(buf.charCodeAt(p))) p++; };\n if (buf.startsWith('#!')) skip_line();\n for (;;) {\n while (p < buf.length && (jsx_is_line_break(buf.charCodeAt(p)) || lre_is_space(buf.charCodeAt(p)))) p++;\n if (buf.startsWith('//', p)) {\n skip_line();\n } else if (buf.startsWith('/*', p)) {\n const end = buf.indexOf('*/', p + 2);\n if (end < 0) break;\n const text = buf.substring(p, end + 2);\n for (const m of text.matchAll(/@(\\S+)(\\s+(?:\\S.*)?)?$/gm)) {\n const name = m[1].toLowerCase();\n if (name !== 'jsx' && name !== 'jsxfrag' && name !== 'jsximportsource' && name !== 'jsxruntime') continue;\n const arg = m[2] === undefined ? '' : m[2].trim().split(/\\s+/)[0];\n let list = pragmas.get(name);\n if (list === undefined) pragmas.set(name, list = []);\n list.push(arg);\n }\n p = end + 2;\n } else {\n break;\n }\n }\n return pragmas;\n}\n\n/* `a.b.c` as a property path, or null if it is not one (TypeScript's parseIsolatedEntityName) */\nfunction jsx_entity_path(name: string | undefined): string[] | null {\n if (!name) return null;\n const parts = name.split('.');\n return parts.every(p => /^[A-Za-z_$][\\w$]*$/.test(p)) ? parts : null;\n}\n\n/* the runtime of the file being parsed, decided at its first JSX element as TypeScript does with\n `jsx: \"react-jsx\"` for a module and `jsx: \"react\"` for a script: `@jsxRuntime classic` selects\n the classic runtime, `@jsxRuntime automatic` or `@jsxImportSource` the automatic one (a\n SyntaxError in a script, which cannot import) */\nfunction jsx_runtime(s: JSParseState): JSXRuntime | null {\n if (s.jsx_runtime !== null) return s.jsx_runtime;\n const rt = new JSXRuntime();\n const pragmas = jsx_pragmas(s.buf);\n const last = (name: string): string | undefined => pragmas.get(name)?.at(-1);\n const kind = last('jsxruntime');\n const source = last('jsximportsource');\n rt.automatic = kind === 'classic' ? false : s.is_module || kind === 'automatic' || source !== undefined;\n if (rt.automatic && !s.is_module) {\n js_parse_error(s, 'the automatic JSX runtime needs a module: use @jsxRuntime classic in a script');\n return null;\n }\n if (source) rt.source = source;\n rt.factory = jsx_entity_path(pragmas.get('jsx')?.[0]) ?? rt.factory;\n rt.fragment = jsx_entity_path(pragmas.get('jsxfrag')?.[0]) ?? rt.fragment;\n return s.jsx_runtime = rt;\n}\n\n/* the variable of an implicit import of the automatic runtime (`jsx`, `jsxs`, `Fragment` or\n `createElement`), added to the module record on first use */\nfunction jsx_import(s: JSParseState, name: string): JSAtom {\n const ctx = s.ctx;\n const local = JS_NewAtom(ctx, `*${name}*`);\n let fd = s.cur_func!;\n while (fd.parent !== null) fd = fd.parent;\n if (fd.closure_var.some(cv => cv.var_name === local)) return local;\n const m = fd.module as JSModuleDef;\n const rt = s.jsx_runtime!;\n const req = add_req_module_entry(m, JS_NewAtom(ctx, name === 'createElement' ? rt.source : `${rt.source}/jsx-runtime`), null);\n if (!rt.requests.includes(req)) rt.requests.push(req);\n const var_idx = add_closure_var(ctx, fd, false, false, m.import_entries.length, local, true, true, JSVarKind.NORMAL);\n const mi = new JSImportEntry(var_idx, false, JS_NewAtom(ctx, name));\n mi.req_module_idx = req;\n m.import_entries.push(mi);\n return local;\n}\n\n/* TypeScript puts the implicit imports first (each import statement before the previous one), so\n the runtime modules are requested, and evaluated, before the file's own imports */\nfunction jsx_hoist_requests(m: JSModuleDef, requests: number[]): void {\n const order = [...requests].reverse();\n for (let i = 0; i < m.req_module_entries.length; i++) if (!order.includes(i)) order.push(i);\n const index = new Map(order.map((old, i) => [old, i]));\n m.req_module_entries = order.map(i => m.req_module_entries[i]);\n for (const mi of m.import_entries) mi.req_module_idx = index.get(mi.req_module_idx)!;\n for (const me of m.export_entries) if (me.export_type === JSExportType.INDIRECT) me.req_module_idx = index.get(me.req_module_idx)!;\n for (const se of m.star_export_entries) se.req_module_idx = index.get(se.req_module_idx)!;\n}\n\n/* --- scanning --- */\n\n/* skip white space, line terminators and comments in a JSX tag: the new position, or -1 after\n reporting an unterminated comment */\nfunction jsx_skip_space(s: JSParseState, p: number): number {\n const buf = s.buf;\n while (p < s.buf_end) {\n const c = buf.charCodeAt(p);\n if (c === 47 && buf.charCodeAt(p + 1) === 42) {\n const end = buf.indexOf('*/', p + 2);\n if (end < 0) return js_parse_error_pos(s, p, 'unexpected end of comment');\n p = end + 2;\n } else if (c === 47 && buf.charCodeAt(p + 1) === 47) {\n p += 2;\n while (p < s.buf_end && !jsx_is_line_break(buf.charCodeAt(p))) p++;\n } else if (jsx_is_line_break(c) || lre_is_space(c)) {\n p++;\n } else {\n break;\n }\n }\n return p;\n}\n\n/* the next token of a JSX tag, from s.buf_ptr: a JSX name (identifier characters and '-', in\n s.token.str and s.token.atom), a string (its raw text, newlines included, with the entities\n decoded), EOF, or a single punctuation character ('>' is never part of '>=' or '>>') */\nfunction jsx_tag_token(s: JSParseState): number {\n const buf = s.buf;\n const p = jsx_skip_space(s, s.buf_ptr);\n if (p < 0) return -1;\n const t = s.token;\n t.ptr = p;\n t.atom = JS_ATOM_NULL;\n t.has_escape = false;\n t.is_reserved = false;\n if (p >= s.buf_end) {\n t.val = TOK.EOF;\n s.buf_ptr = p;\n return 0;\n }\n const c = cp_at(buf, p);\n if (lre_js_is_ident_first(c)) {\n let q = p + cp_len(c);\n while (q < s.buf_end) {\n const d = cp_at(buf, q);\n if (d !== 45 && !lre_js_is_ident_next(d)) break;\n q += cp_len(d);\n }\n t.val = TOK.IDENT;\n t.str = buf.substring(p, q);\n t.atom = JS_NewAtom(s.ctx, t.str);\n s.buf_ptr = q;\n return 0;\n }\n if (c === 34 || c === 39) {\n const end = buf.indexOf(c === 34 ? '\"' : \"'\", p + 1);\n if (end < 0) return js_parse_error_pos(s, p, 'unexpected end of string');\n t.val = TOK.STRING;\n t.str = jsx_decode_entities(buf.substring(p + 1, end));\n s.buf_ptr = end + 1;\n return 0;\n }\n if (c >= 33 && c < 127) {\n t.val = c;\n s.buf_ptr = p + 1;\n return 0;\n }\n return js_parse_error_pos(s, p, 'unexpected character');\n}\n\n/* a tag name: `div`, `a-b` and `a:b` are strings, `Foo`, `a.b.c` and `this.x` expressions */\nclass JSXTag {\n text = ''; /* as written, without spaces: compared with the closing tag */\n ptr = 0;\n is_string = false;\n parts: JSAtom[] = [];\n}\n\n/* the tag name at the current token; the token after it becomes current. In TypeScript, type\n arguments may follow the name of an opening tag (`<List<T> items={x} />`) */\nfunction jsx_parse_tag_name(s: JSParseState, tag: JSXTag, type_args: boolean): number {\n tag.ptr = s.token.ptr;\n if (tv(s) !== TOK.IDENT) return js_parse_error(s, 'JSX element name expected');\n tag.text = s.token.str;\n tag.parts = [s.token.atom];\n if (jsx_tag_token(s)) return -1;\n if (tv(s) === 58) {\n /* namespaced name */\n if (jsx_tag_token(s)) return -1;\n if (tv(s) !== TOK.IDENT) return js_parse_error(s, 'identifier expected');\n tag.text += ':' + s.token.str;\n tag.is_string = true;\n if (jsx_tag_token(s)) return -1;\n } else {\n while (tv(s) === 46) {\n if (jsx_tag_token(s)) return -1;\n if (tv(s) !== TOK.IDENT) return js_parse_error(s, 'identifier expected');\n tag.text += '.' + s.token.str;\n tag.parts.push(s.token.atom);\n if (jsx_tag_token(s)) return -1;\n }\n /* TypeScript's isIntrinsicJsxName; `this` is an expression */\n const c = tag.text.charCodeAt(0);\n tag.is_string = tag.parts.length === 1 && tag.text !== 'this' && ((c >= 97 && c <= 122) || tag.text.includes('-'));\n }\n if (type_args && s.ts && tv(s) === 60) {\n s.buf_ptr = s.token.ptr;\n if (next_token(s)) return -1;\n if (!ts_skip_type_args(s)) return ts_error(s, 'invalid type arguments');\n /* rescan the token after the type arguments as a tag token */\n s.buf_ptr = s.token.ptr;\n if (jsx_tag_token(s)) return -1;\n }\n return 0;\n}\n\n/* the current token is the '{' of a JSX tag: skip to just after its '}', JSX included */\nfunction jsx_skip_braces(s: JSParseState): boolean {\n s.buf_ptr = s.token.ptr;\n return ts_next(s) && ts_skip_balanced(s, false);\n}\n\n/* the current token starts an attribute value: skip it (to just after it) */\nfunction jsx_skip_attr_value(s: JSParseState): boolean {\n if (tv(s) === TOK.STRING) return true;\n if (tv(s) === 123) return jsx_skip_braces(s);\n if (tv(s) === 60) return jsx_skip_element(s);\n return false;\n}\n\n/* the current token is the '<' of a JSX element: skip the element without emitting anything, to\n just after its last '>'. False if it is not one (an exception may be pending) */\nfunction jsx_skip_element(s: JSParseState): boolean {\n s.buf_ptr = s.token.ptr + 1;\n if (jsx_tag_token(s)) return false;\n const tag = new JSXTag();\n if (tv(s) !== 62) {\n if (jsx_parse_tag_name(s, tag, true)) return false;\n while (tv(s) !== 47 && tv(s) !== 62) {\n if (tv(s) === TOK.IDENT) {\n if (jsx_tag_token(s)) return false;\n if (tv(s) === 58 && (jsx_tag_token(s) || tv(s) !== TOK.IDENT || jsx_tag_token(s))) return false;\n if (tv(s) === 61 && (jsx_tag_token(s) || !jsx_skip_attr_value(s) || jsx_tag_token(s))) return false;\n } else if (tv(s) === 123) {\n if (!jsx_skip_braces(s) || jsx_tag_token(s)) return false;\n } else {\n return false;\n }\n }\n if (tv(s) === 47) return !jsx_tag_token(s) && tv(s) === 62;\n }\n /* children */\n const buf = s.buf;\n let p = s.buf_ptr;\n for (;;) {\n while (p < s.buf_end) {\n const c = buf.charCodeAt(p);\n if (c === 123 || c === 60) break;\n if (c === 62 || c === 125) return false;\n p++;\n }\n if (p >= s.buf_end) return false;\n s.buf_ptr = p;\n if (buf.charCodeAt(p) === 123) {\n if (!ts_next(s) || !ts_skip_balanced(s, false)) return false;\n } else if (buf.charCodeAt(p + 1) === 47) {\n s.buf_ptr = p + 2;\n if (jsx_tag_token(s)) return false;\n const close = new JSXTag();\n if (tv(s) !== 62 && jsx_parse_tag_name(s, close, false)) return false;\n return tv(s) === 62 && close.text === tag.text;\n } else {\n s.token.ptr = p;\n if (!jsx_skip_element(s)) return false;\n }\n p = s.buf_ptr;\n }\n}\n\n/* the current token is '<' at the start of an expression: true if it starts a JSX element, which\n is then skipped (with the token after it current) */\nfunction jsx_try_skip(s: JSParseState): boolean {\n const p = ts_save(s);\n if (jsx_skip_element(s) && ts_next(s)) return true;\n ts_restore(s, p);\n return false;\n}\n\n/* TypeScript's hasKeyAfterPropsSpread, scanned ahead from the token after the tag name: a `key`\n attribute after a spread (of anything but an object literal without spreads) makes the element\n a createElement call, which keeps the key in the props */\nfunction jsx_key_after_spread(s: JSParseState): boolean {\n const pos = ts_save(s);\n let spread = false, found = false;\n for (;;) {\n if (tv(s) === TOK.IDENT) {\n let is_key = s.token.str === 'key';\n if (jsx_tag_token(s)) break;\n if (tv(s) === 58) {\n is_key = false;\n if (jsx_tag_token(s) || jsx_tag_token(s)) break;\n }\n if (is_key && spread) {\n found = true;\n break;\n }\n if (tv(s) === 61 && (jsx_tag_token(s) || !jsx_skip_attr_value(s) || jsx_tag_token(s))) break;\n } else if (tv(s) === 123) {\n const start = s.token.ptr;\n if (!spread) {\n const literal = { ellipsis: false };\n s.buf_ptr = start + 1;\n if (!ts_next(s) || tv(s) !== TOK.ELLIPSIS || !ts_next(s)) break;\n spread = !(tv(s) === 123 && ts_skip_balanced(s, true, literal) && tv(s) === 125 && !literal.ellipsis);\n }\n s.token.ptr = start;\n if (!jsx_skip_braces(s) || jsx_tag_token(s)) break;\n } else {\n break;\n }\n }\n ts_restore(s, pos);\n return found;\n}\n\n/* --- emission --- */\n\n/* the element is a call of jsx/jsxs (automatic runtime), of createElement (automatic runtime, key\n after a spread) or of the classic factory */\nconst enum JSXForm { JSX, CREATE_ELEMENT, CLASSIC }\n\n/* the children being emitted: on the stack above the props (JSX form, where they become\n props.children) or as arguments after the type and the props. A spread child, or more children\n than a call or array_from can take, switches to an array (with its index) built in place */\ninterface JSXChildren { n: number; spread: boolean; array: boolean; base: number }\n\nfunction jsx_child_start(s: JSParseState, ch: JSXChildren, spread: boolean): void {\n if (spread) ch.spread = true;\n if (!ch.array && (spread || ch.base + ch.n >= 65535)) {\n emit_op(s, OP.array_from);\n emit_u16(s, ch.base + ch.n);\n emit_op(s, OP.push_i32);\n emit_u32(s, ch.base + ch.n);\n ch.array = true;\n }\n}\n\nfunction jsx_child_end(s: JSParseState, ch: JSXChildren, spread: boolean): void {\n if (ch.array) {\n if (spread) {\n emit_op(s, OP.append);\n } else {\n emit_op(s, OP.define_array_el);\n emit_op(s, OP.inc);\n }\n }\n ch.n++;\n}\n\n/* emit a property path (the classic factory or fragment); with `method`, keep the object of the\n last property for a method call. True if it is one */\nfunction jsx_emit_path(s: JSParseState, path: string[], method: boolean): boolean {\n emit_ident_ref(s, JS_NewAtom(s.ctx, path[0]));\n for (let i = 1; i < path.length; i++) {\n emit_op(s, method && i === path.length - 1 ? OP.get_field2 : OP.get_field);\n emit_atom(s, JS_NewAtom(s.ctx, path[i]));\n }\n return method && path.length > 1;\n}\n\n/* emit the type of an element: a string, or the value of the tag expression */\nfunction jsx_emit_tag(s: JSParseState, tag: JSXTag): number {\n if (tag.is_string) return emit_push_const(s, tag.text, true);\n emit_source_pos(s, tag.ptr);\n if (tag.parts[0] === JS_ATOM_this) {\n emit_op(s, OP.scope_get_var);\n emit_atom(s, JS_ATOM_this);\n emit_u16(s, 0);\n } else {\n emit_ident_ref(s, tag.parts[0]);\n }\n for (let i = 1; i < tag.parts.length; i++) {\n emit_op(s, OP.get_field);\n emit_atom(s, tag.parts[i]);\n }\n return 0;\n}\n\n/* the current token starts an attribute value: emit it (s.buf_ptr ends just after it) */\nfunction jsx_parse_attr_value(s: JSParseState): number {\n if (tv(s) === TOK.STRING) return emit_push_const(s, s.token.str, true);\n if (tv(s) === 60) return jsx_parse_element(s);\n if (tv(s) !== 123) return js_parse_error(s, \"'{' or JSX element expected\");\n if (next_token(s)) return -1;\n if (tv(s) === 125) return js_parse_error(s, 'JSX attributes must only be assigned a non-empty expression');\n if (js_parse_expr(s)) return -1;\n if (tv(s) !== 125) return js_parse_error(s, \"expecting '}'\");\n return 0;\n}\n\n/* the children of an element, up to and including its closing tag */\nfunction jsx_parse_children(s: JSParseState, ch: JSXChildren, tag: JSXTag | null, start: number): number {\n const buf = s.buf;\n let p = s.buf_ptr;\n for (;;) {\n /* text */\n let q = p;\n while (q < s.buf_end) {\n const c = buf.charCodeAt(q);\n if (c === 123 || c === 60) break;\n if (c === 62) return js_parse_error_pos(s, q, \"Unexpected token. Did you mean `{'>'}` or `&gt;`?\");\n if (c === 125) return js_parse_error_pos(s, q, \"Unexpected token. Did you mean `{'}'}` or `&rbrace;`?\");\n q++;\n }\n if (q > p) {\n const text = jsx_text_value(buf.substring(p, q));\n if (text !== null) {\n jsx_child_start(s, ch, false);\n if (emit_push_const(s, text, true)) return -1;\n jsx_child_end(s, ch, false);\n }\n }\n if (q >= s.buf_end) {\n return js_parse_error_pos(s, start, tag ? `JSX element '${tag.text}' has no corresponding closing tag`\n : 'JSX fragment has no corresponding closing tag');\n }\n if (buf.charCodeAt(q) === 123) {\n /* {expression}, {...spread}, or only comments */\n const r = jsx_skip_space(s, q + 1);\n if (r < 0) return -1;\n if (buf.charCodeAt(r) === 125) {\n p = r + 1;\n continue;\n }\n s.buf_ptr = q + 1;\n if (next_token(s)) return -1;\n const spread = tv(s) === TOK.ELLIPSIS;\n if (spread && next_token(s)) return -1;\n jsx_child_start(s, ch, spread);\n if (js_parse_expr(s)) return -1;\n if (tv(s) !== 125) return js_parse_error(s, \"expecting '}'\");\n jsx_child_end(s, ch, spread);\n } else if (buf.charCodeAt(q + 1) === 47) {\n /* the closing tag */\n s.buf_ptr = q + 2;\n if (jsx_tag_token(s)) return -1;\n const close = new JSXTag();\n close.ptr = s.token.ptr;\n if (tv(s) !== 62 && jsx_parse_tag_name(s, close, false)) return -1;\n if (tv(s) !== 62) return js_parse_error(s, \"expecting '>'\");\n const name = tag ? tag.text : '';\n if (close.text !== name) {\n const found = close.text ? `</${close.text}>` : '</>';\n return js_parse_error_pos(s, close.ptr, tag ? `expected corresponding JSX closing tag for <${name}>, found ${found}`\n : `expected corresponding closing tag for JSX fragment, found ${found}`);\n }\n return 0;\n } else {\n s.token.ptr = q;\n s.token.val = 60;\n jsx_child_start(s, ch, false);\n if (jsx_parse_element(s)) return -1;\n jsx_child_end(s, ch, false);\n }\n p = s.buf_ptr;\n }\n}\n\n/* the current token is the '<' of a JSX element or fragment: emit its value, as TypeScript\n compiles it. On return s.buf_ptr is just after the element's last '>' (the current token is\n not meaningful). In the jsx/jsxs form the key is evaluated after the other props and the\n children, as the third argument: its value is skipped and parsed again at the end */\nfunction jsx_parse_element(s: JSParseState): number {\n const rt = jsx_runtime(s);\n if (rt === null) return -1;\n const fd = s.cur_func!;\n const start = s.token.ptr;\n s.buf_ptr = start + 1;\n if (jsx_tag_token(s)) return -1;\n let tag: JSXTag | null = null;\n if (tv(s) !== 62) {\n tag = new JSXTag();\n if (jsx_parse_tag_name(s, tag, true)) return -1;\n }\n const form = !rt.automatic ? JSXForm.CLASSIC : tag && jsx_key_after_spread(s) ? JSXForm.CREATE_ELEMENT : JSXForm.JSX;\n\n /* the function: `*jsx*` is patched to `*jsxs*` once the children are known */\n let method = false;\n const callee_pos = fd.byte_code.size;\n if (form === JSXForm.CLASSIC) method = jsx_emit_path(s, rt.factory, true);\n else emit_ident_ref(s, form === JSXForm.JSX ? JS_ATOM_NULL : jsx_import(s, 'createElement'));\n\n /* the type */\n if (tag !== null) {\n if (jsx_emit_tag(s, tag)) return -1;\n } else if (form === JSXForm.CLASSIC) {\n jsx_emit_path(s, rt.fragment, false);\n } else {\n emit_ident_ref(s, jsx_import(s, 'Fragment'));\n }\n\n /* the props: null without attributes, except in the jsx form */\n let key_ptr = -2; /* jsx form: -1 for `key` without a value, else the position of its value */\n if (form !== JSXForm.JSX && (tv(s) === 47 || tv(s) === 62)) {\n emit_op(s, OP.null);\n } else {\n emit_op(s, OP.object);\n while (tv(s) !== 47 && tv(s) !== 62) {\n if (tv(s) === 123) {\n /* {...props} */\n if (next_token(s)) return -1;\n if (tv(s) !== TOK.ELLIPSIS) return js_parse_error(s, \"expecting '...'\");\n if (next_token(s) || js_parse_expr(s)) return -1;\n if (tv(s) !== 125) return js_parse_error(s, \"expecting '}'\");\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 if (tv(s) === TOK.IDENT) {\n let name = s.token.atom;\n const is_key = s.token.str === 'key';\n if (jsx_tag_token(s)) return -1;\n if (tv(s) === 58) {\n /* namespaced attribute: a:b */\n const ns = JS_AtomGetStr(s.ctx, name);\n if (jsx_tag_token(s)) return -1;\n if (tv(s) !== TOK.IDENT) return js_parse_error(s, 'identifier expected');\n name = JS_NewAtom(s.ctx, ns + ':' + s.token.str);\n if (jsx_tag_token(s)) return -1;\n } else if (is_key && form === JSXForm.JSX && key_ptr === -2) {\n /* TypeScript passes the first `key` as the third argument */\n if (tv(s) !== 61) {\n key_ptr = -1;\n continue;\n }\n if (jsx_tag_token(s)) return -1;\n key_ptr = s.token.ptr;\n if (!jsx_skip_attr_value(s)) return ts_error(s, \"'{' or JSX element expected\");\n if (jsx_tag_token(s)) return -1;\n continue;\n }\n if (tv(s) === 61) {\n if (jsx_tag_token(s) || jsx_parse_attr_value(s)) return -1;\n set_object_name(s, name);\n } else {\n /* boolean shorthand */\n emit_op(s, OP.push_true);\n emit_op(s, OP.define_field);\n emit_atom(s, name);\n continue;\n }\n emit_op(s, OP.define_field);\n emit_atom(s, name);\n } else {\n return js_parse_error(s, tv(s) === TOK.EOF ? 'unexpected end of input in a JSX tag' : 'unexpected token in a JSX tag');\n }\n if (jsx_tag_token(s)) return -1;\n }\n }\n\n /* the children */\n const ch: JSXChildren = { n: 0, spread: false, array: false, base: form === JSXForm.JSX ? 0 : 2 };\n if (tv(s) === 47) {\n if (jsx_tag_token(s)) return -1;\n if (tv(s) !== 62) return js_parse_error(s, \"expecting '>'\");\n } else if (jsx_parse_children(s, ch, tag, start)) {\n return -1;\n }\n\n /* the call */\n if (form === JSXForm.JSX) {\n const children = JS_NewAtom(s.ctx, 'children');\n if (ch.array) {\n emit_op(s, OP.drop); /* the index */\n } else if (ch.n > 1) {\n emit_op(s, OP.array_from);\n emit_u16(s, ch.n);\n } else if (ch.n === 1) {\n set_object_name(s, children);\n }\n if (ch.n > 0) {\n emit_op(s, OP.define_field);\n emit_atom(s, children);\n }\n put_u32(fd.byte_code.buf, callee_pos + 1, jsx_import(s, ch.n > 1 || ch.spread ? 'jsxs' : 'jsx'));\n let argc = 2;\n if (key_ptr !== -2) {\n if (key_ptr === -1) {\n emit_op(s, OP.push_true);\n } else {\n const end = s.buf_ptr;\n s.buf_ptr = key_ptr;\n if (jsx_tag_token(s) || jsx_parse_attr_value(s)) return -1;\n s.buf_ptr = end;\n }\n argc = 3;\n }\n emit_source_pos(s, start);\n emit_op(s, OP.call);\n emit_u16(s, argc);\n } else if (ch.array) {\n emit_op(s, OP.drop); /* the index */\n emit_source_pos(s, start);\n if (method) {\n emit_op(s, OP.perm3); /* obj func array -> func obj array */\n } else {\n emit_op(s, OP.undefined); /* func array -> func undefined array */\n emit_op(s, OP.swap);\n }\n emit_op(s, OP.apply);\n emit_u16(s, 0);\n } else {\n emit_source_pos(s, start);\n emit_op(s, method ? OP.call_method : OP.call);\n emit_u16(s, 2 + ch.n);\n }\n return 0;\n}\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) || (s.ts && (tv(s) === 60 || tv(s) === 63 || tv(s) === 33))) {\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 (s.ts && (tv(s) === 60 || tv(s) === 63 || tv(s) === 33))) {\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 (s.ts && allow_method && tv(s) === 60) {\n /* method type parameters: m<T>(x: T) {} */\n if (!ts_skip_type_params(s)) return ts_error(s, 'invalid type parameters');\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 if (export_flag && add_local_export(s, var_name)) 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 (export_flag && add_local_export(s, var_name)) 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 (s.ts && (tv(s) === 63 || tv(s) === 58)) {\n /* {a, b}?: T */\n if (tv(s) === 63 && next_token(s)) return -1;\n if (tv(s) === 58 && ts_parse_annotation(s)) return -1;\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 /* optional options argument, and trailing comma */\n let has_options = false;\n if (tv(s) === 44) {\n if (next_token(s)) return -1;\n if (tv(s) !== 41) {\n if (js_parse_assign_expr(s)) return -1;\n has_options = true;\n if (tv(s) === 44 && next_token(s)) return -1;\n }\n }\n if (!has_options) emit_op(s, OP.undefined);\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\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 /* a?.<T>(x) */\n if (s.ts && (tv(s) === 60 || tv(s) === TOK.SHL) && !ts_try_expr_type_args(s) && JS_HasException(s.ctx)) return -1;\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 if (s.ts) {\n /* non-null assertion x! (not after a line break) */\n if (tv(s) === 33 && !s.got_lf) {\n if (next_token(s)) return -1;\n continue;\n }\n /* type arguments: f<T>(x), new C<T>(), f<T>`t`, f<T> */\n if ((tv(s) === 60 || tv(s) === TOK.SHL) && ts_try_expr_type_args(s)) continue;\n if (JS_HasException(s.ctx)) return -1;\n }\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 (s.jsx && tv(s) === 60) {\n /* a JSX element (in TypeScript, `<T>expr` is JSX too) */\n if (jsx_parse_element(s) || next_token(s)) return -1;\n /* TypeScript reads a '<' after an element as a second element: <a/><b/> */\n if (tv(s) === 60) return js_parse_error(s, 'JSX expressions must have one parent element');\n break;\n }\n if (s.ts && tv(s) === 60) {\n /* type assertion <T>expr */\n if (next_token(s)) return -1;\n if (!ts_skip_type(s) || !ts_eat_gt(s)) return ts_error(s, 'invalid type assertion');\n if (js_parse_unary(s, PF_POW_FORBIDDEN)) return -1;\n parse_flags = 0;\n break;\n }\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: {\n if (!s.ts) return 0;\n const r = ts_parse_as_expr(s);\n if (r <= 0) return r;\n continue;\n }\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 (s.ts) {\n /* TypeScript: an arrow function with a return type in the true branch must be\n followed by the ':' of the conditional */\n const saved = s.ts_cond_true;\n s.ts_cond_true = true;\n const r = js_parse_assign_expr2(s, PF_IN_ACCEPTED);\n s.ts_cond_true = saved;\n if (r) return -1;\n } else if (js_parse_assign_expr(s)) {\n return -1;\n }\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_arrow_ahead(s)) {\n return js_parse_function_decl(s, JSParseFunctionEnum.ARROW, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr);\n } else if (s.ts && tv(s) === 60 && ts_generic_arrow_ahead(s)) {\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_arrow_ahead(s)) || (s.ts && tv(s) === 60 && ts_generic_arrow_ahead(s)) ||\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 (s.ts && (tv(s) === 33 || tv(s) === 58)) {\n /* let x!: T */\n if (tv(s) === 33 && next_token(s)) return -1;\n if (tv(s) === 58 && ts_parse_annotation(s)) return -1;\n }\n if (js_define_var(s, name, tok)) return -1;\n if (export_flag && add_local_export(s, name)) 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 let next_tok: number;\n if ((tv(s) === 91 || tv(s) === 123) &&\n ((next_tok = js_parse_skip_parens_token(s, bits, false)) === 61 || (next_tok === 58 && s.ts))) {\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 if (s.ts) {\n /* TypeScript-only statements are skipped; `abstract class` continues as a class */\n const r = ts_parse_statement(s);\n if (r < 0) return -1;\n if (r > 0) return 0;\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)) return -1;\n if (s.ts && tv(s) === 58 && ts_parse_annotation(s)) return -1;\n if (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 if (s.ts_cond_true) {\n s.ts_cond_true = false;\n const r = js_parse_assign_expr2(s, PF_IN_ACCEPTED);\n s.ts_cond_true = true;\n return r;\n }\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 if (s.ts_cond_true) {\n s.ts_cond_true = false;\n const r = js_parse_expr2(s, parse_flags);\n s.ts_cond_true = true;\n return r;\n }\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 if (s.ts && tv(s) === 60 && !ts_skip_type_params(s)) { ts_error(s, 'invalid type parameters'); return fail(); }\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 /* class C extends B<T> */\n if (s.ts && (tv(s) === 60 || tv(s) === TOK.SHL) && !ts_skip_type_args(s)) { ts_error(s, 'invalid type arguments'); return fail(); }\n } else {\n emit_op(s, OP.undefined);\n }\n if (s.ts && ts_word(s, JS_ATOM_implements)) {\n /* implements I, J<T> */\n do {\n if (!ts_next(s) || !ts_skip_type(s)) { ts_error(s, 'type expected'); return fail(); }\n } while (tv(s) === 44);\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 /* TypeScript modifiers; declare and abstract members are erased */\n let ts_erase = 0;\n if (s.ts && (ts_erase = ts_parse_class_modifiers(s)) < 0) return fail();\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 || (s.ts && (next === 58 || next === 63 || next === 33 || next === 60)))) 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 && !ts_erase) {\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 if (s.ts) {\n const r = ts_parse_class_modifiers(s);\n if (r < 0) return fail();\n if (r > 0) ts_erase = 1;\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 (s.ts && prop_type < 0 && (ts_erase || ts_is_index_signature(s) || ts_class_member_is_signature(s))) {\n /* erased: declare field, abstract member, index signature, overload signature */\n if (ts_skip_class_member(s)) return fail();\n continue;\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 if (s.ts) {\n /* x?: T, x!: T, m?() {} */\n if ((tv(s) === 63 || tv(s) === 33) && next_token(s)) return fail();\n if (tv(s) === 58 && (prop_type & ~PROP_TYPE_PRIVATE) === PROP_TYPE_IDENT && ts_parse_annotation(s)) return fail();\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 if (s.ts && tv(s) === 60) {\n /* function f<T>(...), m<T>(...), <T>(...) => ... */\n if (!ts_skip_type_params(s)) { ts_error(s, 'invalid type parameters'); return fail(); }\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 (s.ts) {\n if (tv(s) === TOK.THIS && ts_peek(s).val === 58) {\n /* this parameter: f(this: T, ...) */\n if (next_token(s) || ts_parse_annotation(s)) return fail();\n if (tv(s) === 41) break;\n if (js_parse_expect(s, 44)) return fail();\n continue;\n }\n if (ts_is_param_modifier(s)) { ts_unsupported(s, 'parameter property', s.token.ptr); return fail(); }\n }\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 (s.ts && (tv(s) === 63 || tv(s) === 58)) {\n /* x?: T */\n if (tv(s) === 63 && next_token(s)) return fail();\n if (tv(s) === 58 && ts_parse_annotation(s)) return fail();\n }\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 if (s.ts && tv(s) === 58) {\n /* return type */\n if (!ts_next(s) || !ts_skip_return_type(s)) { ts_error(s, 'type expected'); return fail(); }\n }\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\n\n/* ---------------------------------------------------------------------\n Modules: import and export declarations (quickjs.c js_parse_import,\n js_parse_export and their helpers)\n --------------------------------------------------------------------- */\n\n/* a canonical key for import attributes, so that equal requests share an entry */\nfunction attributes_key(attrs: Record<string, string> | null): string {\n if (attrs === null) return '';\n const keys = Object.keys(attrs).sort();\n return JSON.stringify(keys.map(k => [k, attrs[k]]));\n}\n\nfunction add_req_module_entry(m: JSModuleDef, module_name: JSAtom, attributes: Record<string, string> | null): number {\n /* no need to add the module request if it is already present */\n const key = attributes_key(attributes);\n for (let i = 0; i < m.req_module_entries.length; i++) {\n const rme = m.req_module_entries[i];\n if (rme.module_name === module_name && attributes_key(rme.attributes) === key) return i;\n }\n m.req_module_entries.push(new JSReqModuleEntry(module_name, attributes));\n return m.req_module_entries.length - 1;\n}\n\nfunction find_export_entry(m: JSModuleDef, export_name: JSAtom): JSExportEntry | null {\n for (const me of m.export_entries) if (me.export_name === export_name) return me;\n return null;\n}\n\nfunction add_export_entry(s: JSParseState, m: JSModuleDef, local_name: JSAtom, export_name: JSAtom,\n export_type: JSExportType): JSExportEntry | null {\n if (find_export_entry(m, export_name)) {\n js_parse_error(s, `duplicate exported name '${JS_AtomGetStr(s.ctx, export_name)}'`);\n return null;\n }\n const me = new JSExportEntry(local_name, export_name, export_type);\n m.export_entries.push(me);\n return me;\n}\n\nfunction add_star_export_entry(m: JSModuleDef, req_module_idx: number): void {\n m.star_export_entries.push(new JSStarExportEntry(req_module_idx));\n}\n\n/* export entries of a declaration being parsed (`export let`, `export function`, ...) */\nfunction add_local_export(s: JSParseState, name: JSAtom): number {\n const m = s.cur_func!.module as JSModuleDef | null;\n if (!m) return js_parse_error(s, 'export outside of a module');\n return add_export_entry(s, m, name, name, JSExportType.LOCAL) ? 0 : -1;\n}\n\nfunction add_import(s: JSParseState, m: JSModuleDef, local_name: JSAtom, import_name: JSAtom, is_star: boolean): number {\n const fd = s.cur_func!;\n if (local_name === JS_ATOM_arguments || local_name === JS_ATOM_eval) return js_parse_error(s, 'invalid import binding');\n for (const cv of fd.closure_var) {\n if (cv.var_name === local_name) return js_parse_error(s, 'duplicate import binding');\n }\n /* a namespace import gets its own variable, set when the module is linked */\n const is_local = is_star;\n const var_idx = add_closure_var(s.ctx, fd, is_local, false, m.import_entries.length, local_name, true, true, JSVarKind.NORMAL);\n if (var_idx < 0) return -1;\n m.import_entries.push(new JSImportEntry(var_idx, is_star, import_name));\n return 0;\n}\n\n/* a string used as a module export name must be well formed (no lone surrogates) */\nfunction is_well_formed_string(str: string): boolean {\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n const d = str.charCodeAt(i + 1);\n if (!(d >= 0xdc00 && d <= 0xdfff)) return false;\n i++;\n } else if (c >= 0xdc00 && c <= 0xdfff) {\n return false;\n }\n }\n return true;\n}\n\n/* ModuleExportName: an IdentifierName or a string. Returns the atom (JS_ATOM_NULL on error);\n out.kind: 0 identifier, 1 reserved word, 2 string */\nfunction js_parse_module_export_name(s: JSParseState, out: { kind: number }): JSAtom {\n let atom: JSAtom;\n if (tv(s) === TOK.STRING) {\n if (!is_well_formed_string(s.token.str)) { js_parse_error(s, 'invalid module export name'); return JS_ATOM_NULL; }\n atom = JS_NewAtom(s.ctx, s.token.str);\n out.kind = 2;\n } else if (token_is_ident_or_keyword(tv(s)) || token_is_ident(tv(s))) {\n atom = s.token.atom;\n out.kind = token_is_ident(tv(s)) && !s.token.is_reserved ? 0 : 1;\n } else {\n js_parse_error(s, 'identifier expected');\n return JS_ATOM_NULL;\n }\n if (next_token(s)) return JS_ATOM_NULL;\n return atom;\n}\n\n/* the binding identifier of an import (after `as`, or a shorthand name) */\nfunction js_parse_import_binding(s: JSParseState): JSAtom {\n if (!token_is_ident(tv(s))) { js_parse_error(s, 'identifier expected'); return JS_ATOM_NULL; }\n if (s.token.is_reserved) { js_parse_error_reserved_identifier(s); return JS_ATOM_NULL; }\n const atom = s.token.atom;\n if (next_token(s)) return JS_ATOM_NULL;\n return atom;\n}\n\n/* `with { type: \"json\" }` after a module specifier: the attributes, or null. Returns -1 on error */\nfunction js_parse_with_clause(s: JSParseState, out: { attributes: Record<string, string> | null }): number {\n out.attributes = null;\n if (tv(s) !== TOK.WITH) return 0;\n if (next_token(s)) return -1;\n if (js_parse_expect(s, 123)) return -1;\n const attrs: Record<string, string> = Object.create(null);\n while (tv(s) !== 125) {\n let key: string;\n if (tv(s) === TOK.STRING) key = s.token.str;\n else if (token_is_ident_or_keyword(tv(s)) || token_is_ident(tv(s))) key = JS_AtomGetStr(s.ctx, s.token.atom);\n else return js_parse_error(s, 'identifier or string expected');\n if (Object.prototype.hasOwnProperty.call(attrs, key)) return js_parse_error(s, `duplicate import attribute '${key}'`);\n if (next_token(s)) return -1;\n if (js_parse_expect(s, 58)) return -1;\n if (tv(s) !== TOK.STRING) return js_parse_error(s, 'string expected');\n attrs[key] = s.token.str;\n if (next_token(s)) return -1;\n if (tv(s) !== 44) break;\n if (next_token(s)) return -1;\n }\n if (js_parse_expect(s, 125)) return -1;\n out.attributes = attrs;\n return 0;\n}\n\n/* `from \"specifier\" [with { ... }]`: the request index, or -1 */\nfunction js_parse_from_clause(s: JSParseState, m: JSModuleDef): number {\n if (!token_is_pseudo_keyword(s, JS_ATOM_from)) return js_parse_error(s, 'from clause expected');\n if (next_token(s)) return -1;\n return js_parse_module_specifier(s, m);\n}\n\nfunction js_parse_module_specifier(s: JSParseState, m: JSModuleDef): number {\n if (tv(s) !== TOK.STRING) return js_parse_error(s, 'string expected');\n const module_name = JS_NewAtom(s.ctx, s.token.str);\n if (next_token(s)) return -1;\n const w = { attributes: null as Record<string, string> | null };\n if (js_parse_with_clause(s, w)) return -1;\n return add_req_module_entry(m, module_name, w.attributes);\n}\n\n/* a TypeScript `type` modifier on an import or export specifier (`{ type A }`): true if the\n specifier is type only and was skipped. TypeScript's rules:\n { type } name `type` { type as } type-only `as`\n { type as as } `type` aliased `as` { type as as as } type-only `as` aliased `as` */\nfunction ts_skip_type_specifier(s: JSParseState): boolean {\n if (!s.ts || !token_is_pseudo_keyword(s, ts_atoms(s).type)) return false;\n const p = ts_save(s);\n const ok = (): boolean => { return true; };\n if (!ts_next(s)) { ts_restore(s, p); return false; }\n const end = (): boolean => tv(s) === 44 || tv(s) === 125;\n if (end()) { ts_restore(s, p); return false; } /* { type } */\n if (token_is_pseudo_keyword(s, JS_ATOM_as)) {\n if (!ts_next(s)) { ts_restore(s, p); return false; }\n if (end()) return ok(); /* { type as }: type-only import of `as` */\n if (token_is_pseudo_keyword(s, JS_ATOM_as)) {\n if (!ts_next(s)) { ts_restore(s, p); return false; }\n if (end()) { ts_restore(s, p); return false; } /* { type as as }: `type` aliased `as` */\n /* { type as as x }: type-only `as` aliased `x` */\n if (!ts_next(s)) { ts_restore(s, p); return false; }\n return ok();\n }\n /* { type as x }: `type` aliased `x` */\n ts_restore(s, p);\n return false;\n }\n /* { type A [as B] } */\n if (!ts_next(s)) { ts_restore(s, p); return false; }\n if (token_is_pseudo_keyword(s, JS_ATOM_as)) {\n if (!ts_next(s) || !ts_next(s)) { ts_restore(s, p); return false; }\n }\n return ok();\n}\n\nfunction js_parse_import(s: JSParseState): number {\n const m = s.cur_func!.module as JSModuleDef;\n if (next_token(s)) return -1;\n const first_import = m.import_entries.length;\n let idx: number;\n if (tv(s) === TOK.STRING) {\n /* import \"m\" */\n idx = js_parse_module_specifier(s, m);\n if (idx < 0) return -1;\n } else {\n let need_from = true;\n if (token_is_ident(tv(s))) {\n /* default import */\n const local_name = js_parse_import_binding(s);\n if (local_name === JS_ATOM_NULL) return -1;\n if (add_import(s, m, local_name, JS_ATOM_default, false)) return -1;\n if (tv(s) !== 44) need_from = false;\n else if (next_token(s)) return -1;\n }\n if (need_from || tv(s) === 42 || tv(s) === 123) {\n if (tv(s) === 42) {\n /* namespace import */\n if (next_token(s)) return -1;\n if (!token_is_pseudo_keyword(s, JS_ATOM_as)) return js_parse_error(s, \"expecting 'as'\");\n if (next_token(s)) return -1;\n const local_name = js_parse_import_binding(s);\n if (local_name === JS_ATOM_NULL) return -1;\n if (add_import(s, m, local_name, JS_ATOM__star_, true)) return -1;\n } else if (tv(s) === 123) {\n if (next_token(s)) return -1;\n while (tv(s) !== 125) {\n if (ts_skip_type_specifier(s)) {\n if (tv(s) !== 44) break;\n if (next_token(s)) return -1;\n continue;\n }\n const k = { kind: 0 };\n const start = s.token.ptr;\n const import_name = js_parse_module_export_name(s, k);\n if (import_name === JS_ATOM_NULL) return -1;\n let local_name: JSAtom;\n if (token_is_pseudo_keyword(s, JS_ATOM_as)) {\n if (next_token(s)) return -1;\n local_name = js_parse_import_binding(s);\n if (local_name === JS_ATOM_NULL) return -1;\n } else {\n if (k.kind !== 0) return js_parse_error_pos(s, start, k.kind === 2 ? \"expecting 'as'\" : 'identifier expected');\n local_name = import_name;\n }\n if (add_import(s, m, local_name, import_name, false)) return -1;\n if (tv(s) !== 44) break;\n if (next_token(s)) return -1;\n }\n if (js_parse_expect(s, 125)) return -1;\n } else {\n return js_parse_error(s, 'identifier expected');\n }\n }\n idx = js_parse_from_clause(s, m);\n if (idx < 0) return -1;\n }\n for (let i = first_import; i < m.import_entries.length; i++) m.import_entries[i].req_module_idx = idx;\n return js_parse_expect_semi(s);\n}\n\n/* the name of the declaration after `function` / `async function` / `class`, if any */\nfunction export_decl_name(s: JSParseState): JSAtom {\n const p = ts_save(s);\n let name = JS_ATOM_NULL;\n if (token_is_pseudo_keyword(s, JS_ATOM_async) && !ts_next(s)) { ts_restore(s, p); return name; }\n if (tv(s) === TOK.FUNCTION || tv(s) === TOK.CLASS) {\n if (ts_next(s) && (tv(s) !== 42 || ts_next(s)) && (token_is_ident(tv(s)) && !s.token.is_reserved)) name = s.token.atom;\n }\n ts_restore(s, p);\n return name;\n}\n\n/* skip a TypeScript `abstract` before `class`: -1 on error */\nfunction ts_skip_abstract(s: JSParseState): number {\n if (s.ts && token_is_pseudo_keyword(s, ts_atoms(s).abstract) && peek_token(s, true) === TOK.CLASS) return next_token(s);\n return 0;\n}\n\nfunction js_parse_export(s: JSParseState): number {\n const fd = s.cur_func!;\n const m = fd.module as JSModuleDef;\n if (next_token(s)) return -1;\n /* TypeScript: `export abstract class` is a class */\n if (ts_skip_abstract(s)) return -1;\n const tok = tv(s);\n const is_async_function = token_is_pseudo_keyword(s, JS_ATOM_async) && peek_token(s, true) === TOK.FUNCTION;\n if (tok === TOK.CLASS) {\n const name = export_decl_name(s);\n if (js_parse_class(s, false, JSParseExportEnum.NAMED)) return -1;\n return add_local_export(s, name);\n }\n if (tok === TOK.FUNCTION || is_async_function) {\n const name = export_decl_name(s);\n if (js_parse_function_decl2(s, JSParseFunctionEnum.STATEMENT, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr,\n JSParseExportEnum.NAMED, null)) return -1;\n return add_local_export(s, name);\n }\n switch (tok) {\n case 123: { /* { */\n const first_export = m.export_entries.length;\n let invalid_local = -1; /* position of a local name that is not an identifier reference */\n if (next_token(s)) return -1;\n while (tv(s) !== 125) {\n if (ts_skip_type_specifier(s)) {\n if (tv(s) !== 44) break;\n if (next_token(s)) return -1;\n continue;\n }\n const k = { kind: 0 };\n const start = s.token.ptr;\n const local_name = js_parse_module_export_name(s, k);\n if (local_name === JS_ATOM_NULL) return -1;\n if (k.kind !== 0 && invalid_local < 0) invalid_local = start;\n let export_name = local_name;\n if (token_is_pseudo_keyword(s, JS_ATOM_as)) {\n if (next_token(s)) return -1;\n export_name = js_parse_module_export_name(s, { kind: 0 });\n if (export_name === JS_ATOM_NULL) return -1;\n }\n if (!add_export_entry(s, m, local_name, export_name, JSExportType.LOCAL)) return -1;\n if (tv(s) !== 44) break;\n if (next_token(s)) return -1;\n }\n if (js_parse_expect(s, 125)) return -1;\n if (token_is_pseudo_keyword(s, JS_ATOM_from)) {\n const idx = js_parse_from_clause(s, m);\n if (idx < 0) return -1;\n for (let i = first_export; i < m.export_entries.length; i++) {\n const me = m.export_entries[i];\n me.export_type = JSExportType.INDIRECT;\n me.req_module_idx = idx;\n }\n } else if (invalid_local >= 0) {\n return js_parse_error_pos(s, invalid_local, 'identifier expected');\n }\n break;\n }\n case 42: { /* * */\n if (next_token(s)) return -1;\n if (token_is_pseudo_keyword(s, JS_ATOM_as)) {\n /* export * as ns from \"m\" */\n if (next_token(s)) return -1;\n const export_name = js_parse_module_export_name(s, { kind: 0 });\n if (export_name === JS_ATOM_NULL) return -1;\n const idx = js_parse_from_clause(s, m);\n if (idx < 0) return -1;\n const me = add_export_entry(s, m, JS_ATOM__star_, export_name, JSExportType.INDIRECT);\n if (!me) return -1;\n me.req_module_idx = idx;\n } else {\n const idx = js_parse_from_clause(s, m);\n if (idx < 0) return -1;\n add_star_export_entry(m, idx);\n }\n break;\n }\n case TOK.DEFAULT: {\n if (next_token(s)) return -1;\n if (ts_skip_abstract(s)) return -1;\n if (tv(s) === TOK.CLASS) {\n let name = export_decl_name(s);\n if (js_parse_class(s, false, JSParseExportEnum.DEFAULT)) return -1;\n if (name === JS_ATOM_NULL) name = JS_ATOM__default_;\n return add_export_entry(s, m, name, JS_ATOM_default, JSExportType.LOCAL) ? 0 : -1;\n }\n if (tv(s) === TOK.FUNCTION || (token_is_pseudo_keyword(s, JS_ATOM_async) && peek_token(s, true) === TOK.FUNCTION)) {\n let name = export_decl_name(s);\n if (js_parse_function_decl2(s, JSParseFunctionEnum.STATEMENT, JSFunctionKind.NORMAL, JS_ATOM_NULL, s.token.ptr,\n JSParseExportEnum.DEFAULT, null)) return -1;\n if (name === JS_ATOM_NULL) name = JS_ATOM__default_;\n return add_export_entry(s, m, name, JS_ATOM_default, JSExportType.LOCAL) ? 0 : -1;\n }\n if (js_parse_assign_expr(s)) return -1;\n /* set the name of anonymous functions */\n set_object_name(s, JS_ATOM_default);\n /* store the value in the _default_ variable and export it */\n const local_name = JS_ATOM__default_;\n if (define_var(s, fd, local_name, JSVarDefEnum.LET) < 0) return -1;\n emit_op(s, OP.scope_put_var_init);\n emit_atom(s, local_name);\n emit_u16(s, 0);\n if (!add_export_entry(s, m, local_name, JS_ATOM_default, JSExportType.LOCAL)) return -1;\n break;\n }\n case TOK.VAR:\n case TOK.LET:\n case TOK.CONST:\n if (next_token(s)) return -1;\n if (js_parse_var(s, PF_IN_ACCEPTED, tok, true)) return -1;\n break;\n default:\n return js_parse_error(s, 'invalid export syntax');\n }\n return js_parse_expect_semi(s);\n}\n\n/* Add the module global variables as closure variables of the module function, turn the\n exports of imported bindings into indirect exports, and resolve the local exports\n (quickjs.c add_module_variables) */\nfunction add_module_variables(ctx: JSContext, fd: JSFunctionDef): number {\n const m = fd.module as JSModuleDef;\n /* the imported variables were added as closure variables in js_parse_import(); add the\n module global variables */\n for (let i = 0; i < fd.global_vars.length; i++) {\n const hf = fd.global_vars[i];\n for (const cv of fd.closure_var) {\n if (cv.var_name === hf.var_name) {\n JS_ThrowSyntaxError(ctx, `invalid redefinition of imported binding '${JS_AtomGetStr(ctx, hf.var_name)}'`);\n return -1;\n }\n }\n }\n for (let i = 0; i < fd.global_vars.length; i++) {\n const hf = fd.global_vars[i];\n if (add_closure_var(ctx, fd, true, false, i, hf.var_name, hf.is_const, hf.is_lexical, JSVarKind.NORMAL) < 0) return -1;\n }\n /* an export of an imported binding is an indirect export (ParseModule) */\n for (const me of m.export_entries) {\n if (me.export_type !== JSExportType.LOCAL) continue;\n const mi = m.import_entries.find(e => fd.closure_var[e.var_idx].var_name === me.local_name);\n if (mi && !mi.is_star) {\n me.export_type = JSExportType.INDIRECT;\n me.req_module_idx = mi.req_module_idx;\n me.local_name = mi.import_name;\n }\n }\n /* resolve the variable names of the local exports */\n for (const me of m.export_entries) {\n if (me.export_type !== JSExportType.LOCAL) continue;\n const idx = fd.closure_var.findIndex(cv => cv.var_name === me.local_name);\n if (idx < 0) {\n JS_ThrowSyntaxError(ctx, `exported variable '${JS_AtomGetStr(ctx, me.local_name)}' does not exist`);\n return -1;\n }\n me.var_idx = idx;\n }\n return 0;\n}\n\nfunction js_parse_source_element(s: JSParseState): number {\n if (s.ts && (tv(s) === TOK.FUNCTION || token_is_pseudo_keyword(s, JS_ATOM_async))) {\n /* overload signature */\n const r = ts_parse_statement(s);\n if (r < 0) return -1;\n if (r > 0) return 0;\n }\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 || (tv(s) === TOK.IMPORT && peek_token(s, false) !== 40 && peek_token(s, false) !== 46)) &&\n s.cur_func!.module) {\n if (s.ts) {\n /* type-only imports and exports, and the rejected forms */\n const r = ts_parse_statement(s);\n if (r < 0) return -1;\n if (r > 0) return 0;\n }\n return tv(s) === TOK.EXPORT ? js_parse_export(s) : js_parse_import(s);\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 /* the module global variables must be initialized before evaluating the module so that\n the exported functions are visible if there are cyclic module references */\n let label_next = -1;\n if (s.module) {\n label_next = new_label_fd(s);\n /* if 'this' is true, initialize the global variables and return */\n bc.putc(OP.push_this);\n bc.putc(OP.if_false);\n bc.put_u32(label_next);\n update_label(s, label_next, 1);\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 if (s.module) {\n bc.putc(OP.return_undef);\n bc.putc(OP.label);\n bc.put_u32(label_next);\n s.label_slots[label_next].pos2 = bc.size;\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 if (fd.module) {\n if (add_module_variables(ctx, fd)) return null;\n }\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 }\n let m: JSModuleDef | null = null;\n if (eval_type === JS_EVAL_TYPE_MODULE) {\n m = new JSModuleDef(JS_NewAtom(ctx, filename));\n m.realm = ctx;\n js_mode |= JS_MODE_STRICT;\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 fd.module = m;\n if (m !== null || (flags & JS_EVAL_FLAG_ASYNC)) {\n fd.in_function_body = true;\n fd.func_kind = JSFunctionKind.ASYNC;\n }\n s.is_module = (m !== null);\n s.allow_html_comments = !s.is_module;\n s.ts = (flags & JS_EVAL_FLAG_STRIP_TYPES) !== 0;\n s.jsx = (flags & JS_EVAL_FLAG_JSX) !== 0;\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 if (m !== null) m.has_tla = fd.has_await;\n if (m !== null && s.jsx_runtime !== null && s.jsx_runtime.requests.length) jsx_hoist_requests(m, s.jsx_runtime.requests);\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 if (m !== null) {\n /* the module record stands for the compiled module (JS_TAG_MODULE in C) */\n if (hooks.js_module_compiled === null) return JS_ThrowSyntaxError(ctx, 'modules are not supported in this build');\n return hooks.js_module_compiled(ctx, m, fb, flags);\n }\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"]}