jseption 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jit.js +17 -6
- package/dist/jit.js.map +1 -1
- package/dist/jit_runtime.d.ts +3 -0
- package/dist/jit_runtime.js +34 -3
- package/dist/jit_runtime.js.map +1 -1
- package/package.json +1 -1
package/dist/jit_runtime.d.ts
CHANGED
|
@@ -20,6 +20,9 @@ export declare class JitRuntime {
|
|
|
20
20
|
check<T>(v: T): T;
|
|
21
21
|
checkn(r: number): void;
|
|
22
22
|
to_guest_exception(e: unknown): JSValue;
|
|
23
|
+
catchable(e: unknown): JSValue;
|
|
24
|
+
poll(): void;
|
|
25
|
+
poll_handler(): void;
|
|
23
26
|
throw_type_error(msg: string): never;
|
|
24
27
|
throw_reference_error(msg: string): never;
|
|
25
28
|
throw_internal_error(msg: string): never;
|
package/dist/jit_runtime.js
CHANGED
|
@@ -17,17 +17,18 @@
|
|
|
17
17
|
* it when it has an explicit `this` or new.target, and calls guest
|
|
18
18
|
* functions natively otherwise.
|
|
19
19
|
*/
|
|
20
|
-
import { JS_EXCEPTION, JS_UNINITIALIZED, JS_IsException, JS_IsObject, JS_GetException, js_take_exception, js_host_exception_to_guest, JS_ThrowTypeError, JS_ThrowReferenceError, JS_ThrowInternalError, JS_ThrowStackOverflow, JS_ThrowTypeErrorReadOnly, JS_ThrowSyntaxErrorAtom, JS_ThrowReferenceErrorUninitialized, JS_ThrowReferenceErrorNotDefined, JS_ThrowReferenceErrorUninitialized2, JS_ThrowTypeErrorNotAnObject, JS_GetProperty, JS_GetPropertyInternal, JS_GetPropertyValue, JS_SetPropertyInternal, JS_SetPropertyValue, JS_DefinePropertyValue, JS_DefinePropertyValueValue, JS_DefinePropertyValueUint32, JS_DefineProperty, JS_DeleteProperty, JS_HasProperty, JS_GetPrototype, JS_SetPrototypeInternal, JS_NewObject, JS_NewObjectProto, JS_NewObjectProtoClass, JS_NewArrayFrom, JS_ValueToAtom, JS_AtomToValue, JS_AtomToKey, JS_NewSymbolFromAtom, JS_ToObject, JS_ToPropertyKey, JS_ToNumericFree, JS_IsInstanceOf, js_operator_in, js_unary_arith_slow, JS_GetIterator, JS_IteratorClose, build_for_in_iterator, js_for_in_next, JS_CopyDataProperties, JS_Call, JS_CallConstructorInternal, JS_CallConstructor2, js_create_from_ctor, JS_CheckGlobalVar, JS_GetGlobalVar, JS_SetGlobalVar, JS_CheckDefineGlobalVar, JS_DefineGlobalVar, JS_DefineGlobalFunction, JS_GetGlobalVarRef, hooks, js_meta, js_direct, JS_GetFunctionData, js_new_host_function, js_init_host_function, JS_ATOM_NULL, JS_ATOM_return, JS_ATOM_throw, JS_ATOM_length, JS_ATOM_prototype, JS_ATOM_callee, JS_ATOM_Symbol_iterator, JS_ATOM_empty_string, JS_ATOM_TYPE_PRIVATE, JS_ATOM_constructor, } from "./quickjs.js";
|
|
20
|
+
import { JS_EXCEPTION, JS_UNINITIALIZED, JS_IsException, JS_IsObject, JS_GetException, js_take_exception, js_host_exception_to_guest, JS_ThrowTypeError, JS_ThrowReferenceError, JS_ThrowInternalError, JS_ThrowStackOverflow, JS_ThrowTypeErrorReadOnly, JS_ThrowSyntaxErrorAtom, JS_ThrowReferenceErrorUninitialized, JS_ThrowReferenceErrorNotDefined, JS_ThrowReferenceErrorUninitialized2, JS_ThrowTypeErrorNotAnObject, JS_GetProperty, JS_GetPropertyInternal, JS_GetPropertyValue, JS_SetPropertyInternal, JS_SetPropertyValue, JS_DefinePropertyValue, JS_DefinePropertyValueValue, JS_DefinePropertyValueUint32, JS_DefineProperty, JS_DeleteProperty, JS_HasProperty, JS_GetPrototype, JS_SetPrototypeInternal, JS_NewObject, JS_NewObjectProto, JS_NewObjectProtoClass, JS_NewArrayFrom, JS_ValueToAtom, JS_AtomToValue, JS_AtomToKey, JS_NewSymbolFromAtom, JS_ToObject, JS_ToPropertyKey, JS_ToNumericFree, JS_IsInstanceOf, js_operator_in, js_unary_arith_slow, JS_GetIterator, JS_IteratorClose, build_for_in_iterator, js_for_in_next, JS_CopyDataProperties, JS_Call, JS_CallConstructorInternal, JS_CallConstructor2, js_create_from_ctor, JS_CheckGlobalVar, JS_GetGlobalVar, JS_SetGlobalVar, JS_CheckDefineGlobalVar, JS_DefineGlobalVar, JS_DefineGlobalFunction, JS_GetGlobalVarRef, hooks, js_meta, js_direct, JS_GetFunctionData, js_new_host_function, js_init_host_function, JS_ATOM_NULL, JS_ATOM_return, JS_ATOM_throw, JS_ATOM_length, JS_ATOM_prototype, JS_ATOM_callee, JS_ATOM_Symbol_iterator, JS_ATOM_empty_string, JS_ATOM_TYPE_PRIVATE, JS_ATOM_constructor, JS_IsUncatchableError, JS_SetUncatchableError, } from "./quickjs.js";
|
|
21
21
|
import { JSFunctionData, JSObjectMeta, new_var_ref_cell, JS_PROP_C_W_E, JS_PROP_THROW, JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_ENUMERABLE, JS_PROP_HAS_VALUE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_GET, JS_PROP_HAS_SET, JS_CALL_FLAG_CONSTRUCTOR, } from "./values.js";
|
|
22
22
|
import { JS_CallInternal, js_closure_from_refs, js_function_set_properties, js_define_class, js_build_arguments_value, js_build_rest, JS_DefinePrivateField, JS_GetPrivateField, JS_SetPrivateField, JS_AddBrand, JS_CheckBrand, js_operator_private_in, js_method_set_home_object, js_method_set_properties, JS_DefineObjectName, JS_DefineObjectNameComputed, js_function_apply, js_for_of_start_value, js_for_of_next_value, js_append_enumerate_value, } from "./interpreter.js";
|
|
23
23
|
import { short_opcode_info } from "./opcodes.js";
|
|
24
24
|
import { OP_DEFINE_METHOD_ENUMERABLE, OP_DEFINE_METHOD_METHOD, OP_DEFINE_METHOD_GETTER, JS_THROW_VAR_RO, JS_THROW_VAR_REDECL, JS_THROW_VAR_UNINITIALIZED, JS_THROW_ERROR_DELETE_SUPER, JS_THROW_ERROR_ITERATOR_THROW } from "./opcodes.js";
|
|
25
25
|
/* parameters of the generated factory function, in order */
|
|
26
26
|
export const JIT_FACTORY_PARAMS = ['$RT', '$cpool', '$b', '$U', '$D', '$Obj', '$set', '$del', '$getproto', '$DIRECT', '$P', '$G', '$GV',
|
|
27
|
-
'$CALL', '$CONSTRUCT'];
|
|
27
|
+
'$CALL', '$CONSTRUCT', '$C'];
|
|
28
28
|
export function jit_runtime_factory_args(RT, b) {
|
|
29
29
|
return [RT, b.cpool, b, JS_UNINITIALIZED, RT.DONE, RT.Obj, Reflect.set, Reflect.deleteProperty, Object.getPrototypeOf,
|
|
30
|
-
js_direct, RT.ctx.plain_object_proto, RT.ctx.global_obj, RT.ctx.global_var_obj, Function.prototype.call, Reflect.construct
|
|
30
|
+
js_direct, RT.ctx.plain_object_proto, RT.ctx.global_obj, RT.ctx.global_var_obj, Function.prototype.call, Reflect.construct,
|
|
31
|
+
RT.ctx];
|
|
31
32
|
}
|
|
32
33
|
const runtimes = new WeakMap();
|
|
33
34
|
/* `compile(b)` returns the compiled form of `b` if it is (or should now be) compiled, else null */
|
|
@@ -247,6 +248,36 @@ export class JitRuntime {
|
|
|
247
248
|
js_host_exception_to_guest(this.ctx, e);
|
|
248
249
|
return js_take_exception(this.ctx);
|
|
249
250
|
}
|
|
251
|
+
/* a guest `catch` (or the handler that runs `finally`, or closes an iterator) takes the
|
|
252
|
+
exception, unless it is uncatchable (an interrupt): that one goes on unwinding, without
|
|
253
|
+
running handlers, as in the interpreter */
|
|
254
|
+
catchable(e) {
|
|
255
|
+
const v = this.to_guest_exception(e);
|
|
256
|
+
if (JS_IsUncatchableError(this.ctx, v))
|
|
257
|
+
throw v;
|
|
258
|
+
return v;
|
|
259
|
+
}
|
|
260
|
+
/* --- interrupts --- */
|
|
261
|
+
/* compiled code polls at every function entry and loop head, as the interpreter polls at
|
|
262
|
+
its jumps. Generated code decrements `ctx.interrupt_counter` inline and calls
|
|
263
|
+
poll_handler() when it runs out; poll() is the same check as a call. Every 10000 polls
|
|
264
|
+
the runtime's interrupt handler is asked, and a request to stop throws an uncatchable
|
|
265
|
+
InternalError */
|
|
266
|
+
poll() {
|
|
267
|
+
if (--this.ctx.interrupt_counter > 0)
|
|
268
|
+
return;
|
|
269
|
+
this.poll_handler();
|
|
270
|
+
}
|
|
271
|
+
poll_handler() {
|
|
272
|
+
const ctx = this.ctx;
|
|
273
|
+
ctx.interrupt_counter = 10000;
|
|
274
|
+
const rt = ctx.rt;
|
|
275
|
+
if (rt.interrupt_handler === null || !rt.interrupt_handler(rt, rt.interrupt_opaque))
|
|
276
|
+
return;
|
|
277
|
+
JS_ThrowInternalError(ctx, 'interrupted');
|
|
278
|
+
JS_SetUncatchableError(ctx, rt.current_exception, true);
|
|
279
|
+
this.throw_pending();
|
|
280
|
+
}
|
|
250
281
|
throw_type_error(msg) { JS_ThrowTypeError(this.ctx, msg); this.throw_pending(); }
|
|
251
282
|
throw_reference_error(msg) { JS_ThrowReferenceError(this.ctx, msg); this.throw_pending(); }
|
|
252
283
|
throw_internal_error(msg) { JS_ThrowInternalError(this.ctx, msg); this.throw_pending(); }
|
package/dist/jit_runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jit_runtime.js","sourceRoot":"","sources":["../src/jit_runtime.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Runtime adapter for the compiled tier (src/jit.ts).\n *\n * This is the ONLY module that generated code talks to, and the only\n * place where the compiled tier touches engine internals. Generated code\n * receives one `JitRuntime` instance per context as `$RT`, plus a few\n * host intrinsics and engine tables as factory parameters (see\n * JIT_FACTORY_PARAMS).\n *\n * Conventions:\n * - every helper either returns a guest value or `throw`s a guest value\n * (the engine's JS_EXCEPTION/current_exception convention is converted\n * here by `check()`/`throw_pending()`);\n * - `DONE` is a sentinel returned by the iteration helpers;\n * - the direct entry of a guest function (js_direct) uses the explicit\n * convention `direct($this, $new_target, ...args)`; compiled code calls\n * it when it has an explicit `this` or new.target, and calls guest\n * functions natively otherwise.\n */\nimport {\n JSContext, JSValue, JSFunctionBytecode, JSAtom, JS_EXCEPTION, JS_UNINITIALIZED, JS_IsException, JS_IsObject,\n JS_GetException, js_take_exception, js_host_exception_to_guest, JS_ThrowTypeError, JS_ThrowReferenceError,\n JS_ThrowInternalError, JS_ThrowStackOverflow, JS_ThrowTypeErrorReadOnly, JS_ThrowSyntaxErrorAtom,\n JS_ThrowReferenceErrorUninitialized, JS_ThrowReferenceErrorNotDefined, JS_ThrowReferenceErrorUninitialized2,\n JS_ThrowTypeErrorNotAnObject, JS_GetProperty, JS_GetPropertyInternal, JS_GetPropertyValue, JS_SetPropertyInternal,\n JS_SetPropertyValue, JS_DefinePropertyValue, JS_DefinePropertyValueValue, JS_DefinePropertyValueUint32, JS_DefineProperty,\n JS_DeleteProperty, JS_HasProperty, JS_GetPrototype, JS_SetPrototypeInternal, JS_NewObject, JS_NewObjectProto,\n JS_NewObjectProtoClass, JS_NewArrayFrom, JS_ValueToAtom, JS_AtomToValue, JS_AtomToKey, JS_NewSymbolFromAtom, JS_ToObject,\n JS_ToPropertyKey, JS_ToNumericFree, JS_IsInstanceOf, js_operator_in, js_unary_arith_slow, JSUnaryOp, JS_GetIterator,\n JS_IteratorNext, JS_IteratorClose, build_for_in_iterator, js_for_in_next, JS_CopyDataProperties, JS_Call,\n JS_CallConstructorInternal, JS_CallConstructor2, js_create_from_ctor, JS_CheckGlobalVar, JS_GetGlobalVar, JS_SetGlobalVar,\n JS_CheckDefineGlobalVar, JS_DefineGlobalVar, JS_DefineGlobalFunction, JS_GetGlobalVarRef, hooks, js_meta, js_direct,\n JS_GetFunctionData, js_new_host_function, js_init_host_function, JS_ATOM_NULL, JS_ATOM_next, JS_ATOM_return, JS_ATOM_throw, JS_ATOM_length,\n JS_ATOM_prototype, JS_ATOM_callee, JS_ATOM_Symbol_iterator, JS_ATOM_empty_string, JS_ATOM_TYPE_PRIVATE, JS_ATOM_constructor,\n} from './quickjs.ts';\nimport {\n JSClassID, JSFunctionKind, JSVarRef, JSFunctionData, JSObjectMeta, new_var_ref_cell, JS_PROP_C_W_E, JS_PROP_THROW,\n JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_ENUMERABLE,\n JS_PROP_HAS_VALUE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_GET, JS_PROP_HAS_SET, JS_CALL_FLAG_CONSTRUCTOR,\n} from './values.ts';\nimport {\n JS_CallInternal, js_closure_from_refs, js_function_set_properties, js_define_class, js_build_arguments_value, js_build_rest,\n JS_DefinePrivateField, JS_GetPrivateField, JS_SetPrivateField, JS_AddBrand, JS_CheckBrand, js_operator_private_in,\n js_method_set_home_object, js_method_set_properties, JS_DefineObjectName, JS_DefineObjectNameComputed, js_function_apply,\n js_for_of_start_value, js_for_of_next_value, js_append_enumerate_value,\n} from './interpreter.ts';\nimport { OP, short_opcode_info, OPSpecialObject } from './opcodes.ts';\nimport { OP_DEFINE_METHOD_ENUMERABLE, OP_DEFINE_METHOD_METHOD, OP_DEFINE_METHOD_GETTER, JS_THROW_VAR_RO, JS_THROW_VAR_REDECL,\n JS_THROW_VAR_UNINITIALIZED, JS_THROW_ERROR_DELETE_SUPER, JS_THROW_ERROR_ITERATOR_THROW } from './opcodes.ts';\n\n/* what jit.ts produces for a bytecode function (see JitCompiled in jit.ts) */\nexport interface JitCompiledLike {\n /* returns [function object, direct entry, private copy factory]; `func_obj` overrides the\n function object (used when an existing interpreter wrapper is tiered up) */\n make: (var_refs: JSVarRef[], func_obj?: JSValue) => [Function, Function, (() => Function) | null];\n}\n\n/* parameters of the generated factory function, in order */\nexport const JIT_FACTORY_PARAMS = ['$RT', '$cpool', '$b', '$U', '$D', '$Obj', '$set', '$del', '$getproto', '$DIRECT', '$P', '$G', '$GV',\n '$CALL', '$CONSTRUCT'];\n\nexport function jit_runtime_factory_args(RT: JitRuntime, b: JSFunctionBytecode): any[] {\n return [RT, b.cpool, b, JS_UNINITIALIZED, RT.DONE, RT.Obj, Reflect.set, Reflect.deleteProperty, Object.getPrototypeOf,\n js_direct, RT.ctx.plain_object_proto, RT.ctx.global_obj, RT.ctx.global_var_obj, Function.prototype.call, Reflect.construct];\n}\n\nconst runtimes = new WeakMap<JSContext, JitRuntime>();\n\n/* `compile(b)` returns the compiled form of `b` if it is (or should now be) compiled, else null */\nexport function make_jit_runtime(ctx: JSContext, compile: (b: JSFunctionBytecode) => JitCompiledLike | null): JitRuntime {\n let rt = runtimes.get(ctx);\n if (!rt) { rt = new JitRuntime(ctx, compile); runtimes.set(ctx, rt); }\n return rt;\n}\n\n/* Call a compiled body through its private host-convention copy (`fd.priv`): the engine's\n ordinary (non-construct) calls of compiled functions. */\nexport function jit_runtime_call_priv(ctx: JSContext, priv: Function, this_obj: JSValue, argv: JSValue[]): JSValue {\n const rt = ctx.rt;\n if (rt.stack_depth >= rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n rt.stack_depth++;\n const sf = rt.current_stack_frame;\n try {\n return priv.apply(this_obj, argv);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n } finally {\n rt.current_stack_frame = sf;\n rt.stack_depth--;\n }\n}\n\n/* ---------------------------------------------------------------------\n Retargetable wrappers\n\n The function object of a closure created by the interpreter (or by compiled code before the\n function's bytecode is compiled) is a wrapper that calls the compiled body as soon as one\n exists for the closure (JSFunctionData.priv for calls, .ctor for construct calls) and the\n engine otherwise, so its identity survives tier-up. The wrappers are generated once per\n (kind, arity) without rest parameters: a call is `fd.priv.call(this, a0, a1)`, which the host\n inlines (measured: the same cost as calling the compiled function directly, also for `new`).\n --------------------------------------------------------------------- */\n\n/* the body reads `arguments` (or a rest parameter, or init_ctor's arguments): its wrapper must\n forward the exact argument list. Cached on the bytecode. */\nexport function jit_bytecode_uses_args(b: JSFunctionBytecode): boolean {\n if (b.uses_args >= 0) return b.uses_args === 1;\n const buf = b.byte_code_buf, len = b.byte_code_len;\n let r = 0;\n for (let pos = 0; pos < len;) {\n const op = buf[pos];\n if (op === OP.rest || op === OP.init_ctor) { r = 1; break; }\n if (op === OP.special_object) {\n const k = buf[pos + 1];\n if (k === OPSpecialObject.ARGUMENTS || k === OPSpecialObject.MAPPED_ARGUMENTS) { r = 1; break; }\n }\n const oi = short_opcode_info(op);\n if (!oi || oi.size <= 0) { r = 1; break; }\n pos += oi.size;\n }\n b.uses_args = r;\n return r === 1;\n}\n\ntype SlowCall = (w: Function, t: JSValue, nt: JSValue, args: ArrayLike<JSValue>) => JSValue;\ntype WrapperFactory = (fd: JSFunctionData, slow: SlowCall) => Function;\nconst MAX_WRAPPER_ARITY = 12;\n\n/* The wrapper code is generated once per function (bytecode), not once per arity: the call\n `p.call(this, a0)` inside a wrapper shared by many functions sees many targets and the host\n stops inlining it (measured in Bun: 1.75x the cost of a direct call, against 1x for a\n per-function wrapper). Closures of the same function share their wrapper's code. */\nfunction wrapper_factory(b: JSFunctionBytecode, is_ctor: boolean): WrapperFactory | null {\n /* cached per kind (constructible or not): a function is normally wrapped as one kind only */\n const slot = is_ctor ? 'f' : 'm';\n if (b.wrapper_factory === null) b.wrapper_factory = { f: undefined, m: undefined };\n const cached = b.wrapper_factory[slot];\n if (cached !== undefined) return cached;\n const arity = b.arg_count;\n let use_args = jit_bytecode_uses_args(b);\n if (arity > MAX_WRAPPER_ARITY) use_args = true;\n let f: WrapperFactory | null;\n const params = use_args ? '' : Array.from({ length: arity }, (_, i) => `a${i}`).join(', ');\n const call_p = use_args ? 'p.apply(this, arguments)' : `p.call(this${params ? ', ' + params : ''})`;\n const call_c = use_args ? 'c(t, new.target, ...arguments)' : `c(t, new.target${params ? ', ' + params : ''})`;\n const src = is_ctor\n ? `\"use strict\"; return function (fd, slow) { return function $w(${params}) {\n if (new.target === undefined) { const p = fd.priv; if (p !== null) return ${call_p}; }\n else { const c = fd.ctor; if (c !== null) { const xp = new.target.prototype; const t = (typeof xp === 'object' ? xp !== null : typeof xp === 'function') ? this : undefined; return ${call_c}; } }\n return slow($w, this, new.target, arguments);\n}; };`\n : `\"use strict\"; return function (fd, slow) { let w; const o = { $w(${params}) {\n const p = fd.priv; if (p !== null) return ${call_p};\n return slow(w, this, undefined, arguments);\n} }; w = o.$w; return w; };`;\n try { f = (new Function(src) as () => WrapperFactory)(); } catch { f = null; /* code generation unavailable */ }\n b.wrapper_factory[slot] = f;\n return f;\n}\n\nconst slow_calls = new WeakMap<JSContext, SlowCall>();\nfunction slow_call(ctx: JSContext): SlowCall {\n let s = slow_calls.get(ctx);\n if (s === undefined) {\n s = (w, t, nt, args) => {\n const argv: JSValue[] = new Array(args.length);\n for (let i = 0; i < args.length; i++) argv[i] = args[i];\n const ret = nt !== undefined ? JS_CallInternal(ctx, w, nt, nt, argv, JS_CALL_FLAG_CONSTRUCTOR)\n : JS_CallInternal(ctx, w, t, undefined, argv, 0);\n if (ret === JS_EXCEPTION) throw js_take_exception(ctx);\n return ret;\n };\n slow_calls.set(ctx, s);\n }\n return s;\n}\n\n/* the function object of a closure of a normal function: a retargetable wrapper, or null when\n wrappers cannot be generated (the engine then uses its generic wrapper) */\nexport function jit_runtime_make_wrapper(ctx: JSContext, b: JSFunctionBytecode, var_refs: JSVarRef[],\n proto: JSValue | null, is_ctor: boolean): JSValue | null {\n const fac = wrapper_factory(b, is_ctor);\n if (fac === null) return null;\n const fd = new JSFunctionData(b, var_refs);\n const slow = slow_call(ctx);\n const w = fac(fd, slow);\n /* a host `function` has an own `prototype` object with a host prototype chain */\n if (is_ctor) (w as any).prototype = undefined;\n const m = js_init_host_function(ctx, w, is_ctor, '', b.defined_arg_count, proto, func_kind_to_class_id(b.func_kind));\n m.func = fd;\n m.realm = b.realm ?? ctx;\n js_direct.set(w, (t: JSValue, nt: JSValue, ...args: JSValue[]) => {\n if (nt === undefined) { const p = fd.priv; if (p !== null) return p.apply(t, args); }\n return slow(w, t, nt, args);\n });\n return w;\n}\n\n/* Call the direct entry of a compiled function from the engine (JS_CallInternal). */\nexport function jit_runtime_call_compiled(ctx: JSContext, direct: Function, this_obj: JSValue, new_target: JSValue,\n argv: JSValue[], flags: number): JSValue {\n const rt = ctx.rt;\n if (rt.stack_depth >= rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n rt.stack_depth++;\n const sf = rt.current_stack_frame;\n try {\n /* construct call (JS_CallConstructorInternal passes new_target as this_obj, like C): the\n callee creates `this`. The interpreter's legacy constructor path calls back with the flag\n cleared, new_target set and `this` already created: the compiled prologue keeps it. */\n if (flags & JS_CALL_FLAG_CONSTRUCTOR) return (direct as any)(undefined, new_target, ...argv);\n return (direct as any)(this_obj, new_target, ...argv);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n } finally {\n rt.current_stack_frame = sf;\n rt.stack_depth--;\n }\n}\n\nfunction func_kind_to_class_id(kind: JSFunctionKind): JSClassID {\n switch (kind) {\n case JSFunctionKind.GENERATOR: return JSClassID.GENERATOR_FUNCTION;\n case JSFunctionKind.ASYNC: return JSClassID.ASYNC_FUNCTION;\n case JSFunctionKind.ASYNC_GENERATOR: return JSClassID.ASYNC_GENERATOR_FUNCTION;\n default: return JSClassID.BYTECODE_FUNCTION;\n }\n}\n\nexport class JitRuntime {\n ctx: JSContext;\n compile: (b: JSFunctionBytecode) => JitCompiledLike | null;\n /* sentinel returned by iteration helpers */\n DONE: any = Symbol('jit.done');\n /* host constructor whose .prototype is the guest Object.prototype: `new $Obj()` creates an\n object literal (measured ~0.7 ns vs ~27 ns for `{__proto__: proto}`) */\n Obj: Function;\n\n constructor(ctx: JSContext, compile: (b: JSFunctionBytecode) => JitCompiledLike | null) {\n this.ctx = ctx;\n this.compile = compile;\n const Obj = function () {};\n Obj.prototype = ctx.class_proto[JSClassID.OBJECT] as any;\n this.Obj = Obj;\n }\n\n /* --- exception plumbing --- */\n throw_pending(): never {\n throw js_take_exception(this.ctx);\n }\n check<T>(v: T): T {\n if (v === (JS_EXCEPTION as unknown)) this.throw_pending();\n return v;\n }\n checkn(r: number): void {\n if (r < 0) this.throw_pending();\n }\n /* host exception -> guest exception value (guest values pass through) */\n to_guest_exception(e: unknown): JSValue {\n if (!(e instanceof Error) && e !== (JS_EXCEPTION as unknown)) return e as JSValue;\n js_host_exception_to_guest(this.ctx, e);\n return js_take_exception(this.ctx);\n }\n throw_type_error(msg: string): never { JS_ThrowTypeError(this.ctx, msg); this.throw_pending(); }\n throw_reference_error(msg: string): never { JS_ThrowReferenceError(this.ctx, msg); this.throw_pending(); }\n throw_internal_error(msg: string): never { JS_ThrowInternalError(this.ctx, msg); this.throw_pending(); }\n throw_not_a_constructor(_f: JSValue): never { this.throw_type_error('not a constructor'); }\n throw_uninitialized(b: JSFunctionBytecode, idx: number, is_ref: boolean): never {\n JS_ThrowReferenceErrorUninitialized2(this.ctx, b, idx, is_ref);\n this.throw_pending();\n }\n throw_error(atom: JSAtom, type: number): never {\n const ctx = this.ctx;\n if (type === JS_THROW_VAR_RO) JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, atom);\n else if (type === JS_THROW_VAR_REDECL) JS_ThrowSyntaxErrorAtom(ctx, \"redeclaration of '%s'\", atom);\n else if (type === JS_THROW_VAR_UNINITIALIZED) JS_ThrowReferenceErrorUninitialized(ctx, atom);\n else if (type === JS_THROW_ERROR_DELETE_SUPER) JS_ThrowReferenceError(ctx, \"unsupported reference to 'super'\");\n else if (type === JS_THROW_ERROR_ITERATOR_THROW) JS_ThrowTypeError(ctx, 'iterator does not have a throw method');\n else JS_ThrowInternalError(ctx, 'invalid throw var type ' + type);\n this.throw_pending();\n }\n\n /* --- values --- */\n new_cell(v: JSValue): JSVarRef { return new_var_ref_cell(v); }\n new_object(): JSValue { return this.check(JS_NewObject(this.ctx)); }\n new_object_null(): JSValue { return this.check(JS_NewObjectProto(this.ctx, null)); }\n /* array literal: takes ownership of the host array and re-prototypes it */\n array(elems: JSValue[]): JSValue { return JS_NewArrayFrom(this.ctx, elems); }\n atom_value(atom: JSAtom): JSValue { return JS_AtomToValue(this.ctx, atom); }\n private_symbol(atom: JSAtom): JSValue { return JS_NewSymbolFromAtom(this.ctx, atom, JS_ATOM_TYPE_PRIVATE); }\n sloppy_this(t: JSValue): JSValue {\n if (JS_IsObject(t)) return t;\n if (t === undefined || t === null) return this.ctx.global_obj;\n return this.check(JS_ToObject(this.ctx, t));\n }\n regexp(pattern: JSValue, flags: JSValue): JSValue {\n if (!hooks.js_regexp_constructor_internal) this.throw_internal_error('RegExp is not available');\n return this.check(hooks.js_regexp_constructor_internal(this.ctx, undefined, pattern as string, flags as string));\n }\n to_object(v: JSValue): JSValue { return this.check(JS_ToObject(this.ctx, v)); }\n to_propkey(v: JSValue): JSValue { return this.check(JS_ToPropertyKey(this.ctx, v)); }\n to_numeric(v: JSValue): JSValue { return this.check(JS_ToNumericFree(this.ctx, v)); }\n inc(v: JSValue): JSValue { return this.check(js_unary_arith_slow(this.ctx, JSUnaryOp.INC, v)); }\n dec(v: JSValue): JSValue { return this.check(js_unary_arith_slow(this.ctx, JSUnaryOp.DEC, v)); }\n in(k: JSValue, o: JSValue): boolean {\n const r = js_operator_in(this.ctx, k, o);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n instanceof(v: JSValue, c: JSValue): boolean {\n const r = JS_IsInstanceOf(this.ctx, v, c);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n get_prototype(o: JSValue): JSValue { return this.check(JS_GetPrototype(this.ctx, o)); }\n\n /* --- calls --- */\n /* call with an explicit this when the callee has no direct entry (not a guest function) */\n call_slow(f: JSValue, thisv: JSValue, args: JSValue[]): JSValue {\n return this.check(JS_CallInternal(this.ctx, f, thisv, undefined, args, 0));\n }\n construct_slow(f: JSValue, new_target: JSValue, args: JSValue[]): JSValue {\n return this.check(JS_CallConstructorInternal(this.ctx, f, new_target, args, 0));\n }\n /* method call on a primitive receiver (looked up on the guest prototype of its type) */\n call_method_prim(o: JSValue, atom: JSAtom, args: JSValue[]): JSValue {\n const f = this.check(JS_GetProperty(this.ctx, o, atom));\n return this.check(JS_CallInternal(this.ctx, f, o, undefined, args, 0));\n }\n call_method_prim_key(o: JSValue, key: JSValue, args: JSValue[]): JSValue {\n const f = this.check(JS_GetPropertyValue(this.ctx, o, key));\n return this.check(JS_CallInternal(this.ctx, f, o, undefined, args, 0));\n }\n apply(f: JSValue, thisv: JSValue, arr: JSValue, magic: number): JSValue {\n return this.check(js_function_apply(this.ctx, f, [thisv, arr], magic));\n }\n create_this(new_target: JSValue): JSValue {\n /* fast path: an ordinary guest function with an object `prototype` (the property read is\n native, as the host does for `new`) */\n if (typeof new_target === 'function' && js_meta.get(new_target)?.class_id !== JSClassID.PROXY) {\n const p = (new_target as any).prototype;\n if (typeof p === 'object' && p !== null) return Object.create(p);\n }\n return this.check(js_create_from_ctor(this.ctx, new_target, JSClassID.OBJECT));\n }\n /* `off` is the index of the first guest argument in the host `arguments` object (2 for the\n direct convention, 0 for the natural one) */\n init_ctor(self: JSValue, new_target: JSValue, args: IArguments, off: number): JSValue {\n if (new_target === undefined) this.throw_type_error(\"class constructors must be invoked with 'new'\");\n const sup = this.check(JS_GetPrototype(this.ctx, self));\n return this.check(JS_CallConstructor2(this.ctx, sup, new_target, Array.prototype.slice.call(args, off)));\n }\n arguments(args: IArguments, off: number): JSValue {\n return this.check(js_build_arguments_value(this.ctx, Array.prototype.slice.call(args, off)));\n }\n /* legacy arguments object aliasing the argument cells through accessor properties */\n mapped_arguments(args: IArguments, off: number, cells: JSVarRef[], self: JSValue): JSValue {\n const ctx = this.ctx;\n const argv: JSValue[] = Array.prototype.slice.call(args, off);\n const argc = argv.length;\n const val = this.check(JS_NewObjectProtoClass(ctx, ctx.class_proto[JSClassID.OBJECT], JSClassID.MAPPED_ARGUMENTS));\n JS_DefinePropertyValue(ctx, val, JS_ATOM_length, argc, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n const n = Math.min(argc, cells.length);\n for (let i = 0; i < n; i++) {\n const cell = cells[i];\n const getter = js_new_host_function(ctx, () => cell.get(), false, '', 0, ctx.function_proto, JSClassID.C_FUNCTION);\n const setter = js_new_host_function(ctx, (_t, _nt, a) => { cell.set(a[0]); return undefined; }, false, '', 1,\n ctx.function_proto, JSClassID.C_FUNCTION);\n Reflect.defineProperty(val as object, i, { get: getter as any, set: setter as any, enumerable: true, configurable: true });\n }\n for (let i = n; i < argc; i++) this.checkn(JS_DefinePropertyValueUint32(ctx, val, i, argv[i], JS_PROP_C_W_E));\n JS_DefinePropertyValue(ctx, val, JS_ATOM_Symbol_iterator, ctx.array_proto_values, JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE);\n JS_DefinePropertyValue(ctx, val, JS_ATOM_callee, self, JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE);\n return val;\n }\n rest(args: IArguments, off: number, first: number): JSValue {\n const argv: JSValue[] = Array.prototype.slice.call(args, off);\n return this.check(js_build_rest(this.ctx, first, argv.length, argv));\n }\n home_object(self: JSValue): JSValue {\n return JS_GetFunctionData(self)?.home_object ?? undefined;\n }\n\n /* --- closures and classes --- */\n /* guest function object for bytecode `b` with the given variable references (fclosure).\n When `b` is compiled the object is the generated forwarder, else an interpreter wrapper\n that the call hook tiers up later. */\n closure(b: JSFunctionBytecode, var_refs: JSVarRef[], _parent: JSValue): JSValue {\n const ctx = this.ctx;\n const class_id = func_kind_to_class_id(b.func_kind);\n const proto = ctx.class_proto[class_id] ?? ctx.function_proto;\n let fo: JSValue | null = null;\n if (b.func_kind === JSFunctionKind.NORMAL && !b.no_jit) {\n const c = this.compile(b);\n if (c) {\n const [f, direct, mkpriv] = c.make(var_refs);\n const m = new JSObjectMeta(JSClassID.BYTECODE_FUNCTION);\n m.func = new JSFunctionData(b, var_refs);\n m.func.compiled = direct;\n m.func.mkpriv = mkpriv;\n m.is_constructor = b.has_prototype;\n m.realm = b.realm ?? ctx;\n js_meta.set(f, m);\n js_direct.set(f, direct);\n Object.setPrototypeOf(f, proto);\n /* a host `function` has an own `prototype` object with a host prototype chain */\n if (Object.prototype.hasOwnProperty.call(f, 'prototype')) (f as any).prototype = undefined;\n fo = f;\n }\n }\n if (fo === null) fo = this.check(js_closure_from_refs(ctx, b, var_refs, proto, b.has_prototype));\n let name_atom = b.func_name;\n if (name_atom === JS_ATOM_NULL) name_atom = JS_ATOM_empty_string;\n js_function_set_properties(ctx, fo, name_atom, b.defined_arg_count);\n if (b.func_kind & JSFunctionKind.GENERATOR) {\n const proto_class_id = (b.func_kind === JSFunctionKind.ASYNC_GENERATOR) ? JSClassID.ASYNC_GENERATOR : JSClassID.GENERATOR;\n const gproto = this.check(JS_NewObjectProto(ctx, ctx.class_proto[proto_class_id]));\n JS_DefinePropertyValue(ctx, fo, JS_ATOM_prototype, gproto, JS_PROP_WRITABLE);\n } else if (b.has_prototype) {\n const pobj = this.check(JS_NewObject(ctx));\n this.checkn(JS_DefinePropertyValue(ctx, pobj, JS_ATOM_constructor, fo, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE));\n this.checkn(JS_DefinePropertyValue(ctx, fo, JS_ATOM_prototype, pobj, JS_PROP_WRITABLE));\n }\n return fo;\n }\n define_class(name: JSAtom | JSValue, parent_class: JSValue, b: JSFunctionBytecode, class_flags: number,\n var_refs: JSVarRef[], is_computed_name: boolean): [JSValue, JSValue] {\n const r = js_define_class(this.ctx, is_computed_name ? JS_ATOM_NULL : (name as JSAtom), class_flags, parent_class, b, var_refs,\n is_computed_name, is_computed_name ? (name as JSValue) : undefined);\n if (r === null) this.throw_pending();\n return r;\n }\n set_home_object(f: JSValue, home: JSValue): void { js_method_set_home_object(this.ctx, f, home); }\n set_name(f: JSValue, atom: JSAtom): void { this.checkn(JS_DefineObjectName(this.ctx, f, atom, JS_PROP_CONFIGURABLE)); }\n set_name_computed(f: JSValue, name: JSValue): void { this.checkn(JS_DefineObjectNameComputed(this.ctx, f, name, JS_PROP_CONFIGURABLE)); }\n define_method(obj: JSValue, key: JSAtom | JSValue, fn: JSValue, op_flags: number, computed: boolean): void {\n const ctx = this.ctx;\n let atom: JSAtom;\n if (computed) {\n atom = JS_ValueToAtom(ctx, key as JSValue);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n } else {\n atom = key as JSAtom;\n }\n let fl = JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE | JS_PROP_HAS_ENUMERABLE | JS_PROP_THROW;\n if (op_flags & OP_DEFINE_METHOD_ENUMERABLE) fl |= JS_PROP_ENUMERABLE;\n op_flags &= 3;\n let value: JSValue = undefined, getter: JSValue = undefined, setter: JSValue = undefined;\n if (op_flags === OP_DEFINE_METHOD_METHOD) { value = fn; fl |= JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE; }\n else if (op_flags === OP_DEFINE_METHOD_GETTER) { getter = fn; fl |= JS_PROP_HAS_GET; }\n else { setter = fn; fl |= JS_PROP_HAS_SET; }\n this.checkn(js_method_set_properties(ctx, fn, atom, fl, obj));\n this.checkn(JS_DefineProperty(ctx, obj, atom, value, getter, setter, fl));\n }\n set_proto(o: JSValue, proto: JSValue): void {\n if (JS_IsObject(proto) || proto === null) this.checkn(JS_SetPrototypeInternal(this.ctx, o, proto, true));\n }\n check_brand(o: JSValue, f: JSValue): void {\n const r = JS_CheckBrand(this.ctx, o, f);\n if (r < 0) this.throw_pending();\n if (!r) this.throw_type_error('invalid brand on object');\n }\n add_brand(o: JSValue, f: JSValue): void { this.checkn(JS_AddBrand(this.ctx, o, f)); }\n get_private_field(o: JSValue, name: JSValue): JSValue { return this.check(JS_GetPrivateField(this.ctx, o, name)); }\n put_private_field(o: JSValue, name: JSValue, v: JSValue): void { this.checkn(JS_SetPrivateField(this.ctx, o, name, v)); }\n define_private_field(o: JSValue, name: JSValue, v: JSValue): void { this.checkn(JS_DefinePrivateField(this.ctx, o, name, v)); }\n private_in(o: JSValue, name: JSValue): boolean {\n const r = js_operator_private_in(this.ctx, o, name);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n\n /* --- globals --- */\n check_var(atom: JSAtom): boolean {\n const r = JS_CheckGlobalVar(this.ctx, atom);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n get_global(atom: JSAtom, throw_ref_error: boolean): JSValue {\n return this.check(JS_GetGlobalVar(this.ctx, atom, throw_ref_error ? 1 : 0));\n }\n /* JS_SetGlobalVar with an explicit strict flag (the engine's version reads the strictness\n from the current interpreter frame, which does not exist for compiled code) */\n put_global(atom: JSAtom, v: JSValue, flag: number, strict: boolean): void {\n const ctx = this.ctx;\n if (flag === 1 || !strict || (JS_AtomToKey(ctx, atom) in ctx.global_var_obj)) {\n this.checkn(JS_SetGlobalVar(ctx, atom, v, flag));\n return;\n }\n const ret = JS_HasProperty(ctx, ctx.global_obj, atom);\n if (ret < 0) this.throw_pending();\n if (!ret) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n this.checkn(JS_SetPropertyInternal(ctx, ctx.global_obj, atom, v, ctx.global_obj, JS_PROP_THROW));\n }\n put_global_strict(atom: JSAtom, defined: JSValue, v: JSValue): void {\n const ctx = this.ctx;\n if (!defined) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n if (JS_AtomToKey(ctx, atom) in ctx.global_var_obj) { this.checkn(JS_SetGlobalVar(ctx, atom, v, 2)); return; }\n this.checkn(JS_SetPropertyInternal(ctx, ctx.global_obj, atom, v, ctx.global_obj, JS_PROP_THROW));\n }\n check_define_var(atom: JSAtom, flags: number): void { if (JS_CheckDefineGlobalVar(this.ctx, atom, flags)) this.throw_pending(); }\n define_var(atom: JSAtom, flags: number): void { this.checkn(JS_DefineGlobalVar(this.ctx, atom, flags)); }\n define_func(atom: JSAtom, v: JSValue, flags: number): void { this.checkn(JS_DefineGlobalFunction(this.ctx, atom, v, flags)); }\n get_global_ref(atom: JSAtom): [JSValue, JSValue] {\n const r = JS_GetGlobalVarRef(this.ctx, atom);\n if (!r) this.throw_pending();\n return r as [JSValue, JSValue];\n }\n delete_global(atom: JSAtom): boolean {\n const r = JS_DeleteProperty(this.ctx, this.ctx.global_obj, atom, 0);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n\n /* --- properties (slow paths: primitive bases and runtime-dependent semantics) --- */\n get_field(o: JSValue, atom: JSAtom): JSValue { return this.check(JS_GetProperty(this.ctx, o, atom)); }\n get_field_str(o: JSValue, name: string): JSValue {\n return this.check(JS_GetProperty(this.ctx, o, this.ctx.rt.atoms.newAtomStr(name)));\n }\n get_length(o: JSValue): JSValue { return this.check(JS_GetProperty(this.ctx, o, JS_ATOM_length)); }\n get_el(o: JSValue, k: JSValue): JSValue { return this.check(JS_GetPropertyValue(this.ctx, o, k)); }\n put_field(o: JSValue, atom: JSAtom, v: JSValue, strict: boolean): void {\n this.checkn(JS_SetPropertyInternal(this.ctx, o, atom, v, o, strict ? JS_PROP_THROW : 0));\n }\n put_el(o: JSValue, k: JSValue, v: JSValue, strict: boolean): void {\n this.checkn(JS_SetPropertyValue(this.ctx, o, k, v, strict ? JS_PROP_THROW : 0));\n }\n delete(o: JSValue, k: JSValue, strict: boolean): boolean {\n const atom = JS_ValueToAtom(this.ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n const r = JS_DeleteProperty(this.ctx, o, atom, strict ? JS_PROP_THROW : 0);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n define_field(o: JSValue, atom: JSAtom, v: JSValue): void {\n this.checkn(JS_DefinePropertyValue(this.ctx, o, atom, v, JS_PROP_C_W_E | JS_PROP_THROW));\n }\n define_array_el(arr: JSValue, pos: JSValue, v: JSValue): void {\n this.checkn(JS_DefinePropertyValueValue(this.ctx, arr, pos, v, JS_PROP_C_W_E | JS_PROP_THROW));\n }\n append(arr: JSValue, pos: JSValue, src: JSValue): number {\n if (typeof pos !== 'number') this.throw_internal_error('invalid index for append');\n const r = js_append_enumerate_value(this.ctx, arr, pos as number, src);\n if (r < 0) this.throw_pending();\n return r;\n }\n copy_data_properties(target: JSValue, source: JSValue, excluded: JSValue): void {\n if (JS_CopyDataProperties(this.ctx, target, source, excluded, false)) this.throw_pending();\n }\n get_ref_value(o: JSValue, k: JSValue, strict: boolean): JSValue {\n const ctx = this.ctx;\n const atom = JS_ValueToAtom(ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n if (o === undefined) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n const r = JS_HasProperty(ctx, o, atom);\n if (r < 0) this.throw_pending();\n if (!r) {\n if (strict) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n return undefined;\n }\n return this.check(JS_GetProperty(ctx, o, atom));\n }\n put_ref_value(o: JSValue, k: JSValue, v: JSValue, strict: boolean): void {\n const ctx = this.ctx;\n const atom = JS_ValueToAtom(ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n if (o === undefined) {\n if (strict) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n o = ctx.global_obj;\n }\n const r = JS_HasProperty(ctx, o, atom);\n if (r < 0) this.throw_pending();\n if (!r && strict) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n this.checkn(JS_SetPropertyInternal(ctx, o, atom, v, o, strict ? JS_PROP_THROW : 0));\n }\n get_super_value(thisv: JSValue, o: JSValue, k: JSValue): JSValue {\n const atom = JS_ValueToAtom(this.ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n return this.check(JS_GetPropertyInternal(this.ctx, o, atom, thisv, false));\n }\n put_super_value(thisv: JSValue, o: JSValue, k: JSValue, v: JSValue): void {\n if (!JS_IsObject(o)) { JS_ThrowTypeErrorNotAnObject(this.ctx); this.throw_pending(); }\n const atom = JS_ValueToAtom(this.ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n this.checkn(JS_SetPropertyInternal(this.ctx, o, atom, v, thisv, JS_PROP_THROW));\n }\n\n /* --- iteration --- */\n for_in_start(o: JSValue): JSValue { return this.check(build_for_in_iterator(this.ctx, o)); }\n for_in_next(it: JSValue): JSValue {\n const pdone = { done: 0 };\n const v = this.check(js_for_in_next(this.ctx, it, pdone));\n return pdone.done ? this.DONE : v;\n }\n get_iterator(o: JSValue): JSValue { return this.check(JS_GetIterator(this.ctx, o, false)); }\n for_of_start(o: JSValue): [JSValue, JSValue] {\n const r = js_for_of_start_value(this.ctx, o, false);\n if (r === null) this.throw_pending();\n return r;\n }\n for_of_next(iter: JSValue, next: JSValue): JSValue {\n if (iter === undefined) return this.DONE;\n const r = js_for_of_next_value(this.ctx, iter, next);\n if (r === null) this.throw_pending();\n return r.done ? this.DONE : r.value;\n }\n iterator_close(iter: JSValue): void {\n if (JS_IteratorClose(this.ctx, iter, false) < 0) this.throw_pending();\n }\n /* close an iterator while an exception is propagating: errors from return() are ignored */\n iterator_close_exc(iter: JSValue): void {\n if (iter === undefined) return;\n const ctx = this.ctx;\n const method = JS_GetProperty(ctx, iter, JS_ATOM_return);\n if (JS_IsException(method)) { JS_GetException(ctx); return; }\n if (method === undefined || method === null) return;\n const r = JS_Call(ctx, method, iter, []);\n if (JS_IsException(r)) JS_GetException(ctx);\n }\n iterator_call(iter: JSValue, val: JSValue, flags: number): JSValue {\n const ctx = this.ctx;\n const method = this.check(JS_GetProperty(ctx, iter, (flags & 1) ? JS_ATOM_throw : JS_ATOM_return));\n if (method === undefined || method === null) return this.DONE;\n return this.check(JS_Call(ctx, method, iter, (flags & 2) ? [] : [val]));\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"jit_runtime.js","sourceRoot":"","sources":["../src/jit_runtime.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Runtime adapter for the compiled tier (src/jit.ts).\n *\n * This is the ONLY module that generated code talks to, and the only\n * place where the compiled tier touches engine internals. Generated code\n * receives one `JitRuntime` instance per context as `$RT`, plus a few\n * host intrinsics and engine tables as factory parameters (see\n * JIT_FACTORY_PARAMS).\n *\n * Conventions:\n * - every helper either returns a guest value or `throw`s a guest value\n * (the engine's JS_EXCEPTION/current_exception convention is converted\n * here by `check()`/`throw_pending()`);\n * - `DONE` is a sentinel returned by the iteration helpers;\n * - the direct entry of a guest function (js_direct) uses the explicit\n * convention `direct($this, $new_target, ...args)`; compiled code calls\n * it when it has an explicit `this` or new.target, and calls guest\n * functions natively otherwise.\n */\nimport {\n JSContext, JSValue, JSFunctionBytecode, JSAtom, JS_EXCEPTION, JS_UNINITIALIZED, JS_IsException, JS_IsObject,\n JS_GetException, js_take_exception, js_host_exception_to_guest, JS_ThrowTypeError, JS_ThrowReferenceError,\n JS_ThrowInternalError, JS_ThrowStackOverflow, JS_ThrowTypeErrorReadOnly, JS_ThrowSyntaxErrorAtom,\n JS_ThrowReferenceErrorUninitialized, JS_ThrowReferenceErrorNotDefined, JS_ThrowReferenceErrorUninitialized2,\n JS_ThrowTypeErrorNotAnObject, JS_GetProperty, JS_GetPropertyInternal, JS_GetPropertyValue, JS_SetPropertyInternal,\n JS_SetPropertyValue, JS_DefinePropertyValue, JS_DefinePropertyValueValue, JS_DefinePropertyValueUint32, JS_DefineProperty,\n JS_DeleteProperty, JS_HasProperty, JS_GetPrototype, JS_SetPrototypeInternal, JS_NewObject, JS_NewObjectProto,\n JS_NewObjectProtoClass, JS_NewArrayFrom, JS_ValueToAtom, JS_AtomToValue, JS_AtomToKey, JS_NewSymbolFromAtom, JS_ToObject,\n JS_ToPropertyKey, JS_ToNumericFree, JS_IsInstanceOf, js_operator_in, js_unary_arith_slow, JSUnaryOp, JS_GetIterator,\n JS_IteratorNext, JS_IteratorClose, build_for_in_iterator, js_for_in_next, JS_CopyDataProperties, JS_Call,\n JS_CallConstructorInternal, JS_CallConstructor2, js_create_from_ctor, JS_CheckGlobalVar, JS_GetGlobalVar, JS_SetGlobalVar,\n JS_CheckDefineGlobalVar, JS_DefineGlobalVar, JS_DefineGlobalFunction, JS_GetGlobalVarRef, hooks, js_meta, js_direct,\n JS_GetFunctionData, js_new_host_function, js_init_host_function, JS_ATOM_NULL, JS_ATOM_next, JS_ATOM_return, JS_ATOM_throw, JS_ATOM_length,\n JS_ATOM_prototype, JS_ATOM_callee, JS_ATOM_Symbol_iterator, JS_ATOM_empty_string, JS_ATOM_TYPE_PRIVATE, JS_ATOM_constructor,\n JS_IsUncatchableError, JS_SetUncatchableError,\n} from './quickjs.ts';\nimport {\n JSClassID, JSFunctionKind, JSVarRef, JSFunctionData, JSObjectMeta, new_var_ref_cell, JS_PROP_C_W_E, JS_PROP_THROW,\n JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_ENUMERABLE,\n JS_PROP_HAS_VALUE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_GET, JS_PROP_HAS_SET, JS_CALL_FLAG_CONSTRUCTOR,\n} from './values.ts';\nimport {\n JS_CallInternal, js_closure_from_refs, js_function_set_properties, js_define_class, js_build_arguments_value, js_build_rest,\n JS_DefinePrivateField, JS_GetPrivateField, JS_SetPrivateField, JS_AddBrand, JS_CheckBrand, js_operator_private_in,\n js_method_set_home_object, js_method_set_properties, JS_DefineObjectName, JS_DefineObjectNameComputed, js_function_apply,\n js_for_of_start_value, js_for_of_next_value, js_append_enumerate_value,\n} from './interpreter.ts';\nimport { OP, short_opcode_info, OPSpecialObject } from './opcodes.ts';\nimport { OP_DEFINE_METHOD_ENUMERABLE, OP_DEFINE_METHOD_METHOD, OP_DEFINE_METHOD_GETTER, JS_THROW_VAR_RO, JS_THROW_VAR_REDECL,\n JS_THROW_VAR_UNINITIALIZED, JS_THROW_ERROR_DELETE_SUPER, JS_THROW_ERROR_ITERATOR_THROW } from './opcodes.ts';\n\n/* what jit.ts produces for a bytecode function (see JitCompiled in jit.ts) */\nexport interface JitCompiledLike {\n /* returns [function object, direct entry, private copy factory]; `func_obj` overrides the\n function object (used when an existing interpreter wrapper is tiered up) */\n make: (var_refs: JSVarRef[], func_obj?: JSValue) => [Function, Function, (() => Function) | null];\n}\n\n/* parameters of the generated factory function, in order */\nexport const JIT_FACTORY_PARAMS = ['$RT', '$cpool', '$b', '$U', '$D', '$Obj', '$set', '$del', '$getproto', '$DIRECT', '$P', '$G', '$GV',\n '$CALL', '$CONSTRUCT', '$C'];\n\nexport function jit_runtime_factory_args(RT: JitRuntime, b: JSFunctionBytecode): any[] {\n return [RT, b.cpool, b, JS_UNINITIALIZED, RT.DONE, RT.Obj, Reflect.set, Reflect.deleteProperty, Object.getPrototypeOf,\n js_direct, RT.ctx.plain_object_proto, RT.ctx.global_obj, RT.ctx.global_var_obj, Function.prototype.call, Reflect.construct,\n RT.ctx];\n}\n\nconst runtimes = new WeakMap<JSContext, JitRuntime>();\n\n/* `compile(b)` returns the compiled form of `b` if it is (or should now be) compiled, else null */\nexport function make_jit_runtime(ctx: JSContext, compile: (b: JSFunctionBytecode) => JitCompiledLike | null): JitRuntime {\n let rt = runtimes.get(ctx);\n if (!rt) { rt = new JitRuntime(ctx, compile); runtimes.set(ctx, rt); }\n return rt;\n}\n\n/* Call a compiled body through its private host-convention copy (`fd.priv`): the engine's\n ordinary (non-construct) calls of compiled functions. */\nexport function jit_runtime_call_priv(ctx: JSContext, priv: Function, this_obj: JSValue, argv: JSValue[]): JSValue {\n const rt = ctx.rt;\n if (rt.stack_depth >= rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n rt.stack_depth++;\n const sf = rt.current_stack_frame;\n try {\n return priv.apply(this_obj, argv);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n } finally {\n rt.current_stack_frame = sf;\n rt.stack_depth--;\n }\n}\n\n/* ---------------------------------------------------------------------\n Retargetable wrappers\n\n The function object of a closure created by the interpreter (or by compiled code before the\n function's bytecode is compiled) is a wrapper that calls the compiled body as soon as one\n exists for the closure (JSFunctionData.priv for calls, .ctor for construct calls) and the\n engine otherwise, so its identity survives tier-up. The wrappers are generated once per\n (kind, arity) without rest parameters: a call is `fd.priv.call(this, a0, a1)`, which the host\n inlines (measured: the same cost as calling the compiled function directly, also for `new`).\n --------------------------------------------------------------------- */\n\n/* the body reads `arguments` (or a rest parameter, or init_ctor's arguments): its wrapper must\n forward the exact argument list. Cached on the bytecode. */\nexport function jit_bytecode_uses_args(b: JSFunctionBytecode): boolean {\n if (b.uses_args >= 0) return b.uses_args === 1;\n const buf = b.byte_code_buf, len = b.byte_code_len;\n let r = 0;\n for (let pos = 0; pos < len;) {\n const op = buf[pos];\n if (op === OP.rest || op === OP.init_ctor) { r = 1; break; }\n if (op === OP.special_object) {\n const k = buf[pos + 1];\n if (k === OPSpecialObject.ARGUMENTS || k === OPSpecialObject.MAPPED_ARGUMENTS) { r = 1; break; }\n }\n const oi = short_opcode_info(op);\n if (!oi || oi.size <= 0) { r = 1; break; }\n pos += oi.size;\n }\n b.uses_args = r;\n return r === 1;\n}\n\ntype SlowCall = (w: Function, t: JSValue, nt: JSValue, args: ArrayLike<JSValue>) => JSValue;\ntype WrapperFactory = (fd: JSFunctionData, slow: SlowCall) => Function;\nconst MAX_WRAPPER_ARITY = 12;\n\n/* The wrapper code is generated once per function (bytecode), not once per arity: the call\n `p.call(this, a0)` inside a wrapper shared by many functions sees many targets and the host\n stops inlining it (measured in Bun: 1.75x the cost of a direct call, against 1x for a\n per-function wrapper). Closures of the same function share their wrapper's code. */\nfunction wrapper_factory(b: JSFunctionBytecode, is_ctor: boolean): WrapperFactory | null {\n /* cached per kind (constructible or not): a function is normally wrapped as one kind only */\n const slot = is_ctor ? 'f' : 'm';\n if (b.wrapper_factory === null) b.wrapper_factory = { f: undefined, m: undefined };\n const cached = b.wrapper_factory[slot];\n if (cached !== undefined) return cached;\n const arity = b.arg_count;\n let use_args = jit_bytecode_uses_args(b);\n if (arity > MAX_WRAPPER_ARITY) use_args = true;\n let f: WrapperFactory | null;\n const params = use_args ? '' : Array.from({ length: arity }, (_, i) => `a${i}`).join(', ');\n const call_p = use_args ? 'p.apply(this, arguments)' : `p.call(this${params ? ', ' + params : ''})`;\n const call_c = use_args ? 'c(t, new.target, ...arguments)' : `c(t, new.target${params ? ', ' + params : ''})`;\n const src = is_ctor\n ? `\"use strict\"; return function (fd, slow) { return function $w(${params}) {\n if (new.target === undefined) { const p = fd.priv; if (p !== null) return ${call_p}; }\n else { const c = fd.ctor; if (c !== null) { const xp = new.target.prototype; const t = (typeof xp === 'object' ? xp !== null : typeof xp === 'function') ? this : undefined; return ${call_c}; } }\n return slow($w, this, new.target, arguments);\n}; };`\n : `\"use strict\"; return function (fd, slow) { let w; const o = { $w(${params}) {\n const p = fd.priv; if (p !== null) return ${call_p};\n return slow(w, this, undefined, arguments);\n} }; w = o.$w; return w; };`;\n try { f = (new Function(src) as () => WrapperFactory)(); } catch { f = null; /* code generation unavailable */ }\n b.wrapper_factory[slot] = f;\n return f;\n}\n\nconst slow_calls = new WeakMap<JSContext, SlowCall>();\nfunction slow_call(ctx: JSContext): SlowCall {\n let s = slow_calls.get(ctx);\n if (s === undefined) {\n s = (w, t, nt, args) => {\n const argv: JSValue[] = new Array(args.length);\n for (let i = 0; i < args.length; i++) argv[i] = args[i];\n const ret = nt !== undefined ? JS_CallInternal(ctx, w, nt, nt, argv, JS_CALL_FLAG_CONSTRUCTOR)\n : JS_CallInternal(ctx, w, t, undefined, argv, 0);\n if (ret === JS_EXCEPTION) throw js_take_exception(ctx);\n return ret;\n };\n slow_calls.set(ctx, s);\n }\n return s;\n}\n\n/* the function object of a closure of a normal function: a retargetable wrapper, or null when\n wrappers cannot be generated (the engine then uses its generic wrapper) */\nexport function jit_runtime_make_wrapper(ctx: JSContext, b: JSFunctionBytecode, var_refs: JSVarRef[],\n proto: JSValue | null, is_ctor: boolean): JSValue | null {\n const fac = wrapper_factory(b, is_ctor);\n if (fac === null) return null;\n const fd = new JSFunctionData(b, var_refs);\n const slow = slow_call(ctx);\n const w = fac(fd, slow);\n /* a host `function` has an own `prototype` object with a host prototype chain */\n if (is_ctor) (w as any).prototype = undefined;\n const m = js_init_host_function(ctx, w, is_ctor, '', b.defined_arg_count, proto, func_kind_to_class_id(b.func_kind));\n m.func = fd;\n m.realm = b.realm ?? ctx;\n js_direct.set(w, (t: JSValue, nt: JSValue, ...args: JSValue[]) => {\n if (nt === undefined) { const p = fd.priv; if (p !== null) return p.apply(t, args); }\n return slow(w, t, nt, args);\n });\n return w;\n}\n\n/* Call the direct entry of a compiled function from the engine (JS_CallInternal). */\nexport function jit_runtime_call_compiled(ctx: JSContext, direct: Function, this_obj: JSValue, new_target: JSValue,\n argv: JSValue[], flags: number): JSValue {\n const rt = ctx.rt;\n if (rt.stack_depth >= rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n rt.stack_depth++;\n const sf = rt.current_stack_frame;\n try {\n /* construct call (JS_CallConstructorInternal passes new_target as this_obj, like C): the\n callee creates `this`. The interpreter's legacy constructor path calls back with the flag\n cleared, new_target set and `this` already created: the compiled prologue keeps it. */\n if (flags & JS_CALL_FLAG_CONSTRUCTOR) return (direct as any)(undefined, new_target, ...argv);\n return (direct as any)(this_obj, new_target, ...argv);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n } finally {\n rt.current_stack_frame = sf;\n rt.stack_depth--;\n }\n}\n\nfunction func_kind_to_class_id(kind: JSFunctionKind): JSClassID {\n switch (kind) {\n case JSFunctionKind.GENERATOR: return JSClassID.GENERATOR_FUNCTION;\n case JSFunctionKind.ASYNC: return JSClassID.ASYNC_FUNCTION;\n case JSFunctionKind.ASYNC_GENERATOR: return JSClassID.ASYNC_GENERATOR_FUNCTION;\n default: return JSClassID.BYTECODE_FUNCTION;\n }\n}\n\nexport class JitRuntime {\n ctx: JSContext;\n compile: (b: JSFunctionBytecode) => JitCompiledLike | null;\n /* sentinel returned by iteration helpers */\n DONE: any = Symbol('jit.done');\n /* host constructor whose .prototype is the guest Object.prototype: `new $Obj()` creates an\n object literal (measured ~0.7 ns vs ~27 ns for `{__proto__: proto}`) */\n Obj: Function;\n\n constructor(ctx: JSContext, compile: (b: JSFunctionBytecode) => JitCompiledLike | null) {\n this.ctx = ctx;\n this.compile = compile;\n const Obj = function () {};\n Obj.prototype = ctx.class_proto[JSClassID.OBJECT] as any;\n this.Obj = Obj;\n }\n\n /* --- exception plumbing --- */\n throw_pending(): never {\n throw js_take_exception(this.ctx);\n }\n check<T>(v: T): T {\n if (v === (JS_EXCEPTION as unknown)) this.throw_pending();\n return v;\n }\n checkn(r: number): void {\n if (r < 0) this.throw_pending();\n }\n /* host exception -> guest exception value (guest values pass through) */\n to_guest_exception(e: unknown): JSValue {\n if (!(e instanceof Error) && e !== (JS_EXCEPTION as unknown)) return e as JSValue;\n js_host_exception_to_guest(this.ctx, e);\n return js_take_exception(this.ctx);\n }\n /* a guest `catch` (or the handler that runs `finally`, or closes an iterator) takes the\n exception, unless it is uncatchable (an interrupt): that one goes on unwinding, without\n running handlers, as in the interpreter */\n catchable(e: unknown): JSValue {\n const v = this.to_guest_exception(e);\n if (JS_IsUncatchableError(this.ctx, v)) throw v;\n return v;\n }\n\n /* --- interrupts --- */\n /* compiled code polls at every function entry and loop head, as the interpreter polls at\n its jumps. Generated code decrements `ctx.interrupt_counter` inline and calls\n poll_handler() when it runs out; poll() is the same check as a call. Every 10000 polls\n the runtime's interrupt handler is asked, and a request to stop throws an uncatchable\n InternalError */\n poll(): void {\n if (--this.ctx.interrupt_counter > 0) return;\n this.poll_handler();\n }\n poll_handler(): void {\n const ctx = this.ctx;\n ctx.interrupt_counter = 10000;\n const rt = ctx.rt;\n if (rt.interrupt_handler === null || !rt.interrupt_handler(rt, rt.interrupt_opaque)) return;\n JS_ThrowInternalError(ctx, 'interrupted');\n JS_SetUncatchableError(ctx, rt.current_exception, true);\n this.throw_pending();\n }\n throw_type_error(msg: string): never { JS_ThrowTypeError(this.ctx, msg); this.throw_pending(); }\n throw_reference_error(msg: string): never { JS_ThrowReferenceError(this.ctx, msg); this.throw_pending(); }\n throw_internal_error(msg: string): never { JS_ThrowInternalError(this.ctx, msg); this.throw_pending(); }\n throw_not_a_constructor(_f: JSValue): never { this.throw_type_error('not a constructor'); }\n throw_uninitialized(b: JSFunctionBytecode, idx: number, is_ref: boolean): never {\n JS_ThrowReferenceErrorUninitialized2(this.ctx, b, idx, is_ref);\n this.throw_pending();\n }\n throw_error(atom: JSAtom, type: number): never {\n const ctx = this.ctx;\n if (type === JS_THROW_VAR_RO) JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, atom);\n else if (type === JS_THROW_VAR_REDECL) JS_ThrowSyntaxErrorAtom(ctx, \"redeclaration of '%s'\", atom);\n else if (type === JS_THROW_VAR_UNINITIALIZED) JS_ThrowReferenceErrorUninitialized(ctx, atom);\n else if (type === JS_THROW_ERROR_DELETE_SUPER) JS_ThrowReferenceError(ctx, \"unsupported reference to 'super'\");\n else if (type === JS_THROW_ERROR_ITERATOR_THROW) JS_ThrowTypeError(ctx, 'iterator does not have a throw method');\n else JS_ThrowInternalError(ctx, 'invalid throw var type ' + type);\n this.throw_pending();\n }\n\n /* --- values --- */\n new_cell(v: JSValue): JSVarRef { return new_var_ref_cell(v); }\n new_object(): JSValue { return this.check(JS_NewObject(this.ctx)); }\n new_object_null(): JSValue { return this.check(JS_NewObjectProto(this.ctx, null)); }\n /* array literal: takes ownership of the host array and re-prototypes it */\n array(elems: JSValue[]): JSValue { return JS_NewArrayFrom(this.ctx, elems); }\n atom_value(atom: JSAtom): JSValue { return JS_AtomToValue(this.ctx, atom); }\n private_symbol(atom: JSAtom): JSValue { return JS_NewSymbolFromAtom(this.ctx, atom, JS_ATOM_TYPE_PRIVATE); }\n sloppy_this(t: JSValue): JSValue {\n if (JS_IsObject(t)) return t;\n if (t === undefined || t === null) return this.ctx.global_obj;\n return this.check(JS_ToObject(this.ctx, t));\n }\n regexp(pattern: JSValue, flags: JSValue): JSValue {\n if (!hooks.js_regexp_constructor_internal) this.throw_internal_error('RegExp is not available');\n return this.check(hooks.js_regexp_constructor_internal(this.ctx, undefined, pattern as string, flags as string));\n }\n to_object(v: JSValue): JSValue { return this.check(JS_ToObject(this.ctx, v)); }\n to_propkey(v: JSValue): JSValue { return this.check(JS_ToPropertyKey(this.ctx, v)); }\n to_numeric(v: JSValue): JSValue { return this.check(JS_ToNumericFree(this.ctx, v)); }\n inc(v: JSValue): JSValue { return this.check(js_unary_arith_slow(this.ctx, JSUnaryOp.INC, v)); }\n dec(v: JSValue): JSValue { return this.check(js_unary_arith_slow(this.ctx, JSUnaryOp.DEC, v)); }\n in(k: JSValue, o: JSValue): boolean {\n const r = js_operator_in(this.ctx, k, o);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n instanceof(v: JSValue, c: JSValue): boolean {\n const r = JS_IsInstanceOf(this.ctx, v, c);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n get_prototype(o: JSValue): JSValue { return this.check(JS_GetPrototype(this.ctx, o)); }\n\n /* --- calls --- */\n /* call with an explicit this when the callee has no direct entry (not a guest function) */\n call_slow(f: JSValue, thisv: JSValue, args: JSValue[]): JSValue {\n return this.check(JS_CallInternal(this.ctx, f, thisv, undefined, args, 0));\n }\n construct_slow(f: JSValue, new_target: JSValue, args: JSValue[]): JSValue {\n return this.check(JS_CallConstructorInternal(this.ctx, f, new_target, args, 0));\n }\n /* method call on a primitive receiver (looked up on the guest prototype of its type) */\n call_method_prim(o: JSValue, atom: JSAtom, args: JSValue[]): JSValue {\n const f = this.check(JS_GetProperty(this.ctx, o, atom));\n return this.check(JS_CallInternal(this.ctx, f, o, undefined, args, 0));\n }\n call_method_prim_key(o: JSValue, key: JSValue, args: JSValue[]): JSValue {\n const f = this.check(JS_GetPropertyValue(this.ctx, o, key));\n return this.check(JS_CallInternal(this.ctx, f, o, undefined, args, 0));\n }\n apply(f: JSValue, thisv: JSValue, arr: JSValue, magic: number): JSValue {\n return this.check(js_function_apply(this.ctx, f, [thisv, arr], magic));\n }\n create_this(new_target: JSValue): JSValue {\n /* fast path: an ordinary guest function with an object `prototype` (the property read is\n native, as the host does for `new`) */\n if (typeof new_target === 'function' && js_meta.get(new_target)?.class_id !== JSClassID.PROXY) {\n const p = (new_target as any).prototype;\n if (typeof p === 'object' && p !== null) return Object.create(p);\n }\n return this.check(js_create_from_ctor(this.ctx, new_target, JSClassID.OBJECT));\n }\n /* `off` is the index of the first guest argument in the host `arguments` object (2 for the\n direct convention, 0 for the natural one) */\n init_ctor(self: JSValue, new_target: JSValue, args: IArguments, off: number): JSValue {\n if (new_target === undefined) this.throw_type_error(\"class constructors must be invoked with 'new'\");\n const sup = this.check(JS_GetPrototype(this.ctx, self));\n return this.check(JS_CallConstructor2(this.ctx, sup, new_target, Array.prototype.slice.call(args, off)));\n }\n arguments(args: IArguments, off: number): JSValue {\n return this.check(js_build_arguments_value(this.ctx, Array.prototype.slice.call(args, off)));\n }\n /* legacy arguments object aliasing the argument cells through accessor properties */\n mapped_arguments(args: IArguments, off: number, cells: JSVarRef[], self: JSValue): JSValue {\n const ctx = this.ctx;\n const argv: JSValue[] = Array.prototype.slice.call(args, off);\n const argc = argv.length;\n const val = this.check(JS_NewObjectProtoClass(ctx, ctx.class_proto[JSClassID.OBJECT], JSClassID.MAPPED_ARGUMENTS));\n JS_DefinePropertyValue(ctx, val, JS_ATOM_length, argc, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n const n = Math.min(argc, cells.length);\n for (let i = 0; i < n; i++) {\n const cell = cells[i];\n const getter = js_new_host_function(ctx, () => cell.get(), false, '', 0, ctx.function_proto, JSClassID.C_FUNCTION);\n const setter = js_new_host_function(ctx, (_t, _nt, a) => { cell.set(a[0]); return undefined; }, false, '', 1,\n ctx.function_proto, JSClassID.C_FUNCTION);\n Reflect.defineProperty(val as object, i, { get: getter as any, set: setter as any, enumerable: true, configurable: true });\n }\n for (let i = n; i < argc; i++) this.checkn(JS_DefinePropertyValueUint32(ctx, val, i, argv[i], JS_PROP_C_W_E));\n JS_DefinePropertyValue(ctx, val, JS_ATOM_Symbol_iterator, ctx.array_proto_values, JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE);\n JS_DefinePropertyValue(ctx, val, JS_ATOM_callee, self, JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE);\n return val;\n }\n rest(args: IArguments, off: number, first: number): JSValue {\n const argv: JSValue[] = Array.prototype.slice.call(args, off);\n return this.check(js_build_rest(this.ctx, first, argv.length, argv));\n }\n home_object(self: JSValue): JSValue {\n return JS_GetFunctionData(self)?.home_object ?? undefined;\n }\n\n /* --- closures and classes --- */\n /* guest function object for bytecode `b` with the given variable references (fclosure).\n When `b` is compiled the object is the generated forwarder, else an interpreter wrapper\n that the call hook tiers up later. */\n closure(b: JSFunctionBytecode, var_refs: JSVarRef[], _parent: JSValue): JSValue {\n const ctx = this.ctx;\n const class_id = func_kind_to_class_id(b.func_kind);\n const proto = ctx.class_proto[class_id] ?? ctx.function_proto;\n let fo: JSValue | null = null;\n if (b.func_kind === JSFunctionKind.NORMAL && !b.no_jit) {\n const c = this.compile(b);\n if (c) {\n const [f, direct, mkpriv] = c.make(var_refs);\n const m = new JSObjectMeta(JSClassID.BYTECODE_FUNCTION);\n m.func = new JSFunctionData(b, var_refs);\n m.func.compiled = direct;\n m.func.mkpriv = mkpriv;\n m.is_constructor = b.has_prototype;\n m.realm = b.realm ?? ctx;\n js_meta.set(f, m);\n js_direct.set(f, direct);\n Object.setPrototypeOf(f, proto);\n /* a host `function` has an own `prototype` object with a host prototype chain */\n if (Object.prototype.hasOwnProperty.call(f, 'prototype')) (f as any).prototype = undefined;\n fo = f;\n }\n }\n if (fo === null) fo = this.check(js_closure_from_refs(ctx, b, var_refs, proto, b.has_prototype));\n let name_atom = b.func_name;\n if (name_atom === JS_ATOM_NULL) name_atom = JS_ATOM_empty_string;\n js_function_set_properties(ctx, fo, name_atom, b.defined_arg_count);\n if (b.func_kind & JSFunctionKind.GENERATOR) {\n const proto_class_id = (b.func_kind === JSFunctionKind.ASYNC_GENERATOR) ? JSClassID.ASYNC_GENERATOR : JSClassID.GENERATOR;\n const gproto = this.check(JS_NewObjectProto(ctx, ctx.class_proto[proto_class_id]));\n JS_DefinePropertyValue(ctx, fo, JS_ATOM_prototype, gproto, JS_PROP_WRITABLE);\n } else if (b.has_prototype) {\n const pobj = this.check(JS_NewObject(ctx));\n this.checkn(JS_DefinePropertyValue(ctx, pobj, JS_ATOM_constructor, fo, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE));\n this.checkn(JS_DefinePropertyValue(ctx, fo, JS_ATOM_prototype, pobj, JS_PROP_WRITABLE));\n }\n return fo;\n }\n define_class(name: JSAtom | JSValue, parent_class: JSValue, b: JSFunctionBytecode, class_flags: number,\n var_refs: JSVarRef[], is_computed_name: boolean): [JSValue, JSValue] {\n const r = js_define_class(this.ctx, is_computed_name ? JS_ATOM_NULL : (name as JSAtom), class_flags, parent_class, b, var_refs,\n is_computed_name, is_computed_name ? (name as JSValue) : undefined);\n if (r === null) this.throw_pending();\n return r;\n }\n set_home_object(f: JSValue, home: JSValue): void { js_method_set_home_object(this.ctx, f, home); }\n set_name(f: JSValue, atom: JSAtom): void { this.checkn(JS_DefineObjectName(this.ctx, f, atom, JS_PROP_CONFIGURABLE)); }\n set_name_computed(f: JSValue, name: JSValue): void { this.checkn(JS_DefineObjectNameComputed(this.ctx, f, name, JS_PROP_CONFIGURABLE)); }\n define_method(obj: JSValue, key: JSAtom | JSValue, fn: JSValue, op_flags: number, computed: boolean): void {\n const ctx = this.ctx;\n let atom: JSAtom;\n if (computed) {\n atom = JS_ValueToAtom(ctx, key as JSValue);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n } else {\n atom = key as JSAtom;\n }\n let fl = JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE | JS_PROP_HAS_ENUMERABLE | JS_PROP_THROW;\n if (op_flags & OP_DEFINE_METHOD_ENUMERABLE) fl |= JS_PROP_ENUMERABLE;\n op_flags &= 3;\n let value: JSValue = undefined, getter: JSValue = undefined, setter: JSValue = undefined;\n if (op_flags === OP_DEFINE_METHOD_METHOD) { value = fn; fl |= JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE; }\n else if (op_flags === OP_DEFINE_METHOD_GETTER) { getter = fn; fl |= JS_PROP_HAS_GET; }\n else { setter = fn; fl |= JS_PROP_HAS_SET; }\n this.checkn(js_method_set_properties(ctx, fn, atom, fl, obj));\n this.checkn(JS_DefineProperty(ctx, obj, atom, value, getter, setter, fl));\n }\n set_proto(o: JSValue, proto: JSValue): void {\n if (JS_IsObject(proto) || proto === null) this.checkn(JS_SetPrototypeInternal(this.ctx, o, proto, true));\n }\n check_brand(o: JSValue, f: JSValue): void {\n const r = JS_CheckBrand(this.ctx, o, f);\n if (r < 0) this.throw_pending();\n if (!r) this.throw_type_error('invalid brand on object');\n }\n add_brand(o: JSValue, f: JSValue): void { this.checkn(JS_AddBrand(this.ctx, o, f)); }\n get_private_field(o: JSValue, name: JSValue): JSValue { return this.check(JS_GetPrivateField(this.ctx, o, name)); }\n put_private_field(o: JSValue, name: JSValue, v: JSValue): void { this.checkn(JS_SetPrivateField(this.ctx, o, name, v)); }\n define_private_field(o: JSValue, name: JSValue, v: JSValue): void { this.checkn(JS_DefinePrivateField(this.ctx, o, name, v)); }\n private_in(o: JSValue, name: JSValue): boolean {\n const r = js_operator_private_in(this.ctx, o, name);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n\n /* --- globals --- */\n check_var(atom: JSAtom): boolean {\n const r = JS_CheckGlobalVar(this.ctx, atom);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n get_global(atom: JSAtom, throw_ref_error: boolean): JSValue {\n return this.check(JS_GetGlobalVar(this.ctx, atom, throw_ref_error ? 1 : 0));\n }\n /* JS_SetGlobalVar with an explicit strict flag (the engine's version reads the strictness\n from the current interpreter frame, which does not exist for compiled code) */\n put_global(atom: JSAtom, v: JSValue, flag: number, strict: boolean): void {\n const ctx = this.ctx;\n if (flag === 1 || !strict || (JS_AtomToKey(ctx, atom) in ctx.global_var_obj)) {\n this.checkn(JS_SetGlobalVar(ctx, atom, v, flag));\n return;\n }\n const ret = JS_HasProperty(ctx, ctx.global_obj, atom);\n if (ret < 0) this.throw_pending();\n if (!ret) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n this.checkn(JS_SetPropertyInternal(ctx, ctx.global_obj, atom, v, ctx.global_obj, JS_PROP_THROW));\n }\n put_global_strict(atom: JSAtom, defined: JSValue, v: JSValue): void {\n const ctx = this.ctx;\n if (!defined) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n if (JS_AtomToKey(ctx, atom) in ctx.global_var_obj) { this.checkn(JS_SetGlobalVar(ctx, atom, v, 2)); return; }\n this.checkn(JS_SetPropertyInternal(ctx, ctx.global_obj, atom, v, ctx.global_obj, JS_PROP_THROW));\n }\n check_define_var(atom: JSAtom, flags: number): void { if (JS_CheckDefineGlobalVar(this.ctx, atom, flags)) this.throw_pending(); }\n define_var(atom: JSAtom, flags: number): void { this.checkn(JS_DefineGlobalVar(this.ctx, atom, flags)); }\n define_func(atom: JSAtom, v: JSValue, flags: number): void { this.checkn(JS_DefineGlobalFunction(this.ctx, atom, v, flags)); }\n get_global_ref(atom: JSAtom): [JSValue, JSValue] {\n const r = JS_GetGlobalVarRef(this.ctx, atom);\n if (!r) this.throw_pending();\n return r as [JSValue, JSValue];\n }\n delete_global(atom: JSAtom): boolean {\n const r = JS_DeleteProperty(this.ctx, this.ctx.global_obj, atom, 0);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n\n /* --- properties (slow paths: primitive bases and runtime-dependent semantics) --- */\n get_field(o: JSValue, atom: JSAtom): JSValue { return this.check(JS_GetProperty(this.ctx, o, atom)); }\n get_field_str(o: JSValue, name: string): JSValue {\n return this.check(JS_GetProperty(this.ctx, o, this.ctx.rt.atoms.newAtomStr(name)));\n }\n get_length(o: JSValue): JSValue { return this.check(JS_GetProperty(this.ctx, o, JS_ATOM_length)); }\n get_el(o: JSValue, k: JSValue): JSValue { return this.check(JS_GetPropertyValue(this.ctx, o, k)); }\n put_field(o: JSValue, atom: JSAtom, v: JSValue, strict: boolean): void {\n this.checkn(JS_SetPropertyInternal(this.ctx, o, atom, v, o, strict ? JS_PROP_THROW : 0));\n }\n put_el(o: JSValue, k: JSValue, v: JSValue, strict: boolean): void {\n this.checkn(JS_SetPropertyValue(this.ctx, o, k, v, strict ? JS_PROP_THROW : 0));\n }\n delete(o: JSValue, k: JSValue, strict: boolean): boolean {\n const atom = JS_ValueToAtom(this.ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n const r = JS_DeleteProperty(this.ctx, o, atom, strict ? JS_PROP_THROW : 0);\n if (r < 0) this.throw_pending();\n return r !== 0;\n }\n define_field(o: JSValue, atom: JSAtom, v: JSValue): void {\n this.checkn(JS_DefinePropertyValue(this.ctx, o, atom, v, JS_PROP_C_W_E | JS_PROP_THROW));\n }\n define_array_el(arr: JSValue, pos: JSValue, v: JSValue): void {\n this.checkn(JS_DefinePropertyValueValue(this.ctx, arr, pos, v, JS_PROP_C_W_E | JS_PROP_THROW));\n }\n append(arr: JSValue, pos: JSValue, src: JSValue): number {\n if (typeof pos !== 'number') this.throw_internal_error('invalid index for append');\n const r = js_append_enumerate_value(this.ctx, arr, pos as number, src);\n if (r < 0) this.throw_pending();\n return r;\n }\n copy_data_properties(target: JSValue, source: JSValue, excluded: JSValue): void {\n if (JS_CopyDataProperties(this.ctx, target, source, excluded, false)) this.throw_pending();\n }\n get_ref_value(o: JSValue, k: JSValue, strict: boolean): JSValue {\n const ctx = this.ctx;\n const atom = JS_ValueToAtom(ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n if (o === undefined) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n const r = JS_HasProperty(ctx, o, atom);\n if (r < 0) this.throw_pending();\n if (!r) {\n if (strict) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n return undefined;\n }\n return this.check(JS_GetProperty(ctx, o, atom));\n }\n put_ref_value(o: JSValue, k: JSValue, v: JSValue, strict: boolean): void {\n const ctx = this.ctx;\n const atom = JS_ValueToAtom(ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n if (o === undefined) {\n if (strict) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n o = ctx.global_obj;\n }\n const r = JS_HasProperty(ctx, o, atom);\n if (r < 0) this.throw_pending();\n if (!r && strict) { JS_ThrowReferenceErrorNotDefined(ctx, atom); this.throw_pending(); }\n this.checkn(JS_SetPropertyInternal(ctx, o, atom, v, o, strict ? JS_PROP_THROW : 0));\n }\n get_super_value(thisv: JSValue, o: JSValue, k: JSValue): JSValue {\n const atom = JS_ValueToAtom(this.ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n return this.check(JS_GetPropertyInternal(this.ctx, o, atom, thisv, false));\n }\n put_super_value(thisv: JSValue, o: JSValue, k: JSValue, v: JSValue): void {\n if (!JS_IsObject(o)) { JS_ThrowTypeErrorNotAnObject(this.ctx); this.throw_pending(); }\n const atom = JS_ValueToAtom(this.ctx, k);\n if (atom === JS_ATOM_NULL) this.throw_pending();\n this.checkn(JS_SetPropertyInternal(this.ctx, o, atom, v, thisv, JS_PROP_THROW));\n }\n\n /* --- iteration --- */\n for_in_start(o: JSValue): JSValue { return this.check(build_for_in_iterator(this.ctx, o)); }\n for_in_next(it: JSValue): JSValue {\n const pdone = { done: 0 };\n const v = this.check(js_for_in_next(this.ctx, it, pdone));\n return pdone.done ? this.DONE : v;\n }\n get_iterator(o: JSValue): JSValue { return this.check(JS_GetIterator(this.ctx, o, false)); }\n for_of_start(o: JSValue): [JSValue, JSValue] {\n const r = js_for_of_start_value(this.ctx, o, false);\n if (r === null) this.throw_pending();\n return r;\n }\n for_of_next(iter: JSValue, next: JSValue): JSValue {\n if (iter === undefined) return this.DONE;\n const r = js_for_of_next_value(this.ctx, iter, next);\n if (r === null) this.throw_pending();\n return r.done ? this.DONE : r.value;\n }\n iterator_close(iter: JSValue): void {\n if (JS_IteratorClose(this.ctx, iter, false) < 0) this.throw_pending();\n }\n /* close an iterator while an exception is propagating: errors from return() are ignored */\n iterator_close_exc(iter: JSValue): void {\n if (iter === undefined) return;\n const ctx = this.ctx;\n const method = JS_GetProperty(ctx, iter, JS_ATOM_return);\n if (JS_IsException(method)) { JS_GetException(ctx); return; }\n if (method === undefined || method === null) return;\n const r = JS_Call(ctx, method, iter, []);\n if (JS_IsException(r)) JS_GetException(ctx);\n }\n iterator_call(iter: JSValue, val: JSValue, flags: number): JSValue {\n const ctx = this.ctx;\n const method = this.check(JS_GetProperty(ctx, iter, (flags & 1) ? JS_ATOM_throw : JS_ATOM_return));\n if (method === undefined || method === null) return this.DONE;\n return this.check(JS_Call(ctx, method, iter, (flags & 2) ? [] : [val]));\n }\n}\n\n"]}
|
package/package.json
CHANGED