jseption 0.0.2 → 0.0.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytecode.js","sourceRoot":"","sources":["../src/bytecode.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Bytecode serialization: JS_WriteObject / JS_ReadObject.\n *\n * Writes the function tree produced by JS_EVAL_FLAG_COMPILE_ONLY to bytes and\n * reads it back into any runtime of the same jseption version, so that a\n * script can be compiled ahead of time and loaded without parsing. The design\n * follows quickjs.c (bc_write_* / bc_read_*): atoms are runtime specific, so\n * the writer emits an atom table and renumbers every atom (in the function\n * fields and in the atom operands of the byte code, found by walking the\n * opcodes by their format), and the reader interns the strings in its own\n * runtime and patches the operands back.\n *\n * Only load bytecode you produced yourself: like in QuickJS, the reader checks\n * the format (header, bounds, tags, indices, opcode boundaries, checksum), not\n * the semantics of the byte code, and hand-made byte code can reach states the\n * parser never emits.\n *\n * Format (all integers are unsigned LEB128 unless stated otherwise):\n *\n * magic 4 bytes \"JSBC\"\n * format u8 (BC_FORMAT)\n * version length + ASCII bytes: the jseption package version\n * flags BC_FLAG_*\n * strings count, then per string (length << 1 | wide), then the\n * byte length and bytes of the Latin-1 blob, then the\n * byte length and bytes of the UTF-16LE blob\n * atoms count, then the string index of each atom\n * root a tagged value (BC_TAG_FUNCTION_BYTECODE)\n * checksum 8 bytes: two 32-bit little-endian sums (Fletcher style, over\n * little-endian 32-bit words) of everything before them\n *\n * Atom references (function fields and byte code operands) use the encoding of\n * bc_atom_to_idx: predefined atoms (< JS_ATOM_END) and tagged integer atoms are\n * kept, other atoms become JS_ATOM_END + their index in the atom table.\n */\nimport { JSAtom, JS_ATOM_END, JS_ATOM_raw, JS_ATOM_TAG_INT, JS_ATOM_TYPE_STRING, __JS_AtomIsTaggedInt } from './atoms.ts';\nimport { JSContext, JSValue, JS_GetFunctionData, JS_ThrowSyntaxError, JS_ThrowTypeError, JS_NewArray,\n JS_DefinePropertyValue, JS_DefinePropertyValueUint32, JS_IsException, JS_PROP_ENUMERABLE, hooks } from './quickjs.ts';\nimport { JSClosureVar, JSFunctionBytecode, JSFunctionKind, JSVarDef, JSVarKind, JSModuleDef, JSModuleKind,\n JSReqModuleEntry, JSExportEntry, JSExportType, JSStarExportEntry, JSImportEntry } from './values.ts';\nimport { js_module_set_function, hooks_bytecode } from './module.ts';\nimport { OP, OpFmt, short_opcode_info } from './opcodes.ts';\nimport { JSEPTION_VERSION } from './version.ts';\n\n/* keep each function's source text (Function.prototype.toString); off by default */\nexport const JS_WRITE_OBJ_SOURCE = 1 << 0;\n\nexport const BC_MAGIC = [0x4a, 0x53, 0x42, 0x43]; /* \"JSBC\" */\nexport const BC_FORMAT = 1;\n\nconst BC_FLAG_SOURCE = 1 << 0;\n\nconst enum BCTag {\n NULL = 1,\n UNDEFINED,\n FALSE,\n TRUE,\n INT32,\n FLOAT64,\n STRING,\n BIG_INT,\n FUNCTION_BYTECODE,\n TEMPLATE_OBJECT,\n MODULE,\n}\n\n/* JSFunctionBytecode flags */\nconst F_HAS_PROTOTYPE = 1 << 0;\nconst F_SIMPLE_PARAMS = 1 << 1;\nconst F_DERIVED_CTOR = 1 << 2;\nconst F_HOME_OBJECT = 1 << 3;\nconst F_NEW_TARGET = 1 << 4;\nconst F_SUPER_CALL = 1 << 5;\nconst F_SUPER = 1 << 6;\nconst F_ARGUMENTS = 1 << 7;\nconst F_HAS_DEBUG = 1 << 8;\nconst F_EVAL = 1 << 9;\nconst F_HAS_SOURCE = 1 << 10;\n\n/* JSVarDef / JSClosureVar flags */\nconst V_CONST = 1 << 0;\nconst V_LEXICAL = 1 << 1;\nconst V_CAPTURED = 1 << 2;\nconst V_STATIC_PRIVATE = 1 << 3;\nconst V_LOCAL = 1 << 4;\nconst V_ARG = 1 << 5;\n\nconst VAR_KIND_MAX = JSVarKind.PRIVATE_GETTER_SETTER;\n\n/* the size of each opcode of the final byte code (0: not an opcode) and what its operand\n holds, indexed by the opcode byte, so that walking the byte code costs a few array reads\n per instruction */\nconst OPK_ATOM = 1, OPK_CONST = 2, OPK_CONST8 = 3, OPK_FCLOSURE = 4, OPK_FCLOSURE8 = 5;\nconst OP_SIZE = new Uint8Array(256);\nconst OP_KIND = new Uint8Array(256);\nfor (let op = 0; op < 256; op++) {\n const info = short_opcode_info(op);\n if (info === undefined) continue;\n OP_SIZE[op] = info.size;\n switch (info.fmt) {\n case OpFmt.atom: case OpFmt.atom_u8: case OpFmt.atom_u16: case OpFmt.atom_label_u8: case OpFmt.atom_label_u16:\n OP_KIND[op] = OPK_ATOM; break;\n case OpFmt.const: OP_KIND[op] = OPK_CONST; break;\n case OpFmt.const8: OP_KIND[op] = OPK_CONST8; break;\n }\n}\nOP_KIND[OP.fclosure] = OPK_FCLOSURE;\nOP_KIND[OP.fclosure8] = OPK_FCLOSURE8;\n\n/* ---------------------------------------------------------------------\n Writer\n --------------------------------------------------------------------- */\n\nclass BCWriteError extends Error {}\n\nclass ByteBuf {\n buf = new Uint8Array(4096);\n len = 0;\n private f64 = new Float64Array(1);\n private f64b = new Uint8Array(this.f64.buffer);\n\n private grow(n: number): void {\n let size = this.buf.length * 2;\n while (size < this.len + n) size *= 2;\n const b = new Uint8Array(size);\n b.set(this.buf.subarray(0, this.len));\n this.buf = b;\n }\n u8(v: number): void {\n if (this.len >= this.buf.length) this.grow(1);\n this.buf[this.len++] = v;\n }\n leb(v: number): void {\n if (this.len + 5 > this.buf.length) this.grow(5);\n const buf = this.buf;\n while (v >= 0x80) {\n buf[this.len++] = (v % 0x80) | 0x80;\n v = Math.floor(v / 0x80);\n }\n buf[this.len++] = v;\n }\n sleb(v: number): void {\n this.leb(v < 0 ? -2 * v - 1 : 2 * v);\n }\n f64v(v: number): void {\n if (this.len + 8 > this.buf.length) this.grow(8);\n this.f64[0] = v;\n const b = this.f64b;\n /* little endian on the wire */\n if (LITTLE_ENDIAN) for (let i = 0; i < 8; i++) this.buf[this.len++] = b[i];\n else for (let i = 7; i >= 0; i--) this.buf[this.len++] = b[i];\n }\n bytes(src: Uint8Array): void {\n if (this.len + src.length > this.buf.length) this.grow(src.length);\n this.buf.set(src, this.len);\n this.len += src.length;\n }\n result(): Uint8Array { return this.buf.slice(0, this.len); }\n}\n\nconst LITTLE_ENDIAN = new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n\nclass BCWriter {\n out = new ByteBuf();\n strings: string[] = [];\n string_idx = new Map<string, number>();\n atoms: number[] = []; /* string index of each atom table entry */\n atom_idx = new Map<JSAtom, number>();\n constructor(public ctx: JSContext, public flags: number) {}\n\n string_ref(s: string): number {\n let i = this.string_idx.get(s);\n if (i === undefined) {\n i = this.strings.length;\n this.strings.push(s);\n this.string_idx.set(s, i);\n }\n return i;\n }\n\n /* bc_atom_to_idx */\n atom_to_idx(atom: JSAtom): number {\n if (atom < JS_ATOM_END || __JS_AtomIsTaggedInt(atom)) return atom;\n let i = this.atom_idx.get(atom);\n if (i === undefined) {\n const atoms = this.ctx.rt.atoms;\n if (atoms.getType(atom) !== JS_ATOM_TYPE_STRING)\n throw new BCWriteError('cannot serialize a symbol atom: ' + atoms.toDisplayStr(atom));\n i = this.atoms.length;\n this.atoms.push(this.string_ref(atoms.toStr(atom)));\n this.atom_idx.set(atom, i);\n }\n return JS_ATOM_END + i;\n }\n\n atom(atom: JSAtom): void { this.out.leb(this.atom_to_idx(atom)); }\n\n value(v: JSValue | JSFunctionBytecode): void {\n const out = this.out;\n switch (typeof v) {\n case 'undefined': out.u8(BCTag.UNDEFINED); return;\n case 'boolean': out.u8(v ? BCTag.TRUE : BCTag.FALSE); return;\n case 'number':\n if ((v | 0) === v && !(v === 0 && 1 / v < 0)) { out.u8(BCTag.INT32); out.sleb(v); }\n else { out.u8(BCTag.FLOAT64); out.f64v(v); }\n return;\n case 'string': out.u8(BCTag.STRING); out.leb(this.string_ref(v)); return;\n case 'bigint': out.u8(BCTag.BIG_INT); out.leb(this.string_ref(v.toString())); return;\n case 'object':\n if (v === null) { out.u8(BCTag.NULL); return; }\n if (v instanceof JSFunctionBytecode) { this.function(v); return; }\n if (Array.isArray(v) && Object.isFrozen(v) && Object.prototype.hasOwnProperty.call(v, 'raw')) {\n this.template(v);\n return;\n }\n break;\n }\n throw new BCWriteError('unsupported constant in the function tree: ' + describe(v));\n }\n\n /* a template object (js_parse_template): frozen array of cooked strings with a frozen\n 'raw' array of raw strings */\n template(arr: unknown[]): void {\n const out = this.out;\n const raw = (arr as any).raw;\n if (!Array.isArray(raw) || raw.length !== arr.length) throw new BCWriteError('malformed template object');\n out.u8(BCTag.TEMPLATE_OBJECT);\n out.leb(arr.length);\n for (let i = 0; i < arr.length; i++) {\n const c = arr[i], r = raw[i];\n if ((c !== undefined && typeof c !== 'string') || typeof r !== 'string') throw new BCWriteError('malformed template object');\n out.leb(c === undefined ? 0 : this.string_ref(c) + 1);\n out.leb(this.string_ref(r));\n }\n }\n\n function(b: JSFunctionBytecode): void {\n const out = this.out;\n const keep_source = (this.flags & JS_WRITE_OBJ_SOURCE) !== 0 && b.has_debug && b.debug.source !== null;\n let flags = 0;\n if (b.has_prototype) flags |= F_HAS_PROTOTYPE;\n if (b.has_simple_parameter_list) flags |= F_SIMPLE_PARAMS;\n if (b.is_derived_class_constructor) flags |= F_DERIVED_CTOR;\n if (b.need_home_object) flags |= F_HOME_OBJECT;\n if (b.new_target_allowed) flags |= F_NEW_TARGET;\n if (b.super_call_allowed) flags |= F_SUPER_CALL;\n if (b.super_allowed) flags |= F_SUPER;\n if (b.arguments_allowed) flags |= F_ARGUMENTS;\n if (b.has_debug) flags |= F_HAS_DEBUG;\n if (b.is_direct_or_indirect_eval) flags |= F_EVAL;\n if (keep_source) flags |= F_HAS_SOURCE;\n if (b.vardefs.length !== b.arg_count + b.var_count) throw new BCWriteError('inconsistent variable count');\n out.u8(BCTag.FUNCTION_BYTECODE);\n out.leb(flags);\n out.u8(b.js_mode);\n out.u8(b.func_kind);\n this.atom(b.func_name);\n out.leb(b.arg_count);\n out.leb(b.var_count);\n out.leb(b.defined_arg_count);\n out.leb(b.stack_size);\n out.leb(b.closure_var.length);\n out.leb(b.cpool.length);\n out.leb(b.byte_code_len);\n for (const vd of b.vardefs) {\n this.atom(vd.var_name);\n out.leb(vd.scope_level);\n out.sleb(vd.scope_next);\n out.u8((vd.is_const ? V_CONST : 0) | (vd.is_lexical ? V_LEXICAL : 0) | (vd.is_captured ? V_CAPTURED : 0) |\n (vd.is_static_private ? V_STATIC_PRIVATE : 0));\n out.u8(vd.var_kind);\n out.sleb(vd.func_pool_idx);\n }\n for (const cv of b.closure_var) {\n this.atom(cv.var_name);\n out.leb(cv.var_idx);\n out.u8((cv.is_const ? V_CONST : 0) | (cv.is_lexical ? V_LEXICAL : 0) | (cv.is_local ? V_LOCAL : 0) |\n (cv.is_arg ? V_ARG : 0));\n out.u8(cv.var_kind);\n }\n out.bytes(this.byte_code(b));\n if (b.has_debug) {\n this.atom(b.debug.filename);\n const pc2line = b.debug.pc2line;\n if (pc2line === null) out.leb(0);\n else { out.leb(pc2line.length); out.bytes(pc2line); }\n if (keep_source) out.leb(this.string_ref(b.debug.source!));\n }\n for (const v of b.cpool) this.value(v);\n }\n\n /* a compiled module (JS_WriteModule): its requests, entries and body function */\n module(m: JSModuleDef): void {\n const out = this.out;\n out.u8(BCTag.MODULE);\n this.atom(m.module_name);\n out.leb(m.req_module_entries.length);\n for (const rme of m.req_module_entries) {\n this.atom(rme.module_name);\n if (rme.attributes === null) {\n out.leb(0);\n } else {\n const keys = Object.keys(rme.attributes);\n out.leb(keys.length + 1);\n for (const k of keys) { out.leb(this.string_ref(k)); out.leb(this.string_ref(rme.attributes[k])); }\n }\n }\n out.leb(m.export_entries.length);\n for (const me of m.export_entries) {\n out.u8(me.export_type);\n if (me.export_type === JSExportType.LOCAL) {\n out.leb(me.var_idx);\n } else {\n out.leb(me.req_module_idx);\n this.atom(me.local_name);\n }\n this.atom(me.export_name);\n }\n out.leb(m.star_export_entries.length);\n for (const se of m.star_export_entries) out.leb(se.req_module_idx);\n out.leb(m.import_entries.length);\n for (const mi of m.import_entries) {\n out.leb(mi.var_idx);\n out.u8(mi.is_star ? 1 : 0);\n this.atom(mi.import_name);\n out.leb(mi.req_module_idx);\n }\n out.u8(m.has_tla ? 1 : 0);\n this.function(m.func_bytecode!);\n }\n\n /* the byte code with its atom operands renumbered (JS_WriteFunctionBytecode) */\n byte_code(b: JSFunctionBytecode): Uint8Array {\n const len = b.byte_code_len;\n const bc = b.byte_code_buf.slice(0, len);\n let pos = 0;\n while (pos < len) {\n const op = bc[pos], size = OP_SIZE[op];\n if (size === 0) throw new BCWriteError(`invalid opcode ${op} at pc ${pos}`);\n if (OP_KIND[op] === OPK_ATOM && pos + 5 <= len) {\n const atom = (bc[pos + 1] | (bc[pos + 2] << 8) | (bc[pos + 3] << 16) | (bc[pos + 4] << 24)) >>> 0;\n const v = this.atom_to_idx(atom);\n bc[pos + 1] = v; bc[pos + 2] = v >>> 8; bc[pos + 3] = v >>> 16; bc[pos + 4] = v >>> 24;\n }\n pos += size;\n }\n if (pos !== len) throw new BCWriteError('truncated instruction at the end of the byte code');\n return bc;\n }\n\n finish(body: ByteBuf): Uint8Array {\n const out = new ByteBuf();\n for (const c of BC_MAGIC) out.u8(c);\n out.u8(BC_FORMAT);\n out.leb(JSEPTION_VERSION.length);\n for (let i = 0; i < JSEPTION_VERSION.length; i++) out.u8(JSEPTION_VERSION.charCodeAt(i));\n out.leb(this.flags & JS_WRITE_OBJ_SOURCE ? BC_FLAG_SOURCE : 0);\n /* string table */\n const strings = this.strings;\n out.leb(strings.length);\n let narrow_len = 0, wide_len = 0;\n const wide: boolean[] = [];\n for (const s of strings) {\n let w = false;\n for (let i = 0; i < s.length; i++) if (s.charCodeAt(i) > 0xff) { w = true; break; }\n wide.push(w);\n out.leb(s.length * 2 + (w ? 1 : 0));\n if (w) wide_len += s.length; else narrow_len += s.length;\n }\n out.leb(narrow_len);\n const narrow = new Uint8Array(narrow_len);\n let p = 0;\n for (let k = 0; k < strings.length; k++) {\n if (wide[k]) continue;\n const s = strings[k];\n for (let i = 0; i < s.length; i++) narrow[p++] = s.charCodeAt(i);\n }\n out.bytes(narrow);\n out.leb(wide_len * 2);\n const wbuf = new Uint8Array(wide_len * 2);\n p = 0;\n for (let k = 0; k < strings.length; k++) {\n if (!wide[k]) continue;\n const s = strings[k];\n for (let i = 0; i < s.length; i++) { const c = s.charCodeAt(i); wbuf[p++] = c; wbuf[p++] = c >>> 8; }\n }\n out.bytes(wbuf);\n /* atom table */\n out.leb(this.atoms.length);\n for (const i of this.atoms) out.leb(i);\n out.bytes(body.buf.subarray(0, body.len));\n const [a, b] = checksum(out.buf, out.len);\n for (const v of [a, b]) { out.u8(v & 0xff); out.u8((v >>> 8) & 0xff); out.u8((v >>> 16) & 0xff); out.u8(v >>> 24); }\n return out.result();\n }\n}\n\nfunction describe(v: unknown): string {\n if (typeof v === 'function') return 'function object';\n if (Array.isArray(v)) return 'array';\n if (typeof v === 'object' && v !== null) return 'object';\n return typeof v;\n}\n\nconst CHECKSUM_SIZE = 8;\n\n/* Fletcher-style sums of buf[0, end) taken as little-endian 32-bit words (the tail bytewise):\n detects truncation and corrupted bytes, at a quarter of the cost of a bytewise checksum\n (it is not a defence against deliberate tampering) */\nfunction checksum(buf: Uint8Array, end: number): [number, number] {\n const n = end >>> 2;\n let a = 1, b = 0;\n if (LITTLE_ENDIAN) {\n if (buf.byteOffset & 3) buf = buf.slice(0, end);\n const w = new Int32Array(buf.buffer, buf.byteOffset, n);\n for (let i = 0; i < n; i++) { a = (a + w[i]) | 0; b = (b + a) | 0; }\n } else {\n for (let i = 0; i < n; i++) {\n const p = i * 4;\n a = (a + (buf[p] | (buf[p + 1] << 8) | (buf[p + 2] << 16) | (buf[p + 3] << 24))) | 0; b = (b + a) | 0;\n }\n }\n for (let i = n * 4; i < end; i++) { a = (a + buf[i]) | 0; b = (b + a) | 0; }\n return [a >>> 0, b >>> 0];\n}\n\n/* Serialize the function returned by JS_Eval(..., JS_EVAL_FLAG_COMPILE_ONLY) (or any\n bytecode function that does not close over variables). Returns null with a pending\n exception on failure. */\nexport function JS_WriteObject(ctx: JSContext, obj: JSValue, flags = 0): Uint8Array | null {\n if (obj instanceof JSModuleDef) {\n /* a module compiled with JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY */\n if (obj.kind !== JSModuleKind.JS || obj.func_bytecode === null) {\n JS_ThrowTypeError(ctx, 'JS_WriteObject: only JavaScript modules can be written');\n return null;\n }\n const w = new BCWriter(ctx, flags);\n try {\n w.module(obj);\n return w.finish(w.out);\n } catch (e) {\n if (e instanceof BCWriteError) { JS_ThrowTypeError(ctx, 'JS_WriteObject: ' + e.message); return null; }\n throw e;\n }\n }\n const fd = JS_GetFunctionData(obj);\n if (fd === null) {\n JS_ThrowTypeError(ctx, 'JS_WriteObject: not a bytecode function (expected the result of JS_EVAL_FLAG_COMPILE_ONLY)');\n return null;\n }\n const b = fd.function_bytecode;\n if (b.closure_var.length !== 0) {\n JS_ThrowTypeError(ctx, 'JS_WriteObject: the function closes over variables of an enclosing scope');\n return null;\n }\n const w = new BCWriter(ctx, flags);\n try {\n w.function(b);\n const body = w.out;\n return w.finish(body);\n } catch (e) {\n if (e instanceof BCWriteError) { JS_ThrowTypeError(ctx, 'JS_WriteObject: ' + e.message); return null; }\n throw e;\n }\n}\n\n/* ---------------------------------------------------------------------\n Reader\n --------------------------------------------------------------------- */\n\nclass BCReadError extends Error {}\n\nconst MAX_DEPTH = 2000;\n/* parser limits (define_var / add_arg: at most 65534 each; compute_stack_size: JS_STACK_SIZE_MAX) */\nconst MAX_LOCALS = 65535;\nconst MAX_STACK_SIZE = 65534;\n\nclass BCReader {\n pos = 0;\n end: number;\n strings: string[] = [];\n atoms: JSAtom[] = [];\n keep_source = false;\n depth = 0;\n private f64 = new Float64Array(1);\n private f64b = new Uint8Array(this.f64.buffer);\n buf: Uint8Array;\n /* the reader works on a private copy of the input: the byte code is patched in place and\n the functions keep views of it (one copy instead of two per function) */\n constructor(public ctx: JSContext, input: Uint8Array) { this.buf = input.slice(); this.end = this.buf.length; }\n\n fail(msg: string): never { throw new BCReadError(msg); }\n truncated(): never { throw new BCReadError('read after the end of the buffer'); }\n\n u8(): number {\n if (this.pos >= this.end) this.truncated();\n return this.buf[this.pos++];\n }\n leb(): number {\n const buf = this.buf;\n let pos = this.pos;\n if (pos >= this.end) this.truncated();\n let a = buf[pos++];\n if (a < 0x80) { this.pos = pos; return a; }\n let v = a & 0x7f, mul = 0x80;\n for (let i = 1; ; i++) {\n if (pos >= this.end) this.truncated();\n if (i >= 5) this.fail('invalid LEB128 number');\n a = buf[pos++];\n v += (a & 0x7f) * mul;\n if (a < 0x80) break;\n mul *= 0x80;\n }\n if (v > 0xffffffff) this.fail('invalid LEB128 number');\n this.pos = pos;\n return v;\n }\n sleb(): number {\n const v = this.leb();\n return (v % 2 === 1) ? -((v + 1) / 2) : v / 2;\n }\n f64v(): number {\n if (this.pos + 8 > this.end) this.truncated();\n const b = this.f64b, buf = this.buf;\n if (LITTLE_ENDIAN) for (let i = 0; i < 8; i++) b[i] = buf[this.pos++];\n else for (let i = 7; i >= 0; i--) b[i] = buf[this.pos++];\n return this.f64[0];\n }\n /* a count whose items each take at least one byte */\n count(): number {\n const n = this.leb();\n if (n > this.end - this.pos) this.truncated();\n return n;\n }\n bytes(n: number): Uint8Array {\n if (n > this.end - this.pos) this.truncated();\n const r = this.buf.subarray(this.pos, this.pos + n);\n this.pos += n;\n return r;\n }\n string(): string {\n const i = this.leb();\n if (i >= this.strings.length) this.fail(`invalid string index ${i}`);\n return this.strings[i];\n }\n\n /* bc_idx_to_atom */\n idx_to_atom(v: number): JSAtom {\n if (v < JS_ATOM_END || v >= JS_ATOM_TAG_INT) return v;\n const i = v - JS_ATOM_END;\n if (i >= this.atoms.length) this.fail(`invalid atom index ${v}`);\n return this.atoms[i];\n }\n atom(): JSAtom { return this.idx_to_atom(this.leb()); }\n\n header(): void {\n const buf = this.buf;\n if (buf.length < BC_MAGIC.length + 2 + CHECKSUM_SIZE) this.truncated();\n for (let i = 0; i < BC_MAGIC.length; i++) if (buf[i] !== BC_MAGIC[i]) this.fail('not jseption bytecode (bad magic number)');\n this.pos = BC_MAGIC.length;\n const format = this.u8();\n const vlen = this.leb();\n if (vlen > 64) this.fail('not jseption bytecode (bad header)');\n if (vlen > this.end - this.pos) this.truncated();\n let version = '';\n for (let i = 0; i < vlen; i++) version += String.fromCharCode(buf[this.pos++]);\n if (format !== BC_FORMAT || version !== JSEPTION_VERSION)\n this.fail(`bytecode version mismatch: written by jseption ${version} (format ${format}), ` +\n `this is jseption ${JSEPTION_VERSION} (format ${BC_FORMAT})`);\n /* everything after the version is covered by the checksum */\n if (buf.length - CHECKSUM_SIZE < this.pos) this.truncated();\n this.end = buf.length - CHECKSUM_SIZE;\n const [a, b] = checksum(buf, this.end);\n const u32 = (p: number) => (buf[p] | (buf[p + 1] << 8) | (buf[p + 2] << 16) | (buf[p + 3] << 24)) >>> 0;\n if (u32(this.end) !== a || u32(this.end + 4) !== b) this.fail('checksum mismatch (truncated or corrupted bytecode)');\n const flags = this.leb();\n if (flags & ~BC_FLAG_SOURCE) this.fail('unknown flags');\n this.keep_source = (flags & BC_FLAG_SOURCE) !== 0;\n }\n\n string_table(): void {\n const n = this.count();\n const lens = new Array<number>(n);\n let narrow_len = 0, wide_len = 0;\n for (let i = 0; i < n; i++) {\n const v = this.leb();\n lens[i] = v;\n if (v & 1) wide_len += (v - 1) / 2; else narrow_len += v / 2;\n }\n if (this.leb() !== narrow_len) this.fail('inconsistent string table');\n if (narrow_len > this.end - this.pos) this.truncated();\n const narrow = latin1_decode(this.buf, this.pos, this.pos + narrow_len);\n this.pos += narrow_len;\n if (this.leb() !== wide_len * 2) this.fail('inconsistent string table');\n if (wide_len * 2 > this.end - this.pos) this.truncated();\n const wide = utf16_decode(this.buf, this.pos, wide_len);\n this.pos += wide_len * 2;\n const strings = this.strings = new Array<string>(n);\n let np = 0, wp = 0;\n for (let i = 0; i < n; i++) {\n const v = lens[i];\n if (v & 1) { const l = (v - 1) / 2; strings[i] = wide.slice(wp, wp + l); wp += l; }\n else { const l = v / 2; strings[i] = narrow.slice(np, np + l); np += l; }\n }\n }\n\n atom_table(): void {\n const n = this.count();\n const atoms = this.atoms = new Array<JSAtom>(n);\n const table = this.ctx.rt.atoms;\n for (let i = 0; i < n; i++) atoms[i] = table.newAtomStr(this.string());\n }\n\n value(): JSValue | JSFunctionBytecode {\n const tag = this.u8();\n switch (tag) {\n case BCTag.NULL: return null;\n case BCTag.UNDEFINED: return undefined;\n case BCTag.FALSE: return false;\n case BCTag.TRUE: return true;\n case BCTag.INT32: {\n const v = this.sleb();\n if ((v | 0) !== v) this.fail('invalid int32');\n return v;\n }\n case BCTag.FLOAT64: return this.f64v();\n case BCTag.STRING: return this.string();\n case BCTag.BIG_INT: {\n const s = this.string();\n if (!/^-?[0-9]+$/.test(s)) this.fail('invalid BigInt');\n return BigInt(s);\n }\n case BCTag.FUNCTION_BYTECODE: return this.function();\n case BCTag.TEMPLATE_OBJECT: return this.template();\n }\n return this.fail(`invalid tag ${tag} at offset ${this.pos - 1}`);\n }\n\n template(): JSValue {\n const ctx = this.ctx;\n const n = this.count();\n const arr = JS_NewArray(ctx), raw = JS_NewArray(ctx);\n if (JS_IsException(arr) || JS_IsException(raw)) this.fail('out of memory');\n for (let i = 0; i < n; i++) {\n const c = this.leb();\n let cooked: string | undefined;\n if (c !== 0) {\n if (c > this.strings.length) this.fail(`invalid string index ${c - 1}`);\n cooked = this.strings[c - 1];\n }\n JS_DefinePropertyValueUint32(ctx, raw, i, this.string(), JS_PROP_ENUMERABLE);\n JS_DefinePropertyValueUint32(ctx, arr, i, cooked, JS_PROP_ENUMERABLE);\n }\n JS_DefinePropertyValue(ctx, arr, JS_ATOM_raw, raw, 0);\n Object.freeze(raw as object);\n Object.freeze(arr as object);\n return arr;\n }\n\n function(): JSFunctionBytecode {\n if (++this.depth > MAX_DEPTH) this.fail('functions nested too deeply');\n const b = new JSFunctionBytecode();\n const flags = this.leb();\n if (flags >= F_HAS_SOURCE << 1) this.fail('invalid function flags');\n b.has_prototype = (flags & F_HAS_PROTOTYPE) !== 0;\n b.has_simple_parameter_list = (flags & F_SIMPLE_PARAMS) !== 0;\n b.is_derived_class_constructor = (flags & F_DERIVED_CTOR) !== 0;\n b.need_home_object = (flags & F_HOME_OBJECT) !== 0;\n b.new_target_allowed = (flags & F_NEW_TARGET) !== 0;\n b.super_call_allowed = (flags & F_SUPER_CALL) !== 0;\n b.super_allowed = (flags & F_SUPER) !== 0;\n b.arguments_allowed = (flags & F_ARGUMENTS) !== 0;\n b.has_debug = (flags & F_HAS_DEBUG) !== 0;\n b.is_direct_or_indirect_eval = (flags & F_EVAL) !== 0;\n b.js_mode = this.u8();\n const kind = this.u8();\n if (kind > JSFunctionKind.ASYNC_GENERATOR) this.fail('invalid function kind');\n b.func_kind = kind;\n b.func_name = this.atom();\n b.arg_count = this.count();\n b.var_count = this.count();\n b.defined_arg_count = this.leb();\n b.stack_size = this.leb();\n /* the parser's limits: the interpreter sizes each frame from these, so an out-of-range\n value would make it allocate a huge frame instead of failing here */\n if (b.arg_count >= MAX_LOCALS || b.var_count >= MAX_LOCALS) this.fail('too many variables');\n if (b.defined_arg_count > b.arg_count) this.fail('invalid defined argument count');\n if (b.stack_size > MAX_STACK_SIZE) this.fail(`invalid stack size ${b.stack_size}`);\n const closure_count = this.count();\n const cpool_count = this.count();\n const bc_len = this.count();\n const nvars = b.arg_count + b.var_count;\n const vardefs = b.vardefs = new Array<JSVarDef>(nvars);\n for (let i = 0; i < nvars; i++) {\n const vd = new JSVarDef(this.atom());\n vd.scope_level = this.leb();\n vd.scope_next = this.sleb();\n const f = this.u8();\n vd.is_const = (f & V_CONST) !== 0;\n vd.is_lexical = (f & V_LEXICAL) !== 0;\n vd.is_captured = (f & V_CAPTURED) !== 0;\n vd.is_static_private = (f & V_STATIC_PRIVATE) !== 0;\n const k = this.u8();\n if (k > VAR_KIND_MAX) this.fail('invalid variable kind');\n vd.var_kind = k;\n vd.func_pool_idx = this.sleb();\n vardefs[i] = vd;\n }\n const closure_var = b.closure_var = new Array<JSClosureVar>(closure_count);\n for (let i = 0; i < closure_count; i++) {\n const cv = new JSClosureVar();\n cv.var_name = this.atom();\n cv.var_idx = this.leb();\n const f = this.u8();\n cv.is_const = (f & V_CONST) !== 0;\n cv.is_lexical = (f & V_LEXICAL) !== 0;\n cv.is_local = (f & V_LOCAL) !== 0;\n cv.is_arg = (f & V_ARG) !== 0;\n const k = this.u8();\n if (k > VAR_KIND_MAX) this.fail('invalid variable kind');\n cv.var_kind = k;\n closure_var[i] = cv;\n }\n const bc = this.bytes(bc_len);\n b.byte_code_buf = bc;\n b.byte_code_len = bc_len;\n if (b.has_debug) {\n b.debug.filename = this.atom();\n const n = this.leb();\n b.debug.pc2line = this.bytes(n);\n if (flags & F_HAS_SOURCE) {\n if (!this.keep_source) this.fail('invalid function flags');\n const src = this.string();\n b.debug.source = src;\n b.debug.source_len = src.length;\n }\n } else if (flags & F_HAS_SOURCE) {\n this.fail('invalid function flags');\n }\n const cpool = b.cpool = new Array<JSValue | JSFunctionBytecode>(cpool_count);\n for (let i = 0; i < cpool_count; i++) cpool[i] = this.value();\n this.fixup_byte_code(b);\n b.realm = this.ctx;\n this.depth--;\n return b;\n }\n\n /* a compiled module (JS_ReadModule) */\n module(): JSModuleDef {\n const m = new JSModuleDef(this.atom());\n m.realm = this.ctx;\n const nreq = this.count();\n for (let i = 0; i < nreq; i++) {\n const name = this.atom();\n const n = this.leb();\n let attrs: Record<string, string> | null = null;\n if (n > 0) {\n if (n - 1 > this.end - this.pos) this.truncated();\n attrs = Object.create(null);\n for (let j = 0; j < n - 1; j++) { const k = this.string(); attrs![k] = this.string(); }\n }\n m.req_module_entries.push(new JSReqModuleEntry(name, attrs));\n }\n const req_idx = (): number => {\n const i = this.leb();\n if (i >= nreq) this.fail(`invalid module request index ${i}`);\n return i;\n };\n const nexp = this.count();\n const local_exports: number[] = [];\n for (let i = 0; i < nexp; i++) {\n const type = this.u8();\n let me: JSExportEntry;\n if (type === JSExportType.LOCAL) {\n const var_idx = this.leb();\n local_exports.push(var_idx);\n me = new JSExportEntry(0, this.atom(), JSExportType.LOCAL);\n me.var_idx = var_idx;\n me.local_name = me.export_name;\n } else if (type === JSExportType.INDIRECT) {\n const idx = req_idx();\n const local_name = this.atom();\n me = new JSExportEntry(local_name, this.atom(), JSExportType.INDIRECT);\n me.req_module_idx = idx;\n } else {\n this.fail('invalid export entry');\n }\n m.export_entries.push(me!);\n }\n const nstar = this.count();\n for (let i = 0; i < nstar; i++) m.star_export_entries.push(new JSStarExportEntry(req_idx()));\n const nimp = this.count();\n const imports: { var_idx: number; is_star: boolean }[] = [];\n for (let i = 0; i < nimp; i++) {\n const var_idx = this.leb();\n const is_star = this.u8();\n if (is_star > 1) this.fail('invalid import entry');\n const mi = new JSImportEntry(var_idx, is_star === 1, this.atom());\n mi.req_module_idx = req_idx();\n m.import_entries.push(mi);\n imports.push({ var_idx, is_star: is_star === 1 });\n }\n const tla = this.u8();\n if (tla > 1) this.fail('invalid module flags');\n m.has_tla = tla === 1;\n if (this.u8() !== BCTag.FUNCTION_BYTECODE) this.fail('the module body is not a function');\n const b = this.function();\n if (b.func_kind !== JSFunctionKind.ASYNC) this.fail('the module body is not an async function');\n /* the entries index the closure variables of the body */\n const ncv = b.closure_var.length;\n for (const v of local_exports) if (v >= ncv) this.fail(`invalid export variable index ${v}`);\n for (const { var_idx, is_star } of imports) {\n if (var_idx >= ncv) this.fail(`invalid import variable index ${var_idx}`);\n if (b.closure_var[var_idx].is_local !== is_star) this.fail('invalid import variable');\n }\n js_module_set_function(m, b);\n return m;\n }\n\n /* patch the atom operands and check the instruction boundaries and the constant pool\n indices (JS_ReadFunctionBytecode) */\n fixup_byte_code(b: JSFunctionBytecode): void {\n const bc = b.byte_code_buf, len = b.byte_code_len, cpool = b.cpool;\n let pos = 0;\n const natoms = this.atoms.length, atoms = this.atoms;\n while (pos < len) {\n const op = bc[pos], size = OP_SIZE[op];\n if (size === 0) this.fail(`invalid opcode ${op} at pc ${pos}`);\n if (pos + size > len) this.fail(`truncated instruction at pc ${pos}`);\n const kind = OP_KIND[op];\n if (kind !== 0) {\n if (kind === OPK_ATOM) {\n const v = (bc[pos + 1] | (bc[pos + 2] << 8) | (bc[pos + 3] << 16) | (bc[pos + 4] << 24)) >>> 0;\n if (v >= JS_ATOM_END && v < JS_ATOM_TAG_INT) {\n const i = v - JS_ATOM_END;\n if (i >= natoms) this.fail(`invalid atom index ${v} at pc ${pos}`);\n const atom = atoms[i];\n bc[pos + 1] = atom; bc[pos + 2] = atom >>> 8; bc[pos + 3] = atom >>> 16; bc[pos + 4] = atom >>> 24;\n }\n } else {\n const idx = (kind === OPK_CONST8 || kind === OPK_FCLOSURE8) ? bc[pos + 1]\n : (bc[pos + 1] | (bc[pos + 2] << 8) | (bc[pos + 3] << 16) | (bc[pos + 4] << 24)) >>> 0;\n if (idx >= cpool.length) this.fail(`invalid constant pool index ${idx} at pc ${pos}`);\n if (kind >= OPK_FCLOSURE && !(cpool[idx] instanceof JSFunctionBytecode))\n this.fail(`closure of a constant that is not a function at pc ${pos}`);\n }\n }\n pos += size;\n }\n }\n}\n\n/* buf[start, end) as a Latin-1 string */\nfunction latin1_decode(buf: Uint8Array, start: number, end: number): string {\n const CHUNK = 8192;\n if (end - start <= CHUNK) return String.fromCharCode.apply(null, buf.subarray(start, end) as unknown as number[]);\n const parts: string[] = [];\n for (let i = start; i < end; i += CHUNK)\n parts.push(String.fromCharCode.apply(null, buf.subarray(i, Math.min(end, i + CHUNK)) as unknown as number[]));\n return parts.join('');\n}\n\n/* n UTF-16LE code units at buf[start] as a string (lone surrogates preserved) */\nfunction utf16_decode(buf: Uint8Array, start: number, n: number): string {\n if (n === 0) return '';\n let units: Uint16Array;\n if (LITTLE_ENDIAN) {\n units = new Uint16Array(buf.slice(start, start + 2 * n).buffer);\n } else {\n units = new Uint16Array(n);\n for (let i = 0; i < n; i++) units[i] = buf[start + 2 * i] | (buf[start + 2 * i + 1] << 8);\n }\n const CHUNK = 8192;\n const parts: string[] = [];\n for (let i = 0; i < n; i += CHUNK)\n parts.push(String.fromCharCode.apply(null, units.subarray(i, Math.min(n, i + CHUNK)) as unknown as number[]));\n return parts.join('');\n}\n\n/* Read bytes produced by JS_WriteObject into this context. Returns a function object to\n run with JS_EvalFunction, or JS_EXCEPTION with a SyntaxError pending when the input is\n not valid bytecode of this jseption version. */\nexport function JS_ReadObject(ctx: JSContext, buf: Uint8Array): JSValue {\n if (!(buf instanceof Uint8Array)) return JS_ThrowTypeError(ctx, 'JS_ReadObject: expected a Uint8Array');\n const r = new BCReader(ctx, buf);\n let b: JSFunctionBytecode;\n try {\n r.header();\n r.string_table();\n r.atom_table();\n const tag = r.u8();\n if (tag === BCTag.MODULE) {\n const m = r.module();\n if (r.pos !== r.end) r.fail('trailing bytes after the root value');\n return m as unknown as JSValue;\n }\n if (tag !== BCTag.FUNCTION_BYTECODE) r.fail('the root value is not a function');\n b = r.function();\n if (r.pos !== r.end) r.fail('trailing bytes after the root value');\n } catch (e) {\n if (e instanceof BCReadError) return JS_ThrowSyntaxError(ctx, 'JS_ReadObject: ' + e.message);\n if (e instanceof RangeError) return JS_ThrowSyntaxError(ctx, 'JS_ReadObject: ' + e.message);\n throw e;\n }\n if (b.closure_var.length !== 0) return JS_ThrowSyntaxError(ctx, 'JS_ReadObject: the root function has closure variables');\n return hooks.js_closure(ctx, b, null, null);\n}\n\n\nhooks_bytecode.read = (ctx, bytes) => JS_ReadObject(ctx, bytes);\n"]}
@@ -989,7 +989,7 @@ function js_interpret(caller_ctx, func_obj, this_obj, new_target, argv, flags, g
989
989
  v = JS_NewObjectProto(ctx, null);
990
990
  break;
991
991
  case 6 /* OPSpecialObject.IMPORT_META */:
992
- v = JS_ThrowTypeError(ctx, 'import.meta is not supported');
992
+ v = hooks.js_import_meta !== null ? hooks.js_import_meta(ctx, b) : JS_ThrowTypeError(ctx, 'import.meta is not supported');
993
993
  break;
994
994
  default:
995
995
  v = JS_ThrowInternalError(ctx, 'invalid special object ' + arg);
@@ -1409,11 +1409,22 @@ function js_interpret(caller_ctx, func_obj, this_obj, new_target, argv, flags, g
1409
1409
  stack[sp - 1] = proto;
1410
1410
  break;
1411
1411
  }
1412
- case 54 /* OP.import */:
1412
+ case 54 /* OP.import */: {
1413
1413
  sf.cur_pc = pc;
1414
- JS_ThrowTypeError(ctx, 'dynamic import is not supported');
1415
- flow = 1 /* Flow.EXCEPTION */;
1414
+ if (hooks.js_dynamic_import === null) {
1415
+ JS_ThrowTypeError(ctx, 'dynamic import is not supported');
1416
+ flow = 1 /* Flow.EXCEPTION */;
1417
+ break;
1418
+ }
1419
+ const v = hooks.js_dynamic_import(ctx, b, stack[sp - 2], stack[sp - 1]);
1420
+ if (JS_IsException(v)) {
1421
+ flow = 1 /* Flow.EXCEPTION */;
1422
+ break;
1423
+ }
1424
+ sp--;
1425
+ stack[sp - 1] = v;
1416
1426
  break;
1427
+ }
1417
1428
  case 55 /* OP.check_var */: {
1418
1429
  const atom = get_u32(buf, pc);
1419
1430
  pc += 4;