jseption 0.0.3 → 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.
- package/README.md +81 -4
- package/dist/bytecode.js +162 -2
- package/dist/bytecode.js.map +1 -1
- package/dist/interpreter.js +15 -4
- package/dist/interpreter.js.map +1 -1
- package/dist/jit.js +12 -4
- package/dist/jit.js.map +1 -1
- package/dist/jit_runtime.d.ts +2 -0
- package/dist/jit_runtime.js +11 -0
- package/dist/jit_runtime.js.map +1 -1
- package/dist/jseption.d.ts +4 -0
- package/dist/jseption.js +3 -0
- package/dist/jseption.js.map +1 -1
- package/dist/module.d.ts +28 -0
- package/dist/module.js +1166 -0
- package/dist/module.js.map +1 -0
- package/dist/opcodes.js +1 -1
- package/dist/opcodes.js.map +1 -1
- package/dist/parser.d.ts +31 -0
- package/dist/parser.js +2862 -62
- package/dist/parser.js.map +1 -1
- package/dist/qjs.js +86 -17
- package/dist/qjs.js.map +1 -1
- package/dist/quickjs.d.ts +8 -0
- package/dist/quickjs.js +21 -2
- package/dist/quickjs.js.map +1 -1
- package/dist/std.d.ts +2 -0
- package/dist/std.js +34 -0
- package/dist/std.js.map +1 -1
- package/dist/values.d.ts +78 -0
- package/dist/values.js +85 -0
- package/dist/values.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/dist/quickjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickjs.js","sourceRoot":"","sources":["../src/quickjs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * jseption: TypeScript port of QuickJS\n *\n * Copyright (c) 2017-2025 Fabrice Bellard (original C implementation)\n * Copyright (c) 2017-2025 Charlie Gordon (original C implementation)\n *\n * This file is the port of the \"core\" part of quickjs.c: runtime and\n * context management, atoms, exceptions, the object model (property\n * lookup, definition, deletion), value conversions and the abstract\n * operators used by the interpreter and the builtins.\n *\n * Host-values model (docs/HOST_VALUES.md): guest objects are host objects\n * with guest-owned prototype chains, properties are the host object's own\n * properties (accessed through Reflect), and engine metadata lives in a\n * WeakMap. Guest functions are strict host wrapper functions.\n */\nimport { jit_hooks } from './jit_hook.ts';\nimport {\n AtomTable, JSAtom, JS_ATOM_NULL, JS_ATOM_TYPE_STRING, JS_ATOM_TYPE_SYMBOL,\n JS_ATOM_TYPE_GLOBAL_SYMBOL, JS_ATOM_TYPE_PRIVATE, __JS_AtomIsTaggedInt, __JS_AtomFromUInt32,\n __JS_AtomToUInt32, JS_ATOM_MAX_INT, JS_ATOM_length, JS_ATOM_prototype, JS_ATOM_constructor,\n JS_ATOM_name, JS_ATOM_message, JS_ATOM_stack, JS_ATOM_toString, JS_ATOM_valueOf,\n JS_ATOM_Symbol_toPrimitive, JS_ATOM_Symbol_iterator, JS_ATOM_Symbol_hasInstance,\n JS_ATOM_next, JS_ATOM_done, JS_ATOM_value, JS_ATOM_return, JS_ATOM_get, JS_ATOM_set,\n JS_ATOM_configurable, JS_ATOM_writable, JS_ATOM_enumerable, JS_ATOM_undefined,\n JS_ATOM_object, JS_ATOM_boolean, JS_ATOM_number, JS_ATOM_string, JS_ATOM_symbol,\n JS_ATOM_bigint, JS_ATOM_function, JS_ATOM_empty_string, JS_ATOM_lineNumber, JS_ATOM_fileName,\n JS_ATOM_columnNumber, JS_ATOM_Error, JS_ATOM_EvalError, JS_ATOM_RangeError, JS_ATOM_ReferenceError,\n JS_ATOM_SyntaxError, JS_ATOM_TypeError, JS_ATOM_URIError, JS_ATOM_InternalError, JS_ATOM_cause,\n JS_ATOM_Symbol_toStringTag, JS_ATOM_Symbol_species, JS_ATOM___proto__, JS_ATOM_callee,\n JS_ATOM_Symbol_asyncIterator, JS_ATOM_Infinity, JS_ATOM_NaN, JS_ATOM_minus_Infinity, JS_ATOM_minus_zero,\n JS_ATOM_null, JS_ATOM_false, JS_ATOM_true, JS_ATOM_Object, JS_ATOM_Function, JS_ATOM_Array,\n JS_ATOM_Number, JS_ATOM_String, JS_ATOM_Boolean, JS_ATOM_Symbol, JS_ATOM_Arguments,\n JS_ATOM_BigInt, JS_ATOM_Date, JS_ATOM_RegExp, JS_ATOM_Map, JS_ATOM_Set, JS_ATOM_WeakMap, JS_ATOM_WeakSet,\n JS_ATOM_Generator, JS_ATOM_Proxy, JS_ATOM_Promise, JS_ATOM_AsyncFunction, JS_ATOM_AsyncGenerator,\n JS_ATOM_GeneratorFunction, JS_ATOM_AsyncGeneratorFunction, JS_ATOM_ForInIterator,\n JS_ATOM_Map_Iterator, JS_ATOM_Set_Iterator, JS_ATOM_Array_Iterator, JS_ATOM_String_Iterator,\n JS_ATOM_RegExp_String_Iterator, JS_ATOM_PromiseResolveFunction, JS_ATOM_PromiseRejectFunction,\n JS_ATOM_AsyncFunctionResolve, JS_ATOM_AsyncFunctionReject, JS_ATOM_ArrayBuffer, JS_ATOM_SharedArrayBuffer,\n JS_ATOM_Uint8ClampedArray, JS_ATOM_Int8Array, JS_ATOM_Uint8Array, JS_ATOM_Int16Array, JS_ATOM_Uint16Array,\n JS_ATOM_Int32Array, JS_ATOM_Uint32Array, JS_ATOM_BigInt64Array, JS_ATOM_BigUint64Array,\n JS_ATOM_Float32Array, JS_ATOM_Float64Array, JS_ATOM_DataView, JS_ATOM_WeakRef, JS_ATOM_FinalizationRegistry,\n JS_ATOM_Module, is_num_string,\n} from './atoms.ts';\nimport {\n JSValue, JSObject, JSSpecial, JSTag, JS_EXCEPTION, JS_UNINITIALIZED, JSClassID, JS_MODE_BACKTRACE_BARRIER,\n JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_C_W_E, JS_PROP_LENGTH,\n JS_PROP_TMASK, JS_PROP_NORMAL, JS_PROP_GETSET,\n JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_ENUMERABLE, JS_PROP_HAS_GET,\n JS_PROP_HAS_SET, JS_PROP_HAS_VALUE, JS_PROP_THROW, JS_PROP_THROW_STRICT, JS_PROP_NO_ADD,\n JS_PROP_NO_EXOTIC, JS_PROP_DEFINE_PROPERTY, JS_PROP_REFLECT_DEFINE_PROPERTY,\n JS_GPN_STRING_MASK, JS_GPN_SYMBOL_MASK, JS_GPN_PRIVATE_MASK, JS_GPN_ENUM_ONLY, JS_GPN_SET_ENUM,\n JS_IsException, JS_IsObject, JS_IsUndefined, JS_IsNull, JS_IsString, JS_IsSymbol, JS_IsNumber,\n JS_IsBigInt, JS_IsBool, JS_IsUninitialized, JS_VALUE_GET_TAG, JSCFunction, JSCFunctionMagic,\n JSCFunctionData, JSCFunctionEnum, JSCFunctionRecord, JSCFunctionDataRecord, JSBoundFunctionData,\n JSFunctionBytecode, JSFunctionData, JSVarRef, JSStackFrame, JSErrorEnum, JS_CALL_FLAG_CONSTRUCTOR,\n JS_CALL_FLAG_COPY_ARGV, JS_CALL_FLAG_GENERATOR, JSForInState, JSProxyData, JSObjectMeta,\n JSFunctionKind, JS_MODE_STRICT,\n} from './values.ts';\n\nexport * from './values.ts';\nexport * from './atoms.ts';\n\n/* ---------------------------------------------------------------------\n Runtime and context\n --------------------------------------------------------------------- */\n\nexport type JSClassCall = (ctx: JSContext, func_obj: JSValue, this_val: JSValue,\n argv: JSValue[], flags: number) => JSValue;\n\nexport interface JSPropertyDescriptor {\n flags: number;\n value: JSValue;\n getter: JSValue;\n setter: JSValue;\n}\n\nexport interface JSClassDef {\n class_name: JSAtom;\n}\n\nexport class JSClass {\n class_id: JSClassID;\n class_name: JSAtom;\n constructor(class_id: JSClassID, def: JSClassDef) {\n this.class_id = class_id;\n this.class_name = def.class_name;\n }\n}\n\nexport interface JSJobEntry {\n job_func: (ctx: JSContext, argv: JSValue[]) => JSValue;\n ctx: JSContext;\n argv: JSValue[];\n}\n\nexport type JSInterruptHandler = (rt: JSRuntime, opaque: any) => number;\nexport type JSHostPromiseRejectionTracker = (ctx: JSContext, promise: JSValue, reason: JSValue,\n is_handled: boolean, opaque: any) => void;\n\n/* engine metadata of guest objects (class id, internal slots, bytecode).\n Objects belong to a single runtime, so one table is shared. */\nexport const js_meta = new WeakMap<object, JSObjectMeta>();\n/* private fields and brands: object -> (private symbol -> value) */\nexport const js_privates = new WeakMap<object, Map<symbol, JSValue>>();\n/* direct call entries for the compiled tier: guest function object ->\n (this_val, new_target, ...args) => result, using the host exception\n convention. Borrowed natives register their host function here. */\nexport const js_direct = new WeakMap<Function, Function>();\n\nexport function js_get_meta(obj: JSValue): JSObjectMeta | undefined {\n if (typeof obj === 'object' || typeof obj === 'function') {\n if (obj === null) return undefined;\n return js_meta.get(obj);\n }\n return undefined;\n}\n\nexport function js_ensure_meta(obj: object, class_id: JSClassID = JSClassID.OBJECT): JSObjectMeta {\n let m = js_meta.get(obj);\n if (!m) {\n m = new JSObjectMeta(class_id);\n js_meta.set(obj, m);\n }\n return m;\n}\n\n/* bytecode function data of a function object, or null */\nexport function JS_GetFunctionData(func: JSValue): JSFunctionData | null {\n const m = js_get_meta(func);\n return m ? m.func : null;\n}\n\nexport class JSRuntime {\n atoms = new AtomTable();\n class_array: (JSClass | null)[] = [];\n class_count = 0;\n current_exception: JSValue = undefined;\n exception_pending = false;\n current_stack_frame: JSStackFrame | null = null;\n interrupt_handler: JSInterruptHandler | null = null;\n interrupt_opaque: any = null;\n host_promise_rejection_tracker: JSHostPromiseRejectionTracker | null = null;\n host_promise_rejection_tracker_opaque: any = null;\n job_list: JSJobEntry[] = [];\n module_normalize_func: any = null;\n module_loader_func: any = null;\n module_loader_opaque: any = null;\n stack_depth = 0;\n max_stack_depth = 2000;\n user_opaque: any = null;\n /* symbols registered with Symbol.for() */\n global_symbol_registry = new Map<string, symbol>();\n can_block = false;\n context_list: JSContext[] = [];\n interrupt_counter = 0;\n}\n\nexport class JSContext {\n rt: JSRuntime;\n class_proto: (JSObject | null)[] = [];\n function_proto: JSObject | null = null;\n function_ctor: JSObject | null = null;\n array_ctor: JSObject | null = null;\n regexp_ctor: JSObject | null = null;\n promise_ctor: JSObject | null = null;\n native_error_proto: (JSObject | null)[] = [];\n error_ctor: JSObject | null = null;\n error_prepare_stack: JSValue = undefined;\n error_stack_trace_limit = 10;\n iterator_proto: JSObject | null = null;\n async_iterator_proto: JSObject | null = null;\n array_proto_values: JSValue = undefined;\n throw_type_error: JSObject | null = null;\n eval_obj: JSValue = undefined;\n /* the global object (an ordinary guest object) */\n global_obj!: JSObject;\n /* compiled tier: true while Object.prototype has no accessor and no read-only data\n property (other than __proto__), so that the fields of an object literal can be\n assigned instead of defined. Cleared by JS_DefineProperty. */\n plain_object_proto = { ok: true };\n /* global lexical bindings (let/const/class at the top level): an engine\n internal object with a null prototype, never visible to guest code */\n global_var_obj!: Record<string | symbol, JSValue>;\n user_opaque: any = null;\n loaded_modules: Map<string, any> = new Map();\n interrupt_counter = 0;\n array_iterator_proto: JSObject | null = null;\n generator_proto: JSObject | null = null;\n async_generator_proto: JSObject | null = null;\n constructor(rt: JSRuntime) {\n this.rt = rt;\n for (let i = 0; i < rt.class_count; i++) this.class_proto.push(null);\n for (let i = 0; i < JSErrorEnum.NATIVE_ERROR_COUNT; i++) this.native_error_proto.push(null);\n }\n}\n\n/* --- hooks filled in by the interpreter / parser / builtins modules to\n avoid import cycles at module-evaluation time --- */\nexport interface JSHooks {\n JS_CallInternal: (ctx: JSContext, func_obj: JSValue, this_obj: JSValue, new_target: JSValue,\n argv: JSValue[], flags: number) => JSValue;\n JS_EvalInternal: (ctx: JSContext, this_obj: JSValue, input: string, filename: string,\n flags: number, scope_idx: number) => JSValue;\n JS_AddIntrinsicBaseObjects: (ctx: JSContext) => void;\n js_closure: (ctx: JSContext, bfunc: JSFunctionBytecode, cur_var_refs: JSVarRef[] | null,\n sf: JSStackFrame | null) => JSValue;\n js_regexp_constructor_internal: ((ctx: JSContext, ctor: JSValue, pattern: string, flags: string) => JSValue) | null;\n /* builtins/native.ts: create a guest function forwarding to a host native */\n js_borrow_native: (ctx: JSContext, host: Function, name: string, length: number, fix: JSNativeFixer | null) => JSValue;\n /* callbacks run at the end of JS_NewRuntime */\n init_runtime: ((rt: JSRuntime) => void)[];\n}\nexport const hooks: JSHooks = {\n JS_CallInternal: () => { throw new Error('interpreter not loaded'); },\n JS_EvalInternal: () => { throw new Error('parser not loaded'); },\n JS_AddIntrinsicBaseObjects: () => { throw new Error('builtins not loaded'); },\n js_closure: () => { throw new Error('interpreter not loaded'); },\n js_regexp_constructor_internal: null,\n js_borrow_native: () => { throw new Error('native builtins not loaded'); },\n init_runtime: [],\n};\n\nexport function JS_NewClass1(rt: JSRuntime, class_id: JSClassID, def: JSClassDef): void {\n while (rt.class_array.length <= class_id) rt.class_array.push(null);\n rt.class_array[class_id] = new JSClass(class_id, def);\n if (class_id >= rt.class_count) rt.class_count = class_id + 1;\n for (const ctx of rt.context_list) {\n while (ctx.class_proto.length < rt.class_count) ctx.class_proto.push(null);\n }\n}\n\nexport function JS_NewClass(rt: JSRuntime, class_id: JSClassID, def: JSClassDef): number {\n JS_NewClass1(rt, class_id, def);\n return 0;\n}\n\nlet next_class_id: number = JSClassID.INIT_COUNT;\nexport function JS_NewClassID(): JSClassID {\n return next_class_id++ as JSClassID;\n}\n\nexport function JS_IsRegisteredClass(rt: JSRuntime, class_id: JSClassID): boolean {\n return class_id < rt.class_array.length && rt.class_array[class_id] !== null;\n}\n\n/* class definitions of the predefined classes */\nconst js_std_class_def: [JSClassID, JSAtom][] = [\n [JSClassID.OBJECT, JS_ATOM_Object],\n [JSClassID.ARRAY, JS_ATOM_Array],\n [JSClassID.ERROR, JS_ATOM_Error],\n [JSClassID.NUMBER, JS_ATOM_Number],\n [JSClassID.STRING, JS_ATOM_String],\n [JSClassID.BOOLEAN, JS_ATOM_Boolean],\n [JSClassID.SYMBOL, JS_ATOM_Symbol],\n [JSClassID.ARGUMENTS, JS_ATOM_Arguments],\n [JSClassID.MAPPED_ARGUMENTS, JS_ATOM_Arguments],\n [JSClassID.DATE, JS_ATOM_Date],\n [JSClassID.MODULE_NS, JS_ATOM_Module],\n [JSClassID.C_FUNCTION, JS_ATOM_Function],\n [JSClassID.BYTECODE_FUNCTION, JS_ATOM_Function],\n [JSClassID.BOUND_FUNCTION, JS_ATOM_Function],\n [JSClassID.C_FUNCTION_DATA, JS_ATOM_Function],\n [JSClassID.GENERATOR_FUNCTION, JS_ATOM_GeneratorFunction],\n [JSClassID.FOR_IN_ITERATOR, JS_ATOM_ForInIterator],\n [JSClassID.REGEXP, JS_ATOM_RegExp],\n [JSClassID.ARRAY_BUFFER, JS_ATOM_ArrayBuffer],\n [JSClassID.SHARED_ARRAY_BUFFER, JS_ATOM_SharedArrayBuffer],\n [JSClassID.UINT8C_ARRAY, JS_ATOM_Uint8ClampedArray],\n [JSClassID.INT8_ARRAY, JS_ATOM_Int8Array],\n [JSClassID.UINT8_ARRAY, JS_ATOM_Uint8Array],\n [JSClassID.INT16_ARRAY, JS_ATOM_Int16Array],\n [JSClassID.UINT16_ARRAY, JS_ATOM_Uint16Array],\n [JSClassID.INT32_ARRAY, JS_ATOM_Int32Array],\n [JSClassID.UINT32_ARRAY, JS_ATOM_Uint32Array],\n [JSClassID.BIG_INT64_ARRAY, JS_ATOM_BigInt64Array],\n [JSClassID.BIG_UINT64_ARRAY, JS_ATOM_BigUint64Array],\n [JSClassID.FLOAT32_ARRAY, JS_ATOM_Float32Array],\n [JSClassID.FLOAT64_ARRAY, JS_ATOM_Float64Array],\n [JSClassID.DATAVIEW, JS_ATOM_DataView],\n [JSClassID.BIG_INT, JS_ATOM_BigInt],\n [JSClassID.MAP, JS_ATOM_Map],\n [JSClassID.SET, JS_ATOM_Set],\n [JSClassID.WEAKMAP, JS_ATOM_WeakMap],\n [JSClassID.WEAKSET, JS_ATOM_WeakSet],\n [JSClassID.MAP_ITERATOR, JS_ATOM_Map_Iterator],\n [JSClassID.SET_ITERATOR, JS_ATOM_Set_Iterator],\n [JSClassID.ARRAY_ITERATOR, JS_ATOM_Array_Iterator],\n [JSClassID.STRING_ITERATOR, JS_ATOM_String_Iterator],\n [JSClassID.REGEXP_STRING_ITERATOR, JS_ATOM_RegExp_String_Iterator],\n [JSClassID.GENERATOR, JS_ATOM_Generator],\n [JSClassID.PROXY, JS_ATOM_Proxy],\n [JSClassID.PROMISE, JS_ATOM_Promise],\n [JSClassID.PROMISE_RESOLVE_FUNCTION, JS_ATOM_PromiseResolveFunction],\n [JSClassID.PROMISE_REJECT_FUNCTION, JS_ATOM_PromiseRejectFunction],\n [JSClassID.ASYNC_FUNCTION, JS_ATOM_AsyncFunction],\n [JSClassID.ASYNC_FUNCTION_RESOLVE, JS_ATOM_AsyncFunctionResolve],\n [JSClassID.ASYNC_FUNCTION_REJECT, JS_ATOM_AsyncFunctionReject],\n [JSClassID.ASYNC_FROM_SYNC_ITERATOR, JS_ATOM_Object],\n [JSClassID.ASYNC_GENERATOR_FUNCTION, JS_ATOM_AsyncGeneratorFunction],\n [JSClassID.ASYNC_GENERATOR, JS_ATOM_AsyncGenerator],\n [JSClassID.WEAK_REF, JS_ATOM_WeakRef],\n [JSClassID.FINALIZATION_REGISTRY, JS_ATOM_FinalizationRegistry],\n];\n\nexport function JS_NewRuntime(): JSRuntime {\n const rt = new JSRuntime();\n for (const [id, name] of js_std_class_def) {\n JS_NewClass1(rt, id, { class_name: name });\n }\n for (const f of hooks.init_runtime) f(rt);\n return rt;\n}\n\nexport function JS_FreeRuntime(rt: JSRuntime): void {\n rt.job_list.length = 0;\n rt.context_list.length = 0;\n}\n\nexport function JS_SetRuntimeOpaque(rt: JSRuntime, opaque: any): void { rt.user_opaque = opaque; }\nexport function JS_GetRuntimeOpaque(rt: JSRuntime): any { return rt.user_opaque; }\nexport function JS_SetContextOpaque(ctx: JSContext, opaque: any): void { ctx.user_opaque = opaque; }\nexport function JS_GetContextOpaque(ctx: JSContext): any { return ctx.user_opaque; }\nexport function JS_GetRuntime(ctx: JSContext): JSRuntime { return ctx.rt; }\nexport function JS_SetMaxStackSize(rt: JSRuntime, depth: number): void { rt.max_stack_depth = depth; }\nexport function JS_SetInterruptHandler(rt: JSRuntime, cb: JSInterruptHandler | null, opaque: any): void {\n rt.interrupt_handler = cb; rt.interrupt_opaque = opaque;\n}\nexport function JS_SetHostPromiseRejectionTracker(rt: JSRuntime, cb: JSHostPromiseRejectionTracker | null, opaque: any): void {\n rt.host_promise_rejection_tracker = cb; rt.host_promise_rejection_tracker_opaque = opaque;\n}\n\nexport function JS_NewContextRaw(rt: JSRuntime): JSContext {\n const ctx = new JSContext(rt);\n rt.context_list.push(ctx);\n ctx.class_proto[JSClassID.OBJECT] = JS_NewObjectProto(ctx, null) as JSObject;\n /* placeholder replaced by the builtins (Function.prototype is a function) */\n ctx.function_proto = JS_NewObjectProtoClass(ctx, ctx.class_proto[JSClassID.OBJECT], JSClassID.OBJECT) as JSObject;\n ctx.global_obj = JS_NewObject(ctx) as JSObject;\n ctx.global_var_obj = Object.create(null);\n return ctx;\n}\n\nexport function JS_NewContext(rt: JSRuntime): JSContext {\n const ctx = JS_NewContextRaw(rt);\n hooks.JS_AddIntrinsicBaseObjects(ctx);\n return ctx;\n}\n\nexport function JS_FreeContext(ctx: JSContext): void {\n const i = ctx.rt.context_list.indexOf(ctx);\n if (i >= 0) ctx.rt.context_list.splice(i, 1);\n}\n\nexport function JS_GetClassProto(ctx: JSContext, class_id: JSClassID): JSValue {\n return ctx.class_proto[class_id] ?? undefined;\n}\nexport function JS_SetClassProto(ctx: JSContext, class_id: JSClassID, obj: JSValue): void {\n ctx.class_proto[class_id] = obj as JSObject;\n}\nexport function JS_GetGlobalObject(ctx: JSContext): JSValue { return ctx.global_obj; }\n\n/* ---------------------------------------------------------------------\n Atoms\n --------------------------------------------------------------------- */\n\nexport function JS_NewAtom(ctx: JSContext, str: string): JSAtom { return ctx.rt.atoms.newAtomStr(str); }\nexport function JS_NewAtomStr(ctx: JSContext, str: string): JSAtom { return ctx.rt.atoms.newAtomStr(str); }\nexport function JS_NewAtomUInt32(ctx: JSContext, n: number): JSAtom { return ctx.rt.atoms.newAtomUInt32(n); }\nexport function JS_NewAtomInt64(ctx: JSContext, n: number): JSAtom {\n if (n >= 0 && n <= JS_ATOM_MAX_INT) return __JS_AtomFromUInt32(n);\n return ctx.rt.atoms.newAtomStr(String(n));\n}\nexport function JS_DupAtom(_ctx: JSContext, v: JSAtom): JSAtom { return v; }\nexport function JS_FreeAtom(_ctx: JSContext, _v: JSAtom): void {}\nexport function JS_FreeValue(_ctx: JSContext, _v: JSValue): void {}\nexport function JS_DupValue(_ctx: JSContext, v: JSValue): JSValue { return v; }\n\nexport function JS_AtomIsString(ctx: JSContext, atom: JSAtom): boolean { return ctx.rt.atoms.isString(atom); }\nexport function JS_AtomIsSymbol(ctx: JSContext, atom: JSAtom): boolean { return ctx.rt.atoms.isSymbol(atom); }\nexport function JS_AtomGetStr(ctx: JSContext, atom: JSAtom): string { return ctx.rt.atoms.toDisplayStr(atom); }\nexport function JS_AtomGetStrRT(rt: JSRuntime, atom: JSAtom): string { return rt.atoms.toDisplayStr(atom); }\n\n/* host property key of an atom: number for array indices, string or symbol */\nexport type JSPropertyKey = string | number | symbol;\nexport function JS_AtomToKey(ctx: JSContext, atom: JSAtom): JSPropertyKey {\n return ctx.rt.atoms.toKey(atom);\n}\n\n/* atom from a host property key (as returned by Reflect.ownKeys) */\nexport function JS_KeyToAtom(ctx: JSContext, key: JSPropertyKey): JSAtom {\n switch (typeof key) {\n case 'string': return ctx.rt.atoms.newAtomStr(key);\n case 'number': return ctx.rt.atoms.newAtomUInt32(key);\n default: return ctx.rt.atoms.symbolToAtom(key);\n }\n}\n\n/* atom to JS value: string or symbol */\nexport function JS_AtomToValue(ctx: JSContext, atom: JSAtom): JSValue {\n const atoms = ctx.rt.atoms;\n if (atoms.isSymbol(atom)) return atoms.getSymbol(atom);\n return atoms.toStr(atom);\n}\n/* atom to string (symbols are converted to their description) */\nexport function JS_AtomToString(ctx: JSContext, atom: JSAtom): string {\n return ctx.rt.atoms.toStr(atom);\n}\n\n/* return the array index (0 .. 2^32-2) or -1 if the atom is not an array index */\nexport function JS_AtomIsArrayIndex(ctx: JSContext, atom: JSAtom): number {\n if (__JS_AtomIsTaggedInt(atom)) return __JS_AtomToUInt32(atom);\n const atoms = ctx.rt.atoms;\n if (atoms.getType(atom) !== JS_ATOM_TYPE_STRING) return -1;\n const str = atoms.toStr(atom);\n /* canonical uint32 string larger than JS_ATOM_MAX_INT */\n if (str.length !== 10) return -1;\n if (!/^[1-9][0-9]{9}$/.test(str)) return -1;\n const n = Number(str);\n if (n > 0xfffffffe) return -1;\n return n;\n}\n\n/* return TRUE if the atom is a numeric index (canonical numeric string) */\nexport function JS_AtomIsNumericIndex1(ctx: JSContext, atom: JSAtom): JSValue {\n if (__JS_AtomIsTaggedInt(atom)) return __JS_AtomToUInt32(atom);\n if (!ctx.rt.atoms.isString(atom)) return undefined;\n const str = ctx.rt.atoms.toStr(atom);\n if (str === '-0') return -0;\n if (str === 'Infinity') return Infinity;\n if (str === '-Infinity') return -Infinity;\n if (str === 'NaN') return NaN;\n const n = Number(str);\n if (Number.isNaN(n) || str.trim() !== str || str === '') return undefined;\n if (js_number_to_string(n, 10) !== str) return undefined;\n return n;\n}\nexport function JS_AtomIsNumericIndex(ctx: JSContext, atom: JSAtom): boolean {\n return JS_AtomIsNumericIndex1(ctx, atom) !== undefined;\n}\n\n/* ToPropertyKey */\nexport function JS_ValueToAtom(ctx: JSContext, val: JSValue): JSAtom {\n switch (typeof val) {\n case 'number':\n if (Number.isInteger(val) && val >= 0 && val <= JS_ATOM_MAX_INT) return __JS_AtomFromUInt32(val);\n return ctx.rt.atoms.newAtomStr(js_number_to_string(val, 10));\n case 'string':\n return ctx.rt.atoms.newAtomStr(val);\n case 'symbol':\n return ctx.rt.atoms.symbolToAtom(val);\n case 'boolean':\n return val ? JS_ATOM_true : JS_ATOM_false;\n case 'undefined':\n return JS_ATOM_undefined;\n case 'bigint':\n return ctx.rt.atoms.newAtomStr(val.toString());\n case 'object':\n case 'function':\n if (val === null) return JS_ATOM_null;\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitive(ctx, val, HINT_STRING);\n if (JS_IsException(prim)) return JS_ATOM_NULL;\n return JS_ValueToAtom(ctx, prim);\n }\n break;\n }\n JS_ThrowTypeError(ctx, 'invalid property key');\n return JS_ATOM_NULL;\n}\n\nexport function JS_NewSymbol(ctx: JSContext, description: string | undefined, atom_type: number = JS_ATOM_TYPE_SYMBOL): symbol {\n return ctx.rt.atoms.newSymbol(description, atom_type);\n}\nexport function JS_NewSymbolFromAtom(ctx: JSContext, descr: JSAtom, atom_type: number): symbol {\n return ctx.rt.atoms.newSymbol(ctx.rt.atoms.toStr(descr), atom_type);\n}\n\n/* ---------------------------------------------------------------------\n Exceptions\n --------------------------------------------------------------------- */\n\nexport function JS_Throw(ctx: JSContext, obj: JSValue): JSValue {\n const rt = ctx.rt;\n rt.current_exception = obj;\n rt.exception_pending = true;\n return JS_EXCEPTION;\n}\n\nexport function JS_GetException(ctx: JSContext): JSValue {\n const rt = ctx.rt;\n const val = rt.current_exception;\n rt.current_exception = undefined;\n rt.exception_pending = false;\n return val;\n}\n\nexport function JS_HasException(ctx: JSContext): boolean { return ctx.rt.exception_pending; }\n\n/* take the pending exception to throw it as a host exception (used by the\n function wrappers at the engine/host boundary) */\nexport function js_take_exception(ctx: JSContext): JSValue {\n return JS_GetException(ctx);\n}\n\n/* Convert a value thrown by host code into the engine convention. Guest\n values pass through; host intrinsic errors (their prototype chain reaches\n the host Error.prototype, which no guest object has) become guest errors.\n Always returns JS_EXCEPTION. */\n/* Host error messages quote the expression that failed (\"$s1 is not a function. (In\n '$s1(...)', ...)\"): map the common ones to the QuickJS wording so that generated code\n never shows through, and drop the quoted source otherwise. */\nexport function js_normalize_host_message(e: Error): string {\n let msg = String(e.message);\n if (e instanceof TypeError) {\n if (/ is not a function\\b/.test(msg)) return 'not a function';\n if (/ is not a constructor\\b/.test(msg)) return 'not a constructor';\n const m = /^(null|undefined) is not an object \\(evaluating '([^']*)'\\)$/.exec(msg);\n if (m) {\n const expr = m[2];\n const eq = expr.indexOf(' = ');\n const lhs = eq >= 0 ? expr.slice(0, eq) : expr;\n const name = /\\.([A-Za-z_$][\\w$]*)$/.exec(lhs);\n const what = eq >= 0 ? 'cannot set property' : 'cannot read property';\n return name ? `${what} '${name[1]}' of ${m[1]}` : `${what} of ${m[1]}`;\n }\n }\n msg = msg.replace(/\\s*\\((?:evaluating|In) '.*$/, '');\n return msg;\n}\n\nexport function js_host_exception_to_guest(ctx: JSContext, e: unknown): JSValue {\n if (e === JS_EXCEPTION) return JS_EXCEPTION; /* already pending */\n if (e instanceof Error) {\n let msg = js_normalize_host_message(e);\n let num: JSErrorEnum;\n if (e instanceof RangeError) {\n if (/call stack|stack size|recursion|stack overflow/i.test(msg)) return JS_ThrowStackOverflow(ctx);\n num = JSErrorEnum.RANGE_ERROR;\n } else if (e instanceof TypeError) num = JSErrorEnum.TYPE_ERROR;\n else if (e instanceof SyntaxError) num = JSErrorEnum.SYNTAX_ERROR;\n else if (e instanceof ReferenceError) num = JSErrorEnum.REFERENCE_ERROR;\n else if (e instanceof URIError) num = JSErrorEnum.URI_ERROR;\n else if (e instanceof EvalError) num = JSErrorEnum.EVAL_ERROR;\n else { num = JSErrorEnum.INTERNAL_ERROR; msg = 'internal error: ' + msg; }\n /* the host captured the stack where the error was raised: compiled guest frames are\n located from it (see build_backtrace) */\n return JS_ThrowError2(ctx, num, msg, true, typeof e.stack === 'string' ? e.stack : null);\n }\n return JS_Throw(ctx, e as JSValue);\n}\n\nexport function JS_IsError(ctx: JSContext, val: JSValue): boolean {\n const m = js_get_meta(val);\n return m !== undefined && m.class_id === JSClassID.ERROR;\n}\n\nexport function JS_IsUncatchableError(ctx: JSContext, val: JSValue): boolean {\n const m = js_get_meta(val);\n return m !== undefined && m.class_id === JSClassID.ERROR && m.is_uncatchable_error;\n}\n\nexport function JS_SetUncatchableError(ctx: JSContext, val: JSValue, flag: boolean): void {\n const m = js_get_meta(val);\n if (m && m.class_id === JSClassID.ERROR) m.is_uncatchable_error = flag;\n}\n\nexport function JS_NewError(ctx: JSContext): JSValue {\n return JS_NewObjectProtoClass(ctx, ctx.class_proto[JSClassID.ERROR], JSClassID.ERROR);\n}\n\nexport function JS_NewErrorNative(ctx: JSContext, error_num: JSErrorEnum, message: string): JSObject {\n let proto: JSObject | null;\n if (error_num === JSErrorEnum.PLAIN_ERROR) proto = ctx.class_proto[JSClassID.ERROR];\n else proto = ctx.native_error_proto[error_num];\n const obj = JS_NewObjectProtoClass(ctx, proto, JSClassID.ERROR) as JSObject;\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_message, message, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n return obj;\n}\n\nexport const JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL = 1 << 0;\n\n/* Build the 'stack' property of an error from the current call stack.\n\n Interpreter and C function frames are the `JSStackFrame` chain. Compiled\n functions (src/jit.ts) have no such frame: when the compiled tier is on,\n the host stack (`host_stack`, or the current one) is mapped to guest frames\n by src/jit_stack.ts and the engine frames found in it consume the chain in\n order, so both kinds appear interleaved as they were called. Frames of\n host builtins called by guest code appear as `(native)`.\n\n `fileName`/`lineNumber`/`columnNumber` are set from the given position or,\n when none is given, from the innermost frame with a position. */\nexport function build_backtrace(ctx: JSContext, error_obj: JSValue, filename: string | null,\n line_num: number, col_num: number, backtrace_flags: number,\n host_stack: string | null = null): void {\n let str = '';\n const is_obj = JS_IsObject(error_obj);\n let has_pos = false;\n const set_pos = (file: string, line: number, col: number): void => {\n has_pos = true;\n if (!is_obj) return;\n /* Note: SpiderMonkey does that, could update once there is a standard */\n JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_fileName, file, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_lineNumber, line, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_columnNumber, col, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n };\n if (filename) {\n str += ` at ${filename}`;\n if (line_num !== -1) str += `:${line_num}:${col_num}`;\n str += '\\n';\n set_pos(filename, line_num, col_num);\n }\n /* one line for an engine frame */\n const frame_line = (sf: JSStackFrame): string => {\n const f = sf.cur_func;\n let func_name = '';\n if (JS_IsObject(f)) func_name = get_func_name(ctx, f);\n let s = ` at ${func_name || '<anonymous>'}`;\n const fd = JS_GetFunctionData(f);\n if (fd) {\n const b = fd.function_bytecode;\n if (b.has_debug) {\n const fname = ctx.rt.atoms.toStr(b.debug.filename);\n const [line1, col1] = find_line_num(ctx, b, sf.cur_pc - 1);\n s += ` (${fname}`;\n if (line1 > 0) { s += `:${line1}:${col1}`; if (!has_pos) set_pos(fname, line1, col1); }\n s += ')';\n }\n } else {\n s += ' (native)';\n }\n return s + '\\n';\n };\n let skip = (backtrace_flags & JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL) !== 0;\n let sf = ctx.rt.current_stack_frame;\n const hooks = jit_hooks.stack;\n if (hooks !== null) {\n const frames = hooks.frames(host_stack ?? hooks.capture());\n let stop = false;\n for (let i = 0; i < frames.length && !stop; i++) {\n const hf = frames[i];\n switch (hf.kind) {\n case 'compiled':\n if (skip) { skip = false; break; }\n str += ` at ${hf.name || '<anonymous>'} (${hf.file}`;\n if (hf.line > 0) { str += `:${hf.line}:${hf.col}`; if (!has_pos) set_pos(hf.file, hf.line, hf.col); }\n str += ')\\n';\n break;\n case 'native':\n if (skip) { skip = false; break; }\n str += ` at ${hf.name || '<anonymous>'} (native)\\n`;\n break;\n default: {\n /* the next engine frame, when of the matching kind (the frame of a C function that\n raised a host exception is already unwound when the exception is converted) */\n if (sf === null) break;\n if ((JS_GetFunctionData(sf.cur_func) !== null) !== (hf.kind === 'interp')) break;\n if (sf.js_mode & JS_MODE_BACKTRACE_BARRIER) { sf = null; stop = true; break; }\n const cur = sf;\n sf = sf.prev_frame;\n /* a frame replaced by compiled code (on-stack replacement) is shown by its compiled\n frame, which precedes it on the host stack */\n if (cur.osr) break;\n if (skip) { skip = false; break; }\n str += frame_line(cur);\n break;\n }\n }\n }\n /* engine frames the host stack did not show (its depth limit) follow */\n }\n for (; sf !== null; sf = sf.prev_frame) {\n if (sf.js_mode & JS_MODE_BACKTRACE_BARRIER) break;\n if (sf.osr) continue;\n if (skip) { skip = false; continue; }\n str += frame_line(sf);\n }\n if (is_obj) {\n JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_stack, str, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n const m = js_get_meta(error_obj);\n if (m) m.has_backtrace = true;\n }\n}\n\nexport function get_func_name(ctx: JSContext, func: JSObject): string {\n try {\n const d = Reflect.getOwnPropertyDescriptor(func, 'name');\n if (d && 'value' in d && typeof d.value === 'string') return d.value;\n } catch { /* proxy trap failures are ignored here */ }\n const fd = JS_GetFunctionData(func);\n if (fd) return ctx.rt.atoms.toStr(fd.function_bytecode.func_name);\n return '';\n}\n\n/* decode the pc2line table: returns [line, col] of the last entry whose\n pc is <= pc_value. pc_value < 0 returns the function start position. */\nexport function find_line_num(ctx: JSContext, b: JSFunctionBytecode, pc_value: number): [number, number] {\n const buf = b.debug.pc2line;\n if (!buf || buf.length === 0) return [-1, -1];\n /* encoding: sequence of (pc_delta: leb128, line_delta: sleb128, col_delta: sleb128);\n the first entry gives the function start position */\n let pos = 0, pc = 0, line = 0, col = 0;\n let last_line = -1, last_col = -1;\n let first = true;\n while (pos < buf.length) {\n const r1 = get_leb128(buf, pos); pos = r1[1];\n const r2 = get_sleb128(buf, pos); pos = r2[1];\n const r3 = get_sleb128(buf, pos); pos = r3[1];\n pc += r1[0];\n line += r2[0];\n col += r3[0];\n if (first) {\n first = false;\n last_line = line; last_col = col;\n if (pc_value < 0) break;\n continue;\n }\n if (pc > pc_value) break;\n last_line = line; last_col = col;\n }\n return [last_line, last_col];\n}\n\nexport function get_leb128(buf: Uint8Array, pos: number): [number, number] {\n let v = 0, shift = 0;\n for (;;) {\n const a = buf[pos++];\n v += (a & 0x7f) * Math.pow(2, shift);\n if (!(a & 0x80)) break;\n shift += 7;\n }\n return [v, pos];\n}\nexport function get_sleb128(buf: Uint8Array, pos: number): [number, number] {\n const [v, p] = get_leb128(buf, pos);\n /* zigzag */\n return [(v % 2 === 1) ? -((v + 1) / 2) : v / 2, p];\n}\n\nexport function JS_ThrowError2(ctx: JSContext, error_num: JSErrorEnum, message: string, add_backtrace: boolean,\n host_stack: string | null = null): JSValue {\n const obj = JS_NewErrorNative(ctx, error_num, message);\n if (add_backtrace) build_backtrace(ctx, obj, null, 0, 0, 0, host_stack);\n return JS_Throw(ctx, obj);\n}\n\nexport function JS_ThrowError(ctx: JSContext, error_num: JSErrorEnum, message: string): JSValue {\n /* the backtrace is added later (with the exact position) if called\n from a bytecode function */\n const sf = ctx.rt.current_stack_frame;\n if (!sf || JS_GetFunctionData(sf.cur_func) === null) return JS_ThrowError2(ctx, error_num, message, true);\n const hooks = jit_hooks.stack;\n if (hooks !== null) {\n /* a compiled function has no interpreter frame: when it is the thrower, its position is\n on the host stack now and gone once the exception has propagated */\n const stack = hooks.capture();\n if (hooks.compiled_on_top(stack)) return JS_ThrowError2(ctx, error_num, message, true, stack);\n }\n return JS_ThrowError2(ctx, error_num, message, false);\n}\n\nexport function JS_ThrowSyntaxError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.SYNTAX_ERROR, msg); }\nexport function JS_ThrowTypeError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.TYPE_ERROR, msg); }\nexport function JS_ThrowReferenceError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.REFERENCE_ERROR, msg); }\nexport function JS_ThrowRangeError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.RANGE_ERROR, msg); }\nexport function JS_ThrowInternalError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.INTERNAL_ERROR, msg); }\nexport function JS_ThrowURIError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.URI_ERROR, msg); }\nexport function JS_ThrowEvalError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.EVAL_ERROR, msg); }\nexport function JS_ThrowOutOfMemory(ctx: JSContext): JSValue { return JS_ThrowInternalError(ctx, 'out of memory'); }\nexport function JS_ThrowStackOverflow(ctx: JSContext): JSValue { return JS_ThrowInternalError(ctx, 'stack overflow'); }\n\nexport function JS_ThrowTypeErrorAtom(ctx: JSContext, fmt: string, atom: JSAtom): JSValue {\n return JS_ThrowTypeError(ctx, fmt.replace('%s', JS_AtomGetStr(ctx, atom)));\n}\nexport function JS_ThrowSyntaxErrorAtom(ctx: JSContext, fmt: string, atom: JSAtom): JSValue {\n return JS_ThrowSyntaxError(ctx, fmt.replace('%s', JS_AtomGetStr(ctx, atom)));\n}\nexport function JS_ThrowReferenceErrorNotDefined(ctx: JSContext, name: JSAtom): JSValue {\n return JS_ThrowReferenceError(ctx, `'${JS_AtomGetStr(ctx, name)}' is not defined`);\n}\nexport function JS_ThrowReferenceErrorUninitialized(ctx: JSContext, name: JSAtom): JSValue {\n return JS_ThrowReferenceError(ctx, `${name === JS_ATOM_NULL ? 'lexical variable' : \"'\" + JS_AtomGetStr(ctx, name) + \"'\"} is not initialized`);\n}\nexport function JS_ThrowReferenceErrorUninitialized2(ctx: JSContext, b: JSFunctionBytecode, idx: number, is_ref: boolean): JSValue {\n let atom = JS_ATOM_NULL;\n if (is_ref) atom = b.closure_var[idx].var_name;\n else atom = b.vardefs[b.arg_count + idx]?.var_name ?? JS_ATOM_NULL;\n return JS_ThrowReferenceErrorUninitialized(ctx, atom);\n}\nexport function JS_ThrowTypeErrorReadOnly(ctx: JSContext, flags: number, atom: JSAtom): number {\n if ((flags & JS_PROP_THROW) || ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) {\n JS_ThrowTypeErrorAtom(ctx, \"'%s' is read-only\", atom);\n return -1;\n }\n return 0;\n}\nexport function JS_ThrowTypeErrorNotAnObject(ctx: JSContext): JSValue { return JS_ThrowTypeError(ctx, 'not an object'); }\nexport function JS_ThrowTypeErrorNotASymbol(ctx: JSContext): JSValue { return JS_ThrowTypeError(ctx, 'not a symbol'); }\nexport function JS_ThrowTypeErrorInvalidClass(ctx: JSContext, class_id: JSClassID): JSValue {\n const name = ctx.rt.class_array[class_id]?.class_name ?? JS_ATOM_Object;\n return JS_ThrowTypeErrorAtom(ctx, '%s object expected', name);\n}\nexport function JS_ThrowTypeErrorNotAFunction(ctx: JSContext): JSValue { return JS_ThrowTypeError(ctx, 'not a function'); }\n\nexport function is_strict_mode(ctx: JSContext): boolean {\n const sf = ctx.rt.current_stack_frame;\n return !!sf && (sf.js_mode & JS_MODE_STRICT) !== 0;\n}\n\n/* host-side error class used only to signal fatal interpreter bugs */\nexport class JSInternalError extends Error {}\n\n/* ---------------------------------------------------------------------\n Object creation\n --------------------------------------------------------------------- */\n\nfunction js_is_function_class(class_id: JSClassID): boolean {\n switch (class_id) {\n case JSClassID.C_FUNCTION:\n case JSClassID.C_FUNCTION_DATA:\n case JSClassID.BYTECODE_FUNCTION:\n case JSClassID.BOUND_FUNCTION:\n case JSClassID.GENERATOR_FUNCTION:\n case JSClassID.ASYNC_FUNCTION:\n case JSClassID.ASYNC_GENERATOR_FUNCTION:\n case JSClassID.PROMISE_RESOLVE_FUNCTION:\n case JSClassID.PROMISE_REJECT_FUNCTION:\n case JSClassID.ASYNC_FUNCTION_RESOLVE:\n case JSClassID.ASYNC_FUNCTION_REJECT:\n return true;\n default:\n return false;\n }\n}\n\n/* Create a guest object with the given prototype and class. Arrays are\n host arrays re-prototyped to the guest prototype; the other classes are\n ordinary objects with metadata when class_id != JS_CLASS_OBJECT.\n Function classes must be created with JS_NewCFunction* or js_closure. */\nexport function JS_NewObjectProtoClass(ctx: JSContext, proto: JSValue | null, class_id: JSClassID): JSValue {\n const p = JS_IsObject(proto) ? proto : null;\n let obj: object;\n if (class_id === JSClassID.ARRAY) {\n obj = [];\n Object.setPrototypeOf(obj, p);\n } else {\n if (js_is_function_class(class_id)) throw new JSInternalError('function objects must be created with js_new_host_function');\n obj = Object.create(p);\n }\n if (class_id !== JSClassID.OBJECT) js_meta.set(obj, new JSObjectMeta(class_id));\n return obj;\n}\n\nexport function JS_NewObjectClass(ctx: JSContext, class_id: JSClassID): JSValue {\n return JS_NewObjectProtoClass(ctx, ctx.class_proto[class_id], class_id);\n}\n\nexport function JS_NewObjectProto(ctx: JSContext, proto: JSValue | null): JSValue {\n return Object.create(JS_IsObject(proto) ? proto : null);\n}\n\nexport function JS_NewObject(ctx: JSContext): JSValue {\n return Object.create(ctx.class_proto[JSClassID.OBJECT]);\n}\n\nexport function JS_NewArray(ctx: JSContext): JSValue {\n const a: JSValue[] = [];\n Object.setPrototypeOf(a, ctx.class_proto[JSClassID.ARRAY]);\n return a;\n}\n\n/* create an array from a list of values (the list is copied) */\nexport function js_create_array(ctx: JSContext, values: JSValue[]): JSValue {\n const a = values.slice();\n Object.setPrototypeOf(a, ctx.class_proto[JSClassID.ARRAY]);\n return a;\n}\n/* create an array from a list of values (takes ownership of the list) */\nexport function JS_NewArrayFrom(ctx: JSContext, values: JSValue[]): JSValue {\n Object.setPrototypeOf(values, ctx.class_proto[JSClassID.ARRAY]);\n return values;\n}\n\n/* return the host array backing a guest array (not a proxy) when it is\n dense (no holes), or null. QuickJS fast arrays never have holes, so the\n fast paths of the builtins may assume that every element is present. */\nexport function js_get_fast_array(ctx: JSContext, obj: JSValue): JSValue[] | null {\n /* host arrays may contain holes: callers must use 'i in arr' where the\n spec requires HasProperty (a scan here would make every call O(n)) */\n if (!Array.isArray(obj) || js_meta.get(obj) !== undefined) return null;\n return obj as JSValue[];\n}\n\nexport function JS_SetOpaque(obj: JSValue, opaque: any): number {\n if (!JS_IsObject(obj)) return -1;\n js_ensure_meta(obj).u = opaque;\n return 0;\n}\nexport function JS_GetOpaque(obj: JSValue, class_id: JSClassID): any {\n const m = js_get_meta(obj);\n if (m && m.class_id === class_id) return m.u;\n return null;\n}\nexport function JS_GetOpaque2(ctx: JSContext, obj: JSValue, class_id: JSClassID): any {\n const p = JS_GetOpaque(obj, class_id);\n if (p === null || p === undefined) JS_ThrowTypeErrorInvalidClass(ctx, class_id);\n return p;\n}\nexport function JS_GetAnyOpaque(obj: JSValue): any {\n const m = js_get_meta(obj);\n return m ? m.u : null;\n}\n/* class id of a value: 0 for non objects */\nexport function JS_GetClassID(v: JSValue): JSClassID {\n if (!JS_IsObject(v)) return 0 as JSClassID;\n const m = js_meta.get(v);\n if (m) return m.class_id;\n if (Array.isArray(v)) return JSClassID.ARRAY;\n if (typeof v === 'function') return JSClassID.C_FUNCTION;\n return JSClassID.OBJECT;\n}\n\n/* ---------------------------------------------------------------------\n Functions\n --------------------------------------------------------------------- */\n\n/* Host wrapper factories. The wrappers are strict so that a primitive\n 'this' is passed unboxed. mk_method creates a non constructible\n function (method shorthand), mk_function a constructible one. */\nexport type JSHostImpl = (this_val: JSValue, new_target: JSValue, args: JSValue[]) => JSValue;\n/* (plain module code: ES modules are strict, and no code generation from\n strings is needed, so the runtime loads under a CSP without 'unsafe-eval'\n and on platforms such as Cloudflare Workers) */\nconst host_fn_factory = {\n mk_method(impl: JSHostImpl): Function {\n const o = { m(this: any, ...args: JSValue[]) { return impl(this, undefined, args); } };\n return o.m;\n },\n mk_function(impl: JSHostImpl): Function {\n const f = function (this: any, ...args: JSValue[]) { return impl(this, new.target, args); };\n (f as any).prototype = undefined; /* replaced by the engine; never a host object */\n return f;\n },\n};\n\n/* create a guest function object calling 'impl' (which uses the host\n exception convention) */\nexport function js_new_host_function(ctx: JSContext, impl: JSHostImpl, is_ctor: boolean, name: string,\n length: number, proto: JSValue | null, class_id: JSClassID): object {\n const f = is_ctor ? host_fn_factory.mk_function(impl) : host_fn_factory.mk_method(impl);\n js_direct.set(f, (t: JSValue, nt: JSValue, ...args: JSValue[]) => impl(t, nt, args));\n js_init_host_function(ctx, f, is_ctor, name, length, proto, class_id);\n return f;\n}\n\n/* make a freshly created strict host function `f` a guest function object (prototype, length,\n name, metadata). A `function` must have had its host `prototype` property replaced already. */\nexport function js_init_host_function(ctx: JSContext, f: Function, is_ctor: boolean, name: string,\n length: number, proto: JSValue | null, class_id: JSClassID): JSObjectMeta {\n Object.setPrototypeOf(f, JS_IsObject(proto) ? proto : null);\n Reflect.defineProperty(f, 'length', { value: length, writable: false, enumerable: false, configurable: true });\n Reflect.defineProperty(f, 'name', { value: name, writable: false, enumerable: false, configurable: true });\n const m = new JSObjectMeta(class_id);\n m.is_constructor = is_ctor;\n m.realm = ctx;\n js_meta.set(f, m);\n return m;\n}\n\nexport function JS_IsFunction(ctx: JSContext, val: JSValue): boolean {\n return typeof val === 'function';\n}\n\n/* IsConstructor for host functions without metadata (bound functions\n created by the host, borrowed natives): Reflect.construct validates its\n new.target argument without calling it */\nfunction js_is_host_constructor(f: Function): boolean {\n try {\n Reflect.construct(String, [], f);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function JS_IsConstructor(ctx: JSContext, val: JSValue): boolean {\n if (typeof val !== 'function') return false;\n const m = js_meta.get(val);\n if (m) return m.is_constructor;\n return js_is_host_constructor(val);\n}\n\nexport function JS_SetConstructorBit(ctx: JSContext, func_obj: JSValue, val: boolean): boolean {\n if (typeof func_obj !== 'function') return false;\n js_ensure_meta(func_obj, JSClassID.C_FUNCTION).is_constructor = val;\n return true;\n}\n\n/* IsArray: -1 on exception (revoked proxy) */\nexport function JS_IsArray(ctx: JSContext, val: JSValue): number {\n const m = js_get_meta(val);\n if (m && m.class_id === JSClassID.PROXY) {\n const s = m.u as JSProxyData;\n if (s.is_revoked) { JS_ThrowTypeError(ctx, 'revoked proxy'); return -1; }\n return JS_IsArray(ctx, s.target);\n }\n try {\n return Array.isArray(val) ? 1 : 0;\n } catch (e) {\n JS_ThrowTypeError(ctx, 'revoked proxy');\n return -1;\n }\n}\n\nfunction js_cfunc_is_ctor(cproto: JSCFunctionEnum): boolean {\n return cproto === JSCFunctionEnum.constructor ||\n cproto === JSCFunctionEnum.constructor_magic ||\n cproto === JSCFunctionEnum.constructor_or_func ||\n cproto === JSCFunctionEnum.constructor_or_func_magic;\n}\n\nexport function JS_NewCFunction3(ctx: JSContext, func: Function, name: string, length: number,\n cproto: JSCFunctionEnum, magic: number, proto_val: JSValue): JSValue {\n const rec = new JSCFunctionRecord(func, length, cproto, magic);\n let fobj: object;\n const impl: JSHostImpl = (this_val, new_target, args) => {\n let ret: JSValue;\n if (new_target !== undefined) ret = js_call_c_function(ctx, fobj, new_target, args, JS_CALL_FLAG_CONSTRUCTOR);\n else ret = js_call_c_function(ctx, fobj, this_val, args, 0);\n if (ret === JS_EXCEPTION) throw js_take_exception(ctx);\n return ret;\n };\n fobj = js_new_host_function(ctx, impl, js_cfunc_is_ctor(cproto), name, length, proto_val, JSClassID.C_FUNCTION);\n js_meta.get(fobj)!.cfunc = rec;\n return fobj;\n}\n\nexport function JS_NewCFunction2(ctx: JSContext, func: Function, name: string, length: number,\n cproto: JSCFunctionEnum, magic: number): JSValue {\n return JS_NewCFunction3(ctx, func, name, length, cproto, magic, ctx.function_proto);\n}\n\nexport function JS_NewCFunction(ctx: JSContext, func: JSCFunction, name: string, length: number): JSValue {\n return JS_NewCFunction2(ctx, func, name, length, JSCFunctionEnum.generic, 0);\n}\n\nexport function JS_NewCFunctionMagic(ctx: JSContext, func: JSCFunctionMagic, name: string, length: number,\n cproto: JSCFunctionEnum, magic: number): JSValue {\n return JS_NewCFunction2(ctx, func, name, length, cproto, magic);\n}\n\nexport function JS_NewCFunctionData(ctx: JSContext, func: JSCFunctionData, length: number, magic: number,\n data: JSValue[]): JSValue {\n const s = new JSCFunctionDataRecord(func, length, magic, data.slice());\n let fobj: object;\n const impl: JSHostImpl = (this_val, new_target, args) => {\n const ret = js_c_function_data_call(ctx, fobj, this_val, args, 0);\n if (ret === JS_EXCEPTION) throw js_take_exception(ctx);\n return ret;\n };\n fobj = js_new_host_function(ctx, impl, false, '', length, ctx.function_proto, JSClassID.C_FUNCTION_DATA);\n js_meta.get(fobj)!.u = s;\n return fobj;\n}\n\nexport function js_c_function_data_call(ctx: JSContext, func_obj: JSValue, this_val: JSValue,\n argv: JSValue[], flags: number): JSValue {\n const s = js_meta.get(func_obj as object)!.u as JSCFunctionDataRecord;\n const rt = ctx.rt;\n if (rt.stack_depth >= rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const sf = new JSStackFrame();\n sf.cur_func = func_obj;\n sf.arg_buf = argv;\n sf.arg_count = argv.length;\n sf.prev_frame = rt.current_stack_frame;\n rt.current_stack_frame = sf;\n rt.stack_depth++;\n try {\n return s.func(ctx, this_val, argv, s.magic, s.data);\n } finally {\n rt.current_stack_frame = sf.prev_frame;\n rt.stack_depth--;\n }\n}\n\n/* call a C function. In the constructor case, 'this_obj' is new_target. */\nexport function js_call_c_function(ctx: JSContext, func_obj: JSValue, this_obj: JSValue,\n argv: JSValue[], flags: number): JSValue {\n const meta = js_meta.get(func_obj as object)!;\n const rec = meta.cfunc!;\n const rt = ctx.rt;\n const realm = meta.realm as JSContext;\n if (rt.stack_depth >= rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const sf = new JSStackFrame();\n sf.cur_func = func_obj;\n sf.arg_buf = argv;\n sf.arg_count = argv.length;\n sf.prev_frame = rt.current_stack_frame;\n rt.current_stack_frame = sf;\n rt.stack_depth++;\n /* argv is not padded: argv.length is argc and missing arguments read as undefined */\n const args = argv;\n let ret: JSValue;\n const f = rec.func as any;\n try {\n switch (rec.cproto) {\n case JSCFunctionEnum.constructor:\n case JSCFunctionEnum.constructor_or_func:\n if (!(flags & JS_CALL_FLAG_CONSTRUCTOR)) {\n if (rec.cproto === JSCFunctionEnum.constructor) {\n ret = JS_ThrowTypeError(realm, 'must be called with new');\n break;\n }\n this_obj = undefined;\n }\n ret = f(realm, this_obj, args);\n break;\n case JSCFunctionEnum.constructor_magic:\n case JSCFunctionEnum.constructor_or_func_magic:\n if (!(flags & JS_CALL_FLAG_CONSTRUCTOR)) {\n if (rec.cproto === JSCFunctionEnum.constructor_magic) {\n ret = JS_ThrowTypeError(realm, 'must be called with new');\n break;\n }\n this_obj = undefined;\n }\n ret = f(realm, this_obj, args, rec.magic);\n break;\n case JSCFunctionEnum.generic:\n ret = f(realm, this_obj, args);\n break;\n case JSCFunctionEnum.generic_magic:\n ret = f(realm, this_obj, args, rec.magic);\n break;\n case JSCFunctionEnum.getter:\n ret = f(realm, this_obj);\n break;\n case JSCFunctionEnum.setter:\n ret = f(realm, this_obj, args[0]);\n break;\n case JSCFunctionEnum.getter_magic:\n ret = f(realm, this_obj, rec.magic);\n break;\n case JSCFunctionEnum.setter_magic:\n ret = f(realm, this_obj, args[0], rec.magic);\n break;\n case JSCFunctionEnum.f_f: {\n const d1 = JS_ToFloat64(realm, args[0]);\n if (JS_IsException(d1)) { ret = JS_EXCEPTION; break; }\n ret = f(d1);\n break;\n }\n case JSCFunctionEnum.f_f_f: {\n const d1 = JS_ToFloat64(realm, args[0]);\n if (JS_IsException(d1)) { ret = JS_EXCEPTION; break; }\n const d2 = JS_ToFloat64(realm, args[1]);\n if (JS_IsException(d2)) { ret = JS_EXCEPTION; break; }\n ret = f(d1, d2);\n break;\n }\n case JSCFunctionEnum.iterator_next: {\n const pdone = { done: 0 };\n ret = f(realm, this_obj, args, pdone, rec.magic);\n if (!JS_IsException(ret) && pdone.done !== 2) {\n ret = js_create_iterator_result(realm, ret, pdone.done !== 0);\n }\n break;\n }\n default:\n throw new JSInternalError('unknown cproto ' + rec.cproto);\n }\n } finally {\n rt.current_stack_frame = sf.prev_frame;\n rt.stack_depth--;\n }\n return ret;\n}\n\n/* call a host function (bound function, generated code, borrowed native,\n guest wrapper) with the host exception convention */\nexport function js_call_host_function(ctx: JSContext, func_obj: JSValue, 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 try {\n if (flags & JS_CALL_FLAG_CONSTRUCTOR) {\n return Reflect.construct(func_obj as Function, argv, (new_target === undefined ? func_obj : new_target) as Function);\n }\n return Reflect.apply(func_obj as Function, this_obj, argv);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n } finally {\n rt.stack_depth--;\n }\n}\n\nexport function JS_Call(ctx: JSContext, func_obj: JSValue, this_obj: JSValue, argv: JSValue[]): JSValue {\n return hooks.JS_CallInternal(ctx, func_obj, this_obj, undefined, argv, JS_CALL_FLAG_COPY_ARGV);\n}\n\nexport function JS_CallFree(ctx: JSContext, func_obj: JSValue, this_obj: JSValue, argv: JSValue[]): JSValue {\n return hooks.JS_CallInternal(ctx, func_obj, this_obj, undefined, argv, JS_CALL_FLAG_COPY_ARGV);\n}\n\nexport function JS_CallConstructorInternal(ctx: JSContext, func_obj: JSValue, new_target: JSValue,\n argv: JSValue[], flags: number): JSValue {\n flags |= JS_CALL_FLAG_CONSTRUCTOR;\n if (typeof func_obj !== 'function') return JS_ThrowTypeError(ctx, 'not a function');\n if (!JS_IsConstructor(ctx, func_obj)) return JS_ThrowTypeError(ctx, 'not a constructor');\n /* bytecode functions, C functions and proxies: the 'this' value is\n created by the callee from new_target */\n return hooks.JS_CallInternal(ctx, func_obj, new_target, new_target, argv, flags);\n}\n\nexport function JS_CallConstructor2(ctx: JSContext, func_obj: JSValue, new_target: JSValue, argv: JSValue[]): JSValue {\n return JS_CallConstructorInternal(ctx, func_obj, new_target, argv, JS_CALL_FLAG_COPY_ARGV);\n}\n\nexport function JS_CallConstructor(ctx: JSContext, func_obj: JSValue, argv: JSValue[]): JSValue {\n return JS_CallConstructorInternal(ctx, func_obj, func_obj, argv, JS_CALL_FLAG_COPY_ARGV);\n}\n\nexport function JS_Invoke(ctx: JSContext, this_val: JSValue, atom: JSAtom, argv: JSValue[]): JSValue {\n const func = JS_GetProperty(ctx, this_val, atom);\n if (JS_IsException(func)) return func;\n return JS_CallFree(ctx, func, this_val, argv);\n}\n\n/* get the function realm: used for the default prototype of new objects */\nexport function JS_GetFunctionRealm(ctx: JSContext, func_obj: JSValue): JSContext {\n const m = js_get_meta(func_obj);\n if (!m) return ctx;\n switch (m.class_id) {\n case JSClassID.C_FUNCTION:\n case JSClassID.C_FUNCTION_DATA:\n return m.realm ?? ctx;\n case JSClassID.BYTECODE_FUNCTION:\n case JSClassID.GENERATOR_FUNCTION:\n case JSClassID.ASYNC_FUNCTION:\n case JSClassID.ASYNC_GENERATOR_FUNCTION:\n return m.func?.function_bytecode.realm ?? m.realm ?? ctx;\n case JSClassID.BOUND_FUNCTION:\n return JS_GetFunctionRealm(ctx, (m.u as JSBoundFunctionData).func_obj);\n case JSClassID.PROXY: {\n const s = m.u as JSProxyData;\n if (s.is_revoked) { JS_ThrowTypeError(ctx, 'revoked proxy'); return ctx; }\n return JS_GetFunctionRealm(ctx, s.target);\n }\n default:\n return ctx;\n }\n}\n\n/* GetPrototypeFromConstructor: create an object with the prototype taken\n from the 'prototype' property of 'ctor' or the default class proto */\nexport function js_create_from_ctor(ctx: JSContext, ctor: JSValue, class_id: JSClassID): JSValue {\n const proto = js_proto_from_ctor(ctx, ctor, class_id);\n if (JS_IsException(proto)) return proto;\n return JS_NewObjectProtoClass(ctx, proto as JSObject | null, class_id);\n}\n\n/* GetPrototypeFromConstructor: the prototype to use for an object created\n by 'ctor' (undefined: the default class prototype) */\nexport function js_proto_from_ctor(ctx: JSContext, ctor: JSValue, class_id: JSClassID): JSValue {\n if (JS_IsUndefined(ctor)) return ctx.class_proto[class_id];\n const proto = JS_GetProperty(ctx, ctor, JS_ATOM_prototype);\n if (JS_IsException(proto)) return proto;\n if (!JS_IsObject(proto)) {\n const realm = JS_GetFunctionRealm(ctx, ctor);\n return realm.class_proto[class_id];\n }\n return proto;\n}\n\n/* Primitive wrapper objects (Number, String, Boolean, Symbol and BigInt\n instances) are host wrapper objects re-prototyped to the guest prototype,\n so that host natives (JSON.stringify, String.prototype.valueOf, ...) see\n the internal slot. The engine reads the value from the metadata. */\nexport function js_new_primitive_wrapper(ctx: JSContext, proto: JSValue | null, class_id: JSClassID,\n value: JSValue): JSValue {\n const obj = Object(value) as object;\n Object.setPrototypeOf(obj, JS_IsObject(proto) ? proto : null);\n const m = new JSObjectMeta(class_id);\n m.u = value;\n js_meta.set(obj, m);\n return obj;\n}\n\nexport function js_create_wrapper_from_ctor(ctx: JSContext, ctor: JSValue, class_id: JSClassID, value: JSValue): JSValue {\n const proto = js_proto_from_ctor(ctx, ctor, class_id);\n if (JS_IsException(proto)) return proto;\n return js_new_primitive_wrapper(ctx, proto, class_id, value);\n}\n\nexport function JS_SetConstructor2(ctx: JSContext, func_obj: JSValue, proto: JSValue, proto_flags: number, ctor_flags: number): void {\n JS_DefinePropertyValue(ctx, func_obj, JS_ATOM_prototype, proto, proto_flags);\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_constructor, func_obj, ctor_flags);\n if (typeof func_obj === 'function') js_ensure_meta(func_obj, JSClassID.C_FUNCTION).is_constructor = true;\n}\n\nexport function JS_SetConstructor(ctx: JSContext, func_obj: JSValue, proto: JSValue): void {\n JS_SetConstructor2(ctx, func_obj, proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n}\n\nexport function JS_NewGlobalCConstructor2(ctx: JSContext, func_obj: JSValue, name: string, proto: JSValue): JSValue {\n JS_DefinePropertyValueStr(ctx, ctx.global_obj, name, func_obj, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_SetConstructor(ctx, func_obj, proto);\n return func_obj;\n}\n\nexport function JS_NewGlobalCConstructor(ctx: JSContext, name: string, func: Function, length: number, proto: JSValue): JSValue {\n const func_obj = JS_NewCFunction2(ctx, func, name, length, JSCFunctionEnum.constructor_or_func, 0);\n return JS_NewGlobalCConstructor2(ctx, func_obj, name, proto);\n}\n\nexport function JS_NewGlobalCConstructorOnly(ctx: JSContext, name: string, func: Function, length: number, proto: JSValue): JSValue {\n const func_obj = JS_NewCFunction2(ctx, func, name, length, JSCFunctionEnum.constructor, 0);\n return JS_NewGlobalCConstructor2(ctx, func_obj, name, proto);\n}\n\n/* ---------------------------------------------------------------------\n JSCFunctionListEntry: declarative property lists\n --------------------------------------------------------------------- */\n\nexport const enum JSDefKind {\n CFUNC, CGETSET, CGETSET_MAGIC, PROP_STRING, PROP_INT32, PROP_INT64, PROP_DOUBLE, PROP_UNDEFINED,\n OBJECT, ALIAS,\n /* borrowed host natives (see builtins/native.ts) */\n NATIVE, NATIVE_GETSET,\n}\n\n/* fixer applied to the result of a borrowed host native (re-prototypes\n host created objects) */\nexport type JSNativeFixer = (ctx: JSContext, v: any) => any;\n\nexport function JS_NATIVE_DEF(name: string | JSAtom, length: number, host: Function, fix: JSNativeFixer | null = null): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.NATIVE, magic: 0,\n u: { length, host, fix } };\n}\nexport function JS_NATIVE_GETSET_DEF(name: string | JSAtom, get: Function | null, set: Function | null, fix: JSNativeFixer | null = null): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_CONFIGURABLE, def_type: JSDefKind.NATIVE_GETSET, magic: 0, u: { get, set, fix } };\n}\n\nexport interface JSCFunctionListEntry {\n name: string | JSAtom;\n prop_flags: number;\n def_type: JSDefKind;\n magic: number;\n u: any;\n}\n\nexport function JS_CFUNC_DEF(name: string | JSAtom, length: number, func: Function): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.CFUNC, magic: 0,\n u: { length, cproto: JSCFunctionEnum.generic, func } };\n}\nexport function JS_CFUNC_MAGIC_DEF(name: string | JSAtom, length: number, func: Function, magic: number): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.CFUNC, magic,\n u: { length, cproto: JSCFunctionEnum.generic_magic, func } };\n}\nexport function JS_CFUNC_SPECIAL_DEF(name: string | JSAtom, length: number, cproto: JSCFunctionEnum, func: Function): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.CFUNC, magic: 0,\n u: { length, cproto, func } };\n}\nexport function JS_ITERATOR_NEXT_DEF(name: string | JSAtom, length: number, func: Function, magic: number): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.CFUNC, magic,\n u: { length, cproto: JSCFunctionEnum.iterator_next, func } };\n}\nexport function JS_CGETSET_DEF(name: string | JSAtom, fgetter: Function | null, fsetter: Function | null): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_CONFIGURABLE, def_type: JSDefKind.CGETSET, magic: 0, u: { get: fgetter, set: fsetter } };\n}\nexport function JS_CGETSET_MAGIC_DEF(name: string | JSAtom, fgetter: Function | null, fsetter: Function | null, magic: number): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_CONFIGURABLE, def_type: JSDefKind.CGETSET_MAGIC, magic, u: { get: fgetter, set: fsetter } };\n}\nexport function JS_CGETSET_ENUMERABLE_DEF(name: string | JSAtom, fgetter: Function | null, fsetter: Function | null): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_CONFIGURABLE | JS_PROP_ENUMERABLE, def_type: JSDefKind.CGETSET, magic: 0, u: { get: fgetter, set: fsetter } };\n}\nexport function JS_PROP_STRING_DEF(name: string | JSAtom, cstr: string, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_STRING, magic: 0, u: cstr };\n}\nexport function JS_PROP_INT32_DEF(name: string | JSAtom, val: number, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_INT32, magic: 0, u: val };\n}\nexport function JS_PROP_INT64_DEF(name: string | JSAtom, val: number, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_INT64, magic: 0, u: val };\n}\nexport function JS_PROP_DOUBLE_DEF(name: string | JSAtom, val: number, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_DOUBLE, magic: 0, u: val };\n}\nexport function JS_PROP_UNDEFINED_DEF(name: string | JSAtom, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_UNDEFINED, magic: 0, u: undefined };\n}\nexport function JS_OBJECT_DEF(name: string | JSAtom, tab: JSCFunctionListEntry[], prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.OBJECT, magic: 0, u: tab };\n}\nexport function JS_ALIAS_DEF(name: string | JSAtom, from: string): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.ALIAS, magic: 0, u: { name: from, base: -1 } };\n}\nexport function JS_ALIAS_BASE_DEF(name: string | JSAtom, from: string, base: number): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.ALIAS, magic: 0, u: { name: from, base } };\n}\n\nfunction entry_name_atom(ctx: JSContext, name: string | JSAtom): JSAtom {\n if (typeof name === 'number') return name;\n return JS_NewAtom(ctx, name);\n}\n\nfunction entry_display_name(ctx: JSContext, atom: JSAtom): string {\n if (ctx.rt.atoms.isSymbol(atom)) return '[' + ctx.rt.atoms.toStr(atom) + ']';\n return ctx.rt.atoms.toStr(atom);\n}\n\nexport function JS_InstantiateFunctionListItem(ctx: JSContext, obj: JSValue, atom: JSAtom, e: JSCFunctionListEntry): number {\n let val: JSValue;\n let prop_flags = e.prop_flags;\n switch (e.def_type) {\n case JSDefKind.ALIAS: {\n /* base: -1 = same object, 0 = global object, 1 = Array.prototype (as in C) */\n let base_obj = obj;\n if (e.u.base === 0) base_obj = ctx.global_obj;\n else if (e.u.base === 1) base_obj = ctx.class_proto[JSClassID.ARRAY]!;\n const atom1 = JS_NewAtom(ctx, e.u.name);\n val = JS_GetProperty(ctx, base_obj, atom1);\n break;\n }\n case JSDefKind.CFUNC: {\n const name = entry_display_name(ctx, atom);\n val = JS_NewCFunction3(ctx, e.u.func, name, e.u.length, e.u.cproto, e.magic, ctx.function_proto);\n break;\n }\n case JSDefKind.CGETSET:\n case JSDefKind.CGETSET_MAGIC: {\n let getter: JSValue = undefined, setter: JSValue = undefined;\n const name = entry_display_name(ctx, atom);\n if (e.u.get) {\n getter = JS_NewCFunction3(ctx, e.u.get, 'get ' + name, 0,\n e.def_type === JSDefKind.CGETSET_MAGIC ? JSCFunctionEnum.getter_magic : JSCFunctionEnum.getter, e.magic, ctx.function_proto);\n }\n if (e.u.set) {\n setter = JS_NewCFunction3(ctx, e.u.set, 'set ' + name, 1,\n e.def_type === JSDefKind.CGETSET_MAGIC ? JSCFunctionEnum.setter_magic : JSCFunctionEnum.setter, e.magic, ctx.function_proto);\n }\n JS_DefinePropertyGetSet(ctx, obj, atom, getter, setter, prop_flags);\n return 0;\n }\n case JSDefKind.NATIVE: {\n const name = entry_display_name(ctx, atom);\n val = hooks.js_borrow_native(ctx, e.u.host, name, e.u.length, e.u.fix);\n break;\n }\n case JSDefKind.NATIVE_GETSET: {\n const name = entry_display_name(ctx, atom);\n const getter: JSValue = e.u.get ? hooks.js_borrow_native(ctx, e.u.get, 'get ' + name, 0, e.u.fix) : undefined;\n const setter: JSValue = e.u.set ? hooks.js_borrow_native(ctx, e.u.set, 'set ' + name, 1, null) : undefined;\n JS_DefinePropertyGetSet(ctx, obj, atom, getter, setter, prop_flags);\n return 0;\n }\n case JSDefKind.PROP_STRING:\n val = e.u;\n break;\n case JSDefKind.PROP_INT32:\n case JSDefKind.PROP_INT64:\n case JSDefKind.PROP_DOUBLE:\n val = e.u;\n break;\n case JSDefKind.PROP_UNDEFINED:\n val = undefined;\n break;\n case JSDefKind.OBJECT:\n val = JS_NewObject(ctx);\n JS_SetPropertyFunctionList(ctx, val, e.u);\n break;\n default:\n throw new JSInternalError('bad def_type');\n }\n JS_DefinePropertyValue(ctx, obj, atom, val, prop_flags);\n return 0;\n}\n\nexport function JS_SetPropertyFunctionList(ctx: JSContext, obj: JSValue, tab: JSCFunctionListEntry[]): void {\n for (const e of tab) {\n const atom = entry_name_atom(ctx, e.name);\n JS_InstantiateFunctionListItem(ctx, obj, atom, e);\n }\n}\n\n/* ---------------------------------------------------------------------\n Properties\n --------------------------------------------------------------------- */\n\n\nexport function is_typed_array(class_id: JSClassID): boolean {\n return class_id >= JSClassID.UINT8C_ARRAY && class_id <= JSClassID.FLOAT64_ARRAY;\n}\n\nexport function JS_ThrowTypeErrorOrFalse(ctx: JSContext, flags: number, msg: string): number {\n if ((flags & JS_PROP_THROW) || ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) {\n JS_ThrowTypeError(ctx, msg);\n return -1;\n }\n return 0;\n}\n\n/* return 1 if the flags are compatible (ValidateAndApplyPropertyDescriptor\n for non configurable properties when there is no value change) */\nexport function check_define_prop_flags(prop_flags: number, flags: number): boolean {\n const has_accessor = (flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) !== 0;\n if (!(prop_flags & JS_PROP_CONFIGURABLE)) {\n if ((flags & (JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE)) === (JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE)) return false;\n if ((flags & JS_PROP_HAS_ENUMERABLE) && (flags & JS_PROP_ENUMERABLE) !== (prop_flags & JS_PROP_ENUMERABLE)) return false;\n }\n if (flags & (JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE | JS_PROP_HAS_GET | JS_PROP_HAS_SET)) {\n if (!(prop_flags & JS_PROP_CONFIGURABLE)) {\n const has_value = (flags & (JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE)) !== 0;\n const is_getset = (prop_flags & JS_PROP_TMASK) === JS_PROP_GETSET;\n if (has_accessor && !is_getset) return false;\n if (has_value && is_getset) return false;\n if (!is_getset && !(prop_flags & JS_PROP_WRITABLE)) {\n if ((flags & (JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE)) === (JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE)) return false;\n }\n }\n }\n return true;\n}\n\n/* fill 'desc' from a host property descriptor */\nfunction js_desc_from_host(d: PropertyDescriptor, desc: JSPropertyDescriptor): void {\n let flags = 0;\n if (d.configurable) flags |= JS_PROP_CONFIGURABLE;\n if (d.enumerable) flags |= JS_PROP_ENUMERABLE;\n if ('get' in d || 'set' in d) {\n flags |= JS_PROP_GETSET;\n desc.getter = d.get;\n desc.setter = d.set;\n desc.value = undefined;\n } else {\n if (d.writable) flags |= JS_PROP_WRITABLE;\n desc.value = d.value;\n desc.getter = undefined;\n desc.setter = undefined;\n }\n desc.flags = flags;\n}\n\n/* own property lookup: -1 exception, 0 not found, 1 found (desc filled if != null) */\nexport function JS_GetOwnPropertyInternal(ctx: JSContext, desc: JSPropertyDescriptor | null, p: JSObject, prop: JSAtom): number {\n const key = JS_AtomToKey(ctx, prop);\n if (desc === null && js_meta.get(p) === undefined) {\n /* existence only: Object.hasOwn is ~40x cheaper than building a descriptor */\n try {\n return Object.hasOwn(p, key) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n }\n let d: PropertyDescriptor | undefined;\n try {\n d = Reflect.getOwnPropertyDescriptor(p, key);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (d === undefined) return 0;\n if (desc) js_desc_from_host(d, desc);\n return 1;\n}\n\nexport function JS_GetOwnProperty(ctx: JSContext, desc: JSPropertyDescriptor | null, obj: JSValue, prop: JSAtom): number {\n if (!JS_IsObject(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n return JS_GetOwnPropertyInternal(ctx, desc, obj, prop);\n}\n\nexport function new_desc(): JSPropertyDescriptor {\n return { flags: 0, value: undefined, getter: undefined, setter: undefined };\n}\n\n/* prototype of a primitive value (null for undefined/null) */\nexport function JS_GetPrototypePrimitive(ctx: JSContext, val: JSValue): JSObject | null {\n switch (typeof val) {\n case 'bigint': return ctx.class_proto[JSClassID.BIG_INT];\n case 'number': return ctx.class_proto[JSClassID.NUMBER];\n case 'boolean': return ctx.class_proto[JSClassID.BOOLEAN];\n case 'string': return ctx.class_proto[JSClassID.STRING];\n case 'symbol': return ctx.class_proto[JSClassID.SYMBOL];\n default: return null;\n }\n}\n\n/* return the prototype (object or null) or JS_EXCEPTION */\nexport function JS_GetPrototype(ctx: JSContext, obj: JSValue): JSValue {\n if (JS_IsObject(obj)) {\n try {\n return Reflect.getPrototypeOf(obj);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n }\n return JS_GetPrototypePrimitive(ctx, obj);\n}\n\nexport function JS_GetPrototypeFree(ctx: JSContext, obj: JSValue): JSValue { return JS_GetPrototype(ctx, obj); }\n\nfunction js_string_own_property(ctx: JSContext, str: string, prop: JSAtom): JSValue | undefined {\n if (__JS_AtomIsTaggedInt(prop)) {\n const idx = __JS_AtomToUInt32(prop);\n if (idx < str.length) return str[idx];\n return undefined;\n }\n if (prop === JS_ATOM_length) return str.length;\n return undefined;\n}\n\n/* GetProperty. 'this_obj' is the receiver. */\nexport function JS_GetPropertyInternal(ctx: JSContext, obj: JSValue, prop: JSAtom, this_obj: JSValue, throw_ref_error: boolean): JSValue {\n let base: object;\n switch (typeof obj) {\n case 'object':\n case 'function':\n if (obj === null) return JS_ThrowTypeErrorAtom(ctx, \"cannot read property '%s' of null\", prop);\n base = obj;\n break;\n case 'undefined':\n return JS_ThrowTypeErrorAtom(ctx, \"cannot read property '%s' of undefined\", prop);\n case 'string': {\n const v = js_string_own_property(ctx, obj, prop);\n if (v !== undefined) return v;\n base = ctx.class_proto[JSClassID.STRING]!;\n break;\n }\n default:\n base = JS_GetPrototypePrimitive(ctx, obj)!;\n break;\n }\n const key = JS_AtomToKey(ctx, prop);\n try {\n if (throw_ref_error && !Reflect.has(base, key)) return JS_ThrowReferenceErrorNotDefined(ctx, prop);\n if (this_obj === obj && base === obj) return (base as any)[key];\n /* primitive base or explicit receiver: the receiver is the original value */\n return Reflect.get(base, key, this_obj);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n}\n\nexport function JS_GetProperty(ctx: JSContext, this_obj: JSValue, prop: JSAtom): JSValue {\n return JS_GetPropertyInternal(ctx, this_obj, prop, this_obj, false);\n}\n\nexport function JS_GetPropertyStr(ctx: JSContext, this_obj: JSValue, prop: string): JSValue {\n return JS_GetPropertyInternal(ctx, this_obj, JS_NewAtom(ctx, prop), this_obj, false);\n}\n\nexport function JS_GetPropertyUint32(ctx: JSContext, this_obj: JSValue, idx: number): JSValue {\n return JS_GetPropertyInternal(ctx, this_obj, JS_NewAtomUInt32(ctx, idx), this_obj, false);\n}\n\nexport function JS_GetPropertyInt64(ctx: JSContext, this_obj: JSValue, idx: number): JSValue {\n return JS_GetPropertyInternal(ctx, this_obj, JS_NewAtomInt64(ctx, idx), this_obj, false);\n}\n\n/* obj[prop] with a JS value as property key */\nexport function JS_GetPropertyValue(ctx: JSContext, this_obj: JSValue, prop: JSValue): JSValue {\n if (JS_IsObject(this_obj) && !JS_IsObject(prop) && typeof prop !== 'undefined') {\n /* the host performs ToPropertyKey on primitives */\n try {\n return (this_obj as any)[prop as PropertyKey];\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n }\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n return JS_GetPropertyInternal(ctx, this_obj, atom, this_obj, false);\n}\n\n/* HasProperty: -1 exception */\nexport function JS_HasProperty(ctx: JSContext, obj: JSValue, prop: JSAtom): number {\n if (!JS_IsObject(obj)) return 0;\n try {\n return Reflect.has(obj, JS_AtomToKey(ctx, prop)) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n}\n\nexport function JS_IsExtensible(ctx: JSContext, obj: JSValue): number {\n if (!JS_IsObject(obj)) return 0;\n try {\n return Reflect.isExtensible(obj) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n}\n\nexport function JS_PreventExtensions(ctx: JSContext, obj: JSValue): number {\n if (!JS_IsObject(obj)) return 1;\n try {\n return Reflect.preventExtensions(obj) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n}\n\n/* SetPrototypeOf: -1 exception, 0 failed (throw_flag false), 1 ok */\nexport function JS_SetPrototypeInternal(ctx: JSContext, obj: JSValue, proto_val: JSValue, throw_flag: boolean): number {\n if (!(proto_val === null || JS_IsObject(proto_val))) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n if (!JS_IsObject(obj)) {\n if (obj === undefined || obj === null) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n return 1;\n }\n let ok: boolean;\n try {\n ok = Reflect.setPrototypeOf(obj, proto_val as object | null);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (!ok) {\n if (throw_flag) {\n let ext = true;\n try { ext = Reflect.isExtensible(obj); } catch { /* ignore */ }\n if (JS_GetClassID(obj) === JSClassID.PROXY) JS_ThrowTypeError(ctx, 'proxy: bad prototype');\n else if (!ext) JS_ThrowTypeError(ctx, 'object is not extensible');\n else JS_ThrowTypeError(ctx, 'circular prototype chain');\n return -1;\n }\n return 0;\n }\n return 1;\n}\n\nexport function JS_SetPrototype(ctx: JSContext, obj: JSValue, proto_val: JSValue): number {\n return JS_SetPrototypeInternal(ctx, obj, proto_val, true);\n}\n\nfunction js_strict_store(o: object, k: JSPropertyKey, v: JSValue): void {\n (o as any)[k] = v; /* module code is strict: throws a host TypeError on failure */\n}\n\n/* after a strict store threw a host TypeError: true if the failure is one\n that a sloppy store would ignore (read-only data property, accessor\n without setter, or non-extensible receiver), false if the error came\n from elsewhere (e.g. a typed array element conversion) */\nfunction js_store_failed_silently(obj: object, key: JSPropertyKey): boolean {\n let o: object | null = obj;\n while (o !== null) {\n const d = Reflect.getOwnPropertyDescriptor(o, key);\n if (d !== undefined) {\n if ('value' in d) return !d.writable;\n return d.set === undefined;\n }\n o = Reflect.getPrototypeOf(o);\n }\n return !Reflect.isExtensible(obj);\n}\n\n/* true if 'e' is an error raised by the host engine itself (its prototype\n chain reaches the host Error.prototype), as opposed to a guest value */\nexport function js_is_host_error(e: unknown): boolean {\n return e instanceof Error;\n}\n\nfunction js_set_failed(ctx: JSContext, obj: object, key: JSPropertyKey, prop: JSAtom, flags: number): number {\n if ((flags & JS_PROP_THROW) || ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) {\n if (JS_GetClassID(obj) === JSClassID.PROXY) {\n JS_ThrowTypeError(ctx, 'proxy: cannot set property');\n } else {\n let has = false;\n try { has = Reflect.has(obj, key); } catch { /* ignore */ }\n if (has) JS_ThrowTypeErrorAtom(ctx, \"'%s' is read-only\", prop);\n else JS_ThrowTypeError(ctx, 'object is not extensible');\n }\n return -1;\n }\n return 0;\n}\n\n/* SetProperty: -1 exception, 0 failed silently, 1 ok. 'this_obj' is the receiver. */\nexport function JS_SetPropertyInternal(ctx: JSContext, obj: JSValue, prop: JSAtom, val: JSValue,\n this_obj: JSValue, flags: number): number {\n const key = JS_AtomToKey(ctx, prop);\n if (JS_IsObject(obj)) {\n if (this_obj === obj && js_meta.get(obj)?.class_id !== JSClassID.PROXY) {\n /* plain assignment (proxies use Reflect.set below, which tells a refused\n trap from an invariant violation): Reflect.set is ~50x slower than an inline-cached\n store in JSC (and ~600 ns when appending to an array). A strict\n store throws a host TypeError on failure, which we diagnose with the\n QuickJS message; guest setters throw guest values, which propagate. */\n try {\n js_strict_store(obj, key, val);\n return 1;\n } catch (e) {\n if (js_is_host_error(e) && js_store_failed_silently(obj, key)) {\n return js_set_failed(ctx, obj, key, prop, flags);\n }\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n }\n let ok: boolean;\n try {\n ok = Reflect.set(obj, key, val, this_obj);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (ok) return 1;\n return js_set_failed(ctx, obj, key, prop, flags);\n }\n if (obj === undefined || obj === null) {\n JS_ThrowTypeErrorAtom(ctx, obj === null ? \"cannot set property '%s' of null\" : \"cannot set property '%s' of undefined\", prop);\n return -1;\n }\n /* primitive: look for a setter in the prototype chain of the primitive */\n const proto = JS_GetPrototypePrimitive(ctx, obj)!;\n let ok: boolean;\n try {\n ok = Reflect.set(proto, key, val, this_obj);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (ok) return 1;\n return JS_ThrowTypeErrorOrFalse(ctx, flags, 'cannot set property on a primitive value');\n}\n\nexport function JS_SetProperty(ctx: JSContext, this_obj: JSValue, prop: JSAtom, val: JSValue): number {\n return JS_SetPropertyInternal(ctx, this_obj, prop, val, this_obj, JS_PROP_THROW);\n}\n\nexport function JS_SetPropertyStr(ctx: JSContext, this_obj: JSValue, prop: string, val: JSValue): number {\n return JS_SetProperty(ctx, this_obj, JS_NewAtom(ctx, prop), val);\n}\n\nexport function JS_SetPropertyUint32(ctx: JSContext, this_obj: JSValue, idx: number, val: JSValue): number {\n return JS_SetProperty(ctx, this_obj, JS_NewAtomUInt32(ctx, idx), val);\n}\n\nexport function JS_SetPropertyInt64(ctx: JSContext, this_obj: JSValue, idx: number, val: JSValue): number {\n return JS_SetProperty(ctx, this_obj, JS_NewAtomInt64(ctx, idx), val);\n}\n\n/* obj[prop] = val with a JS value as property key */\nexport function JS_SetPropertyValue(ctx: JSContext, this_obj: JSValue, prop: JSValue, val: JSValue, flags: number): number {\n if (JS_IsObject(this_obj) && !JS_IsObject(prop) && typeof prop !== 'undefined') {\n let ok: boolean;\n try {\n ok = Reflect.set(this_obj, prop as PropertyKey, val);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (ok) return 1;\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return -1;\n return js_set_failed(ctx, this_obj, JS_AtomToKey(ctx, atom), atom, flags);\n }\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return -1;\n return JS_SetPropertyInternal(ctx, this_obj, atom, val, this_obj, flags);\n}\n\nexport function JS_CreateDataPropertyUint32(ctx: JSContext, this_obj: JSValue, index: number, val: JSValue, flags: number): number {\n return JS_DefinePropertyValue(ctx, this_obj, JS_NewAtomInt64(ctx, index), val, flags | JS_PROP_C_W_E);\n}\n\n/* build a host property descriptor from the JS_PROP_HAS_* flags */\nfunction js_host_desc(val: JSValue, getter: JSValue, setter: JSValue, flags: number): PropertyDescriptor {\n const d: PropertyDescriptor = {};\n if (flags & JS_PROP_HAS_VALUE) d.value = val;\n if (flags & JS_PROP_HAS_GET) d.get = getter as any;\n if (flags & JS_PROP_HAS_SET) d.set = setter as any;\n if (flags & JS_PROP_HAS_WRITABLE) d.writable = (flags & JS_PROP_WRITABLE) !== 0;\n if (flags & JS_PROP_HAS_CONFIGURABLE) d.configurable = (flags & JS_PROP_CONFIGURABLE) !== 0;\n if (flags & JS_PROP_HAS_ENUMERABLE) d.enumerable = (flags & JS_PROP_ENUMERABLE) !== 0;\n return d;\n}\n\n/* DefineOwnProperty: -1 exception, 0 failed, 1 ok */\nexport function JS_DefineProperty(ctx: JSContext, this_obj: JSValue, prop: JSAtom, val: JSValue,\n getter: JSValue, setter: JSValue, flags: number): number {\n if (!JS_IsObject(this_obj)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n let ok: boolean;\n if (this_obj === ctx.class_proto[JSClassID.OBJECT] && prop !== JS_ATOM___proto__ &&\n ((flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) || ((flags & JS_PROP_HAS_WRITABLE) && !(flags & JS_PROP_WRITABLE)))) {\n ctx.plain_object_proto.ok = false;\n }\n try {\n ok = Reflect.defineProperty(this_obj, JS_AtomToKey(ctx, prop), js_host_desc(val, getter, setter, flags));\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (ok) return 1;\n if (JS_GetClassID(this_obj) === JSClassID.PROXY) return JS_ThrowTypeErrorOrFalse(ctx, flags, 'proxy: inconsistent defineProperty');\n return JS_ThrowTypeErrorOrFalse(ctx, flags, 'property is not configurable');\n}\n\nexport function JS_DefinePropertyValue(ctx: JSContext, this_obj: JSValue, prop: JSAtom, val: JSValue, flags: number): number {\n return JS_DefineProperty(ctx, this_obj, prop, val, undefined, undefined,\n flags | JS_PROP_HAS_VALUE | JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_WRITABLE | JS_PROP_HAS_ENUMERABLE);\n}\n\nexport function JS_DefinePropertyValueValue(ctx: JSContext, this_obj: JSValue, prop: JSValue, val: JSValue, flags: number): number {\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return -1;\n return JS_DefinePropertyValue(ctx, this_obj, atom, val, flags);\n}\n\nexport function JS_DefinePropertyValueUint32(ctx: JSContext, this_obj: JSValue, idx: number, val: JSValue, flags: number): number {\n return JS_DefinePropertyValue(ctx, this_obj, JS_NewAtomUInt32(ctx, idx), val, flags);\n}\nexport function JS_DefinePropertyValueInt64(ctx: JSContext, this_obj: JSValue, idx: number, val: JSValue, flags: number): number {\n return JS_DefinePropertyValue(ctx, this_obj, JS_NewAtomInt64(ctx, idx), val, flags);\n}\nexport function JS_DefinePropertyValueStr(ctx: JSContext, this_obj: JSValue, prop: string, val: JSValue, flags: number): number {\n return JS_DefinePropertyValue(ctx, this_obj, JS_NewAtom(ctx, prop), val, flags);\n}\n\nexport function JS_DefinePropertyGetSet(ctx: JSContext, this_obj: JSValue, prop: JSAtom, getter: JSValue, setter: JSValue, flags: number): number {\n return JS_DefineProperty(ctx, this_obj, prop, undefined, getter, setter,\n flags | JS_PROP_HAS_GET | JS_PROP_HAS_SET | JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_ENUMERABLE);\n}\n\n/* delete an own property: -1 exception, 0 not deleted, 1 deleted (or absent) */\nexport function delete_property(ctx: JSContext, p: JSObject, atom: JSAtom): number {\n try {\n return Reflect.deleteProperty(p, JS_AtomToKey(ctx, atom)) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n}\n\nexport function JS_DeleteProperty(ctx: JSContext, obj: JSValue, prop: JSAtom, flags: number): number {\n const obj1 = JS_ToObject(ctx, obj);\n if (JS_IsException(obj1)) return -1;\n const res = delete_property(ctx, obj1 as JSObject, prop);\n if (res !== 0) return res;\n if ((flags & JS_PROP_THROW) || ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) {\n JS_ThrowTypeError(ctx, 'could not delete property');\n return -1;\n }\n return 0;\n}\n\nexport function JS_DeletePropertyInt64(ctx: JSContext, obj: JSValue, idx: number, flags: number): number {\n return JS_DeleteProperty(ctx, obj, JS_NewAtomInt64(ctx, idx), flags);\n}\n\nexport interface JSPropertyEnum { atom: JSAtom; is_enumerable: boolean }\n\n/* own property keys of 'p' filtered by the JS_GPN_* flags */\nexport function JS_GetOwnPropertyNamesInternal(ctx: JSContext, p: JSObject, flags: number): JSPropertyEnum[] | null {\n let keys: (string | symbol)[];\n try {\n keys = Reflect.ownKeys(p);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return null;\n }\n const need_enum = (flags & (JS_GPN_ENUM_ONLY | JS_GPN_SET_ENUM)) !== 0;\n const tab: JSPropertyEnum[] = [];\n for (const k of keys) {\n if (typeof k === 'symbol') {\n if (!(flags & JS_GPN_SYMBOL_MASK)) continue;\n } else {\n if (!(flags & JS_GPN_STRING_MASK)) continue;\n }\n let is_enumerable = true;\n if (need_enum) {\n let d: PropertyDescriptor | undefined;\n try {\n d = Reflect.getOwnPropertyDescriptor(p, k);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return null;\n }\n if (d === undefined) continue; /* deleted by a proxy trap */\n is_enumerable = !!d.enumerable;\n if ((flags & JS_GPN_ENUM_ONLY) && !is_enumerable) continue;\n }\n tab.push({ atom: JS_KeyToAtom(ctx, k), is_enumerable });\n }\n return tab;\n}\n\nexport function JS_GetOwnPropertyNames(ctx: JSContext, obj: JSValue, flags: number): JSPropertyEnum[] | null {\n if (!JS_IsObject(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return null; }\n return JS_GetOwnPropertyNamesInternal(ctx, obj, flags);\n}\n\n/* FromPropertyDescriptor */\nexport function JS_FromPropertyDescriptor(ctx: JSContext, d: JSPropertyDescriptor): JSValue {\n const obj = JS_NewObject(ctx);\n if ((d.flags & JS_PROP_TMASK) === JS_PROP_GETSET) {\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_get, d.getter, JS_PROP_C_W_E);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_set, d.setter, JS_PROP_C_W_E);\n } else {\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_value, d.value, JS_PROP_C_W_E);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_writable, (d.flags & JS_PROP_WRITABLE) !== 0, JS_PROP_C_W_E);\n }\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_enumerable, (d.flags & JS_PROP_ENUMERABLE) !== 0, JS_PROP_C_W_E);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_configurable, (d.flags & JS_PROP_CONFIGURABLE) !== 0, JS_PROP_C_W_E);\n return obj;\n}\n\n/* ToPropertyDescriptor: fill d.flags with the JS_PROP_HAS_* flags; -1 on exception */\nexport function js_obj_to_desc(ctx: JSContext, d: JSPropertyDescriptor, desc: JSValue): number {\n if (!JS_IsObject(desc)) {\n JS_ThrowTypeError(ctx, 'property descriptor must be an object');\n return -1;\n }\n let flags = 0;\n let val: JSValue = undefined, getter: JSValue = undefined, setter: JSValue = undefined;\n const get_field = (atom: JSAtom): [number, JSValue] => {\n const present = JS_HasProperty(ctx, desc, atom);\n if (present <= 0) return [present, undefined];\n const v = JS_GetProperty(ctx, desc, atom);\n if (JS_IsException(v)) return [-1, undefined];\n return [1, v];\n };\n let r: [number, JSValue];\n r = get_field(JS_ATOM_configurable); if (r[0] < 0) return -1;\n if (r[0]) { flags |= JS_PROP_HAS_CONFIGURABLE; if (JS_ToBoolFree(ctx, r[1])) flags |= JS_PROP_CONFIGURABLE; }\n r = get_field(JS_ATOM_enumerable); if (r[0] < 0) return -1;\n if (r[0]) { flags |= JS_PROP_HAS_ENUMERABLE; if (JS_ToBoolFree(ctx, r[1])) flags |= JS_PROP_ENUMERABLE; }\n r = get_field(JS_ATOM_value); if (r[0] < 0) return -1;\n if (r[0]) { flags |= JS_PROP_HAS_VALUE; val = r[1]; }\n r = get_field(JS_ATOM_writable); if (r[0] < 0) return -1;\n if (r[0]) { flags |= JS_PROP_HAS_WRITABLE; if (JS_ToBoolFree(ctx, r[1])) flags |= JS_PROP_WRITABLE; }\n r = get_field(JS_ATOM_get); if (r[0] < 0) return -1;\n if (r[0]) {\n flags |= JS_PROP_HAS_GET;\n if (!(JS_IsUndefined(r[1]) || JS_IsFunction(ctx, r[1]))) { JS_ThrowTypeError(ctx, 'invalid getter'); return -1; }\n getter = r[1];\n }\n r = get_field(JS_ATOM_set); if (r[0] < 0) return -1;\n if (r[0]) {\n flags |= JS_PROP_HAS_SET;\n if (!(JS_IsUndefined(r[1]) || JS_IsFunction(ctx, r[1]))) { JS_ThrowTypeError(ctx, 'invalid setter'); return -1; }\n setter = r[1];\n }\n if ((flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) && (flags & (JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE))) {\n JS_ThrowTypeError(ctx, 'cannot have setter/getter and value or writable');\n return -1;\n }\n d.flags = flags;\n d.value = val;\n d.getter = getter;\n d.setter = setter;\n return 0;\n}\n\n/* 'length' property of an array-like: -1 on exception */\nexport function js_get_length64(ctx: JSContext, obj: JSValue): number {\n const len = JS_GetProperty(ctx, obj, JS_ATOM_length);\n if (JS_IsException(len)) return -1;\n return JS_ToLengthFree(ctx, len);\n}\nexport const js_get_length32 = js_get_length64;\n\nexport function js_set_length64(ctx: JSContext, obj: JSValue, len: number): number {\n return JS_SetProperty(ctx, obj, JS_ATOM_length, len);\n}\n\n/* ---------------------------------------------------------------------\n Global variables\n --------------------------------------------------------------------- */\n\nexport const DEFINE_GLOBAL_LEX_VAR = 1 << 7;\nexport const DEFINE_GLOBAL_FUNC_VAR = 1 << 6;\n\nfunction js_global_own_desc(ctx: JSContext, key: JSPropertyKey): PropertyDescriptor | undefined | null {\n try {\n return Reflect.getOwnPropertyDescriptor(ctx.global_obj, key);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return null;\n }\n}\n\nexport function JS_CheckDefineGlobalVar(ctx: JSContext, prop: JSAtom, flags: number): number {\n const key = JS_AtomToKey(ctx, prop);\n const d = js_global_own_desc(ctx, key);\n if (d === null) return -1;\n if (flags & DEFINE_GLOBAL_LEX_VAR) {\n if (d && !d.configurable) {\n JS_ThrowSyntaxErrorAtom(ctx, \"redeclaration of '%s'\", prop);\n return -1;\n }\n } else {\n if (!d && !Reflect.isExtensible(ctx.global_obj)) {\n JS_ThrowTypeErrorAtom(ctx, \"cannot define variable '%s'\", prop);\n return -1;\n }\n if (flags & DEFINE_GLOBAL_FUNC_VAR) {\n if (d && !d.configurable &&\n (('get' in d || 'set' in d) || !(d.writable && d.enumerable))) {\n JS_ThrowTypeErrorAtom(ctx, \"cannot define variable '%s'\", prop);\n return -1;\n }\n }\n }\n /* check if there already is a lexical declaration */\n if (key in ctx.global_var_obj) {\n JS_ThrowSyntaxErrorAtom(ctx, \"redeclaration of '%s'\", prop);\n return -1;\n }\n return 0;\n}\n\n/* def_flags is (0, DEFINE_GLOBAL_LEX_VAR) | JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE */\nexport function JS_DefineGlobalVar(ctx: JSContext, prop: JSAtom, def_flags: number): number {\n const key = JS_AtomToKey(ctx, prop);\n if (def_flags & DEFINE_GLOBAL_LEX_VAR) {\n const gvo = ctx.global_var_obj;\n if (key in gvo) return 0;\n Reflect.defineProperty(gvo, key, {\n value: JS_UNINITIALIZED, writable: (def_flags & JS_PROP_WRITABLE) !== 0,\n enumerable: true, configurable: true,\n });\n return 0;\n }\n const d = js_global_own_desc(ctx, key);\n if (d === null) return -1;\n if (d) return 0;\n if (!Reflect.isExtensible(ctx.global_obj)) return 0;\n try {\n Reflect.defineProperty(ctx.global_obj, key, {\n value: undefined, writable: true, enumerable: true,\n configurable: (def_flags & JS_PROP_CONFIGURABLE) !== 0,\n });\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n return 0;\n}\n\n/* 'def_flags' is 0 or JS_PROP_CONFIGURABLE. */\nexport function JS_DefineGlobalFunction(ctx: JSContext, prop: JSAtom, func: JSValue, def_flags: number): number {\n const d = js_global_own_desc(ctx, JS_AtomToKey(ctx, prop));\n if (d === null) return -1;\n let flags = JS_PROP_HAS_VALUE | JS_PROP_THROW;\n if (!d || d.configurable) {\n flags |= JS_PROP_ENUMERABLE | JS_PROP_WRITABLE | def_flags | JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_WRITABLE | JS_PROP_HAS_ENUMERABLE;\n }\n if (JS_DefineProperty(ctx, ctx.global_obj, prop, func, undefined, undefined, flags) < 0) return -1;\n return 0;\n}\n\nexport function JS_GetGlobalVar(ctx: JSContext, prop: JSAtom, throw_ref_error: number): JSValue {\n const key = JS_AtomToKey(ctx, prop);\n const gvo = ctx.global_var_obj;\n if (key in gvo) {\n const v = gvo[key];\n if (v === JS_UNINITIALIZED) return JS_ThrowReferenceErrorUninitialized(ctx, prop);\n return v;\n }\n const g = ctx.global_obj;\n try {\n if (!Reflect.has(g, key)) {\n if (throw_ref_error) return JS_ThrowReferenceErrorNotDefined(ctx, prop);\n return undefined;\n }\n return (g as any)[key];\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n}\n\n/* construct a reference to a global variable: returns [obj, prop] or null on exception */\nexport function JS_GetGlobalVarRef(ctx: JSContext, prop: JSAtom): [JSValue, JSValue] | null {\n const key = JS_AtomToKey(ctx, prop);\n const gvo = ctx.global_var_obj;\n let obj: JSValue;\n if (key in gvo) {\n const d = Reflect.getOwnPropertyDescriptor(gvo, key)!;\n if (d.value === JS_UNINITIALIZED) {\n JS_ThrowReferenceErrorUninitialized(ctx, prop);\n return null;\n }\n if (!d.writable) {\n JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, prop);\n return null;\n }\n obj = gvo;\n } else {\n const ret = JS_HasProperty(ctx, ctx.global_obj, prop);\n if (ret < 0) return null;\n obj = ret ? ctx.global_obj : undefined;\n }\n return [obj, JS_AtomToValue(ctx, prop)];\n}\n\n/* use for strict variable access: test if the variable exists */\nexport function JS_CheckGlobalVar(ctx: JSContext, prop: JSAtom): number {\n if (JS_AtomToKey(ctx, prop) in ctx.global_var_obj) return 1;\n return JS_HasProperty(ctx, ctx.global_obj, prop);\n}\n\n/* flag = 0: normal variable write\n flag = 1: initialize lexical variable\n flag = 2: normal variable write, strict check was done before */\nexport function JS_SetGlobalVar(ctx: JSContext, prop: JSAtom, val: JSValue, flag: number): number {\n const key = JS_AtomToKey(ctx, prop);\n const gvo = ctx.global_var_obj;\n if (key in gvo) {\n if (flag !== 1) {\n const d = Reflect.getOwnPropertyDescriptor(gvo, key)!;\n if (d.value === JS_UNINITIALIZED) { JS_ThrowReferenceErrorUninitialized(ctx, prop); return -1; }\n if (!d.writable) return JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, prop);\n }\n Reflect.defineProperty(gvo, key, { value: val });\n return 0;\n }\n let flags = JS_PROP_THROW_STRICT;\n if (is_strict_mode(ctx)) flags |= JS_PROP_NO_ADD;\n if (flag === 2 || (flags & JS_PROP_NO_ADD)) {\n /* strict mode: the variable must exist */\n const ret = JS_HasProperty(ctx, ctx.global_obj, prop);\n if (ret < 0) return -1;\n if (!ret) {\n if (flag !== 2) { JS_ThrowReferenceErrorNotDefined(ctx, prop); return -1; }\n }\n }\n return JS_SetPropertyInternal(ctx, ctx.global_obj, prop, val, ctx.global_obj, flags);\n}\n\n/* ---------------------------------------------------------------------\n Conversions\n --------------------------------------------------------------------- */\n\nexport const HINT_STRING = 0;\nexport const HINT_NUMBER = 1;\nexport const HINT_NONE = 2;\nexport const HINT_FORCE_ORDINARY = 1 << 4; /* don't try Symbol.toPrimitive */\n\nexport function JS_ToPrimitiveFree(ctx: JSContext, val: JSValue, hint: number): JSValue {\n if (!JS_IsObject(val)) return val;\n if (!(hint & HINT_FORCE_ORDINARY)) {\n const method = JS_GetProperty(ctx, val, JS_ATOM_Symbol_toPrimitive);\n if (JS_IsException(method)) return JS_EXCEPTION;\n if (!(method === undefined || method === null)) {\n let atom: JSAtom;\n switch (hint) {\n case HINT_STRING: atom = JS_ATOM_string; break;\n case HINT_NUMBER: atom = JS_ATOM_number; break;\n default: atom = JS_ATOM_default; break;\n }\n const arg = JS_AtomToString(ctx, atom);\n const ret = JS_CallFree(ctx, method, val, [arg]);\n if (JS_IsException(ret)) return ret;\n if (JS_IsObject(ret)) return JS_ThrowTypeError(ctx, 'toPrimitive');\n return ret;\n }\n }\n hint &= ~HINT_FORCE_ORDINARY;\n if (hint !== HINT_STRING) hint = HINT_NUMBER;\n for (let i = 0; i < 2; i++) {\n const name = ((i ^ hint) === 0) ? JS_ATOM_toString : JS_ATOM_valueOf;\n const method = JS_GetProperty(ctx, val, name);\n if (JS_IsException(method)) return JS_EXCEPTION;\n if (JS_IsFunction(ctx, method)) {\n const ret = JS_CallFree(ctx, method, val, []);\n if (JS_IsException(ret)) return ret;\n if (!JS_IsObject(ret)) return ret;\n }\n }\n return JS_ThrowTypeError(ctx, 'toPrimitive');\n}\nconst JS_ATOM_default = 22; /* 'default' keyword atom */\n\nexport function JS_ToPrimitive(ctx: JSContext, val: JSValue, hint: number): JSValue {\n return JS_ToPrimitiveFree(ctx, val, hint);\n}\n\nexport function JS_ToBoolFree(ctx: JSContext, val: JSValue): boolean {\n switch (typeof val) {\n case 'boolean': return val;\n case 'number': return !(val === 0 || Number.isNaN(val));\n case 'string': return val.length > 0;\n case 'bigint': return val !== 0n;\n case 'undefined': return false;\n case 'object':\n if (val === null) return false;\n if (JS_IsObject(val)) return true;\n return true;\n }\n return true;\n}\nexport const JS_ToBool = JS_ToBoolFree;\n\n/* StringToNumber */\nexport function js_atof(ctx: JSContext, str: string): number {\n return Number(str);\n}\n\n/* ToNumber: returns JS_EXCEPTION on error */\n/* ToNumber: returns JS_EXCEPTION on error */\nexport function JS_ToNumberFree(ctx: JSContext, val: JSValue): JSValue {\n switch (typeof val) {\n case 'number': return val;\n case 'boolean': return val ? 1 : 0;\n case 'undefined': return NaN;\n case 'string': return js_atof(ctx, val);\n case 'bigint': return JS_ThrowTypeError(ctx, 'cannot convert bigint to number');\n case 'symbol': return JS_ThrowTypeError(ctx, 'cannot convert symbol to number');\n case 'object':\n case 'function':\n if (val === null) return 0;\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitiveFree(ctx, val, HINT_NUMBER);\n if (JS_IsException(prim)) return prim;\n return JS_ToNumberFree(ctx, prim);\n }\n break;\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to number');\n}\nexport const JS_ToNumber = JS_ToNumberFree;\n\n/* ToNumeric: number or bigint */\nexport function JS_ToNumericFree(ctx: JSContext, val: JSValue): JSValue {\n if (typeof val === 'bigint') return val;\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitiveFree(ctx, val, HINT_NUMBER);\n if (JS_IsException(prim)) return prim;\n if (typeof prim === 'bigint') return prim;\n return JS_ToNumberFree(ctx, prim);\n }\n return JS_ToNumberFree(ctx, val);\n}\nexport const JS_ToNumeric = JS_ToNumericFree;\n\n\n/* return a number or JS_EXCEPTION */\nexport function JS_ToFloat64(ctx: JSContext, val: JSValue): number | JSSpecial {\n if (typeof val === 'number') return val;\n const r = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r)) return r;\n return r as number;\n}\n\n/* return the int32 value or throws; on exception returns JS_EXCEPTION */\nexport function JS_ToInt32Free(ctx: JSContext, val: JSValue): number | JSSpecial {\n if (typeof val === 'number') return val | 0;\n const r = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r)) return r;\n return (r as number) | 0;\n}\nexport const JS_ToInt32 = JS_ToInt32Free;\n\nexport function JS_ToUint32Free(ctx: JSContext, val: JSValue): number | JSSpecial {\n if (typeof val === 'number') return val >>> 0;\n const r = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r)) return r;\n return (r as number) >>> 0;\n}\nexport const JS_ToUint32 = JS_ToUint32Free;\n\n/* ToInt32 with clamping (used by typed arrays / string functions) */\nexport function JS_ToInt32Clamp(ctx: JSContext, val: JSValue, min_val: number, max_val: number, neg_offset: number): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n let d = r as number;\n if (Number.isNaN(d)) return min_val < 0 ? 0 : min_val;\n d = Math.trunc(d);\n if (d < 0) { d += neg_offset; if (d < min_val) d = min_val; }\n else if (d > max_val) d = max_val;\n return d;\n}\n\n/* ToInt32 with saturation */\nexport function JS_ToInt32Sat(ctx: JSContext, val: JSValue): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n const d = r as number;\n if (Number.isNaN(d)) return 0;\n if (d < -2147483648) return -2147483648;\n if (d > 2147483647) return 2147483647;\n return Math.trunc(d);\n}\n\nexport function JS_ToInt64Sat(ctx: JSContext, val: JSValue): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n const d = r as number;\n if (Number.isNaN(d)) return 0;\n if (d < -9223372036854775808) return -9223372036854775808;\n if (d >= 9223372036854775807) return 9223372036854775807;\n return Math.trunc(d);\n}\n\nexport function JS_ToInt64Clamp(ctx: JSContext, val: JSValue, min_val: number, max_val: number, neg_offset: number): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n let d = r as number;\n if (Number.isNaN(d)) return min_val < 0 ? 0 : min_val;\n d = Math.trunc(d);\n if (d < 0) { d += neg_offset; if (d < min_val) d = min_val; }\n else if (d > max_val) d = max_val;\n return d;\n}\n\n/* ToInteger (truncation); returns JS_EXCEPTION on error */\nexport function JS_ToInt64Free(ctx: JSContext, val: JSValue): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n const d = r as number;\n if (Number.isNaN(d)) return 0;\n if (!Number.isFinite(d)) return d > 0 ? 9223372036854775807 : -9223372036854775808;\n return Math.trunc(d);\n}\nexport const JS_ToInt64 = JS_ToInt64Free;\n\n/* ToIndex: returns -1 and throws on error */\nexport function JS_ToIndex(ctx: JSContext, val: JSValue): number {\n if (val === undefined) return 0;\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return -1;\n let d = r as number;\n if (Number.isNaN(d)) d = 0;\n d = Math.trunc(d);\n if (d < 0 || d > 9007199254740991) {\n JS_ThrowRangeError(ctx, 'invalid array index');\n return -1;\n }\n return d === 0 ? 0 : d;\n}\n\n/* ToLength: returns -1 on exception */\nexport function JS_ToLengthFree(ctx: JSContext, val: JSValue): number {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return -1;\n let d = r as number;\n if (Number.isNaN(d) || d <= 0) return 0;\n d = Math.trunc(d);\n if (d > 9007199254740991) d = 9007199254740991;\n return d;\n}\n\n/* ToUint32 with RangeError if not a valid array length (ArraySetLength\n semantics: ToUint32 and ToNumber are both evaluated). Return -1 on exception */\nexport function JS_ToArrayLengthFree(ctx: JSContext, val: JSValue, is_array_ctor: boolean): number {\n let d: number;\n if (typeof val === 'number') {\n d = val;\n } else {\n const r = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r)) return -1;\n d = r as number;\n if (!is_array_ctor) {\n /* the spec evaluates ToNumber a second time */\n const r2 = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r2)) return -1;\n if ((r2 as number) !== d && !(Number.isNaN(r2 as number) && Number.isNaN(d))) {\n JS_ThrowRangeError(ctx, 'invalid array length');\n return -1;\n }\n }\n }\n const len = d >>> 0;\n if (len !== d) {\n JS_ThrowRangeError(ctx, 'invalid array length');\n return -1;\n }\n return len;\n}\n\nexport function JS_ToUint8ClampFree(ctx: JSContext, val: JSValue): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n const d = r as number;\n if (Number.isNaN(d) || d <= 0) return 0;\n if (d >= 255) return 255;\n /* round half to even */\n const f = Math.floor(d);\n const diff = d - f;\n if (diff > 0.5) return f + 1;\n if (diff < 0.5) return f;\n return (f % 2 === 0) ? f : f + 1;\n}\n\n/* ToBigInt */\n/* ToBigInt */\nexport function JS_ToBigIntFree(ctx: JSContext, val: JSValue): JSValue {\n switch (typeof val) {\n case 'bigint': return val;\n case 'boolean': return val ? 1n : 0n;\n case 'string': {\n const r = js_string_to_bigint(val);\n if (r === null) return JS_ThrowSyntaxError(ctx, 'invalid bigint literal');\n return r;\n }\n case 'number':\n return JS_ThrowTypeError(ctx, 'cannot convert number to bigint');\n case 'undefined':\n return JS_ThrowTypeError(ctx, 'cannot convert undefined to bigint');\n case 'symbol':\n return JS_ThrowTypeError(ctx, 'cannot convert symbol to bigint');\n case 'object':\n case 'function':\n if (val === null) return JS_ThrowTypeError(ctx, 'cannot convert null to bigint');\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitiveFree(ctx, val, HINT_NUMBER);\n if (JS_IsException(prim)) return prim;\n return JS_ToBigIntFree(ctx, prim);\n }\n break;\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to bigint');\n}\nexport const JS_ToBigInt = JS_ToBigIntFree;\n\nexport function js_string_to_bigint(str: string): bigint | null {\n const s = str.trim();\n if (s === '') return 0n;\n try {\n if (/^[+-]?\\d+$/.test(s) || /^0[xX][0-9a-fA-F]+$/.test(s) || /^0[oO][0-7]+$/.test(s) || /^0[bB][01]+$/.test(s)) {\n return BigInt(s);\n }\n } catch { /* fallthrough */ }\n return null;\n}\n\nexport function JS_NewBigInt64(ctx: JSContext, v: bigint | number): JSValue { return BigInt.asIntN(64, BigInt(v)); }\nexport function JS_NewBigUint64(ctx: JSContext, v: bigint | number): JSValue { return BigInt.asUintN(64, BigInt(v)); }\nexport function JS_ToBigInt64(ctx: JSContext, val: JSValue): bigint | JSSpecial {\n const r = JS_ToBigIntFree(ctx, val);\n if (JS_IsException(r)) return r;\n return BigInt.asIntN(64, r as bigint);\n}\n\n/* number to string with a radix */\nexport function js_number_to_string(d: number, radix: number): string {\n if (radix === 10) return String(d);\n return d.toString(radix);\n}\n\nexport function js_dtoa(d: number): string { return String(d); }\n\n/* ToString */\nexport function JS_ToStringInternal(ctx: JSContext, val: JSValue, is_ToPropertyKey: boolean): JSValue {\n switch (typeof val) {\n case 'string': return val;\n case 'number': return js_number_to_string(val, 10);\n case 'boolean': return val ? 'true' : 'false';\n case 'undefined': return 'undefined';\n case 'bigint': return val.toString();\n case 'symbol':\n if (is_ToPropertyKey) return val;\n return JS_ThrowTypeError(ctx, 'cannot convert symbol to string');\n case 'object':\n case 'function':\n if (val === null) return 'null';\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitiveFree(ctx, val, HINT_STRING);\n if (JS_IsException(prim)) return prim;\n return JS_ToStringInternal(ctx, prim, is_ToPropertyKey);\n }\n if (val === JS_EXCEPTION) return '[exception]';\n if (val === JS_UNINITIALIZED) return '[uninitialized]';\n return '[catch offset]';\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to string');\n}\n\n\nexport function JS_ToString(ctx: JSContext, val: JSValue): JSValue {\n return JS_ToStringInternal(ctx, val, false);\n}\nexport const JS_ToStringFree = JS_ToString;\nexport function JS_ToCString(ctx: JSContext, val: JSValue): string | null {\n const r = JS_ToString(ctx, val);\n if (JS_IsException(r)) return null;\n return r as string;\n}\nexport function JS_ToPropertyKey(ctx: JSContext, val: JSValue): JSValue {\n return JS_ToStringInternal(ctx, val, true);\n}\n\n/* return a quoted string with JSON-like escapes */\nexport function JS_ToQuotedString(ctx: JSContext, val: JSValue): JSValue {\n const r = JS_ToString(ctx, val);\n if (JS_IsException(r)) return r;\n return js_quote_string(r as string);\n}\n\nexport function js_quote_string(s: string): string {\n let out = '\"';\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n switch (c) {\n case 0x09: out += '\\\\t'; break;\n case 0x0a: out += '\\\\n'; break;\n case 0x0d: out += '\\\\r'; break;\n case 0x08: out += '\\\\b'; break;\n case 0x0c: out += '\\\\f'; break;\n case 0x5c: out += '\\\\\\\\'; break;\n case 0x22: out += '\\\\\"'; break;\n default:\n if (c < 32 || (c >= 0xd800 && c <= 0xdfff && !is_paired_surrogate(s, i))) {\n out += '\\\\u' + c.toString(16).padStart(4, '0');\n } else {\n out += s[i];\n }\n }\n }\n return out + '\"';\n}\n\nfunction is_paired_surrogate(s: string, i: number): boolean {\n const c = s.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n const c2 = s.charCodeAt(i + 1);\n return c2 >= 0xdc00 && c2 <= 0xdfff;\n }\n if (c >= 0xdc00 && c <= 0xdfff) {\n if (i === 0) return false;\n const c1 = s.charCodeAt(i - 1);\n return c1 >= 0xd800 && c1 <= 0xdbff;\n }\n return true;\n}\n\n\n/* string wrapper objects expose 'length' and the character indices as own\n properties (the string exotic object of the specification) */\n/* ToObject */\nexport function JS_ToObject(ctx: JSContext, val: JSValue): JSValue {\n switch (typeof val) {\n case 'object':\n case 'function':\n if (JS_IsObject(val)) return val;\n return JS_ThrowTypeError(ctx, 'cannot convert to object');\n case 'undefined':\n return JS_ThrowTypeError(ctx, 'cannot convert to object');\n case 'symbol': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.SYMBOL], JSClassID.SYMBOL, val);\n case 'number': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.NUMBER], JSClassID.NUMBER, val);\n case 'boolean': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.BOOLEAN], JSClassID.BOOLEAN, val);\n case 'bigint': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.BIG_INT], JSClassID.BIG_INT, val);\n case 'string': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.STRING], JSClassID.STRING, val);\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to object');\n}\nexport const JS_ToObjectFree = JS_ToObject;\n\n/* \"this\" value of a primitive wrapper: the primitive, JS_EXCEPTION if the\n object is not a wrapper of the given class */\nexport function JS_ThisObjectData(ctx: JSContext, this_val: JSValue, class_id: JSClassID): JSValue {\n if (JS_IsObject(this_val)) {\n const m = js_meta.get(this_val);\n if (m && m.class_id === class_id) return m.u;\n return JS_EXCEPTION;\n }\n return this_val;\n}\n\n/* ---------------------------------------------------------------------\n Comparisons and operators\n --------------------------------------------------------------------- */\n\nexport function js_same_value(ctx: JSContext, op1: JSValue, op2: JSValue): boolean {\n return Object.is(op1, op2);\n}\nexport function js_same_value_zero(ctx: JSContext, op1: JSValue, op2: JSValue): boolean {\n if (typeof op1 === 'number' && typeof op2 === 'number') return op1 === op2 || (Number.isNaN(op1) && Number.isNaN(op2));\n return op1 === op2;\n}\n\nexport const enum JSStrictEqMode { STRICT, SAME_VALUE, SAME_VALUE_ZERO }\n\nexport function js_strict_eq2(ctx: JSContext, op1: JSValue, op2: JSValue, eq_mode: JSStrictEqMode): boolean {\n switch (eq_mode) {\n case JSStrictEqMode.STRICT: return op1 === op2; /* host semantics match (NaN !== NaN, +0 === -0) */\n case JSStrictEqMode.SAME_VALUE: return Object.is(op1, op2);\n case JSStrictEqMode.SAME_VALUE_ZERO: return js_same_value_zero(ctx, op1, op2);\n }\n}\nexport function js_strict_eq(ctx: JSContext, op1: JSValue, op2: JSValue): boolean { return op1 === op2; }\n\n/* abstract equality: returns -1 on exception */\nexport function js_loose_eq(ctx: JSContext, op1: JSValue, op2: JSValue): number {\n for (;;) {\n const o1 = JS_IsObject(op1), o2 = JS_IsObject(op2);\n if (o1 && o2) return op1 === op2 ? 1 : 0;\n if (!o1 && !o2 && typeof op1 === typeof op2) return op1 === op2 ? 1 : 0;\n const n1 = (op1 === undefined || op1 === null), n2 = (op2 === undefined || op2 === null);\n /* undefined == null */\n if (n1 && n2) return 1;\n if (n1 || n2) return 0;\n const t1 = typeof op1, t2 = typeof op2;\n if (t1 === 'number' && t2 === 'string') { op2 = js_atof(ctx, op2 as string); continue; }\n if (t1 === 'string' && t2 === 'number') { op1 = js_atof(ctx, op1 as string); continue; }\n if (t1 === 'bigint' && t2 === 'string') {\n const b = js_string_to_bigint(op2 as string);\n if (b === null) return 0;\n return (op1 as bigint) === b ? 1 : 0;\n }\n if (t1 === 'string' && t2 === 'bigint') {\n const b = js_string_to_bigint(op1 as string);\n if (b === null) return 0;\n return (op2 as bigint) === b ? 1 : 0;\n }\n if (t1 === 'boolean') { op1 = op1 ? 1 : 0; continue; }\n if (t2 === 'boolean') { op2 = op2 ? 1 : 0; continue; }\n if (o1 && !o2) {\n const p = JS_ToPrimitiveFree(ctx, op1, HINT_NONE);\n if (JS_IsException(p)) return -1;\n op1 = p;\n continue;\n }\n if (o2 && !o1) {\n const p = JS_ToPrimitiveFree(ctx, op2, HINT_NONE);\n if (JS_IsException(p)) return -1;\n op2 = p;\n continue;\n }\n if (t1 === 'bigint' && t2 === 'number') return bigint_num_eq(op1 as bigint, op2 as number) ? 1 : 0;\n if (t1 === 'number' && t2 === 'bigint') return bigint_num_eq(op2 as bigint, op1 as number) ? 1 : 0;\n return 0;\n }\n}\n\nfunction bigint_num_eq(a: bigint, b: number): boolean {\n if (!Number.isFinite(b) || !Number.isInteger(b)) return false;\n return a === BigInt(b);\n}\n\nexport const enum JSRelOp { LT, LTE, GT, GTE }\n\n/* relational comparison: returns -1 on exception, else 0/1 */\nexport function js_relational_op(ctx: JSContext, op: JSRelOp, op1: JSValue, op2: JSValue): number {\n if (JS_IsObject(op1)) {\n op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NUMBER);\n if (JS_IsException(op1)) return -1;\n }\n if (JS_IsObject(op2)) {\n op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NUMBER);\n if (JS_IsException(op2)) return -1;\n }\n let res: boolean;\n if (typeof op1 === 'string' && typeof op2 === 'string') {\n switch (op) {\n case JSRelOp.LT: res = op1 < op2; break;\n case JSRelOp.LTE: res = op1 <= op2; break;\n case JSRelOp.GT: res = op1 > op2; break;\n default: res = op1 >= op2; break;\n }\n return res ? 1 : 0;\n }\n if (typeof op1 === 'symbol' || typeof op2 === 'symbol') {\n JS_ThrowTypeError(ctx, 'cannot convert symbol to number');\n return -1;\n }\n let n1: JSValue, n2: JSValue;\n if (typeof op1 === 'bigint' && typeof op2 === 'string') {\n const b = js_string_to_bigint(op2);\n if (b === null) return 0;\n n1 = op1; n2 = b;\n } else if (typeof op1 === 'string' && typeof op2 === 'bigint') {\n const b = js_string_to_bigint(op1);\n if (b === null) return 0;\n n1 = b; n2 = op2;\n } else {\n n1 = JS_ToNumericFree(ctx, op1);\n if (JS_IsException(n1)) return -1;\n n2 = JS_ToNumericFree(ctx, op2);\n if (JS_IsException(n2)) return -1;\n }\n /* host relational ops handle number/bigint mixes correctly */\n const a = n1 as number | bigint, b = n2 as number | bigint;\n switch (op) {\n case JSRelOp.LT: res = a < b; break;\n case JSRelOp.LTE: res = a <= b; break;\n case JSRelOp.GT: res = a > b; break;\n default: res = a >= b; break;\n }\n return res ? 1 : 0;\n}\n\n/* return -1 if exception, else 0/1 */\nexport function JS_OrdinaryIsInstanceOf(ctx: JSContext, val: JSValue, obj: JSValue): number {\n if (!JS_IsFunction(ctx, obj)) return 0;\n const m = js_get_meta(obj);\n if (m && m.class_id === JSClassID.BOUND_FUNCTION) {\n return JS_IsInstanceOf(ctx, val, (m.u as JSBoundFunctionData).func_obj);\n }\n if (!JS_IsObject(val)) return 0;\n const proto = JS_GetProperty(ctx, obj, JS_ATOM_prototype);\n if (JS_IsException(proto)) return -1;\n if (!JS_IsObject(proto)) { JS_ThrowTypeError(ctx, 'operand \\'prototype\\' property is not an object'); return -1; }\n let obj1: JSValue = val;\n let depth = 0;\n for (;;) {\n const proto1 = JS_GetPrototype(ctx, obj1);\n if (JS_IsException(proto1)) return -1;\n if (proto1 === null || proto1 === undefined) return 0;\n if (proto1 === proto) return 1;\n obj1 = proto1;\n if (++depth > 100000) { JS_ThrowInternalError(ctx, 'prototype chain too deep'); return -1; }\n }\n}\n\nexport function JS_IsInstanceOf(ctx: JSContext, val: JSValue, obj: JSValue): number {\n if (!JS_IsObject(obj)) { JS_ThrowTypeError(ctx, 'invalid \\'instanceof\\' right operand'); return -1; }\n const method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_hasInstance);\n if (JS_IsException(method)) return -1;\n if (!(method === undefined || method === null)) {\n const ret = JS_CallFree(ctx, method, obj, [val]);\n if (JS_IsException(ret)) return -1;\n return JS_ToBoolFree(ctx, ret) ? 1 : 0;\n }\n if (!JS_IsFunction(ctx, obj)) { JS_ThrowTypeError(ctx, 'invalid \\'instanceof\\' right operand'); return -1; }\n return JS_OrdinaryIsInstanceOf(ctx, val, obj);\n}\n\nexport function js_operator_typeof(ctx: JSContext, op1: JSValue): JSAtom {\n switch (typeof op1) {\n case 'bigint': return JS_ATOM_bigint;\n case 'number': return JS_ATOM_number;\n case 'undefined': return JS_ATOM_undefined;\n case 'boolean': return JS_ATOM_boolean;\n case 'string': return JS_ATOM_string;\n case 'symbol': return JS_ATOM_symbol;\n case 'function': return JS_ATOM_function;\n case 'object':\n if (op1 instanceof JSSpecial) return JS_ATOM_undefined;\n return JS_ATOM_object;\n }\n return JS_ATOM_undefined;\n}\n\n/* 'in' operator: -1 on exception */\nexport function js_operator_in(ctx: JSContext, op1: JSValue, op2: JSValue): number {\n if (!JS_IsObject(op2)) { JS_ThrowTypeError(ctx, 'invalid \\'in\\' operand'); return -1; }\n const atom = JS_ValueToAtom(ctx, op1);\n if (atom === JS_ATOM_NULL) return -1;\n return JS_HasProperty(ctx, op2, atom);\n}\n\n/* binary arithmetic (+ - * / % **) on numeric values after ToNumeric;\n returns JS_EXCEPTION on error */\nexport const enum JSArithOp { ADD, SUB, MUL, DIV, MOD, POW, SHL, SAR, SHR, AND, OR, XOR }\n\nexport function js_binary_arith_slow(ctx: JSContext, op: JSArithOp, op1: JSValue, op2: JSValue): JSValue {\n const n1 = JS_ToNumericFree(ctx, op1);\n if (JS_IsException(n1)) return n1;\n const n2 = JS_ToNumericFree(ctx, op2);\n if (JS_IsException(n2)) return n2;\n const b1 = typeof n1 === 'bigint', b2 = typeof n2 === 'bigint';\n if (b1 !== b2) return JS_ThrowTypeError(ctx, 'both operands must be bigint');\n if (b1) {\n const a = n1 as bigint, b = n2 as bigint;\n try {\n switch (op) {\n case JSArithOp.ADD: return a + b;\n case JSArithOp.SUB: return a - b;\n case JSArithOp.MUL: return a * b;\n case JSArithOp.DIV: if (b === 0n) return JS_ThrowRangeError(ctx, 'division by zero'); return a / b;\n case JSArithOp.MOD: if (b === 0n) return JS_ThrowRangeError(ctx, 'division by zero'); return a % b;\n case JSArithOp.POW: if (b < 0n) return JS_ThrowRangeError(ctx, 'invalid bigint exponent'); return a ** b;\n case JSArithOp.SHL: return a << b;\n case JSArithOp.SAR: return a >> b;\n case JSArithOp.SHR: return JS_ThrowTypeError(ctx, 'BigInts have no unsigned right shift, use >> instead');\n case JSArithOp.AND: return a & b;\n case JSArithOp.OR: return a | b;\n case JSArithOp.XOR: return a ^ b;\n }\n } catch (e) {\n return JS_ThrowRangeError(ctx, String((e as Error).message));\n }\n }\n const a = n1 as number, b = n2 as number;\n switch (op) {\n case JSArithOp.ADD: return a + b;\n case JSArithOp.SUB: return a - b;\n case JSArithOp.MUL: return a * b;\n case JSArithOp.DIV: return a / b;\n case JSArithOp.MOD: return a % b;\n case JSArithOp.POW: return js_pow(a, b);\n case JSArithOp.SHL: return a << (b & 31);\n case JSArithOp.SAR: return a >> (b & 31);\n case JSArithOp.SHR: return a >>> (b & 31);\n case JSArithOp.AND: return a & b;\n case JSArithOp.OR: return a | b;\n case JSArithOp.XOR: return a ^ b;\n }\n return undefined;\n}\n\nexport function js_pow(a: number, b: number): number {\n /* Math.pow follows the spec */\n return Math.pow(a, b);\n}\n\n/* '+' operator with string concatenation */\nexport function js_add_slow(ctx: JSContext, op1: JSValue, op2: JSValue): JSValue {\n if (JS_IsObject(op1)) {\n op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NONE);\n if (JS_IsException(op1)) return op1;\n }\n if (JS_IsObject(op2)) {\n op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NONE);\n if (JS_IsException(op2)) return op2;\n }\n if (typeof op1 === 'string' || typeof op2 === 'string') {\n const s1 = JS_ToString(ctx, op1);\n if (JS_IsException(s1)) return s1;\n const s2 = JS_ToString(ctx, op2);\n if (JS_IsException(s2)) return s2;\n return (s1 as string) + (s2 as string);\n }\n return js_binary_arith_slow(ctx, JSArithOp.ADD, op1, op2);\n}\n\nexport const enum JSUnaryOp { NEG, PLUS, INC, DEC, NOT }\n\nexport function js_unary_arith_slow(ctx: JSContext, op: JSUnaryOp, op1: JSValue): JSValue {\n if (op === JSUnaryOp.PLUS) return JS_ToNumberFree(ctx, op1);\n const n = JS_ToNumericFree(ctx, op1);\n if (JS_IsException(n)) return n;\n if (typeof n === 'bigint') {\n switch (op) {\n case JSUnaryOp.NEG: return -n;\n case JSUnaryOp.INC: return n + 1n;\n case JSUnaryOp.DEC: return n - 1n;\n case JSUnaryOp.NOT: return ~n;\n }\n }\n const a = n as number;\n switch (op) {\n case JSUnaryOp.NEG: return -a;\n case JSUnaryOp.INC: return a + 1;\n case JSUnaryOp.DEC: return a - 1;\n case JSUnaryOp.NOT: return ~a;\n }\n return undefined;\n}\n\n/* ---------------------------------------------------------------------\n Iterators\n --------------------------------------------------------------------- */\n\nexport function js_create_iterator_result(ctx: JSContext, val: JSValue, done: boolean): JSValue {\n const obj = JS_NewObject(ctx);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_value, val, JS_PROP_C_W_E);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_done, done, JS_PROP_C_W_E);\n return obj;\n}\nexport const JS_CreateIterResultObject = js_create_iterator_result;\n\nexport function JS_GetIterator2(ctx: JSContext, obj: JSValue, method: JSValue): JSValue {\n const enum_obj = JS_Call(ctx, method, obj, []);\n if (JS_IsException(enum_obj)) return enum_obj;\n if (!JS_IsObject(enum_obj)) return JS_ThrowTypeErrorNotAnObject(ctx);\n return enum_obj;\n}\n\n/* hook set by the async builtins: create an AsyncFromSyncIterator */\nexport const async_hooks: { JS_CreateAsyncFromSyncIterator: ((ctx: JSContext, sync_iter: JSValue) => JSValue) | null } =\n { JS_CreateAsyncFromSyncIterator: null };\n\nexport function JS_GetIterator(ctx: JSContext, obj: JSValue, is_async: boolean): JSValue {\n let method: JSValue;\n if (is_async) {\n method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_asyncIterator);\n if (JS_IsException(method)) return method;\n if (method === undefined || method === null) {\n method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_iterator);\n if (JS_IsException(method)) return method;\n const sync_iter = JS_GetIterator2(ctx, obj, method);\n if (JS_IsException(sync_iter)) return sync_iter;\n return async_hooks.JS_CreateAsyncFromSyncIterator!(ctx, sync_iter);\n }\n } else {\n method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_iterator);\n if (JS_IsException(method)) return method;\n }\n if (!JS_IsFunction(ctx, method)) return JS_ThrowTypeError(ctx, 'value is not iterable');\n return JS_GetIterator2(ctx, obj, method);\n}\n\n/* return the result object of the next() call or JS_EXCEPTION */\nexport function JS_IteratorNext2(ctx: JSContext, enum_obj: JSValue, method: JSValue, argv: JSValue[], pdone: { done: number }): JSValue {\n const obj = JS_Call(ctx, method, enum_obj, argv);\n if (JS_IsException(obj)) { pdone.done = 0; return obj; }\n if (!JS_IsObject(obj)) { pdone.done = 0; return JS_ThrowTypeError(ctx, 'iterator must return an object'); }\n const done_val = JS_GetProperty(ctx, obj, JS_ATOM_done);\n if (JS_IsException(done_val)) { pdone.done = 0; return done_val; }\n pdone.done = JS_ToBoolFree(ctx, done_val) ? 1 : 0;\n return obj;\n}\n\n/* return the 'value' of the next() call; pdone.done is set */\nexport function JS_IteratorNext(ctx: JSContext, enum_obj: JSValue, method: JSValue, argv: JSValue[], pdone: { done: number }): JSValue {\n const obj = JS_IteratorNext2(ctx, enum_obj, method, argv, pdone);\n if (JS_IsException(obj)) return obj;\n if (pdone.done) return undefined;\n const value = JS_GetProperty(ctx, obj, JS_ATOM_value);\n if (JS_IsException(value)) { pdone.done = 0; return value; }\n return value;\n}\n\n/* return < 0 in case of exception */\nexport function JS_IteratorClose(ctx: JSContext, enum_obj: JSValue, is_exception_pending: boolean): number {\n let ex_obj: JSValue = undefined;\n if (is_exception_pending) ex_obj = JS_GetException(ctx);\n let res = 0;\n const method = JS_GetProperty(ctx, enum_obj, JS_ATOM_return);\n if (JS_IsException(method)) { res = -1; }\n else if (!(method === undefined || method === null)) {\n const ret = JS_CallFree(ctx, method, enum_obj, []);\n if (!is_exception_pending) {\n if (JS_IsException(ret)) res = -1;\n else if (!JS_IsObject(ret)) { JS_ThrowTypeErrorNotAnObject(ctx); res = -1; }\n }\n }\n if (is_exception_pending) {\n JS_Throw(ctx, ex_obj);\n return -1;\n }\n return res;\n}\n\n/* obtain the next element of the iterator 'enum_obj' (used by the interpreter) */\nexport function JS_IteratorGetCompleteValue(ctx: JSContext, obj: JSValue, pdone: { done: number }): JSValue {\n const done_val = JS_GetProperty(ctx, obj, JS_ATOM_done);\n if (JS_IsException(done_val)) return done_val;\n const done = JS_ToBoolFree(ctx, done_val);\n const value = JS_GetProperty(ctx, obj, JS_ATOM_value);\n if (JS_IsException(value)) return value;\n pdone.done = done ? 1 : 0;\n return value;\n}\n\n/* build an array from an iterable or array-like (used by apply/spread) */\n/* build an argument list from an iterable or array-like (used by apply/spread) */\nexport function build_arg_list(ctx: JSContext, array_arg: JSValue): JSValue[] | null {\n if (!JS_IsObject(array_arg)) { JS_ThrowTypeError(ctx, 'not a object'); return null; }\n const len = js_get_length64(ctx, array_arg);\n if (len < 0) return null;\n if (len > 65536 * 16) { JS_ThrowRangeError(ctx, 'too many arguments'); return null; }\n const tab: JSValue[] = new Array(len);\n const fast = js_get_fast_array(ctx, array_arg);\n if (fast && fast.length === len) {\n /* holes read as undefined, like the generic path */\n for (let i = 0; i < len; i++) tab[i] = fast[i];\n return tab;\n }\n for (let i = 0; i < len; i++) {\n const v = JS_GetPropertyUint32(ctx, array_arg, i);\n if (JS_IsException(v)) return null;\n tab[i] = v;\n }\n return tab;\n}\n\n/* for-in enumeration: snapshot of the enumerable string keys (own keys\n first, then the prototype chain), as EnumerateObjectProperties */\nexport function build_for_in_iterator(ctx: JSContext, obj: JSValue): JSValue {\n const it = new JSForInState();\n if (!JS_IsObject(obj)) {\n if (obj === undefined || obj === null) {\n it.obj = undefined;\n return it;\n }\n obj = JS_ToObject(ctx, obj);\n if (JS_IsException(obj)) return obj;\n }\n it.obj = obj;\n try {\n /* the host for-in implements the specification algorithm, including\n proxy traps and shadowing */\n let own = 0;\n const own_keys = new Set<string>(Object.keys(obj as object));\n for (const k in obj as object) {\n it.keys.push(k);\n if (own_keys.has(k)) own++;\n }\n it.own_count = own;\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n return it;\n}\n\n/* return the next key or undefined when done. pdone.done = 1 when finished. -1 exception */\nexport function js_for_in_next(ctx: JSContext, enum_obj: JSValue, pdone: { done: number }): JSValue {\n const it = enum_obj as JSForInState;\n const obj = it.obj;\n for (;;) {\n if (it.idx >= it.keys.length || obj === undefined) { pdone.done = 1; return undefined; }\n const idx = it.idx++;\n const key = it.keys[idx];\n /* check if the property was deleted (own keys: own property lookup,\n prototype keys: prototype chain lookup, as in C) */\n let ret: number;\n try {\n if (idx < it.own_count) ret = Reflect.getOwnPropertyDescriptor(obj as object, key) !== undefined ? 1 : 0;\n else ret = Reflect.has(obj as object, key) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return JS_EXCEPTION;\n }\n if (!ret) continue;\n pdone.done = 0;\n return key;\n }\n}\n\n/* ---------------------------------------------------------------------\n Jobs (Promises)\n --------------------------------------------------------------------- */\n\nexport function JS_EnqueueJob(ctx: JSContext, job_func: (ctx: JSContext, argv: JSValue[]) => JSValue, argv: JSValue[]): number {\n ctx.rt.job_list.push({ job_func, ctx, argv: argv.slice() });\n return 0;\n}\n\nexport function JS_IsJobPending(rt: JSRuntime): boolean { return rt.job_list.length > 0; }\n\n/* return < 0 if exception, 0 if no job pending, 1 if a job was executed\n successfully. The context of the job is returned in pctx */\nexport function JS_ExecutePendingJob(rt: JSRuntime, pctx: { ctx: JSContext | null }): number {\n if (rt.job_list.length === 0) { pctx.ctx = null; return 0; }\n const e = rt.job_list.shift()!;\n pctx.ctx = e.ctx;\n const res = e.job_func(e.ctx, e.argv);\n if (JS_IsException(res)) return -1;\n return 1;\n}\n\n/* ---------------------------------------------------------------------\n Eval\n --------------------------------------------------------------------- */\n\nexport function JS_EvalThis(ctx: JSContext, this_obj: JSValue, input: string, filename: string, eval_flags: number): JSValue {\n return hooks.JS_EvalInternal(ctx, this_obj, input, filename, eval_flags, -1);\n}\n\nexport function JS_Eval(ctx: JSContext, input: string, filename: string, eval_flags: number): JSValue {\n return JS_EvalThis(ctx, ctx.global_obj, input, filename, eval_flags);\n}\n\n/* run the function object produced by JS_EVAL_FLAG_COMPILE_ONLY */\nexport function JS_EvalFunction(ctx: JSContext, fun_obj: JSValue): JSValue {\n return JS_Call(ctx, fun_obj, ctx.global_obj, []);\n}\n\nexport function JS_RunGC(_rt: JSRuntime): void {}\n\n/* ---------------------------------------------------------------------\n Misc helpers\n --------------------------------------------------------------------- */\n\nexport function JS_NewString(ctx: JSContext, s: string): JSValue { return s; }\nexport function JS_NewStringLen(ctx: JSContext, s: string): JSValue { return s; }\nexport function JS_NewAtomString(ctx: JSContext, s: string): JSValue { return s; }\nexport function JS_NewBool(ctx: JSContext, v: boolean): JSValue { return v; }\nexport function JS_NewInt32(ctx: JSContext, v: number): JSValue { return v | 0; }\nexport function JS_NewUint32(ctx: JSContext, v: number): JSValue { return v >>> 0; }\nexport function JS_NewInt64(ctx: JSContext, v: number): JSValue { return v; }\nexport function JS_NewFloat64(ctx: JSContext, v: number): JSValue { return v; }\nexport function JS_NewCatchOffsetValue(v: number): JSValue { return v; }\n\nexport function JS_IsLiveObject(_rt: JSRuntime, obj: JSValue): boolean { return JS_IsObject(obj); }\n\n/* used by the interpreter: name of a class id */\nexport function JS_GetClassName(ctx: JSContext, class_id: JSClassID): string {\n return ctx.rt.atoms.toStr(ctx.rt.class_array[class_id]?.class_name ?? JS_ATOM_Object);\n}\n\n/* Object.prototype.toString tag helper */\nexport function js_object_class_name(ctx: JSContext, obj: JSObject): string {\n switch (JS_GetClassID(obj)) {\n case JSClassID.ARRAY: return 'Array';\n case JSClassID.ERROR: return 'Error';\n case JSClassID.ARGUMENTS:\n case JSClassID.MAPPED_ARGUMENTS: return 'Arguments';\n case JSClassID.BOOLEAN: return 'Boolean';\n case JSClassID.NUMBER: return 'Number';\n case JSClassID.STRING: return 'String';\n case JSClassID.DATE: return 'Date';\n case JSClassID.REGEXP: return 'RegExp';\n default:\n if (JS_IsFunction(ctx, obj)) return 'Function';\n return 'Object';\n }\n}\n\n/* copy the enumerable own properties of 'source' into 'target' (object spread) */\nexport function JS_CopyDataProperties(ctx: JSContext, target: JSValue, source: JSValue, excluded: JSValue, setprop: boolean): number {\n if (!JS_IsObject(source)) return 0;\n const tab = JS_GetOwnPropertyNamesInternal(ctx, source, JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!tab) return -1;\n for (const e of tab) {\n if (JS_IsObject(excluded)) {\n const ret = JS_GetOwnPropertyInternal(ctx, null, excluded, e.atom);\n if (ret < 0) return -1;\n if (ret) continue;\n }\n /* check enumerability (proxies may change it) */\n const desc = new_desc();\n const ret = JS_GetOwnPropertyInternal(ctx, desc, source, e.atom);\n if (ret < 0) return -1;\n if (!ret || !(desc.flags & JS_PROP_ENUMERABLE)) continue;\n const val = JS_GetProperty(ctx, source, e.atom);\n if (JS_IsException(val)) return -1;\n let r: number;\n if (setprop) r = JS_SetProperty(ctx, target, e.atom, val);\n else r = JS_DefinePropertyValue(ctx, target, e.atom, val, JS_PROP_C_W_E);\n if (r < 0) return -1;\n }\n return 0;\n}\n\n/* JSON-less value dump for debugging / qjs print */\nexport function JS_DumpValue(ctx: JSContext, val: JSValue): string {\n const s = JS_ToString(ctx, val);\n if (JS_IsException(s)) { JS_GetException(ctx); return '[exception]'; }\n return s as string;\n}\n\n/* mark an error object as already carrying its backtrace (the interpreter\n adds the backtrace of errors created without one at throw time) */\nexport function JS_SetErrorBacktraceDone(obj: JSValue): void {\n const m = js_get_meta(obj);\n if (m) m.has_backtrace = true;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"quickjs.js","sourceRoot":"","sources":["../src/quickjs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * jseption: TypeScript port of QuickJS\n *\n * Copyright (c) 2017-2025 Fabrice Bellard (original C implementation)\n * Copyright (c) 2017-2025 Charlie Gordon (original C implementation)\n *\n * This file is the port of the \"core\" part of quickjs.c: runtime and\n * context management, atoms, exceptions, the object model (property\n * lookup, definition, deletion), value conversions and the abstract\n * operators used by the interpreter and the builtins.\n *\n * Host-values model (docs/HOST_VALUES.md): guest objects are host objects\n * with guest-owned prototype chains, properties are the host object's own\n * properties (accessed through Reflect), and engine metadata lives in a\n * WeakMap. Guest functions are strict host wrapper functions.\n */\nimport { jit_hooks } from './jit_hook.ts';\nimport {\n AtomTable, JSAtom, JS_ATOM_NULL, JS_ATOM_TYPE_STRING, JS_ATOM_TYPE_SYMBOL,\n JS_ATOM_TYPE_GLOBAL_SYMBOL, JS_ATOM_TYPE_PRIVATE, __JS_AtomIsTaggedInt, __JS_AtomFromUInt32,\n __JS_AtomToUInt32, JS_ATOM_MAX_INT, JS_ATOM_length, JS_ATOM_prototype, JS_ATOM_constructor,\n JS_ATOM_name, JS_ATOM_message, JS_ATOM_stack, JS_ATOM_toString, JS_ATOM_valueOf,\n JS_ATOM_Symbol_toPrimitive, JS_ATOM_Symbol_iterator, JS_ATOM_Symbol_hasInstance,\n JS_ATOM_next, JS_ATOM_done, JS_ATOM_value, JS_ATOM_return, JS_ATOM_get, JS_ATOM_set,\n JS_ATOM_configurable, JS_ATOM_writable, JS_ATOM_enumerable, JS_ATOM_undefined,\n JS_ATOM_object, JS_ATOM_boolean, JS_ATOM_number, JS_ATOM_string, JS_ATOM_symbol,\n JS_ATOM_bigint, JS_ATOM_function, JS_ATOM_empty_string, JS_ATOM_lineNumber, JS_ATOM_fileName,\n JS_ATOM_columnNumber, JS_ATOM_Error, JS_ATOM_EvalError, JS_ATOM_RangeError, JS_ATOM_ReferenceError,\n JS_ATOM_SyntaxError, JS_ATOM_TypeError, JS_ATOM_URIError, JS_ATOM_InternalError, JS_ATOM_cause,\n JS_ATOM_Symbol_toStringTag, JS_ATOM_Symbol_species, JS_ATOM___proto__, JS_ATOM_callee,\n JS_ATOM_Symbol_asyncIterator, JS_ATOM_Infinity, JS_ATOM_NaN, JS_ATOM_minus_Infinity, JS_ATOM_minus_zero,\n JS_ATOM_null, JS_ATOM_false, JS_ATOM_true, JS_ATOM_Object, JS_ATOM_Function, JS_ATOM_Array,\n JS_ATOM_Number, JS_ATOM_String, JS_ATOM_Boolean, JS_ATOM_Symbol, JS_ATOM_Arguments,\n JS_ATOM_BigInt, JS_ATOM_Date, JS_ATOM_RegExp, JS_ATOM_Map, JS_ATOM_Set, JS_ATOM_WeakMap, JS_ATOM_WeakSet,\n JS_ATOM_Generator, JS_ATOM_Proxy, JS_ATOM_Promise, JS_ATOM_AsyncFunction, JS_ATOM_AsyncGenerator,\n JS_ATOM_GeneratorFunction, JS_ATOM_AsyncGeneratorFunction, JS_ATOM_ForInIterator,\n JS_ATOM_Map_Iterator, JS_ATOM_Set_Iterator, JS_ATOM_Array_Iterator, JS_ATOM_String_Iterator,\n JS_ATOM_RegExp_String_Iterator, JS_ATOM_PromiseResolveFunction, JS_ATOM_PromiseRejectFunction,\n JS_ATOM_AsyncFunctionResolve, JS_ATOM_AsyncFunctionReject, JS_ATOM_ArrayBuffer, JS_ATOM_SharedArrayBuffer,\n JS_ATOM_Uint8ClampedArray, JS_ATOM_Int8Array, JS_ATOM_Uint8Array, JS_ATOM_Int16Array, JS_ATOM_Uint16Array,\n JS_ATOM_Int32Array, JS_ATOM_Uint32Array, JS_ATOM_BigInt64Array, JS_ATOM_BigUint64Array,\n JS_ATOM_Float32Array, JS_ATOM_Float64Array, JS_ATOM_DataView, JS_ATOM_WeakRef, JS_ATOM_FinalizationRegistry,\n JS_ATOM_Module, is_num_string,\n} from './atoms.ts';\nimport {\n JSValue, JSObject, JSSpecial, JSTag, JS_EXCEPTION, JS_UNINITIALIZED, JSClassID, JS_MODE_BACKTRACE_BARRIER,\n JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_C_W_E, JS_PROP_LENGTH,\n JS_PROP_TMASK, JS_PROP_NORMAL, JS_PROP_GETSET,\n JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_ENUMERABLE, JS_PROP_HAS_GET,\n JS_PROP_HAS_SET, JS_PROP_HAS_VALUE, JS_PROP_THROW, JS_PROP_THROW_STRICT, JS_PROP_NO_ADD,\n JS_PROP_NO_EXOTIC, JS_PROP_DEFINE_PROPERTY, JS_PROP_REFLECT_DEFINE_PROPERTY,\n JS_GPN_STRING_MASK, JS_GPN_SYMBOL_MASK, JS_GPN_PRIVATE_MASK, JS_GPN_ENUM_ONLY, JS_GPN_SET_ENUM,\n JS_IsException, JS_IsObject, JS_IsUndefined, JS_IsNull, JS_IsString, JS_IsSymbol, JS_IsNumber,\n JS_IsBigInt, JS_IsBool, JS_IsUninitialized, JS_VALUE_GET_TAG, JSCFunction, JSCFunctionMagic,\n JSCFunctionData, JSCFunctionEnum, JSCFunctionRecord, JSCFunctionDataRecord, JSBoundFunctionData,\n JSFunctionBytecode, JSFunctionData, JSVarRef, JSStackFrame, JSErrorEnum, JS_CALL_FLAG_CONSTRUCTOR,\n JS_CALL_FLAG_COPY_ARGV, JS_CALL_FLAG_GENERATOR, JSForInState, JSProxyData, JSObjectMeta,\n JSFunctionKind, JS_MODE_STRICT,\n JSModuleDef,\n} from './values.ts';\n\nexport * from './values.ts';\nexport * from './atoms.ts';\n\n/* ---------------------------------------------------------------------\n Runtime and context\n --------------------------------------------------------------------- */\n\nexport type JSClassCall = (ctx: JSContext, func_obj: JSValue, this_val: JSValue,\n argv: JSValue[], flags: number) => JSValue;\n\nexport interface JSPropertyDescriptor {\n flags: number;\n value: JSValue;\n getter: JSValue;\n setter: JSValue;\n}\n\nexport interface JSClassDef {\n class_name: JSAtom;\n}\n\nexport class JSClass {\n class_id: JSClassID;\n class_name: JSAtom;\n constructor(class_id: JSClassID, def: JSClassDef) {\n this.class_id = class_id;\n this.class_name = def.class_name;\n }\n}\n\nexport interface JSJobEntry {\n job_func: (ctx: JSContext, argv: JSValue[]) => JSValue;\n ctx: JSContext;\n argv: JSValue[];\n}\n\nexport type JSInterruptHandler = (rt: JSRuntime, opaque: any) => number;\nexport type JSHostPromiseRejectionTracker = (ctx: JSContext, promise: JSValue, reason: JSValue,\n is_handled: boolean, opaque: any) => void;\n\n/* engine metadata of guest objects (class id, internal slots, bytecode).\n Objects belong to a single runtime, so one table is shared. */\nexport const js_meta = new WeakMap<object, JSObjectMeta>();\n/* private fields and brands: object -> (private symbol -> value) */\nexport const js_privates = new WeakMap<object, Map<symbol, JSValue>>();\n/* direct call entries for the compiled tier: guest function object ->\n (this_val, new_target, ...args) => result, using the host exception\n convention. Borrowed natives register their host function here. */\nexport const js_direct = new WeakMap<Function, Function>();\n\nexport function js_get_meta(obj: JSValue): JSObjectMeta | undefined {\n if (typeof obj === 'object' || typeof obj === 'function') {\n if (obj === null) return undefined;\n return js_meta.get(obj);\n }\n return undefined;\n}\n\nexport function js_ensure_meta(obj: object, class_id: JSClassID = JSClassID.OBJECT): JSObjectMeta {\n let m = js_meta.get(obj);\n if (!m) {\n m = new JSObjectMeta(class_id);\n js_meta.set(obj, m);\n }\n return m;\n}\n\n/* bytecode function data of a function object, or null */\nexport function JS_GetFunctionData(func: JSValue): JSFunctionData | null {\n const m = js_get_meta(func);\n return m ? m.func : null;\n}\n\nexport class JSRuntime {\n atoms = new AtomTable();\n /* modules (src/module.ts): the embedder's loader, and the order of asynchronous evaluations */\n module_loader: any = null;\n module_async_evaluation_next_timestamp = 0;\n class_array: (JSClass | null)[] = [];\n class_count = 0;\n current_exception: JSValue = undefined;\n exception_pending = false;\n current_stack_frame: JSStackFrame | null = null;\n interrupt_handler: JSInterruptHandler | null = null;\n interrupt_opaque: any = null;\n host_promise_rejection_tracker: JSHostPromiseRejectionTracker | null = null;\n host_promise_rejection_tracker_opaque: any = null;\n job_list: JSJobEntry[] = [];\n module_normalize_func: any = null;\n module_loader_func: any = null;\n module_loader_opaque: any = null;\n stack_depth = 0;\n max_stack_depth = 2000;\n user_opaque: any = null;\n /* symbols registered with Symbol.for() */\n global_symbol_registry = new Map<string, symbol>();\n can_block = false;\n context_list: JSContext[] = [];\n interrupt_counter = 0;\n}\n\nexport class JSContext {\n rt: JSRuntime;\n /* modules loaded in this context, by normalized id (and type), and those being fetched */\n module_map: Map<string, any> = new Map();\n module_inflight: Map<string, any> = new Map();\n class_proto: (JSObject | null)[] = [];\n function_proto: JSObject | null = null;\n function_ctor: JSObject | null = null;\n array_ctor: JSObject | null = null;\n regexp_ctor: JSObject | null = null;\n promise_ctor: JSObject | null = null;\n native_error_proto: (JSObject | null)[] = [];\n error_ctor: JSObject | null = null;\n error_prepare_stack: JSValue = undefined;\n error_stack_trace_limit = 10;\n iterator_proto: JSObject | null = null;\n async_iterator_proto: JSObject | null = null;\n array_proto_values: JSValue = undefined;\n throw_type_error: JSObject | null = null;\n eval_obj: JSValue = undefined;\n /* the global object (an ordinary guest object) */\n global_obj!: JSObject;\n /* compiled tier: true while Object.prototype has no accessor and no read-only data\n property (other than __proto__), so that the fields of an object literal can be\n assigned instead of defined. Cleared by JS_DefineProperty. */\n plain_object_proto = { ok: true };\n /* global lexical bindings (let/const/class at the top level): an engine\n internal object with a null prototype, never visible to guest code */\n global_var_obj!: Record<string | symbol, JSValue>;\n user_opaque: any = null;\n loaded_modules: Map<string, any> = new Map();\n interrupt_counter = 0;\n array_iterator_proto: JSObject | null = null;\n generator_proto: JSObject | null = null;\n async_generator_proto: JSObject | null = null;\n constructor(rt: JSRuntime) {\n this.rt = rt;\n for (let i = 0; i < rt.class_count; i++) this.class_proto.push(null);\n for (let i = 0; i < JSErrorEnum.NATIVE_ERROR_COUNT; i++) this.native_error_proto.push(null);\n }\n}\n\n/* --- hooks filled in by the interpreter / parser / builtins modules to\n avoid import cycles at module-evaluation time --- */\nexport interface JSHooks {\n JS_CallInternal: (ctx: JSContext, func_obj: JSValue, this_obj: JSValue, new_target: JSValue,\n argv: JSValue[], flags: number) => JSValue;\n JS_EvalInternal: (ctx: JSContext, this_obj: JSValue, input: string, filename: string,\n flags: number, scope_idx: number) => JSValue;\n JS_AddIntrinsicBaseObjects: (ctx: JSContext) => void;\n js_closure: (ctx: JSContext, bfunc: JSFunctionBytecode, cur_var_refs: JSVarRef[] | null,\n sf: JSStackFrame | null) => JSValue;\n js_regexp_constructor_internal: ((ctx: JSContext, ctor: JSValue, pattern: string, flags: string) => JSValue) | null;\n /* builtins/native.ts: create a guest function forwarding to a host native */\n js_borrow_native: (ctx: JSContext, host: Function, name: string, length: number, fix: JSNativeFixer | null) => JSValue;\n /* callbacks run at the end of JS_NewRuntime */\n init_runtime: ((rt: JSRuntime) => void)[];\n /* src/module.ts: a module was compiled by the parser (returns the module value or the\n evaluation promise), dynamic import(), import.meta, and JS_EvalFunction of a module */\n js_module_compiled: ((ctx: JSContext, m: any, b: JSFunctionBytecode, flags: number) => JSValue) | null;\n js_dynamic_import: ((ctx: JSContext, b: JSFunctionBytecode | null, specifier: JSValue, options: JSValue) => JSValue) | null;\n js_import_meta: ((ctx: JSContext, b: JSFunctionBytecode | null) => JSValue) | null;\n js_module_eval_function: ((ctx: JSContext, m: any) => JSValue) | null;\n}\nexport const hooks: JSHooks = {\n JS_CallInternal: () => { throw new Error('interpreter not loaded'); },\n JS_EvalInternal: () => { throw new Error('parser not loaded'); },\n JS_AddIntrinsicBaseObjects: () => { throw new Error('builtins not loaded'); },\n js_closure: () => { throw new Error('interpreter not loaded'); },\n js_regexp_constructor_internal: null,\n js_borrow_native: () => { throw new Error('native builtins not loaded'); },\n init_runtime: [],\n js_module_compiled: null,\n js_dynamic_import: null,\n js_import_meta: null,\n js_module_eval_function: null,\n};\n\nexport function JS_NewClass1(rt: JSRuntime, class_id: JSClassID, def: JSClassDef): void {\n while (rt.class_array.length <= class_id) rt.class_array.push(null);\n rt.class_array[class_id] = new JSClass(class_id, def);\n if (class_id >= rt.class_count) rt.class_count = class_id + 1;\n for (const ctx of rt.context_list) {\n while (ctx.class_proto.length < rt.class_count) ctx.class_proto.push(null);\n }\n}\n\nexport function JS_NewClass(rt: JSRuntime, class_id: JSClassID, def: JSClassDef): number {\n JS_NewClass1(rt, class_id, def);\n return 0;\n}\n\nlet next_class_id: number = JSClassID.INIT_COUNT;\nexport function JS_NewClassID(): JSClassID {\n return next_class_id++ as JSClassID;\n}\n\nexport function JS_IsRegisteredClass(rt: JSRuntime, class_id: JSClassID): boolean {\n return class_id < rt.class_array.length && rt.class_array[class_id] !== null;\n}\n\n/* class definitions of the predefined classes */\nconst js_std_class_def: [JSClassID, JSAtom][] = [\n [JSClassID.OBJECT, JS_ATOM_Object],\n [JSClassID.ARRAY, JS_ATOM_Array],\n [JSClassID.ERROR, JS_ATOM_Error],\n [JSClassID.NUMBER, JS_ATOM_Number],\n [JSClassID.STRING, JS_ATOM_String],\n [JSClassID.BOOLEAN, JS_ATOM_Boolean],\n [JSClassID.SYMBOL, JS_ATOM_Symbol],\n [JSClassID.ARGUMENTS, JS_ATOM_Arguments],\n [JSClassID.MAPPED_ARGUMENTS, JS_ATOM_Arguments],\n [JSClassID.DATE, JS_ATOM_Date],\n [JSClassID.MODULE_NS, JS_ATOM_Module],\n [JSClassID.C_FUNCTION, JS_ATOM_Function],\n [JSClassID.BYTECODE_FUNCTION, JS_ATOM_Function],\n [JSClassID.BOUND_FUNCTION, JS_ATOM_Function],\n [JSClassID.C_FUNCTION_DATA, JS_ATOM_Function],\n [JSClassID.GENERATOR_FUNCTION, JS_ATOM_GeneratorFunction],\n [JSClassID.FOR_IN_ITERATOR, JS_ATOM_ForInIterator],\n [JSClassID.REGEXP, JS_ATOM_RegExp],\n [JSClassID.ARRAY_BUFFER, JS_ATOM_ArrayBuffer],\n [JSClassID.SHARED_ARRAY_BUFFER, JS_ATOM_SharedArrayBuffer],\n [JSClassID.UINT8C_ARRAY, JS_ATOM_Uint8ClampedArray],\n [JSClassID.INT8_ARRAY, JS_ATOM_Int8Array],\n [JSClassID.UINT8_ARRAY, JS_ATOM_Uint8Array],\n [JSClassID.INT16_ARRAY, JS_ATOM_Int16Array],\n [JSClassID.UINT16_ARRAY, JS_ATOM_Uint16Array],\n [JSClassID.INT32_ARRAY, JS_ATOM_Int32Array],\n [JSClassID.UINT32_ARRAY, JS_ATOM_Uint32Array],\n [JSClassID.BIG_INT64_ARRAY, JS_ATOM_BigInt64Array],\n [JSClassID.BIG_UINT64_ARRAY, JS_ATOM_BigUint64Array],\n [JSClassID.FLOAT32_ARRAY, JS_ATOM_Float32Array],\n [JSClassID.FLOAT64_ARRAY, JS_ATOM_Float64Array],\n [JSClassID.DATAVIEW, JS_ATOM_DataView],\n [JSClassID.BIG_INT, JS_ATOM_BigInt],\n [JSClassID.MAP, JS_ATOM_Map],\n [JSClassID.SET, JS_ATOM_Set],\n [JSClassID.WEAKMAP, JS_ATOM_WeakMap],\n [JSClassID.WEAKSET, JS_ATOM_WeakSet],\n [JSClassID.MAP_ITERATOR, JS_ATOM_Map_Iterator],\n [JSClassID.SET_ITERATOR, JS_ATOM_Set_Iterator],\n [JSClassID.ARRAY_ITERATOR, JS_ATOM_Array_Iterator],\n [JSClassID.STRING_ITERATOR, JS_ATOM_String_Iterator],\n [JSClassID.REGEXP_STRING_ITERATOR, JS_ATOM_RegExp_String_Iterator],\n [JSClassID.GENERATOR, JS_ATOM_Generator],\n [JSClassID.PROXY, JS_ATOM_Proxy],\n [JSClassID.PROMISE, JS_ATOM_Promise],\n [JSClassID.PROMISE_RESOLVE_FUNCTION, JS_ATOM_PromiseResolveFunction],\n [JSClassID.PROMISE_REJECT_FUNCTION, JS_ATOM_PromiseRejectFunction],\n [JSClassID.ASYNC_FUNCTION, JS_ATOM_AsyncFunction],\n [JSClassID.ASYNC_FUNCTION_RESOLVE, JS_ATOM_AsyncFunctionResolve],\n [JSClassID.ASYNC_FUNCTION_REJECT, JS_ATOM_AsyncFunctionReject],\n [JSClassID.ASYNC_FROM_SYNC_ITERATOR, JS_ATOM_Object],\n [JSClassID.ASYNC_GENERATOR_FUNCTION, JS_ATOM_AsyncGeneratorFunction],\n [JSClassID.ASYNC_GENERATOR, JS_ATOM_AsyncGenerator],\n [JSClassID.WEAK_REF, JS_ATOM_WeakRef],\n [JSClassID.FINALIZATION_REGISTRY, JS_ATOM_FinalizationRegistry],\n];\n\nexport function JS_NewRuntime(): JSRuntime {\n const rt = new JSRuntime();\n for (const [id, name] of js_std_class_def) {\n JS_NewClass1(rt, id, { class_name: name });\n }\n for (const f of hooks.init_runtime) f(rt);\n return rt;\n}\n\nexport function JS_FreeRuntime(rt: JSRuntime): void {\n rt.job_list.length = 0;\n rt.context_list.length = 0;\n}\n\nexport function JS_SetRuntimeOpaque(rt: JSRuntime, opaque: any): void { rt.user_opaque = opaque; }\nexport function JS_GetRuntimeOpaque(rt: JSRuntime): any { return rt.user_opaque; }\nexport function JS_SetContextOpaque(ctx: JSContext, opaque: any): void { ctx.user_opaque = opaque; }\nexport function JS_GetContextOpaque(ctx: JSContext): any { return ctx.user_opaque; }\nexport function JS_GetRuntime(ctx: JSContext): JSRuntime { return ctx.rt; }\nexport function JS_SetMaxStackSize(rt: JSRuntime, depth: number): void { rt.max_stack_depth = depth; }\nexport function JS_SetInterruptHandler(rt: JSRuntime, cb: JSInterruptHandler | null, opaque: any): void {\n rt.interrupt_handler = cb; rt.interrupt_opaque = opaque;\n}\nexport function JS_SetHostPromiseRejectionTracker(rt: JSRuntime, cb: JSHostPromiseRejectionTracker | null, opaque: any): void {\n rt.host_promise_rejection_tracker = cb; rt.host_promise_rejection_tracker_opaque = opaque;\n}\n\nexport function JS_NewContextRaw(rt: JSRuntime): JSContext {\n const ctx = new JSContext(rt);\n rt.context_list.push(ctx);\n ctx.class_proto[JSClassID.OBJECT] = JS_NewObjectProto(ctx, null) as JSObject;\n /* placeholder replaced by the builtins (Function.prototype is a function) */\n ctx.function_proto = JS_NewObjectProtoClass(ctx, ctx.class_proto[JSClassID.OBJECT], JSClassID.OBJECT) as JSObject;\n ctx.global_obj = JS_NewObject(ctx) as JSObject;\n ctx.global_var_obj = Object.create(null);\n return ctx;\n}\n\nexport function JS_NewContext(rt: JSRuntime): JSContext {\n const ctx = JS_NewContextRaw(rt);\n hooks.JS_AddIntrinsicBaseObjects(ctx);\n return ctx;\n}\n\nexport function JS_FreeContext(ctx: JSContext): void {\n const i = ctx.rt.context_list.indexOf(ctx);\n if (i >= 0) ctx.rt.context_list.splice(i, 1);\n}\n\nexport function JS_GetClassProto(ctx: JSContext, class_id: JSClassID): JSValue {\n return ctx.class_proto[class_id] ?? undefined;\n}\nexport function JS_SetClassProto(ctx: JSContext, class_id: JSClassID, obj: JSValue): void {\n ctx.class_proto[class_id] = obj as JSObject;\n}\nexport function JS_GetGlobalObject(ctx: JSContext): JSValue { return ctx.global_obj; }\n\n/* ---------------------------------------------------------------------\n Atoms\n --------------------------------------------------------------------- */\n\nexport function JS_NewAtom(ctx: JSContext, str: string): JSAtom { return ctx.rt.atoms.newAtomStr(str); }\nexport function JS_NewAtomStr(ctx: JSContext, str: string): JSAtom { return ctx.rt.atoms.newAtomStr(str); }\nexport function JS_NewAtomUInt32(ctx: JSContext, n: number): JSAtom { return ctx.rt.atoms.newAtomUInt32(n); }\nexport function JS_NewAtomInt64(ctx: JSContext, n: number): JSAtom {\n if (n >= 0 && n <= JS_ATOM_MAX_INT) return __JS_AtomFromUInt32(n);\n return ctx.rt.atoms.newAtomStr(String(n));\n}\nexport function JS_DupAtom(_ctx: JSContext, v: JSAtom): JSAtom { return v; }\nexport function JS_FreeAtom(_ctx: JSContext, _v: JSAtom): void {}\nexport function JS_FreeValue(_ctx: JSContext, _v: JSValue): void {}\nexport function JS_DupValue(_ctx: JSContext, v: JSValue): JSValue { return v; }\n\nexport function JS_AtomIsString(ctx: JSContext, atom: JSAtom): boolean { return ctx.rt.atoms.isString(atom); }\nexport function JS_AtomIsSymbol(ctx: JSContext, atom: JSAtom): boolean { return ctx.rt.atoms.isSymbol(atom); }\nexport function JS_AtomGetStr(ctx: JSContext, atom: JSAtom): string { return ctx.rt.atoms.toDisplayStr(atom); }\nexport function JS_AtomGetStrRT(rt: JSRuntime, atom: JSAtom): string { return rt.atoms.toDisplayStr(atom); }\n\n/* host property key of an atom: number for array indices, string or symbol */\nexport type JSPropertyKey = string | number | symbol;\nexport function JS_AtomToKey(ctx: JSContext, atom: JSAtom): JSPropertyKey {\n return ctx.rt.atoms.toKey(atom);\n}\n\n/* atom from a host property key (as returned by Reflect.ownKeys) */\nexport function JS_KeyToAtom(ctx: JSContext, key: JSPropertyKey): JSAtom {\n switch (typeof key) {\n case 'string': return ctx.rt.atoms.newAtomStr(key);\n case 'number': return ctx.rt.atoms.newAtomUInt32(key);\n default: return ctx.rt.atoms.symbolToAtom(key);\n }\n}\n\n/* atom to JS value: string or symbol */\nexport function JS_AtomToValue(ctx: JSContext, atom: JSAtom): JSValue {\n const atoms = ctx.rt.atoms;\n if (atoms.isSymbol(atom)) return atoms.getSymbol(atom);\n return atoms.toStr(atom);\n}\n/* atom to string (symbols are converted to their description) */\nexport function JS_AtomToString(ctx: JSContext, atom: JSAtom): string {\n return ctx.rt.atoms.toStr(atom);\n}\n\n/* return the array index (0 .. 2^32-2) or -1 if the atom is not an array index */\nexport function JS_AtomIsArrayIndex(ctx: JSContext, atom: JSAtom): number {\n if (__JS_AtomIsTaggedInt(atom)) return __JS_AtomToUInt32(atom);\n const atoms = ctx.rt.atoms;\n if (atoms.getType(atom) !== JS_ATOM_TYPE_STRING) return -1;\n const str = atoms.toStr(atom);\n /* canonical uint32 string larger than JS_ATOM_MAX_INT */\n if (str.length !== 10) return -1;\n if (!/^[1-9][0-9]{9}$/.test(str)) return -1;\n const n = Number(str);\n if (n > 0xfffffffe) return -1;\n return n;\n}\n\n/* return TRUE if the atom is a numeric index (canonical numeric string) */\nexport function JS_AtomIsNumericIndex1(ctx: JSContext, atom: JSAtom): JSValue {\n if (__JS_AtomIsTaggedInt(atom)) return __JS_AtomToUInt32(atom);\n if (!ctx.rt.atoms.isString(atom)) return undefined;\n const str = ctx.rt.atoms.toStr(atom);\n if (str === '-0') return -0;\n if (str === 'Infinity') return Infinity;\n if (str === '-Infinity') return -Infinity;\n if (str === 'NaN') return NaN;\n const n = Number(str);\n if (Number.isNaN(n) || str.trim() !== str || str === '') return undefined;\n if (js_number_to_string(n, 10) !== str) return undefined;\n return n;\n}\nexport function JS_AtomIsNumericIndex(ctx: JSContext, atom: JSAtom): boolean {\n return JS_AtomIsNumericIndex1(ctx, atom) !== undefined;\n}\n\n/* ToPropertyKey */\nexport function JS_ValueToAtom(ctx: JSContext, val: JSValue): JSAtom {\n switch (typeof val) {\n case 'number':\n if (Number.isInteger(val) && val >= 0 && val <= JS_ATOM_MAX_INT) return __JS_AtomFromUInt32(val);\n return ctx.rt.atoms.newAtomStr(js_number_to_string(val, 10));\n case 'string':\n return ctx.rt.atoms.newAtomStr(val);\n case 'symbol':\n return ctx.rt.atoms.symbolToAtom(val);\n case 'boolean':\n return val ? JS_ATOM_true : JS_ATOM_false;\n case 'undefined':\n return JS_ATOM_undefined;\n case 'bigint':\n return ctx.rt.atoms.newAtomStr(val.toString());\n case 'object':\n case 'function':\n if (val === null) return JS_ATOM_null;\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitive(ctx, val, HINT_STRING);\n if (JS_IsException(prim)) return JS_ATOM_NULL;\n return JS_ValueToAtom(ctx, prim);\n }\n break;\n }\n JS_ThrowTypeError(ctx, 'invalid property key');\n return JS_ATOM_NULL;\n}\n\nexport function JS_NewSymbol(ctx: JSContext, description: string | undefined, atom_type: number = JS_ATOM_TYPE_SYMBOL): symbol {\n return ctx.rt.atoms.newSymbol(description, atom_type);\n}\nexport function JS_NewSymbolFromAtom(ctx: JSContext, descr: JSAtom, atom_type: number): symbol {\n return ctx.rt.atoms.newSymbol(ctx.rt.atoms.toStr(descr), atom_type);\n}\n\n/* ---------------------------------------------------------------------\n Exceptions\n --------------------------------------------------------------------- */\n\nexport function JS_Throw(ctx: JSContext, obj: JSValue): JSValue {\n const rt = ctx.rt;\n rt.current_exception = obj;\n rt.exception_pending = true;\n return JS_EXCEPTION;\n}\n\nexport function JS_GetException(ctx: JSContext): JSValue {\n const rt = ctx.rt;\n const val = rt.current_exception;\n rt.current_exception = undefined;\n rt.exception_pending = false;\n return val;\n}\n\nexport function JS_HasException(ctx: JSContext): boolean { return ctx.rt.exception_pending; }\n\n/* take the pending exception to throw it as a host exception (used by the\n function wrappers at the engine/host boundary) */\nexport function js_take_exception(ctx: JSContext): JSValue {\n return JS_GetException(ctx);\n}\n\n/* Convert a value thrown by host code into the engine convention. Guest\n values pass through; host intrinsic errors (their prototype chain reaches\n the host Error.prototype, which no guest object has) become guest errors.\n Always returns JS_EXCEPTION. */\n/* Host error messages quote the expression that failed (\"$s1 is not a function. (In\n '$s1(...)', ...)\"): map the common ones to the QuickJS wording so that generated code\n never shows through, and drop the quoted source otherwise. */\nexport function js_normalize_host_message(e: Error): string {\n let msg = String(e.message);\n if (e instanceof TypeError) {\n if (/ is not a function\\b/.test(msg)) return 'not a function';\n if (/ is not a constructor\\b/.test(msg)) return 'not a constructor';\n const m = /^(null|undefined) is not an object \\(evaluating '([^']*)'\\)$/.exec(msg);\n if (m) {\n const expr = m[2];\n const eq = expr.indexOf(' = ');\n const lhs = eq >= 0 ? expr.slice(0, eq) : expr;\n const name = /\\.([A-Za-z_$][\\w$]*)$/.exec(lhs);\n const what = eq >= 0 ? 'cannot set property' : 'cannot read property';\n return name ? `${what} '${name[1]}' of ${m[1]}` : `${what} of ${m[1]}`;\n }\n }\n msg = msg.replace(/\\s*\\((?:evaluating|In) '.*$/, '');\n return msg;\n}\n\nexport function js_host_exception_to_guest(ctx: JSContext, e: unknown): JSValue {\n if (e === JS_EXCEPTION) return JS_EXCEPTION; /* already pending */\n if (e instanceof Error) {\n let msg = js_normalize_host_message(e);\n let num: JSErrorEnum;\n if (e instanceof RangeError) {\n if (/call stack|stack size|recursion|stack overflow/i.test(msg)) return JS_ThrowStackOverflow(ctx);\n num = JSErrorEnum.RANGE_ERROR;\n } else if (e instanceof TypeError) num = JSErrorEnum.TYPE_ERROR;\n else if (e instanceof SyntaxError) num = JSErrorEnum.SYNTAX_ERROR;\n else if (e instanceof ReferenceError) num = JSErrorEnum.REFERENCE_ERROR;\n else if (e instanceof URIError) num = JSErrorEnum.URI_ERROR;\n else if (e instanceof EvalError) num = JSErrorEnum.EVAL_ERROR;\n else { num = JSErrorEnum.INTERNAL_ERROR; msg = 'internal error: ' + msg; }\n /* the host captured the stack where the error was raised: compiled guest frames are\n located from it (see build_backtrace) */\n return JS_ThrowError2(ctx, num, msg, true, typeof e.stack === 'string' ? e.stack : null);\n }\n return JS_Throw(ctx, e as JSValue);\n}\n\nexport function JS_IsError(ctx: JSContext, val: JSValue): boolean {\n const m = js_get_meta(val);\n return m !== undefined && m.class_id === JSClassID.ERROR;\n}\n\nexport function JS_IsUncatchableError(ctx: JSContext, val: JSValue): boolean {\n const m = js_get_meta(val);\n return m !== undefined && m.class_id === JSClassID.ERROR && m.is_uncatchable_error;\n}\n\nexport function JS_SetUncatchableError(ctx: JSContext, val: JSValue, flag: boolean): void {\n const m = js_get_meta(val);\n if (m && m.class_id === JSClassID.ERROR) m.is_uncatchable_error = flag;\n}\n\nexport function JS_NewError(ctx: JSContext): JSValue {\n return JS_NewObjectProtoClass(ctx, ctx.class_proto[JSClassID.ERROR], JSClassID.ERROR);\n}\n\nexport function JS_NewErrorNative(ctx: JSContext, error_num: JSErrorEnum, message: string): JSObject {\n let proto: JSObject | null;\n if (error_num === JSErrorEnum.PLAIN_ERROR) proto = ctx.class_proto[JSClassID.ERROR];\n else proto = ctx.native_error_proto[error_num];\n const obj = JS_NewObjectProtoClass(ctx, proto, JSClassID.ERROR) as JSObject;\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_message, message, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n return obj;\n}\n\nexport const JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL = 1 << 0;\n\n/* Build the 'stack' property of an error from the current call stack.\n\n Interpreter and C function frames are the `JSStackFrame` chain. Compiled\n functions (src/jit.ts) have no such frame: when the compiled tier is on,\n the host stack (`host_stack`, or the current one) is mapped to guest frames\n by src/jit_stack.ts and the engine frames found in it consume the chain in\n order, so both kinds appear interleaved as they were called. Frames of\n host builtins called by guest code appear as `(native)`.\n\n `fileName`/`lineNumber`/`columnNumber` are set from the given position or,\n when none is given, from the innermost frame with a position. */\nexport function build_backtrace(ctx: JSContext, error_obj: JSValue, filename: string | null,\n line_num: number, col_num: number, backtrace_flags: number,\n host_stack: string | null = null): void {\n let str = '';\n const is_obj = JS_IsObject(error_obj);\n let has_pos = false;\n const set_pos = (file: string, line: number, col: number): void => {\n has_pos = true;\n if (!is_obj) return;\n /* Note: SpiderMonkey does that, could update once there is a standard */\n JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_fileName, file, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_lineNumber, line, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_columnNumber, col, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n };\n if (filename) {\n str += ` at ${filename}`;\n if (line_num !== -1) str += `:${line_num}:${col_num}`;\n str += '\\n';\n set_pos(filename, line_num, col_num);\n }\n /* one line for an engine frame */\n const frame_line = (sf: JSStackFrame): string => {\n const f = sf.cur_func;\n let func_name = '';\n if (JS_IsObject(f)) func_name = get_func_name(ctx, f);\n let s = ` at ${func_name || '<anonymous>'}`;\n const fd = JS_GetFunctionData(f);\n if (fd) {\n const b = fd.function_bytecode;\n if (b.has_debug) {\n const fname = ctx.rt.atoms.toStr(b.debug.filename);\n const [line1, col1] = find_line_num(ctx, b, sf.cur_pc - 1);\n s += ` (${fname}`;\n if (line1 > 0) { s += `:${line1}:${col1}`; if (!has_pos) set_pos(fname, line1, col1); }\n s += ')';\n }\n } else {\n s += ' (native)';\n }\n return s + '\\n';\n };\n let skip = (backtrace_flags & JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL) !== 0;\n let sf = ctx.rt.current_stack_frame;\n const hooks = jit_hooks.stack;\n if (hooks !== null) {\n const frames = hooks.frames(host_stack ?? hooks.capture());\n let stop = false;\n for (let i = 0; i < frames.length && !stop; i++) {\n const hf = frames[i];\n switch (hf.kind) {\n case 'compiled':\n if (skip) { skip = false; break; }\n str += ` at ${hf.name || '<anonymous>'} (${hf.file}`;\n if (hf.line > 0) { str += `:${hf.line}:${hf.col}`; if (!has_pos) set_pos(hf.file, hf.line, hf.col); }\n str += ')\\n';\n break;\n case 'native':\n if (skip) { skip = false; break; }\n str += ` at ${hf.name || '<anonymous>'} (native)\\n`;\n break;\n default: {\n /* the next engine frame, when of the matching kind (the frame of a C function that\n raised a host exception is already unwound when the exception is converted) */\n if (sf === null) break;\n if ((JS_GetFunctionData(sf.cur_func) !== null) !== (hf.kind === 'interp')) break;\n if (sf.js_mode & JS_MODE_BACKTRACE_BARRIER) { sf = null; stop = true; break; }\n const cur = sf;\n sf = sf.prev_frame;\n /* a frame replaced by compiled code (on-stack replacement) is shown by its compiled\n frame, which precedes it on the host stack */\n if (cur.osr) break;\n if (skip) { skip = false; break; }\n str += frame_line(cur);\n break;\n }\n }\n }\n /* engine frames the host stack did not show (its depth limit) follow */\n }\n for (; sf !== null; sf = sf.prev_frame) {\n if (sf.js_mode & JS_MODE_BACKTRACE_BARRIER) break;\n if (sf.osr) continue;\n if (skip) { skip = false; continue; }\n str += frame_line(sf);\n }\n if (is_obj) {\n JS_DefinePropertyValue(ctx, error_obj, JS_ATOM_stack, str, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n const m = js_get_meta(error_obj);\n if (m) m.has_backtrace = true;\n }\n}\n\nexport function get_func_name(ctx: JSContext, func: JSObject): string {\n try {\n const d = Reflect.getOwnPropertyDescriptor(func, 'name');\n if (d && 'value' in d && typeof d.value === 'string') return d.value;\n } catch { /* proxy trap failures are ignored here */ }\n const fd = JS_GetFunctionData(func);\n if (fd) return ctx.rt.atoms.toStr(fd.function_bytecode.func_name);\n return '';\n}\n\n/* decode the pc2line table: returns [line, col] of the last entry whose\n pc is <= pc_value. pc_value < 0 returns the function start position. */\nexport function find_line_num(ctx: JSContext, b: JSFunctionBytecode, pc_value: number): [number, number] {\n const buf = b.debug.pc2line;\n if (!buf || buf.length === 0) return [-1, -1];\n /* encoding: sequence of (pc_delta: leb128, line_delta: sleb128, col_delta: sleb128);\n the first entry gives the function start position */\n let pos = 0, pc = 0, line = 0, col = 0;\n let last_line = -1, last_col = -1;\n let first = true;\n while (pos < buf.length) {\n const r1 = get_leb128(buf, pos); pos = r1[1];\n const r2 = get_sleb128(buf, pos); pos = r2[1];\n const r3 = get_sleb128(buf, pos); pos = r3[1];\n pc += r1[0];\n line += r2[0];\n col += r3[0];\n if (first) {\n first = false;\n last_line = line; last_col = col;\n if (pc_value < 0) break;\n continue;\n }\n if (pc > pc_value) break;\n last_line = line; last_col = col;\n }\n return [last_line, last_col];\n}\n\nexport function get_leb128(buf: Uint8Array, pos: number): [number, number] {\n let v = 0, shift = 0;\n for (;;) {\n const a = buf[pos++];\n v += (a & 0x7f) * Math.pow(2, shift);\n if (!(a & 0x80)) break;\n shift += 7;\n }\n return [v, pos];\n}\nexport function get_sleb128(buf: Uint8Array, pos: number): [number, number] {\n const [v, p] = get_leb128(buf, pos);\n /* zigzag */\n return [(v % 2 === 1) ? -((v + 1) / 2) : v / 2, p];\n}\n\nexport function JS_ThrowError2(ctx: JSContext, error_num: JSErrorEnum, message: string, add_backtrace: boolean,\n host_stack: string | null = null): JSValue {\n const obj = JS_NewErrorNative(ctx, error_num, message);\n if (add_backtrace) build_backtrace(ctx, obj, null, 0, 0, 0, host_stack);\n return JS_Throw(ctx, obj);\n}\n\nexport function JS_ThrowError(ctx: JSContext, error_num: JSErrorEnum, message: string): JSValue {\n /* the backtrace is added later (with the exact position) if called\n from a bytecode function */\n const sf = ctx.rt.current_stack_frame;\n if (!sf || JS_GetFunctionData(sf.cur_func) === null) return JS_ThrowError2(ctx, error_num, message, true);\n const hooks = jit_hooks.stack;\n if (hooks !== null) {\n /* a compiled function has no interpreter frame: when it is the thrower, its position is\n on the host stack now and gone once the exception has propagated */\n const stack = hooks.capture();\n if (hooks.compiled_on_top(stack)) return JS_ThrowError2(ctx, error_num, message, true, stack);\n }\n return JS_ThrowError2(ctx, error_num, message, false);\n}\n\nexport function JS_ThrowSyntaxError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.SYNTAX_ERROR, msg); }\nexport function JS_ThrowTypeError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.TYPE_ERROR, msg); }\nexport function JS_ThrowReferenceError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.REFERENCE_ERROR, msg); }\nexport function JS_ThrowRangeError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.RANGE_ERROR, msg); }\nexport function JS_ThrowInternalError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.INTERNAL_ERROR, msg); }\nexport function JS_ThrowURIError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.URI_ERROR, msg); }\nexport function JS_ThrowEvalError(ctx: JSContext, msg: string): JSValue { return JS_ThrowError(ctx, JSErrorEnum.EVAL_ERROR, msg); }\nexport function JS_ThrowOutOfMemory(ctx: JSContext): JSValue { return JS_ThrowInternalError(ctx, 'out of memory'); }\nexport function JS_ThrowStackOverflow(ctx: JSContext): JSValue { return JS_ThrowInternalError(ctx, 'stack overflow'); }\n\nexport function JS_ThrowTypeErrorAtom(ctx: JSContext, fmt: string, atom: JSAtom): JSValue {\n return JS_ThrowTypeError(ctx, fmt.replace('%s', JS_AtomGetStr(ctx, atom)));\n}\nexport function JS_ThrowSyntaxErrorAtom(ctx: JSContext, fmt: string, atom: JSAtom): JSValue {\n return JS_ThrowSyntaxError(ctx, fmt.replace('%s', JS_AtomGetStr(ctx, atom)));\n}\nexport function JS_ThrowReferenceErrorNotDefined(ctx: JSContext, name: JSAtom): JSValue {\n return JS_ThrowReferenceError(ctx, `'${JS_AtomGetStr(ctx, name)}' is not defined`);\n}\nexport function JS_ThrowReferenceErrorUninitialized(ctx: JSContext, name: JSAtom): JSValue {\n return JS_ThrowReferenceError(ctx, `${name === JS_ATOM_NULL ? 'lexical variable' : \"'\" + JS_AtomGetStr(ctx, name) + \"'\"} is not initialized`);\n}\nexport function JS_ThrowReferenceErrorUninitialized2(ctx: JSContext, b: JSFunctionBytecode, idx: number, is_ref: boolean): JSValue {\n let atom = JS_ATOM_NULL;\n if (is_ref) atom = b.closure_var[idx].var_name;\n else atom = b.vardefs[b.arg_count + idx]?.var_name ?? JS_ATOM_NULL;\n return JS_ThrowReferenceErrorUninitialized(ctx, atom);\n}\nexport function JS_ThrowTypeErrorReadOnly(ctx: JSContext, flags: number, atom: JSAtom): number {\n if ((flags & JS_PROP_THROW) || ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) {\n JS_ThrowTypeErrorAtom(ctx, \"'%s' is read-only\", atom);\n return -1;\n }\n return 0;\n}\nexport function JS_ThrowTypeErrorNotAnObject(ctx: JSContext): JSValue { return JS_ThrowTypeError(ctx, 'not an object'); }\nexport function JS_ThrowTypeErrorNotASymbol(ctx: JSContext): JSValue { return JS_ThrowTypeError(ctx, 'not a symbol'); }\nexport function JS_ThrowTypeErrorInvalidClass(ctx: JSContext, class_id: JSClassID): JSValue {\n const name = ctx.rt.class_array[class_id]?.class_name ?? JS_ATOM_Object;\n return JS_ThrowTypeErrorAtom(ctx, '%s object expected', name);\n}\nexport function JS_ThrowTypeErrorNotAFunction(ctx: JSContext): JSValue { return JS_ThrowTypeError(ctx, 'not a function'); }\n\nexport function is_strict_mode(ctx: JSContext): boolean {\n const sf = ctx.rt.current_stack_frame;\n return !!sf && (sf.js_mode & JS_MODE_STRICT) !== 0;\n}\n\n/* host-side error class used only to signal fatal interpreter bugs */\nexport class JSInternalError extends Error {}\n\n/* ---------------------------------------------------------------------\n Object creation\n --------------------------------------------------------------------- */\n\nfunction js_is_function_class(class_id: JSClassID): boolean {\n switch (class_id) {\n case JSClassID.C_FUNCTION:\n case JSClassID.C_FUNCTION_DATA:\n case JSClassID.BYTECODE_FUNCTION:\n case JSClassID.BOUND_FUNCTION:\n case JSClassID.GENERATOR_FUNCTION:\n case JSClassID.ASYNC_FUNCTION:\n case JSClassID.ASYNC_GENERATOR_FUNCTION:\n case JSClassID.PROMISE_RESOLVE_FUNCTION:\n case JSClassID.PROMISE_REJECT_FUNCTION:\n case JSClassID.ASYNC_FUNCTION_RESOLVE:\n case JSClassID.ASYNC_FUNCTION_REJECT:\n return true;\n default:\n return false;\n }\n}\n\n/* Create a guest object with the given prototype and class. Arrays are\n host arrays re-prototyped to the guest prototype; the other classes are\n ordinary objects with metadata when class_id != JS_CLASS_OBJECT.\n Function classes must be created with JS_NewCFunction* or js_closure. */\nexport function JS_NewObjectProtoClass(ctx: JSContext, proto: JSValue | null, class_id: JSClassID): JSValue {\n const p = JS_IsObject(proto) ? proto : null;\n let obj: object;\n if (class_id === JSClassID.ARRAY) {\n obj = [];\n Object.setPrototypeOf(obj, p);\n } else {\n if (js_is_function_class(class_id)) throw new JSInternalError('function objects must be created with js_new_host_function');\n obj = Object.create(p);\n }\n if (class_id !== JSClassID.OBJECT) js_meta.set(obj, new JSObjectMeta(class_id));\n return obj;\n}\n\nexport function JS_NewObjectClass(ctx: JSContext, class_id: JSClassID): JSValue {\n return JS_NewObjectProtoClass(ctx, ctx.class_proto[class_id], class_id);\n}\n\nexport function JS_NewObjectProto(ctx: JSContext, proto: JSValue | null): JSValue {\n return Object.create(JS_IsObject(proto) ? proto : null);\n}\n\nexport function JS_NewObject(ctx: JSContext): JSValue {\n return Object.create(ctx.class_proto[JSClassID.OBJECT]);\n}\n\nexport function JS_NewArray(ctx: JSContext): JSValue {\n const a: JSValue[] = [];\n Object.setPrototypeOf(a, ctx.class_proto[JSClassID.ARRAY]);\n return a;\n}\n\n/* create an array from a list of values (the list is copied) */\nexport function js_create_array(ctx: JSContext, values: JSValue[]): JSValue {\n const a = values.slice();\n Object.setPrototypeOf(a, ctx.class_proto[JSClassID.ARRAY]);\n return a;\n}\n/* create an array from a list of values (takes ownership of the list) */\nexport function JS_NewArrayFrom(ctx: JSContext, values: JSValue[]): JSValue {\n Object.setPrototypeOf(values, ctx.class_proto[JSClassID.ARRAY]);\n return values;\n}\n\n/* return the host array backing a guest array (not a proxy) when it is\n dense (no holes), or null. QuickJS fast arrays never have holes, so the\n fast paths of the builtins may assume that every element is present. */\nexport function js_get_fast_array(ctx: JSContext, obj: JSValue): JSValue[] | null {\n /* host arrays may contain holes: callers must use 'i in arr' where the\n spec requires HasProperty (a scan here would make every call O(n)) */\n if (!Array.isArray(obj) || js_meta.get(obj) !== undefined) return null;\n return obj as JSValue[];\n}\n\nexport function JS_SetOpaque(obj: JSValue, opaque: any): number {\n if (!JS_IsObject(obj)) return -1;\n js_ensure_meta(obj).u = opaque;\n return 0;\n}\nexport function JS_GetOpaque(obj: JSValue, class_id: JSClassID): any {\n const m = js_get_meta(obj);\n if (m && m.class_id === class_id) return m.u;\n return null;\n}\nexport function JS_GetOpaque2(ctx: JSContext, obj: JSValue, class_id: JSClassID): any {\n const p = JS_GetOpaque(obj, class_id);\n if (p === null || p === undefined) JS_ThrowTypeErrorInvalidClass(ctx, class_id);\n return p;\n}\nexport function JS_GetAnyOpaque(obj: JSValue): any {\n const m = js_get_meta(obj);\n return m ? m.u : null;\n}\n/* class id of a value: 0 for non objects */\nexport function JS_GetClassID(v: JSValue): JSClassID {\n if (!JS_IsObject(v)) return 0 as JSClassID;\n const m = js_meta.get(v);\n if (m) return m.class_id;\n if (Array.isArray(v)) return JSClassID.ARRAY;\n if (typeof v === 'function') return JSClassID.C_FUNCTION;\n return JSClassID.OBJECT;\n}\n\n/* ---------------------------------------------------------------------\n Functions\n --------------------------------------------------------------------- */\n\n/* Host wrapper factories. The wrappers are strict so that a primitive\n 'this' is passed unboxed. mk_method creates a non constructible\n function (method shorthand), mk_function a constructible one. */\nexport type JSHostImpl = (this_val: JSValue, new_target: JSValue, args: JSValue[]) => JSValue;\n/* (plain module code: ES modules are strict, and no code generation from\n strings is needed, so the runtime loads under a CSP without 'unsafe-eval'\n and on platforms such as Cloudflare Workers) */\nconst host_fn_factory = {\n mk_method(impl: JSHostImpl): Function {\n const o = { m(this: any, ...args: JSValue[]) { return impl(this, undefined, args); } };\n return o.m;\n },\n mk_function(impl: JSHostImpl): Function {\n const f = function (this: any, ...args: JSValue[]) { return impl(this, new.target, args); };\n (f as any).prototype = undefined; /* replaced by the engine; never a host object */\n return f;\n },\n};\n\n/* create a guest function object calling 'impl' (which uses the host\n exception convention) */\nexport function js_new_host_function(ctx: JSContext, impl: JSHostImpl, is_ctor: boolean, name: string,\n length: number, proto: JSValue | null, class_id: JSClassID): object {\n const f = is_ctor ? host_fn_factory.mk_function(impl) : host_fn_factory.mk_method(impl);\n js_direct.set(f, (t: JSValue, nt: JSValue, ...args: JSValue[]) => impl(t, nt, args));\n js_init_host_function(ctx, f, is_ctor, name, length, proto, class_id);\n return f;\n}\n\n/* make a freshly created strict host function `f` a guest function object (prototype, length,\n name, metadata). A `function` must have had its host `prototype` property replaced already. */\nexport function js_init_host_function(ctx: JSContext, f: Function, is_ctor: boolean, name: string,\n length: number, proto: JSValue | null, class_id: JSClassID): JSObjectMeta {\n Object.setPrototypeOf(f, JS_IsObject(proto) ? proto : null);\n Reflect.defineProperty(f, 'length', { value: length, writable: false, enumerable: false, configurable: true });\n Reflect.defineProperty(f, 'name', { value: name, writable: false, enumerable: false, configurable: true });\n const m = new JSObjectMeta(class_id);\n m.is_constructor = is_ctor;\n m.realm = ctx;\n js_meta.set(f, m);\n return m;\n}\n\nexport function JS_IsFunction(ctx: JSContext, val: JSValue): boolean {\n return typeof val === 'function';\n}\n\n/* IsConstructor for host functions without metadata (bound functions\n created by the host, borrowed natives): Reflect.construct validates its\n new.target argument without calling it */\nfunction js_is_host_constructor(f: Function): boolean {\n try {\n Reflect.construct(String, [], f);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function JS_IsConstructor(ctx: JSContext, val: JSValue): boolean {\n if (typeof val !== 'function') return false;\n const m = js_meta.get(val);\n if (m) return m.is_constructor;\n return js_is_host_constructor(val);\n}\n\nexport function JS_SetConstructorBit(ctx: JSContext, func_obj: JSValue, val: boolean): boolean {\n if (typeof func_obj !== 'function') return false;\n js_ensure_meta(func_obj, JSClassID.C_FUNCTION).is_constructor = val;\n return true;\n}\n\n/* IsArray: -1 on exception (revoked proxy) */\nexport function JS_IsArray(ctx: JSContext, val: JSValue): number {\n const m = js_get_meta(val);\n if (m && m.class_id === JSClassID.PROXY) {\n const s = m.u as JSProxyData;\n if (s.is_revoked) { JS_ThrowTypeError(ctx, 'revoked proxy'); return -1; }\n return JS_IsArray(ctx, s.target);\n }\n try {\n return Array.isArray(val) ? 1 : 0;\n } catch (e) {\n JS_ThrowTypeError(ctx, 'revoked proxy');\n return -1;\n }\n}\n\nfunction js_cfunc_is_ctor(cproto: JSCFunctionEnum): boolean {\n return cproto === JSCFunctionEnum.constructor ||\n cproto === JSCFunctionEnum.constructor_magic ||\n cproto === JSCFunctionEnum.constructor_or_func ||\n cproto === JSCFunctionEnum.constructor_or_func_magic;\n}\n\nexport function JS_NewCFunction3(ctx: JSContext, func: Function, name: string, length: number,\n cproto: JSCFunctionEnum, magic: number, proto_val: JSValue): JSValue {\n const rec = new JSCFunctionRecord(func, length, cproto, magic);\n let fobj: object;\n const impl: JSHostImpl = (this_val, new_target, args) => {\n let ret: JSValue;\n if (new_target !== undefined) ret = js_call_c_function(ctx, fobj, new_target, args, JS_CALL_FLAG_CONSTRUCTOR);\n else ret = js_call_c_function(ctx, fobj, this_val, args, 0);\n if (ret === JS_EXCEPTION) throw js_take_exception(ctx);\n return ret;\n };\n fobj = js_new_host_function(ctx, impl, js_cfunc_is_ctor(cproto), name, length, proto_val, JSClassID.C_FUNCTION);\n js_meta.get(fobj)!.cfunc = rec;\n return fobj;\n}\n\nexport function JS_NewCFunction2(ctx: JSContext, func: Function, name: string, length: number,\n cproto: JSCFunctionEnum, magic: number): JSValue {\n return JS_NewCFunction3(ctx, func, name, length, cproto, magic, ctx.function_proto);\n}\n\nexport function JS_NewCFunction(ctx: JSContext, func: JSCFunction, name: string, length: number): JSValue {\n return JS_NewCFunction2(ctx, func, name, length, JSCFunctionEnum.generic, 0);\n}\n\nexport function JS_NewCFunctionMagic(ctx: JSContext, func: JSCFunctionMagic, name: string, length: number,\n cproto: JSCFunctionEnum, magic: number): JSValue {\n return JS_NewCFunction2(ctx, func, name, length, cproto, magic);\n}\n\nexport function JS_NewCFunctionData(ctx: JSContext, func: JSCFunctionData, length: number, magic: number,\n data: JSValue[]): JSValue {\n const s = new JSCFunctionDataRecord(func, length, magic, data.slice());\n let fobj: object;\n const impl: JSHostImpl = (this_val, new_target, args) => {\n const ret = js_c_function_data_call(ctx, fobj, this_val, args, 0);\n if (ret === JS_EXCEPTION) throw js_take_exception(ctx);\n return ret;\n };\n fobj = js_new_host_function(ctx, impl, false, '', length, ctx.function_proto, JSClassID.C_FUNCTION_DATA);\n js_meta.get(fobj)!.u = s;\n return fobj;\n}\n\nexport function js_c_function_data_call(ctx: JSContext, func_obj: JSValue, this_val: JSValue,\n argv: JSValue[], flags: number): JSValue {\n const s = js_meta.get(func_obj as object)!.u as JSCFunctionDataRecord;\n const rt = ctx.rt;\n if (rt.stack_depth >= rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const sf = new JSStackFrame();\n sf.cur_func = func_obj;\n sf.arg_buf = argv;\n sf.arg_count = argv.length;\n sf.prev_frame = rt.current_stack_frame;\n rt.current_stack_frame = sf;\n rt.stack_depth++;\n try {\n return s.func(ctx, this_val, argv, s.magic, s.data);\n } finally {\n rt.current_stack_frame = sf.prev_frame;\n rt.stack_depth--;\n }\n}\n\n/* call a C function. In the constructor case, 'this_obj' is new_target. */\nexport function js_call_c_function(ctx: JSContext, func_obj: JSValue, this_obj: JSValue,\n argv: JSValue[], flags: number): JSValue {\n const meta = js_meta.get(func_obj as object)!;\n const rec = meta.cfunc!;\n const rt = ctx.rt;\n const realm = meta.realm as JSContext;\n if (rt.stack_depth >= rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const sf = new JSStackFrame();\n sf.cur_func = func_obj;\n sf.arg_buf = argv;\n sf.arg_count = argv.length;\n sf.prev_frame = rt.current_stack_frame;\n rt.current_stack_frame = sf;\n rt.stack_depth++;\n /* argv is not padded: argv.length is argc and missing arguments read as undefined */\n const args = argv;\n let ret: JSValue;\n const f = rec.func as any;\n try {\n switch (rec.cproto) {\n case JSCFunctionEnum.constructor:\n case JSCFunctionEnum.constructor_or_func:\n if (!(flags & JS_CALL_FLAG_CONSTRUCTOR)) {\n if (rec.cproto === JSCFunctionEnum.constructor) {\n ret = JS_ThrowTypeError(realm, 'must be called with new');\n break;\n }\n this_obj = undefined;\n }\n ret = f(realm, this_obj, args);\n break;\n case JSCFunctionEnum.constructor_magic:\n case JSCFunctionEnum.constructor_or_func_magic:\n if (!(flags & JS_CALL_FLAG_CONSTRUCTOR)) {\n if (rec.cproto === JSCFunctionEnum.constructor_magic) {\n ret = JS_ThrowTypeError(realm, 'must be called with new');\n break;\n }\n this_obj = undefined;\n }\n ret = f(realm, this_obj, args, rec.magic);\n break;\n case JSCFunctionEnum.generic:\n ret = f(realm, this_obj, args);\n break;\n case JSCFunctionEnum.generic_magic:\n ret = f(realm, this_obj, args, rec.magic);\n break;\n case JSCFunctionEnum.getter:\n ret = f(realm, this_obj);\n break;\n case JSCFunctionEnum.setter:\n ret = f(realm, this_obj, args[0]);\n break;\n case JSCFunctionEnum.getter_magic:\n ret = f(realm, this_obj, rec.magic);\n break;\n case JSCFunctionEnum.setter_magic:\n ret = f(realm, this_obj, args[0], rec.magic);\n break;\n case JSCFunctionEnum.f_f: {\n const d1 = JS_ToFloat64(realm, args[0]);\n if (JS_IsException(d1)) { ret = JS_EXCEPTION; break; }\n ret = f(d1);\n break;\n }\n case JSCFunctionEnum.f_f_f: {\n const d1 = JS_ToFloat64(realm, args[0]);\n if (JS_IsException(d1)) { ret = JS_EXCEPTION; break; }\n const d2 = JS_ToFloat64(realm, args[1]);\n if (JS_IsException(d2)) { ret = JS_EXCEPTION; break; }\n ret = f(d1, d2);\n break;\n }\n case JSCFunctionEnum.iterator_next: {\n const pdone = { done: 0 };\n ret = f(realm, this_obj, args, pdone, rec.magic);\n if (!JS_IsException(ret) && pdone.done !== 2) {\n ret = js_create_iterator_result(realm, ret, pdone.done !== 0);\n }\n break;\n }\n default:\n throw new JSInternalError('unknown cproto ' + rec.cproto);\n }\n } finally {\n rt.current_stack_frame = sf.prev_frame;\n rt.stack_depth--;\n }\n return ret;\n}\n\n/* call a host function (bound function, generated code, borrowed native,\n guest wrapper) with the host exception convention */\nexport function js_call_host_function(ctx: JSContext, func_obj: JSValue, 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 try {\n if (flags & JS_CALL_FLAG_CONSTRUCTOR) {\n return Reflect.construct(func_obj as Function, argv, (new_target === undefined ? func_obj : new_target) as Function);\n }\n return Reflect.apply(func_obj as Function, this_obj, argv);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n } finally {\n rt.stack_depth--;\n }\n}\n\nexport function JS_Call(ctx: JSContext, func_obj: JSValue, this_obj: JSValue, argv: JSValue[]): JSValue {\n return hooks.JS_CallInternal(ctx, func_obj, this_obj, undefined, argv, JS_CALL_FLAG_COPY_ARGV);\n}\n\nexport function JS_CallFree(ctx: JSContext, func_obj: JSValue, this_obj: JSValue, argv: JSValue[]): JSValue {\n return hooks.JS_CallInternal(ctx, func_obj, this_obj, undefined, argv, JS_CALL_FLAG_COPY_ARGV);\n}\n\nexport function JS_CallConstructorInternal(ctx: JSContext, func_obj: JSValue, new_target: JSValue,\n argv: JSValue[], flags: number): JSValue {\n flags |= JS_CALL_FLAG_CONSTRUCTOR;\n if (typeof func_obj !== 'function') return JS_ThrowTypeError(ctx, 'not a function');\n if (!JS_IsConstructor(ctx, func_obj)) return JS_ThrowTypeError(ctx, 'not a constructor');\n /* bytecode functions, C functions and proxies: the 'this' value is\n created by the callee from new_target */\n return hooks.JS_CallInternal(ctx, func_obj, new_target, new_target, argv, flags);\n}\n\nexport function JS_CallConstructor2(ctx: JSContext, func_obj: JSValue, new_target: JSValue, argv: JSValue[]): JSValue {\n return JS_CallConstructorInternal(ctx, func_obj, new_target, argv, JS_CALL_FLAG_COPY_ARGV);\n}\n\nexport function JS_CallConstructor(ctx: JSContext, func_obj: JSValue, argv: JSValue[]): JSValue {\n return JS_CallConstructorInternal(ctx, func_obj, func_obj, argv, JS_CALL_FLAG_COPY_ARGV);\n}\n\nexport function JS_Invoke(ctx: JSContext, this_val: JSValue, atom: JSAtom, argv: JSValue[]): JSValue {\n const func = JS_GetProperty(ctx, this_val, atom);\n if (JS_IsException(func)) return func;\n return JS_CallFree(ctx, func, this_val, argv);\n}\n\n/* get the function realm: used for the default prototype of new objects */\nexport function JS_GetFunctionRealm(ctx: JSContext, func_obj: JSValue): JSContext {\n const m = js_get_meta(func_obj);\n if (!m) return ctx;\n switch (m.class_id) {\n case JSClassID.C_FUNCTION:\n case JSClassID.C_FUNCTION_DATA:\n return m.realm ?? ctx;\n case JSClassID.BYTECODE_FUNCTION:\n case JSClassID.GENERATOR_FUNCTION:\n case JSClassID.ASYNC_FUNCTION:\n case JSClassID.ASYNC_GENERATOR_FUNCTION:\n return m.func?.function_bytecode.realm ?? m.realm ?? ctx;\n case JSClassID.BOUND_FUNCTION:\n return JS_GetFunctionRealm(ctx, (m.u as JSBoundFunctionData).func_obj);\n case JSClassID.PROXY: {\n const s = m.u as JSProxyData;\n if (s.is_revoked) { JS_ThrowTypeError(ctx, 'revoked proxy'); return ctx; }\n return JS_GetFunctionRealm(ctx, s.target);\n }\n default:\n return ctx;\n }\n}\n\n/* GetPrototypeFromConstructor: create an object with the prototype taken\n from the 'prototype' property of 'ctor' or the default class proto */\nexport function js_create_from_ctor(ctx: JSContext, ctor: JSValue, class_id: JSClassID): JSValue {\n const proto = js_proto_from_ctor(ctx, ctor, class_id);\n if (JS_IsException(proto)) return proto;\n return JS_NewObjectProtoClass(ctx, proto as JSObject | null, class_id);\n}\n\n/* GetPrototypeFromConstructor: the prototype to use for an object created\n by 'ctor' (undefined: the default class prototype) */\nexport function js_proto_from_ctor(ctx: JSContext, ctor: JSValue, class_id: JSClassID): JSValue {\n if (JS_IsUndefined(ctor)) return ctx.class_proto[class_id];\n const proto = JS_GetProperty(ctx, ctor, JS_ATOM_prototype);\n if (JS_IsException(proto)) return proto;\n if (!JS_IsObject(proto)) {\n const realm = JS_GetFunctionRealm(ctx, ctor);\n return realm.class_proto[class_id];\n }\n return proto;\n}\n\n/* Primitive wrapper objects (Number, String, Boolean, Symbol and BigInt\n instances) are host wrapper objects re-prototyped to the guest prototype,\n so that host natives (JSON.stringify, String.prototype.valueOf, ...) see\n the internal slot. The engine reads the value from the metadata. */\nexport function js_new_primitive_wrapper(ctx: JSContext, proto: JSValue | null, class_id: JSClassID,\n value: JSValue): JSValue {\n const obj = Object(value) as object;\n Object.setPrototypeOf(obj, JS_IsObject(proto) ? proto : null);\n const m = new JSObjectMeta(class_id);\n m.u = value;\n js_meta.set(obj, m);\n return obj;\n}\n\nexport function js_create_wrapper_from_ctor(ctx: JSContext, ctor: JSValue, class_id: JSClassID, value: JSValue): JSValue {\n const proto = js_proto_from_ctor(ctx, ctor, class_id);\n if (JS_IsException(proto)) return proto;\n return js_new_primitive_wrapper(ctx, proto, class_id, value);\n}\n\nexport function JS_SetConstructor2(ctx: JSContext, func_obj: JSValue, proto: JSValue, proto_flags: number, ctor_flags: number): void {\n JS_DefinePropertyValue(ctx, func_obj, JS_ATOM_prototype, proto, proto_flags);\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_constructor, func_obj, ctor_flags);\n if (typeof func_obj === 'function') js_ensure_meta(func_obj, JSClassID.C_FUNCTION).is_constructor = true;\n}\n\nexport function JS_SetConstructor(ctx: JSContext, func_obj: JSValue, proto: JSValue): void {\n JS_SetConstructor2(ctx, func_obj, proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n}\n\nexport function JS_NewGlobalCConstructor2(ctx: JSContext, func_obj: JSValue, name: string, proto: JSValue): JSValue {\n JS_DefinePropertyValueStr(ctx, ctx.global_obj, name, func_obj, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_SetConstructor(ctx, func_obj, proto);\n return func_obj;\n}\n\nexport function JS_NewGlobalCConstructor(ctx: JSContext, name: string, func: Function, length: number, proto: JSValue): JSValue {\n const func_obj = JS_NewCFunction2(ctx, func, name, length, JSCFunctionEnum.constructor_or_func, 0);\n return JS_NewGlobalCConstructor2(ctx, func_obj, name, proto);\n}\n\nexport function JS_NewGlobalCConstructorOnly(ctx: JSContext, name: string, func: Function, length: number, proto: JSValue): JSValue {\n const func_obj = JS_NewCFunction2(ctx, func, name, length, JSCFunctionEnum.constructor, 0);\n return JS_NewGlobalCConstructor2(ctx, func_obj, name, proto);\n}\n\n/* ---------------------------------------------------------------------\n JSCFunctionListEntry: declarative property lists\n --------------------------------------------------------------------- */\n\nexport const enum JSDefKind {\n CFUNC, CGETSET, CGETSET_MAGIC, PROP_STRING, PROP_INT32, PROP_INT64, PROP_DOUBLE, PROP_UNDEFINED,\n OBJECT, ALIAS,\n /* borrowed host natives (see builtins/native.ts) */\n NATIVE, NATIVE_GETSET,\n}\n\n/* fixer applied to the result of a borrowed host native (re-prototypes\n host created objects) */\nexport type JSNativeFixer = (ctx: JSContext, v: any) => any;\n\nexport function JS_NATIVE_DEF(name: string | JSAtom, length: number, host: Function, fix: JSNativeFixer | null = null): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.NATIVE, magic: 0,\n u: { length, host, fix } };\n}\nexport function JS_NATIVE_GETSET_DEF(name: string | JSAtom, get: Function | null, set: Function | null, fix: JSNativeFixer | null = null): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_CONFIGURABLE, def_type: JSDefKind.NATIVE_GETSET, magic: 0, u: { get, set, fix } };\n}\n\nexport interface JSCFunctionListEntry {\n name: string | JSAtom;\n prop_flags: number;\n def_type: JSDefKind;\n magic: number;\n u: any;\n}\n\nexport function JS_CFUNC_DEF(name: string | JSAtom, length: number, func: Function): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.CFUNC, magic: 0,\n u: { length, cproto: JSCFunctionEnum.generic, func } };\n}\nexport function JS_CFUNC_MAGIC_DEF(name: string | JSAtom, length: number, func: Function, magic: number): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.CFUNC, magic,\n u: { length, cproto: JSCFunctionEnum.generic_magic, func } };\n}\nexport function JS_CFUNC_SPECIAL_DEF(name: string | JSAtom, length: number, cproto: JSCFunctionEnum, func: Function): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.CFUNC, magic: 0,\n u: { length, cproto, func } };\n}\nexport function JS_ITERATOR_NEXT_DEF(name: string | JSAtom, length: number, func: Function, magic: number): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.CFUNC, magic,\n u: { length, cproto: JSCFunctionEnum.iterator_next, func } };\n}\nexport function JS_CGETSET_DEF(name: string | JSAtom, fgetter: Function | null, fsetter: Function | null): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_CONFIGURABLE, def_type: JSDefKind.CGETSET, magic: 0, u: { get: fgetter, set: fsetter } };\n}\nexport function JS_CGETSET_MAGIC_DEF(name: string | JSAtom, fgetter: Function | null, fsetter: Function | null, magic: number): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_CONFIGURABLE, def_type: JSDefKind.CGETSET_MAGIC, magic, u: { get: fgetter, set: fsetter } };\n}\nexport function JS_CGETSET_ENUMERABLE_DEF(name: string | JSAtom, fgetter: Function | null, fsetter: Function | null): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_CONFIGURABLE | JS_PROP_ENUMERABLE, def_type: JSDefKind.CGETSET, magic: 0, u: { get: fgetter, set: fsetter } };\n}\nexport function JS_PROP_STRING_DEF(name: string | JSAtom, cstr: string, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_STRING, magic: 0, u: cstr };\n}\nexport function JS_PROP_INT32_DEF(name: string | JSAtom, val: number, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_INT32, magic: 0, u: val };\n}\nexport function JS_PROP_INT64_DEF(name: string | JSAtom, val: number, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_INT64, magic: 0, u: val };\n}\nexport function JS_PROP_DOUBLE_DEF(name: string | JSAtom, val: number, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_DOUBLE, magic: 0, u: val };\n}\nexport function JS_PROP_UNDEFINED_DEF(name: string | JSAtom, prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.PROP_UNDEFINED, magic: 0, u: undefined };\n}\nexport function JS_OBJECT_DEF(name: string | JSAtom, tab: JSCFunctionListEntry[], prop_flags: number): JSCFunctionListEntry {\n return { name, prop_flags, def_type: JSDefKind.OBJECT, magic: 0, u: tab };\n}\nexport function JS_ALIAS_DEF(name: string | JSAtom, from: string): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.ALIAS, magic: 0, u: { name: from, base: -1 } };\n}\nexport function JS_ALIAS_BASE_DEF(name: string | JSAtom, from: string, base: number): JSCFunctionListEntry {\n return { name, prop_flags: JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE, def_type: JSDefKind.ALIAS, magic: 0, u: { name: from, base } };\n}\n\nfunction entry_name_atom(ctx: JSContext, name: string | JSAtom): JSAtom {\n if (typeof name === 'number') return name;\n return JS_NewAtom(ctx, name);\n}\n\nfunction entry_display_name(ctx: JSContext, atom: JSAtom): string {\n if (ctx.rt.atoms.isSymbol(atom)) return '[' + ctx.rt.atoms.toStr(atom) + ']';\n return ctx.rt.atoms.toStr(atom);\n}\n\nexport function JS_InstantiateFunctionListItem(ctx: JSContext, obj: JSValue, atom: JSAtom, e: JSCFunctionListEntry): number {\n let val: JSValue;\n let prop_flags = e.prop_flags;\n switch (e.def_type) {\n case JSDefKind.ALIAS: {\n /* base: -1 = same object, 0 = global object, 1 = Array.prototype (as in C) */\n let base_obj = obj;\n if (e.u.base === 0) base_obj = ctx.global_obj;\n else if (e.u.base === 1) base_obj = ctx.class_proto[JSClassID.ARRAY]!;\n const atom1 = JS_NewAtom(ctx, e.u.name);\n val = JS_GetProperty(ctx, base_obj, atom1);\n break;\n }\n case JSDefKind.CFUNC: {\n const name = entry_display_name(ctx, atom);\n val = JS_NewCFunction3(ctx, e.u.func, name, e.u.length, e.u.cproto, e.magic, ctx.function_proto);\n break;\n }\n case JSDefKind.CGETSET:\n case JSDefKind.CGETSET_MAGIC: {\n let getter: JSValue = undefined, setter: JSValue = undefined;\n const name = entry_display_name(ctx, atom);\n if (e.u.get) {\n getter = JS_NewCFunction3(ctx, e.u.get, 'get ' + name, 0,\n e.def_type === JSDefKind.CGETSET_MAGIC ? JSCFunctionEnum.getter_magic : JSCFunctionEnum.getter, e.magic, ctx.function_proto);\n }\n if (e.u.set) {\n setter = JS_NewCFunction3(ctx, e.u.set, 'set ' + name, 1,\n e.def_type === JSDefKind.CGETSET_MAGIC ? JSCFunctionEnum.setter_magic : JSCFunctionEnum.setter, e.magic, ctx.function_proto);\n }\n JS_DefinePropertyGetSet(ctx, obj, atom, getter, setter, prop_flags);\n return 0;\n }\n case JSDefKind.NATIVE: {\n const name = entry_display_name(ctx, atom);\n val = hooks.js_borrow_native(ctx, e.u.host, name, e.u.length, e.u.fix);\n break;\n }\n case JSDefKind.NATIVE_GETSET: {\n const name = entry_display_name(ctx, atom);\n const getter: JSValue = e.u.get ? hooks.js_borrow_native(ctx, e.u.get, 'get ' + name, 0, e.u.fix) : undefined;\n const setter: JSValue = e.u.set ? hooks.js_borrow_native(ctx, e.u.set, 'set ' + name, 1, null) : undefined;\n JS_DefinePropertyGetSet(ctx, obj, atom, getter, setter, prop_flags);\n return 0;\n }\n case JSDefKind.PROP_STRING:\n val = e.u;\n break;\n case JSDefKind.PROP_INT32:\n case JSDefKind.PROP_INT64:\n case JSDefKind.PROP_DOUBLE:\n val = e.u;\n break;\n case JSDefKind.PROP_UNDEFINED:\n val = undefined;\n break;\n case JSDefKind.OBJECT:\n val = JS_NewObject(ctx);\n JS_SetPropertyFunctionList(ctx, val, e.u);\n break;\n default:\n throw new JSInternalError('bad def_type');\n }\n JS_DefinePropertyValue(ctx, obj, atom, val, prop_flags);\n return 0;\n}\n\nexport function JS_SetPropertyFunctionList(ctx: JSContext, obj: JSValue, tab: JSCFunctionListEntry[]): void {\n for (const e of tab) {\n const atom = entry_name_atom(ctx, e.name);\n JS_InstantiateFunctionListItem(ctx, obj, atom, e);\n }\n}\n\n/* ---------------------------------------------------------------------\n Properties\n --------------------------------------------------------------------- */\n\n\nexport function is_typed_array(class_id: JSClassID): boolean {\n return class_id >= JSClassID.UINT8C_ARRAY && class_id <= JSClassID.FLOAT64_ARRAY;\n}\n\nexport function JS_ThrowTypeErrorOrFalse(ctx: JSContext, flags: number, msg: string): number {\n if ((flags & JS_PROP_THROW) || ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) {\n JS_ThrowTypeError(ctx, msg);\n return -1;\n }\n return 0;\n}\n\n/* return 1 if the flags are compatible (ValidateAndApplyPropertyDescriptor\n for non configurable properties when there is no value change) */\nexport function check_define_prop_flags(prop_flags: number, flags: number): boolean {\n const has_accessor = (flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) !== 0;\n if (!(prop_flags & JS_PROP_CONFIGURABLE)) {\n if ((flags & (JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE)) === (JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE)) return false;\n if ((flags & JS_PROP_HAS_ENUMERABLE) && (flags & JS_PROP_ENUMERABLE) !== (prop_flags & JS_PROP_ENUMERABLE)) return false;\n }\n if (flags & (JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE | JS_PROP_HAS_GET | JS_PROP_HAS_SET)) {\n if (!(prop_flags & JS_PROP_CONFIGURABLE)) {\n const has_value = (flags & (JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE)) !== 0;\n const is_getset = (prop_flags & JS_PROP_TMASK) === JS_PROP_GETSET;\n if (has_accessor && !is_getset) return false;\n if (has_value && is_getset) return false;\n if (!is_getset && !(prop_flags & JS_PROP_WRITABLE)) {\n if ((flags & (JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE)) === (JS_PROP_HAS_WRITABLE | JS_PROP_WRITABLE)) return false;\n }\n }\n }\n return true;\n}\n\n/* fill 'desc' from a host property descriptor */\nfunction js_desc_from_host(d: PropertyDescriptor, desc: JSPropertyDescriptor): void {\n let flags = 0;\n if (d.configurable) flags |= JS_PROP_CONFIGURABLE;\n if (d.enumerable) flags |= JS_PROP_ENUMERABLE;\n if ('get' in d || 'set' in d) {\n flags |= JS_PROP_GETSET;\n desc.getter = d.get;\n desc.setter = d.set;\n desc.value = undefined;\n } else {\n if (d.writable) flags |= JS_PROP_WRITABLE;\n desc.value = d.value;\n desc.getter = undefined;\n desc.setter = undefined;\n }\n desc.flags = flags;\n}\n\n/* own property lookup: -1 exception, 0 not found, 1 found (desc filled if != null) */\nexport function JS_GetOwnPropertyInternal(ctx: JSContext, desc: JSPropertyDescriptor | null, p: JSObject, prop: JSAtom): number {\n const key = JS_AtomToKey(ctx, prop);\n if (desc === null && js_meta.get(p) === undefined) {\n /* existence only: Object.hasOwn is ~40x cheaper than building a descriptor */\n try {\n return Object.hasOwn(p, key) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n }\n let d: PropertyDescriptor | undefined;\n try {\n d = Reflect.getOwnPropertyDescriptor(p, key);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (d === undefined) return 0;\n if (desc) js_desc_from_host(d, desc);\n return 1;\n}\n\nexport function JS_GetOwnProperty(ctx: JSContext, desc: JSPropertyDescriptor | null, obj: JSValue, prop: JSAtom): number {\n if (!JS_IsObject(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n return JS_GetOwnPropertyInternal(ctx, desc, obj, prop);\n}\n\nexport function new_desc(): JSPropertyDescriptor {\n return { flags: 0, value: undefined, getter: undefined, setter: undefined };\n}\n\n/* prototype of a primitive value (null for undefined/null) */\nexport function JS_GetPrototypePrimitive(ctx: JSContext, val: JSValue): JSObject | null {\n switch (typeof val) {\n case 'bigint': return ctx.class_proto[JSClassID.BIG_INT];\n case 'number': return ctx.class_proto[JSClassID.NUMBER];\n case 'boolean': return ctx.class_proto[JSClassID.BOOLEAN];\n case 'string': return ctx.class_proto[JSClassID.STRING];\n case 'symbol': return ctx.class_proto[JSClassID.SYMBOL];\n default: return null;\n }\n}\n\n/* return the prototype (object or null) or JS_EXCEPTION */\nexport function JS_GetPrototype(ctx: JSContext, obj: JSValue): JSValue {\n if (JS_IsObject(obj)) {\n try {\n return Reflect.getPrototypeOf(obj);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n }\n return JS_GetPrototypePrimitive(ctx, obj);\n}\n\nexport function JS_GetPrototypeFree(ctx: JSContext, obj: JSValue): JSValue { return JS_GetPrototype(ctx, obj); }\n\nfunction js_string_own_property(ctx: JSContext, str: string, prop: JSAtom): JSValue | undefined {\n if (__JS_AtomIsTaggedInt(prop)) {\n const idx = __JS_AtomToUInt32(prop);\n if (idx < str.length) return str[idx];\n return undefined;\n }\n if (prop === JS_ATOM_length) return str.length;\n return undefined;\n}\n\n/* GetProperty. 'this_obj' is the receiver. */\nexport function JS_GetPropertyInternal(ctx: JSContext, obj: JSValue, prop: JSAtom, this_obj: JSValue, throw_ref_error: boolean): JSValue {\n let base: object;\n switch (typeof obj) {\n case 'object':\n case 'function':\n if (obj === null) return JS_ThrowTypeErrorAtom(ctx, \"cannot read property '%s' of null\", prop);\n base = obj;\n break;\n case 'undefined':\n return JS_ThrowTypeErrorAtom(ctx, \"cannot read property '%s' of undefined\", prop);\n case 'string': {\n const v = js_string_own_property(ctx, obj, prop);\n if (v !== undefined) return v;\n base = ctx.class_proto[JSClassID.STRING]!;\n break;\n }\n default:\n base = JS_GetPrototypePrimitive(ctx, obj)!;\n break;\n }\n const key = JS_AtomToKey(ctx, prop);\n try {\n if (throw_ref_error && !Reflect.has(base, key)) return JS_ThrowReferenceErrorNotDefined(ctx, prop);\n if (this_obj === obj && base === obj) return (base as any)[key];\n /* primitive base or explicit receiver: the receiver is the original value */\n return Reflect.get(base, key, this_obj);\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n}\n\nexport function JS_GetProperty(ctx: JSContext, this_obj: JSValue, prop: JSAtom): JSValue {\n return JS_GetPropertyInternal(ctx, this_obj, prop, this_obj, false);\n}\n\nexport function JS_GetPropertyStr(ctx: JSContext, this_obj: JSValue, prop: string): JSValue {\n return JS_GetPropertyInternal(ctx, this_obj, JS_NewAtom(ctx, prop), this_obj, false);\n}\n\nexport function JS_GetPropertyUint32(ctx: JSContext, this_obj: JSValue, idx: number): JSValue {\n return JS_GetPropertyInternal(ctx, this_obj, JS_NewAtomUInt32(ctx, idx), this_obj, false);\n}\n\nexport function JS_GetPropertyInt64(ctx: JSContext, this_obj: JSValue, idx: number): JSValue {\n return JS_GetPropertyInternal(ctx, this_obj, JS_NewAtomInt64(ctx, idx), this_obj, false);\n}\n\n/* obj[prop] with a JS value as property key */\nexport function JS_GetPropertyValue(ctx: JSContext, this_obj: JSValue, prop: JSValue): JSValue {\n if (JS_IsObject(this_obj) && !JS_IsObject(prop) && typeof prop !== 'undefined') {\n /* the host performs ToPropertyKey on primitives */\n try {\n return (this_obj as any)[prop as PropertyKey];\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n }\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n return JS_GetPropertyInternal(ctx, this_obj, atom, this_obj, false);\n}\n\n/* HasProperty: -1 exception */\nexport function JS_HasProperty(ctx: JSContext, obj: JSValue, prop: JSAtom): number {\n if (!JS_IsObject(obj)) return 0;\n try {\n return Reflect.has(obj, JS_AtomToKey(ctx, prop)) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n}\n\nexport function JS_IsExtensible(ctx: JSContext, obj: JSValue): number {\n if (!JS_IsObject(obj)) return 0;\n try {\n return Reflect.isExtensible(obj) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n}\n\nexport function JS_PreventExtensions(ctx: JSContext, obj: JSValue): number {\n if (!JS_IsObject(obj)) return 1;\n try {\n return Reflect.preventExtensions(obj) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n}\n\n/* SetPrototypeOf: -1 exception, 0 failed (throw_flag false), 1 ok */\nexport function JS_SetPrototypeInternal(ctx: JSContext, obj: JSValue, proto_val: JSValue, throw_flag: boolean): number {\n if (!(proto_val === null || JS_IsObject(proto_val))) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n if (!JS_IsObject(obj)) {\n if (obj === undefined || obj === null) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n return 1;\n }\n let ok: boolean;\n try {\n ok = Reflect.setPrototypeOf(obj, proto_val as object | null);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (!ok) {\n if (throw_flag) {\n let ext = true;\n try { ext = Reflect.isExtensible(obj); } catch { /* ignore */ }\n if (JS_GetClassID(obj) === JSClassID.PROXY) JS_ThrowTypeError(ctx, 'proxy: bad prototype');\n else if (!ext) JS_ThrowTypeError(ctx, 'object is not extensible');\n else JS_ThrowTypeError(ctx, 'circular prototype chain');\n return -1;\n }\n return 0;\n }\n return 1;\n}\n\nexport function JS_SetPrototype(ctx: JSContext, obj: JSValue, proto_val: JSValue): number {\n return JS_SetPrototypeInternal(ctx, obj, proto_val, true);\n}\n\nfunction js_strict_store(o: object, k: JSPropertyKey, v: JSValue): void {\n (o as any)[k] = v; /* module code is strict: throws a host TypeError on failure */\n}\n\n/* after a strict store threw a host TypeError: true if the failure is one\n that a sloppy store would ignore (read-only data property, accessor\n without setter, or non-extensible receiver), false if the error came\n from elsewhere (e.g. a typed array element conversion) */\nfunction js_store_failed_silently(obj: object, key: JSPropertyKey): boolean {\n let o: object | null = obj;\n while (o !== null) {\n const d = Reflect.getOwnPropertyDescriptor(o, key);\n if (d !== undefined) {\n if ('value' in d) return !d.writable;\n return d.set === undefined;\n }\n o = Reflect.getPrototypeOf(o);\n }\n return !Reflect.isExtensible(obj);\n}\n\n/* true if 'e' is an error raised by the host engine itself (its prototype\n chain reaches the host Error.prototype), as opposed to a guest value */\nexport function js_is_host_error(e: unknown): boolean {\n return e instanceof Error;\n}\n\nfunction js_set_failed(ctx: JSContext, obj: object, key: JSPropertyKey, prop: JSAtom, flags: number): number {\n if ((flags & JS_PROP_THROW) || ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) {\n if (JS_GetClassID(obj) === JSClassID.PROXY) {\n JS_ThrowTypeError(ctx, 'proxy: cannot set property');\n } else {\n let has = false;\n try { has = Reflect.has(obj, key); } catch { /* ignore */ }\n if (has) JS_ThrowTypeErrorAtom(ctx, \"'%s' is read-only\", prop);\n else JS_ThrowTypeError(ctx, 'object is not extensible');\n }\n return -1;\n }\n return 0;\n}\n\n/* SetProperty: -1 exception, 0 failed silently, 1 ok. 'this_obj' is the receiver. */\n/* host Proxies: guest proxies and module namespace objects. A refused store must be told\n apart from a throwing trap, which only Reflect.set can do */\nfunction js_is_proxy_class(class_id: JSClassID | undefined): boolean {\n return class_id === JSClassID.PROXY || class_id === JSClassID.MODULE_NS;\n}\n\nexport function JS_SetPropertyInternal(ctx: JSContext, obj: JSValue, prop: JSAtom, val: JSValue,\n this_obj: JSValue, flags: number): number {\n const key = JS_AtomToKey(ctx, prop);\n if (JS_IsObject(obj)) {\n if (this_obj === obj && !js_is_proxy_class(js_meta.get(obj)?.class_id)) {\n /* plain assignment (proxies use Reflect.set below, which tells a refused\n trap from an invariant violation): Reflect.set is ~50x slower than an inline-cached\n store in JSC (and ~600 ns when appending to an array). A strict\n store throws a host TypeError on failure, which we diagnose with the\n QuickJS message; guest setters throw guest values, which propagate. */\n try {\n js_strict_store(obj, key, val);\n return 1;\n } catch (e) {\n if (js_is_host_error(e) && js_store_failed_silently(obj, key)) {\n return js_set_failed(ctx, obj, key, prop, flags);\n }\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n }\n let ok: boolean;\n try {\n ok = Reflect.set(obj, key, val, this_obj);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (ok) return 1;\n return js_set_failed(ctx, obj, key, prop, flags);\n }\n if (obj === undefined || obj === null) {\n JS_ThrowTypeErrorAtom(ctx, obj === null ? \"cannot set property '%s' of null\" : \"cannot set property '%s' of undefined\", prop);\n return -1;\n }\n /* primitive: look for a setter in the prototype chain of the primitive */\n const proto = JS_GetPrototypePrimitive(ctx, obj)!;\n let ok: boolean;\n try {\n ok = Reflect.set(proto, key, val, this_obj);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (ok) return 1;\n return JS_ThrowTypeErrorOrFalse(ctx, flags, 'cannot set property on a primitive value');\n}\n\nexport function JS_SetProperty(ctx: JSContext, this_obj: JSValue, prop: JSAtom, val: JSValue): number {\n return JS_SetPropertyInternal(ctx, this_obj, prop, val, this_obj, JS_PROP_THROW);\n}\n\nexport function JS_SetPropertyStr(ctx: JSContext, this_obj: JSValue, prop: string, val: JSValue): number {\n return JS_SetProperty(ctx, this_obj, JS_NewAtom(ctx, prop), val);\n}\n\nexport function JS_SetPropertyUint32(ctx: JSContext, this_obj: JSValue, idx: number, val: JSValue): number {\n return JS_SetProperty(ctx, this_obj, JS_NewAtomUInt32(ctx, idx), val);\n}\n\nexport function JS_SetPropertyInt64(ctx: JSContext, this_obj: JSValue, idx: number, val: JSValue): number {\n return JS_SetProperty(ctx, this_obj, JS_NewAtomInt64(ctx, idx), val);\n}\n\n/* obj[prop] = val with a JS value as property key */\nexport function JS_SetPropertyValue(ctx: JSContext, this_obj: JSValue, prop: JSValue, val: JSValue, flags: number): number {\n if (JS_IsObject(this_obj) && !JS_IsObject(prop) && typeof prop !== 'undefined') {\n let ok: boolean;\n try {\n ok = Reflect.set(this_obj, prop as PropertyKey, val);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (ok) return 1;\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return -1;\n return js_set_failed(ctx, this_obj, JS_AtomToKey(ctx, atom), atom, flags);\n }\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return -1;\n return JS_SetPropertyInternal(ctx, this_obj, atom, val, this_obj, flags);\n}\n\nexport function JS_CreateDataPropertyUint32(ctx: JSContext, this_obj: JSValue, index: number, val: JSValue, flags: number): number {\n return JS_DefinePropertyValue(ctx, this_obj, JS_NewAtomInt64(ctx, index), val, flags | JS_PROP_C_W_E);\n}\n\n/* build a host property descriptor from the JS_PROP_HAS_* flags */\nfunction js_host_desc(val: JSValue, getter: JSValue, setter: JSValue, flags: number): PropertyDescriptor {\n const d: PropertyDescriptor = {};\n if (flags & JS_PROP_HAS_VALUE) d.value = val;\n if (flags & JS_PROP_HAS_GET) d.get = getter as any;\n if (flags & JS_PROP_HAS_SET) d.set = setter as any;\n if (flags & JS_PROP_HAS_WRITABLE) d.writable = (flags & JS_PROP_WRITABLE) !== 0;\n if (flags & JS_PROP_HAS_CONFIGURABLE) d.configurable = (flags & JS_PROP_CONFIGURABLE) !== 0;\n if (flags & JS_PROP_HAS_ENUMERABLE) d.enumerable = (flags & JS_PROP_ENUMERABLE) !== 0;\n return d;\n}\n\n/* DefineOwnProperty: -1 exception, 0 failed, 1 ok */\nexport function JS_DefineProperty(ctx: JSContext, this_obj: JSValue, prop: JSAtom, val: JSValue,\n getter: JSValue, setter: JSValue, flags: number): number {\n if (!JS_IsObject(this_obj)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n let ok: boolean;\n if (this_obj === ctx.class_proto[JSClassID.OBJECT] && prop !== JS_ATOM___proto__ &&\n ((flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) || ((flags & JS_PROP_HAS_WRITABLE) && !(flags & JS_PROP_WRITABLE)))) {\n ctx.plain_object_proto.ok = false;\n }\n try {\n ok = Reflect.defineProperty(this_obj, JS_AtomToKey(ctx, prop), js_host_desc(val, getter, setter, flags));\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n if (ok) return 1;\n if (JS_GetClassID(this_obj) === JSClassID.PROXY) return JS_ThrowTypeErrorOrFalse(ctx, flags, 'proxy: inconsistent defineProperty');\n return JS_ThrowTypeErrorOrFalse(ctx, flags, 'property is not configurable');\n}\n\nexport function JS_DefinePropertyValue(ctx: JSContext, this_obj: JSValue, prop: JSAtom, val: JSValue, flags: number): number {\n return JS_DefineProperty(ctx, this_obj, prop, val, undefined, undefined,\n flags | JS_PROP_HAS_VALUE | JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_WRITABLE | JS_PROP_HAS_ENUMERABLE);\n}\n\nexport function JS_DefinePropertyValueValue(ctx: JSContext, this_obj: JSValue, prop: JSValue, val: JSValue, flags: number): number {\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return -1;\n return JS_DefinePropertyValue(ctx, this_obj, atom, val, flags);\n}\n\nexport function JS_DefinePropertyValueUint32(ctx: JSContext, this_obj: JSValue, idx: number, val: JSValue, flags: number): number {\n return JS_DefinePropertyValue(ctx, this_obj, JS_NewAtomUInt32(ctx, idx), val, flags);\n}\nexport function JS_DefinePropertyValueInt64(ctx: JSContext, this_obj: JSValue, idx: number, val: JSValue, flags: number): number {\n return JS_DefinePropertyValue(ctx, this_obj, JS_NewAtomInt64(ctx, idx), val, flags);\n}\nexport function JS_DefinePropertyValueStr(ctx: JSContext, this_obj: JSValue, prop: string, val: JSValue, flags: number): number {\n return JS_DefinePropertyValue(ctx, this_obj, JS_NewAtom(ctx, prop), val, flags);\n}\n\nexport function JS_DefinePropertyGetSet(ctx: JSContext, this_obj: JSValue, prop: JSAtom, getter: JSValue, setter: JSValue, flags: number): number {\n return JS_DefineProperty(ctx, this_obj, prop, undefined, getter, setter,\n flags | JS_PROP_HAS_GET | JS_PROP_HAS_SET | JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_ENUMERABLE);\n}\n\n/* delete an own property: -1 exception, 0 not deleted, 1 deleted (or absent) */\nexport function delete_property(ctx: JSContext, p: JSObject, atom: JSAtom): number {\n try {\n return Reflect.deleteProperty(p, JS_AtomToKey(ctx, atom)) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n}\n\nexport function JS_DeleteProperty(ctx: JSContext, obj: JSValue, prop: JSAtom, flags: number): number {\n const obj1 = JS_ToObject(ctx, obj);\n if (JS_IsException(obj1)) return -1;\n const res = delete_property(ctx, obj1 as JSObject, prop);\n if (res !== 0) return res;\n if ((flags & JS_PROP_THROW) || ((flags & JS_PROP_THROW_STRICT) && is_strict_mode(ctx))) {\n JS_ThrowTypeError(ctx, 'could not delete property');\n return -1;\n }\n return 0;\n}\n\nexport function JS_DeletePropertyInt64(ctx: JSContext, obj: JSValue, idx: number, flags: number): number {\n return JS_DeleteProperty(ctx, obj, JS_NewAtomInt64(ctx, idx), flags);\n}\n\nexport interface JSPropertyEnum { atom: JSAtom; is_enumerable: boolean }\n\n/* own property keys of 'p' filtered by the JS_GPN_* flags */\nexport function JS_GetOwnPropertyNamesInternal(ctx: JSContext, p: JSObject, flags: number): JSPropertyEnum[] | null {\n let keys: (string | symbol)[];\n try {\n keys = Reflect.ownKeys(p);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return null;\n }\n const need_enum = (flags & (JS_GPN_ENUM_ONLY | JS_GPN_SET_ENUM)) !== 0;\n const tab: JSPropertyEnum[] = [];\n for (const k of keys) {\n if (typeof k === 'symbol') {\n if (!(flags & JS_GPN_SYMBOL_MASK)) continue;\n } else {\n if (!(flags & JS_GPN_STRING_MASK)) continue;\n }\n let is_enumerable = true;\n if (need_enum) {\n let d: PropertyDescriptor | undefined;\n try {\n d = Reflect.getOwnPropertyDescriptor(p, k);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return null;\n }\n if (d === undefined) continue; /* deleted by a proxy trap */\n is_enumerable = !!d.enumerable;\n if ((flags & JS_GPN_ENUM_ONLY) && !is_enumerable) continue;\n }\n tab.push({ atom: JS_KeyToAtom(ctx, k), is_enumerable });\n }\n return tab;\n}\n\nexport function JS_GetOwnPropertyNames(ctx: JSContext, obj: JSValue, flags: number): JSPropertyEnum[] | null {\n if (!JS_IsObject(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return null; }\n return JS_GetOwnPropertyNamesInternal(ctx, obj, flags);\n}\n\n/* FromPropertyDescriptor */\nexport function JS_FromPropertyDescriptor(ctx: JSContext, d: JSPropertyDescriptor): JSValue {\n const obj = JS_NewObject(ctx);\n if ((d.flags & JS_PROP_TMASK) === JS_PROP_GETSET) {\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_get, d.getter, JS_PROP_C_W_E);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_set, d.setter, JS_PROP_C_W_E);\n } else {\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_value, d.value, JS_PROP_C_W_E);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_writable, (d.flags & JS_PROP_WRITABLE) !== 0, JS_PROP_C_W_E);\n }\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_enumerable, (d.flags & JS_PROP_ENUMERABLE) !== 0, JS_PROP_C_W_E);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_configurable, (d.flags & JS_PROP_CONFIGURABLE) !== 0, JS_PROP_C_W_E);\n return obj;\n}\n\n/* ToPropertyDescriptor: fill d.flags with the JS_PROP_HAS_* flags; -1 on exception */\nexport function js_obj_to_desc(ctx: JSContext, d: JSPropertyDescriptor, desc: JSValue): number {\n if (!JS_IsObject(desc)) {\n JS_ThrowTypeError(ctx, 'property descriptor must be an object');\n return -1;\n }\n let flags = 0;\n let val: JSValue = undefined, getter: JSValue = undefined, setter: JSValue = undefined;\n const get_field = (atom: JSAtom): [number, JSValue] => {\n const present = JS_HasProperty(ctx, desc, atom);\n if (present <= 0) return [present, undefined];\n const v = JS_GetProperty(ctx, desc, atom);\n if (JS_IsException(v)) return [-1, undefined];\n return [1, v];\n };\n let r: [number, JSValue];\n r = get_field(JS_ATOM_configurable); if (r[0] < 0) return -1;\n if (r[0]) { flags |= JS_PROP_HAS_CONFIGURABLE; if (JS_ToBoolFree(ctx, r[1])) flags |= JS_PROP_CONFIGURABLE; }\n r = get_field(JS_ATOM_enumerable); if (r[0] < 0) return -1;\n if (r[0]) { flags |= JS_PROP_HAS_ENUMERABLE; if (JS_ToBoolFree(ctx, r[1])) flags |= JS_PROP_ENUMERABLE; }\n r = get_field(JS_ATOM_value); if (r[0] < 0) return -1;\n if (r[0]) { flags |= JS_PROP_HAS_VALUE; val = r[1]; }\n r = get_field(JS_ATOM_writable); if (r[0] < 0) return -1;\n if (r[0]) { flags |= JS_PROP_HAS_WRITABLE; if (JS_ToBoolFree(ctx, r[1])) flags |= JS_PROP_WRITABLE; }\n r = get_field(JS_ATOM_get); if (r[0] < 0) return -1;\n if (r[0]) {\n flags |= JS_PROP_HAS_GET;\n if (!(JS_IsUndefined(r[1]) || JS_IsFunction(ctx, r[1]))) { JS_ThrowTypeError(ctx, 'invalid getter'); return -1; }\n getter = r[1];\n }\n r = get_field(JS_ATOM_set); if (r[0] < 0) return -1;\n if (r[0]) {\n flags |= JS_PROP_HAS_SET;\n if (!(JS_IsUndefined(r[1]) || JS_IsFunction(ctx, r[1]))) { JS_ThrowTypeError(ctx, 'invalid setter'); return -1; }\n setter = r[1];\n }\n if ((flags & (JS_PROP_HAS_GET | JS_PROP_HAS_SET)) && (flags & (JS_PROP_HAS_VALUE | JS_PROP_HAS_WRITABLE))) {\n JS_ThrowTypeError(ctx, 'cannot have setter/getter and value or writable');\n return -1;\n }\n d.flags = flags;\n d.value = val;\n d.getter = getter;\n d.setter = setter;\n return 0;\n}\n\n/* 'length' property of an array-like: -1 on exception */\nexport function js_get_length64(ctx: JSContext, obj: JSValue): number {\n const len = JS_GetProperty(ctx, obj, JS_ATOM_length);\n if (JS_IsException(len)) return -1;\n return JS_ToLengthFree(ctx, len);\n}\nexport const js_get_length32 = js_get_length64;\n\nexport function js_set_length64(ctx: JSContext, obj: JSValue, len: number): number {\n return JS_SetProperty(ctx, obj, JS_ATOM_length, len);\n}\n\n/* ---------------------------------------------------------------------\n Global variables\n --------------------------------------------------------------------- */\n\nexport const DEFINE_GLOBAL_LEX_VAR = 1 << 7;\nexport const DEFINE_GLOBAL_FUNC_VAR = 1 << 6;\n\nfunction js_global_own_desc(ctx: JSContext, key: JSPropertyKey): PropertyDescriptor | undefined | null {\n try {\n return Reflect.getOwnPropertyDescriptor(ctx.global_obj, key);\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return null;\n }\n}\n\nexport function JS_CheckDefineGlobalVar(ctx: JSContext, prop: JSAtom, flags: number): number {\n const key = JS_AtomToKey(ctx, prop);\n const d = js_global_own_desc(ctx, key);\n if (d === null) return -1;\n if (flags & DEFINE_GLOBAL_LEX_VAR) {\n if (d && !d.configurable) {\n JS_ThrowSyntaxErrorAtom(ctx, \"redeclaration of '%s'\", prop);\n return -1;\n }\n } else {\n if (!d && !Reflect.isExtensible(ctx.global_obj)) {\n JS_ThrowTypeErrorAtom(ctx, \"cannot define variable '%s'\", prop);\n return -1;\n }\n if (flags & DEFINE_GLOBAL_FUNC_VAR) {\n if (d && !d.configurable &&\n (('get' in d || 'set' in d) || !(d.writable && d.enumerable))) {\n JS_ThrowTypeErrorAtom(ctx, \"cannot define variable '%s'\", prop);\n return -1;\n }\n }\n }\n /* check if there already is a lexical declaration */\n if (key in ctx.global_var_obj) {\n JS_ThrowSyntaxErrorAtom(ctx, \"redeclaration of '%s'\", prop);\n return -1;\n }\n return 0;\n}\n\n/* def_flags is (0, DEFINE_GLOBAL_LEX_VAR) | JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE */\nexport function JS_DefineGlobalVar(ctx: JSContext, prop: JSAtom, def_flags: number): number {\n const key = JS_AtomToKey(ctx, prop);\n if (def_flags & DEFINE_GLOBAL_LEX_VAR) {\n const gvo = ctx.global_var_obj;\n if (key in gvo) return 0;\n Reflect.defineProperty(gvo, key, {\n value: JS_UNINITIALIZED, writable: (def_flags & JS_PROP_WRITABLE) !== 0,\n enumerable: true, configurable: true,\n });\n return 0;\n }\n const d = js_global_own_desc(ctx, key);\n if (d === null) return -1;\n if (d) return 0;\n if (!Reflect.isExtensible(ctx.global_obj)) return 0;\n try {\n Reflect.defineProperty(ctx.global_obj, key, {\n value: undefined, writable: true, enumerable: true,\n configurable: (def_flags & JS_PROP_CONFIGURABLE) !== 0,\n });\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return -1;\n }\n return 0;\n}\n\n/* 'def_flags' is 0 or JS_PROP_CONFIGURABLE. */\nexport function JS_DefineGlobalFunction(ctx: JSContext, prop: JSAtom, func: JSValue, def_flags: number): number {\n const d = js_global_own_desc(ctx, JS_AtomToKey(ctx, prop));\n if (d === null) return -1;\n let flags = JS_PROP_HAS_VALUE | JS_PROP_THROW;\n if (!d || d.configurable) {\n flags |= JS_PROP_ENUMERABLE | JS_PROP_WRITABLE | def_flags | JS_PROP_HAS_CONFIGURABLE | JS_PROP_HAS_WRITABLE | JS_PROP_HAS_ENUMERABLE;\n }\n if (JS_DefineProperty(ctx, ctx.global_obj, prop, func, undefined, undefined, flags) < 0) return -1;\n return 0;\n}\n\nexport function JS_GetGlobalVar(ctx: JSContext, prop: JSAtom, throw_ref_error: number): JSValue {\n const key = JS_AtomToKey(ctx, prop);\n const gvo = ctx.global_var_obj;\n if (key in gvo) {\n const v = gvo[key];\n if (v === JS_UNINITIALIZED) return JS_ThrowReferenceErrorUninitialized(ctx, prop);\n return v;\n }\n const g = ctx.global_obj;\n try {\n if (!Reflect.has(g, key)) {\n if (throw_ref_error) return JS_ThrowReferenceErrorNotDefined(ctx, prop);\n return undefined;\n }\n return (g as any)[key];\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n}\n\n/* construct a reference to a global variable: returns [obj, prop] or null on exception */\nexport function JS_GetGlobalVarRef(ctx: JSContext, prop: JSAtom): [JSValue, JSValue] | null {\n const key = JS_AtomToKey(ctx, prop);\n const gvo = ctx.global_var_obj;\n let obj: JSValue;\n if (key in gvo) {\n const d = Reflect.getOwnPropertyDescriptor(gvo, key)!;\n if (d.value === JS_UNINITIALIZED) {\n JS_ThrowReferenceErrorUninitialized(ctx, prop);\n return null;\n }\n if (!d.writable) {\n JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, prop);\n return null;\n }\n obj = gvo;\n } else {\n const ret = JS_HasProperty(ctx, ctx.global_obj, prop);\n if (ret < 0) return null;\n obj = ret ? ctx.global_obj : undefined;\n }\n return [obj, JS_AtomToValue(ctx, prop)];\n}\n\n/* use for strict variable access: test if the variable exists */\nexport function JS_CheckGlobalVar(ctx: JSContext, prop: JSAtom): number {\n if (JS_AtomToKey(ctx, prop) in ctx.global_var_obj) return 1;\n return JS_HasProperty(ctx, ctx.global_obj, prop);\n}\n\n/* flag = 0: normal variable write\n flag = 1: initialize lexical variable\n flag = 2: normal variable write, strict check was done before */\nexport function JS_SetGlobalVar(ctx: JSContext, prop: JSAtom, val: JSValue, flag: number): number {\n const key = JS_AtomToKey(ctx, prop);\n const gvo = ctx.global_var_obj;\n if (key in gvo) {\n if (flag !== 1) {\n const d = Reflect.getOwnPropertyDescriptor(gvo, key)!;\n if (d.value === JS_UNINITIALIZED) { JS_ThrowReferenceErrorUninitialized(ctx, prop); return -1; }\n if (!d.writable) return JS_ThrowTypeErrorReadOnly(ctx, JS_PROP_THROW, prop);\n }\n Reflect.defineProperty(gvo, key, { value: val });\n return 0;\n }\n let flags = JS_PROP_THROW_STRICT;\n if (is_strict_mode(ctx)) flags |= JS_PROP_NO_ADD;\n if (flag === 2 || (flags & JS_PROP_NO_ADD)) {\n /* strict mode: the variable must exist */\n const ret = JS_HasProperty(ctx, ctx.global_obj, prop);\n if (ret < 0) return -1;\n if (!ret) {\n if (flag !== 2) { JS_ThrowReferenceErrorNotDefined(ctx, prop); return -1; }\n }\n }\n return JS_SetPropertyInternal(ctx, ctx.global_obj, prop, val, ctx.global_obj, flags);\n}\n\n/* ---------------------------------------------------------------------\n Conversions\n --------------------------------------------------------------------- */\n\nexport const HINT_STRING = 0;\nexport const HINT_NUMBER = 1;\nexport const HINT_NONE = 2;\nexport const HINT_FORCE_ORDINARY = 1 << 4; /* don't try Symbol.toPrimitive */\n\nexport function JS_ToPrimitiveFree(ctx: JSContext, val: JSValue, hint: number): JSValue {\n if (!JS_IsObject(val)) return val;\n if (!(hint & HINT_FORCE_ORDINARY)) {\n const method = JS_GetProperty(ctx, val, JS_ATOM_Symbol_toPrimitive);\n if (JS_IsException(method)) return JS_EXCEPTION;\n if (!(method === undefined || method === null)) {\n let atom: JSAtom;\n switch (hint) {\n case HINT_STRING: atom = JS_ATOM_string; break;\n case HINT_NUMBER: atom = JS_ATOM_number; break;\n default: atom = JS_ATOM_default; break;\n }\n const arg = JS_AtomToString(ctx, atom);\n const ret = JS_CallFree(ctx, method, val, [arg]);\n if (JS_IsException(ret)) return ret;\n if (JS_IsObject(ret)) return JS_ThrowTypeError(ctx, 'toPrimitive');\n return ret;\n }\n }\n hint &= ~HINT_FORCE_ORDINARY;\n if (hint !== HINT_STRING) hint = HINT_NUMBER;\n for (let i = 0; i < 2; i++) {\n const name = ((i ^ hint) === 0) ? JS_ATOM_toString : JS_ATOM_valueOf;\n const method = JS_GetProperty(ctx, val, name);\n if (JS_IsException(method)) return JS_EXCEPTION;\n if (JS_IsFunction(ctx, method)) {\n const ret = JS_CallFree(ctx, method, val, []);\n if (JS_IsException(ret)) return ret;\n if (!JS_IsObject(ret)) return ret;\n }\n }\n return JS_ThrowTypeError(ctx, 'toPrimitive');\n}\nconst JS_ATOM_default = 22; /* 'default' keyword atom */\n\nexport function JS_ToPrimitive(ctx: JSContext, val: JSValue, hint: number): JSValue {\n return JS_ToPrimitiveFree(ctx, val, hint);\n}\n\nexport function JS_ToBoolFree(ctx: JSContext, val: JSValue): boolean {\n switch (typeof val) {\n case 'boolean': return val;\n case 'number': return !(val === 0 || Number.isNaN(val));\n case 'string': return val.length > 0;\n case 'bigint': return val !== 0n;\n case 'undefined': return false;\n case 'object':\n if (val === null) return false;\n if (JS_IsObject(val)) return true;\n return true;\n }\n return true;\n}\nexport const JS_ToBool = JS_ToBoolFree;\n\n/* StringToNumber */\nexport function js_atof(ctx: JSContext, str: string): number {\n return Number(str);\n}\n\n/* ToNumber: returns JS_EXCEPTION on error */\n/* ToNumber: returns JS_EXCEPTION on error */\nexport function JS_ToNumberFree(ctx: JSContext, val: JSValue): JSValue {\n switch (typeof val) {\n case 'number': return val;\n case 'boolean': return val ? 1 : 0;\n case 'undefined': return NaN;\n case 'string': return js_atof(ctx, val);\n case 'bigint': return JS_ThrowTypeError(ctx, 'cannot convert bigint to number');\n case 'symbol': return JS_ThrowTypeError(ctx, 'cannot convert symbol to number');\n case 'object':\n case 'function':\n if (val === null) return 0;\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitiveFree(ctx, val, HINT_NUMBER);\n if (JS_IsException(prim)) return prim;\n return JS_ToNumberFree(ctx, prim);\n }\n break;\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to number');\n}\nexport const JS_ToNumber = JS_ToNumberFree;\n\n/* ToNumeric: number or bigint */\nexport function JS_ToNumericFree(ctx: JSContext, val: JSValue): JSValue {\n if (typeof val === 'bigint') return val;\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitiveFree(ctx, val, HINT_NUMBER);\n if (JS_IsException(prim)) return prim;\n if (typeof prim === 'bigint') return prim;\n return JS_ToNumberFree(ctx, prim);\n }\n return JS_ToNumberFree(ctx, val);\n}\nexport const JS_ToNumeric = JS_ToNumericFree;\n\n\n/* return a number or JS_EXCEPTION */\nexport function JS_ToFloat64(ctx: JSContext, val: JSValue): number | JSSpecial {\n if (typeof val === 'number') return val;\n const r = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r)) return r;\n return r as number;\n}\n\n/* return the int32 value or throws; on exception returns JS_EXCEPTION */\nexport function JS_ToInt32Free(ctx: JSContext, val: JSValue): number | JSSpecial {\n if (typeof val === 'number') return val | 0;\n const r = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r)) return r;\n return (r as number) | 0;\n}\nexport const JS_ToInt32 = JS_ToInt32Free;\n\nexport function JS_ToUint32Free(ctx: JSContext, val: JSValue): number | JSSpecial {\n if (typeof val === 'number') return val >>> 0;\n const r = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r)) return r;\n return (r as number) >>> 0;\n}\nexport const JS_ToUint32 = JS_ToUint32Free;\n\n/* ToInt32 with clamping (used by typed arrays / string functions) */\nexport function JS_ToInt32Clamp(ctx: JSContext, val: JSValue, min_val: number, max_val: number, neg_offset: number): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n let d = r as number;\n if (Number.isNaN(d)) return min_val < 0 ? 0 : min_val;\n d = Math.trunc(d);\n if (d < 0) { d += neg_offset; if (d < min_val) d = min_val; }\n else if (d > max_val) d = max_val;\n return d;\n}\n\n/* ToInt32 with saturation */\nexport function JS_ToInt32Sat(ctx: JSContext, val: JSValue): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n const d = r as number;\n if (Number.isNaN(d)) return 0;\n if (d < -2147483648) return -2147483648;\n if (d > 2147483647) return 2147483647;\n return Math.trunc(d);\n}\n\nexport function JS_ToInt64Sat(ctx: JSContext, val: JSValue): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n const d = r as number;\n if (Number.isNaN(d)) return 0;\n if (d < -9223372036854775808) return -9223372036854775808;\n if (d >= 9223372036854775807) return 9223372036854775807;\n return Math.trunc(d);\n}\n\nexport function JS_ToInt64Clamp(ctx: JSContext, val: JSValue, min_val: number, max_val: number, neg_offset: number): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n let d = r as number;\n if (Number.isNaN(d)) return min_val < 0 ? 0 : min_val;\n d = Math.trunc(d);\n if (d < 0) { d += neg_offset; if (d < min_val) d = min_val; }\n else if (d > max_val) d = max_val;\n return d;\n}\n\n/* ToInteger (truncation); returns JS_EXCEPTION on error */\nexport function JS_ToInt64Free(ctx: JSContext, val: JSValue): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n const d = r as number;\n if (Number.isNaN(d)) return 0;\n if (!Number.isFinite(d)) return d > 0 ? 9223372036854775807 : -9223372036854775808;\n return Math.trunc(d);\n}\nexport const JS_ToInt64 = JS_ToInt64Free;\n\n/* ToIndex: returns -1 and throws on error */\nexport function JS_ToIndex(ctx: JSContext, val: JSValue): number {\n if (val === undefined) return 0;\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return -1;\n let d = r as number;\n if (Number.isNaN(d)) d = 0;\n d = Math.trunc(d);\n if (d < 0 || d > 9007199254740991) {\n JS_ThrowRangeError(ctx, 'invalid array index');\n return -1;\n }\n return d === 0 ? 0 : d;\n}\n\n/* ToLength: returns -1 on exception */\nexport function JS_ToLengthFree(ctx: JSContext, val: JSValue): number {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return -1;\n let d = r as number;\n if (Number.isNaN(d) || d <= 0) return 0;\n d = Math.trunc(d);\n if (d > 9007199254740991) d = 9007199254740991;\n return d;\n}\n\n/* ToUint32 with RangeError if not a valid array length (ArraySetLength\n semantics: ToUint32 and ToNumber are both evaluated). Return -1 on exception */\nexport function JS_ToArrayLengthFree(ctx: JSContext, val: JSValue, is_array_ctor: boolean): number {\n let d: number;\n if (typeof val === 'number') {\n d = val;\n } else {\n const r = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r)) return -1;\n d = r as number;\n if (!is_array_ctor) {\n /* the spec evaluates ToNumber a second time */\n const r2 = JS_ToNumberFree(ctx, val);\n if (JS_IsException(r2)) return -1;\n if ((r2 as number) !== d && !(Number.isNaN(r2 as number) && Number.isNaN(d))) {\n JS_ThrowRangeError(ctx, 'invalid array length');\n return -1;\n }\n }\n }\n const len = d >>> 0;\n if (len !== d) {\n JS_ThrowRangeError(ctx, 'invalid array length');\n return -1;\n }\n return len;\n}\n\nexport function JS_ToUint8ClampFree(ctx: JSContext, val: JSValue): number | JSSpecial {\n const r = JS_ToFloat64(ctx, val);\n if (JS_IsException(r)) return r;\n const d = r as number;\n if (Number.isNaN(d) || d <= 0) return 0;\n if (d >= 255) return 255;\n /* round half to even */\n const f = Math.floor(d);\n const diff = d - f;\n if (diff > 0.5) return f + 1;\n if (diff < 0.5) return f;\n return (f % 2 === 0) ? f : f + 1;\n}\n\n/* ToBigInt */\n/* ToBigInt */\nexport function JS_ToBigIntFree(ctx: JSContext, val: JSValue): JSValue {\n switch (typeof val) {\n case 'bigint': return val;\n case 'boolean': return val ? 1n : 0n;\n case 'string': {\n const r = js_string_to_bigint(val);\n if (r === null) return JS_ThrowSyntaxError(ctx, 'invalid bigint literal');\n return r;\n }\n case 'number':\n return JS_ThrowTypeError(ctx, 'cannot convert number to bigint');\n case 'undefined':\n return JS_ThrowTypeError(ctx, 'cannot convert undefined to bigint');\n case 'symbol':\n return JS_ThrowTypeError(ctx, 'cannot convert symbol to bigint');\n case 'object':\n case 'function':\n if (val === null) return JS_ThrowTypeError(ctx, 'cannot convert null to bigint');\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitiveFree(ctx, val, HINT_NUMBER);\n if (JS_IsException(prim)) return prim;\n return JS_ToBigIntFree(ctx, prim);\n }\n break;\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to bigint');\n}\nexport const JS_ToBigInt = JS_ToBigIntFree;\n\nexport function js_string_to_bigint(str: string): bigint | null {\n const s = str.trim();\n if (s === '') return 0n;\n try {\n if (/^[+-]?\\d+$/.test(s) || /^0[xX][0-9a-fA-F]+$/.test(s) || /^0[oO][0-7]+$/.test(s) || /^0[bB][01]+$/.test(s)) {\n return BigInt(s);\n }\n } catch { /* fallthrough */ }\n return null;\n}\n\nexport function JS_NewBigInt64(ctx: JSContext, v: bigint | number): JSValue { return BigInt.asIntN(64, BigInt(v)); }\nexport function JS_NewBigUint64(ctx: JSContext, v: bigint | number): JSValue { return BigInt.asUintN(64, BigInt(v)); }\nexport function JS_ToBigInt64(ctx: JSContext, val: JSValue): bigint | JSSpecial {\n const r = JS_ToBigIntFree(ctx, val);\n if (JS_IsException(r)) return r;\n return BigInt.asIntN(64, r as bigint);\n}\n\n/* number to string with a radix */\nexport function js_number_to_string(d: number, radix: number): string {\n if (radix === 10) return String(d);\n return d.toString(radix);\n}\n\nexport function js_dtoa(d: number): string { return String(d); }\n\n/* ToString */\nexport function JS_ToStringInternal(ctx: JSContext, val: JSValue, is_ToPropertyKey: boolean): JSValue {\n switch (typeof val) {\n case 'string': return val;\n case 'number': return js_number_to_string(val, 10);\n case 'boolean': return val ? 'true' : 'false';\n case 'undefined': return 'undefined';\n case 'bigint': return val.toString();\n case 'symbol':\n if (is_ToPropertyKey) return val;\n return JS_ThrowTypeError(ctx, 'cannot convert symbol to string');\n case 'object':\n case 'function':\n if (val === null) return 'null';\n if (JS_IsObject(val)) {\n const prim = JS_ToPrimitiveFree(ctx, val, HINT_STRING);\n if (JS_IsException(prim)) return prim;\n return JS_ToStringInternal(ctx, prim, is_ToPropertyKey);\n }\n if (val === JS_EXCEPTION) return '[exception]';\n if (val === JS_UNINITIALIZED) return '[uninitialized]';\n return '[catch offset]';\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to string');\n}\n\n\nexport function JS_ToString(ctx: JSContext, val: JSValue): JSValue {\n return JS_ToStringInternal(ctx, val, false);\n}\nexport const JS_ToStringFree = JS_ToString;\nexport function JS_ToCString(ctx: JSContext, val: JSValue): string | null {\n const r = JS_ToString(ctx, val);\n if (JS_IsException(r)) return null;\n return r as string;\n}\nexport function JS_ToPropertyKey(ctx: JSContext, val: JSValue): JSValue {\n return JS_ToStringInternal(ctx, val, true);\n}\n\n/* return a quoted string with JSON-like escapes */\nexport function JS_ToQuotedString(ctx: JSContext, val: JSValue): JSValue {\n const r = JS_ToString(ctx, val);\n if (JS_IsException(r)) return r;\n return js_quote_string(r as string);\n}\n\nexport function js_quote_string(s: string): string {\n let out = '\"';\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n switch (c) {\n case 0x09: out += '\\\\t'; break;\n case 0x0a: out += '\\\\n'; break;\n case 0x0d: out += '\\\\r'; break;\n case 0x08: out += '\\\\b'; break;\n case 0x0c: out += '\\\\f'; break;\n case 0x5c: out += '\\\\\\\\'; break;\n case 0x22: out += '\\\\\"'; break;\n default:\n if (c < 32 || (c >= 0xd800 && c <= 0xdfff && !is_paired_surrogate(s, i))) {\n out += '\\\\u' + c.toString(16).padStart(4, '0');\n } else {\n out += s[i];\n }\n }\n }\n return out + '\"';\n}\n\nfunction is_paired_surrogate(s: string, i: number): boolean {\n const c = s.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n const c2 = s.charCodeAt(i + 1);\n return c2 >= 0xdc00 && c2 <= 0xdfff;\n }\n if (c >= 0xdc00 && c <= 0xdfff) {\n if (i === 0) return false;\n const c1 = s.charCodeAt(i - 1);\n return c1 >= 0xd800 && c1 <= 0xdbff;\n }\n return true;\n}\n\n\n/* string wrapper objects expose 'length' and the character indices as own\n properties (the string exotic object of the specification) */\n/* ToObject */\nexport function JS_ToObject(ctx: JSContext, val: JSValue): JSValue {\n switch (typeof val) {\n case 'object':\n case 'function':\n if (JS_IsObject(val)) return val;\n return JS_ThrowTypeError(ctx, 'cannot convert to object');\n case 'undefined':\n return JS_ThrowTypeError(ctx, 'cannot convert to object');\n case 'symbol': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.SYMBOL], JSClassID.SYMBOL, val);\n case 'number': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.NUMBER], JSClassID.NUMBER, val);\n case 'boolean': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.BOOLEAN], JSClassID.BOOLEAN, val);\n case 'bigint': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.BIG_INT], JSClassID.BIG_INT, val);\n case 'string': return js_new_primitive_wrapper(ctx, ctx.class_proto[JSClassID.STRING], JSClassID.STRING, val);\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to object');\n}\nexport const JS_ToObjectFree = JS_ToObject;\n\n/* \"this\" value of a primitive wrapper: the primitive, JS_EXCEPTION if the\n object is not a wrapper of the given class */\nexport function JS_ThisObjectData(ctx: JSContext, this_val: JSValue, class_id: JSClassID): JSValue {\n if (JS_IsObject(this_val)) {\n const m = js_meta.get(this_val);\n if (m && m.class_id === class_id) return m.u;\n return JS_EXCEPTION;\n }\n return this_val;\n}\n\n/* ---------------------------------------------------------------------\n Comparisons and operators\n --------------------------------------------------------------------- */\n\nexport function js_same_value(ctx: JSContext, op1: JSValue, op2: JSValue): boolean {\n return Object.is(op1, op2);\n}\nexport function js_same_value_zero(ctx: JSContext, op1: JSValue, op2: JSValue): boolean {\n if (typeof op1 === 'number' && typeof op2 === 'number') return op1 === op2 || (Number.isNaN(op1) && Number.isNaN(op2));\n return op1 === op2;\n}\n\nexport const enum JSStrictEqMode { STRICT, SAME_VALUE, SAME_VALUE_ZERO }\n\nexport function js_strict_eq2(ctx: JSContext, op1: JSValue, op2: JSValue, eq_mode: JSStrictEqMode): boolean {\n switch (eq_mode) {\n case JSStrictEqMode.STRICT: return op1 === op2; /* host semantics match (NaN !== NaN, +0 === -0) */\n case JSStrictEqMode.SAME_VALUE: return Object.is(op1, op2);\n case JSStrictEqMode.SAME_VALUE_ZERO: return js_same_value_zero(ctx, op1, op2);\n }\n}\nexport function js_strict_eq(ctx: JSContext, op1: JSValue, op2: JSValue): boolean { return op1 === op2; }\n\n/* abstract equality: returns -1 on exception */\nexport function js_loose_eq(ctx: JSContext, op1: JSValue, op2: JSValue): number {\n for (;;) {\n const o1 = JS_IsObject(op1), o2 = JS_IsObject(op2);\n if (o1 && o2) return op1 === op2 ? 1 : 0;\n if (!o1 && !o2 && typeof op1 === typeof op2) return op1 === op2 ? 1 : 0;\n const n1 = (op1 === undefined || op1 === null), n2 = (op2 === undefined || op2 === null);\n /* undefined == null */\n if (n1 && n2) return 1;\n if (n1 || n2) return 0;\n const t1 = typeof op1, t2 = typeof op2;\n if (t1 === 'number' && t2 === 'string') { op2 = js_atof(ctx, op2 as string); continue; }\n if (t1 === 'string' && t2 === 'number') { op1 = js_atof(ctx, op1 as string); continue; }\n if (t1 === 'bigint' && t2 === 'string') {\n const b = js_string_to_bigint(op2 as string);\n if (b === null) return 0;\n return (op1 as bigint) === b ? 1 : 0;\n }\n if (t1 === 'string' && t2 === 'bigint') {\n const b = js_string_to_bigint(op1 as string);\n if (b === null) return 0;\n return (op2 as bigint) === b ? 1 : 0;\n }\n if (t1 === 'boolean') { op1 = op1 ? 1 : 0; continue; }\n if (t2 === 'boolean') { op2 = op2 ? 1 : 0; continue; }\n if (o1 && !o2) {\n const p = JS_ToPrimitiveFree(ctx, op1, HINT_NONE);\n if (JS_IsException(p)) return -1;\n op1 = p;\n continue;\n }\n if (o2 && !o1) {\n const p = JS_ToPrimitiveFree(ctx, op2, HINT_NONE);\n if (JS_IsException(p)) return -1;\n op2 = p;\n continue;\n }\n if (t1 === 'bigint' && t2 === 'number') return bigint_num_eq(op1 as bigint, op2 as number) ? 1 : 0;\n if (t1 === 'number' && t2 === 'bigint') return bigint_num_eq(op2 as bigint, op1 as number) ? 1 : 0;\n return 0;\n }\n}\n\nfunction bigint_num_eq(a: bigint, b: number): boolean {\n if (!Number.isFinite(b) || !Number.isInteger(b)) return false;\n return a === BigInt(b);\n}\n\nexport const enum JSRelOp { LT, LTE, GT, GTE }\n\n/* relational comparison: returns -1 on exception, else 0/1 */\nexport function js_relational_op(ctx: JSContext, op: JSRelOp, op1: JSValue, op2: JSValue): number {\n if (JS_IsObject(op1)) {\n op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NUMBER);\n if (JS_IsException(op1)) return -1;\n }\n if (JS_IsObject(op2)) {\n op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NUMBER);\n if (JS_IsException(op2)) return -1;\n }\n let res: boolean;\n if (typeof op1 === 'string' && typeof op2 === 'string') {\n switch (op) {\n case JSRelOp.LT: res = op1 < op2; break;\n case JSRelOp.LTE: res = op1 <= op2; break;\n case JSRelOp.GT: res = op1 > op2; break;\n default: res = op1 >= op2; break;\n }\n return res ? 1 : 0;\n }\n if (typeof op1 === 'symbol' || typeof op2 === 'symbol') {\n JS_ThrowTypeError(ctx, 'cannot convert symbol to number');\n return -1;\n }\n let n1: JSValue, n2: JSValue;\n if (typeof op1 === 'bigint' && typeof op2 === 'string') {\n const b = js_string_to_bigint(op2);\n if (b === null) return 0;\n n1 = op1; n2 = b;\n } else if (typeof op1 === 'string' && typeof op2 === 'bigint') {\n const b = js_string_to_bigint(op1);\n if (b === null) return 0;\n n1 = b; n2 = op2;\n } else {\n n1 = JS_ToNumericFree(ctx, op1);\n if (JS_IsException(n1)) return -1;\n n2 = JS_ToNumericFree(ctx, op2);\n if (JS_IsException(n2)) return -1;\n }\n /* host relational ops handle number/bigint mixes correctly */\n const a = n1 as number | bigint, b = n2 as number | bigint;\n switch (op) {\n case JSRelOp.LT: res = a < b; break;\n case JSRelOp.LTE: res = a <= b; break;\n case JSRelOp.GT: res = a > b; break;\n default: res = a >= b; break;\n }\n return res ? 1 : 0;\n}\n\n/* return -1 if exception, else 0/1 */\nexport function JS_OrdinaryIsInstanceOf(ctx: JSContext, val: JSValue, obj: JSValue): number {\n if (!JS_IsFunction(ctx, obj)) return 0;\n const m = js_get_meta(obj);\n if (m && m.class_id === JSClassID.BOUND_FUNCTION) {\n return JS_IsInstanceOf(ctx, val, (m.u as JSBoundFunctionData).func_obj);\n }\n if (!JS_IsObject(val)) return 0;\n const proto = JS_GetProperty(ctx, obj, JS_ATOM_prototype);\n if (JS_IsException(proto)) return -1;\n if (!JS_IsObject(proto)) { JS_ThrowTypeError(ctx, 'operand \\'prototype\\' property is not an object'); return -1; }\n let obj1: JSValue = val;\n let depth = 0;\n for (;;) {\n const proto1 = JS_GetPrototype(ctx, obj1);\n if (JS_IsException(proto1)) return -1;\n if (proto1 === null || proto1 === undefined) return 0;\n if (proto1 === proto) return 1;\n obj1 = proto1;\n if (++depth > 100000) { JS_ThrowInternalError(ctx, 'prototype chain too deep'); return -1; }\n }\n}\n\nexport function JS_IsInstanceOf(ctx: JSContext, val: JSValue, obj: JSValue): number {\n if (!JS_IsObject(obj)) { JS_ThrowTypeError(ctx, 'invalid \\'instanceof\\' right operand'); return -1; }\n const method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_hasInstance);\n if (JS_IsException(method)) return -1;\n if (!(method === undefined || method === null)) {\n const ret = JS_CallFree(ctx, method, obj, [val]);\n if (JS_IsException(ret)) return -1;\n return JS_ToBoolFree(ctx, ret) ? 1 : 0;\n }\n if (!JS_IsFunction(ctx, obj)) { JS_ThrowTypeError(ctx, 'invalid \\'instanceof\\' right operand'); return -1; }\n return JS_OrdinaryIsInstanceOf(ctx, val, obj);\n}\n\nexport function js_operator_typeof(ctx: JSContext, op1: JSValue): JSAtom {\n switch (typeof op1) {\n case 'bigint': return JS_ATOM_bigint;\n case 'number': return JS_ATOM_number;\n case 'undefined': return JS_ATOM_undefined;\n case 'boolean': return JS_ATOM_boolean;\n case 'string': return JS_ATOM_string;\n case 'symbol': return JS_ATOM_symbol;\n case 'function': return JS_ATOM_function;\n case 'object':\n if (op1 instanceof JSSpecial) return JS_ATOM_undefined;\n return JS_ATOM_object;\n }\n return JS_ATOM_undefined;\n}\n\n/* 'in' operator: -1 on exception */\nexport function js_operator_in(ctx: JSContext, op1: JSValue, op2: JSValue): number {\n if (!JS_IsObject(op2)) { JS_ThrowTypeError(ctx, 'invalid \\'in\\' operand'); return -1; }\n const atom = JS_ValueToAtom(ctx, op1);\n if (atom === JS_ATOM_NULL) return -1;\n return JS_HasProperty(ctx, op2, atom);\n}\n\n/* binary arithmetic (+ - * / % **) on numeric values after ToNumeric;\n returns JS_EXCEPTION on error */\nexport const enum JSArithOp { ADD, SUB, MUL, DIV, MOD, POW, SHL, SAR, SHR, AND, OR, XOR }\n\nexport function js_binary_arith_slow(ctx: JSContext, op: JSArithOp, op1: JSValue, op2: JSValue): JSValue {\n const n1 = JS_ToNumericFree(ctx, op1);\n if (JS_IsException(n1)) return n1;\n const n2 = JS_ToNumericFree(ctx, op2);\n if (JS_IsException(n2)) return n2;\n const b1 = typeof n1 === 'bigint', b2 = typeof n2 === 'bigint';\n if (b1 !== b2) return JS_ThrowTypeError(ctx, 'both operands must be bigint');\n if (b1) {\n const a = n1 as bigint, b = n2 as bigint;\n try {\n switch (op) {\n case JSArithOp.ADD: return a + b;\n case JSArithOp.SUB: return a - b;\n case JSArithOp.MUL: return a * b;\n case JSArithOp.DIV: if (b === 0n) return JS_ThrowRangeError(ctx, 'division by zero'); return a / b;\n case JSArithOp.MOD: if (b === 0n) return JS_ThrowRangeError(ctx, 'division by zero'); return a % b;\n case JSArithOp.POW: if (b < 0n) return JS_ThrowRangeError(ctx, 'invalid bigint exponent'); return a ** b;\n case JSArithOp.SHL: return a << b;\n case JSArithOp.SAR: return a >> b;\n case JSArithOp.SHR: return JS_ThrowTypeError(ctx, 'BigInts have no unsigned right shift, use >> instead');\n case JSArithOp.AND: return a & b;\n case JSArithOp.OR: return a | b;\n case JSArithOp.XOR: return a ^ b;\n }\n } catch (e) {\n return JS_ThrowRangeError(ctx, String((e as Error).message));\n }\n }\n const a = n1 as number, b = n2 as number;\n switch (op) {\n case JSArithOp.ADD: return a + b;\n case JSArithOp.SUB: return a - b;\n case JSArithOp.MUL: return a * b;\n case JSArithOp.DIV: return a / b;\n case JSArithOp.MOD: return a % b;\n case JSArithOp.POW: return js_pow(a, b);\n case JSArithOp.SHL: return a << (b & 31);\n case JSArithOp.SAR: return a >> (b & 31);\n case JSArithOp.SHR: return a >>> (b & 31);\n case JSArithOp.AND: return a & b;\n case JSArithOp.OR: return a | b;\n case JSArithOp.XOR: return a ^ b;\n }\n return undefined;\n}\n\nexport function js_pow(a: number, b: number): number {\n /* Math.pow follows the spec */\n return Math.pow(a, b);\n}\n\n/* '+' operator with string concatenation */\nexport function js_add_slow(ctx: JSContext, op1: JSValue, op2: JSValue): JSValue {\n if (JS_IsObject(op1)) {\n op1 = JS_ToPrimitiveFree(ctx, op1, HINT_NONE);\n if (JS_IsException(op1)) return op1;\n }\n if (JS_IsObject(op2)) {\n op2 = JS_ToPrimitiveFree(ctx, op2, HINT_NONE);\n if (JS_IsException(op2)) return op2;\n }\n if (typeof op1 === 'string' || typeof op2 === 'string') {\n const s1 = JS_ToString(ctx, op1);\n if (JS_IsException(s1)) return s1;\n const s2 = JS_ToString(ctx, op2);\n if (JS_IsException(s2)) return s2;\n return (s1 as string) + (s2 as string);\n }\n return js_binary_arith_slow(ctx, JSArithOp.ADD, op1, op2);\n}\n\nexport const enum JSUnaryOp { NEG, PLUS, INC, DEC, NOT }\n\nexport function js_unary_arith_slow(ctx: JSContext, op: JSUnaryOp, op1: JSValue): JSValue {\n if (op === JSUnaryOp.PLUS) return JS_ToNumberFree(ctx, op1);\n const n = JS_ToNumericFree(ctx, op1);\n if (JS_IsException(n)) return n;\n if (typeof n === 'bigint') {\n switch (op) {\n case JSUnaryOp.NEG: return -n;\n case JSUnaryOp.INC: return n + 1n;\n case JSUnaryOp.DEC: return n - 1n;\n case JSUnaryOp.NOT: return ~n;\n }\n }\n const a = n as number;\n switch (op) {\n case JSUnaryOp.NEG: return -a;\n case JSUnaryOp.INC: return a + 1;\n case JSUnaryOp.DEC: return a - 1;\n case JSUnaryOp.NOT: return ~a;\n }\n return undefined;\n}\n\n/* ---------------------------------------------------------------------\n Iterators\n --------------------------------------------------------------------- */\n\nexport function js_create_iterator_result(ctx: JSContext, val: JSValue, done: boolean): JSValue {\n const obj = JS_NewObject(ctx);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_value, val, JS_PROP_C_W_E);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_done, done, JS_PROP_C_W_E);\n return obj;\n}\nexport const JS_CreateIterResultObject = js_create_iterator_result;\n\nexport function JS_GetIterator2(ctx: JSContext, obj: JSValue, method: JSValue): JSValue {\n const enum_obj = JS_Call(ctx, method, obj, []);\n if (JS_IsException(enum_obj)) return enum_obj;\n if (!JS_IsObject(enum_obj)) return JS_ThrowTypeErrorNotAnObject(ctx);\n return enum_obj;\n}\n\n/* hook set by the async builtins: create an AsyncFromSyncIterator */\nexport const async_hooks: { JS_CreateAsyncFromSyncIterator: ((ctx: JSContext, sync_iter: JSValue) => JSValue) | null } =\n { JS_CreateAsyncFromSyncIterator: null };\n\nexport function JS_GetIterator(ctx: JSContext, obj: JSValue, is_async: boolean): JSValue {\n let method: JSValue;\n if (is_async) {\n method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_asyncIterator);\n if (JS_IsException(method)) return method;\n if (method === undefined || method === null) {\n method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_iterator);\n if (JS_IsException(method)) return method;\n const sync_iter = JS_GetIterator2(ctx, obj, method);\n if (JS_IsException(sync_iter)) return sync_iter;\n return async_hooks.JS_CreateAsyncFromSyncIterator!(ctx, sync_iter);\n }\n } else {\n method = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_iterator);\n if (JS_IsException(method)) return method;\n }\n if (!JS_IsFunction(ctx, method)) return JS_ThrowTypeError(ctx, 'value is not iterable');\n return JS_GetIterator2(ctx, obj, method);\n}\n\n/* return the result object of the next() call or JS_EXCEPTION */\nexport function JS_IteratorNext2(ctx: JSContext, enum_obj: JSValue, method: JSValue, argv: JSValue[], pdone: { done: number }): JSValue {\n const obj = JS_Call(ctx, method, enum_obj, argv);\n if (JS_IsException(obj)) { pdone.done = 0; return obj; }\n if (!JS_IsObject(obj)) { pdone.done = 0; return JS_ThrowTypeError(ctx, 'iterator must return an object'); }\n const done_val = JS_GetProperty(ctx, obj, JS_ATOM_done);\n if (JS_IsException(done_val)) { pdone.done = 0; return done_val; }\n pdone.done = JS_ToBoolFree(ctx, done_val) ? 1 : 0;\n return obj;\n}\n\n/* return the 'value' of the next() call; pdone.done is set */\nexport function JS_IteratorNext(ctx: JSContext, enum_obj: JSValue, method: JSValue, argv: JSValue[], pdone: { done: number }): JSValue {\n const obj = JS_IteratorNext2(ctx, enum_obj, method, argv, pdone);\n if (JS_IsException(obj)) return obj;\n if (pdone.done) return undefined;\n const value = JS_GetProperty(ctx, obj, JS_ATOM_value);\n if (JS_IsException(value)) { pdone.done = 0; return value; }\n return value;\n}\n\n/* return < 0 in case of exception */\nexport function JS_IteratorClose(ctx: JSContext, enum_obj: JSValue, is_exception_pending: boolean): number {\n let ex_obj: JSValue = undefined;\n if (is_exception_pending) ex_obj = JS_GetException(ctx);\n let res = 0;\n const method = JS_GetProperty(ctx, enum_obj, JS_ATOM_return);\n if (JS_IsException(method)) { res = -1; }\n else if (!(method === undefined || method === null)) {\n const ret = JS_CallFree(ctx, method, enum_obj, []);\n if (!is_exception_pending) {\n if (JS_IsException(ret)) res = -1;\n else if (!JS_IsObject(ret)) { JS_ThrowTypeErrorNotAnObject(ctx); res = -1; }\n }\n }\n if (is_exception_pending) {\n JS_Throw(ctx, ex_obj);\n return -1;\n }\n return res;\n}\n\n/* obtain the next element of the iterator 'enum_obj' (used by the interpreter) */\nexport function JS_IteratorGetCompleteValue(ctx: JSContext, obj: JSValue, pdone: { done: number }): JSValue {\n const done_val = JS_GetProperty(ctx, obj, JS_ATOM_done);\n if (JS_IsException(done_val)) return done_val;\n const done = JS_ToBoolFree(ctx, done_val);\n const value = JS_GetProperty(ctx, obj, JS_ATOM_value);\n if (JS_IsException(value)) return value;\n pdone.done = done ? 1 : 0;\n return value;\n}\n\n/* build an array from an iterable or array-like (used by apply/spread) */\n/* build an argument list from an iterable or array-like (used by apply/spread) */\nexport function build_arg_list(ctx: JSContext, array_arg: JSValue): JSValue[] | null {\n if (!JS_IsObject(array_arg)) { JS_ThrowTypeError(ctx, 'not a object'); return null; }\n const len = js_get_length64(ctx, array_arg);\n if (len < 0) return null;\n if (len > 65536 * 16) { JS_ThrowRangeError(ctx, 'too many arguments'); return null; }\n const tab: JSValue[] = new Array(len);\n const fast = js_get_fast_array(ctx, array_arg);\n if (fast && fast.length === len) {\n /* holes read as undefined, like the generic path */\n for (let i = 0; i < len; i++) tab[i] = fast[i];\n return tab;\n }\n for (let i = 0; i < len; i++) {\n const v = JS_GetPropertyUint32(ctx, array_arg, i);\n if (JS_IsException(v)) return null;\n tab[i] = v;\n }\n return tab;\n}\n\n/* for-in enumeration: snapshot of the enumerable string keys (own keys\n first, then the prototype chain), as EnumerateObjectProperties */\nexport function build_for_in_iterator(ctx: JSContext, obj: JSValue): JSValue {\n const it = new JSForInState();\n if (!JS_IsObject(obj)) {\n if (obj === undefined || obj === null) {\n it.obj = undefined;\n return it;\n }\n obj = JS_ToObject(ctx, obj);\n if (JS_IsException(obj)) return obj;\n }\n it.obj = obj;\n try {\n /* the host for-in implements the specification algorithm, including\n proxy traps and shadowing */\n let own = 0;\n const own_keys = new Set<string>(Object.keys(obj as object));\n for (const k in obj as object) {\n it.keys.push(k);\n if (own_keys.has(k)) own++;\n }\n it.own_count = own;\n } catch (e) {\n return js_host_exception_to_guest(ctx, e);\n }\n return it;\n}\n\n/* return the next key or undefined when done. pdone.done = 1 when finished. -1 exception */\nexport function js_for_in_next(ctx: JSContext, enum_obj: JSValue, pdone: { done: number }): JSValue {\n const it = enum_obj as JSForInState;\n const obj = it.obj;\n for (;;) {\n if (it.idx >= it.keys.length || obj === undefined) { pdone.done = 1; return undefined; }\n const idx = it.idx++;\n const key = it.keys[idx];\n /* check if the property was deleted (own keys: own property lookup,\n prototype keys: prototype chain lookup, as in C) */\n let ret: number;\n try {\n if (idx < it.own_count) ret = Reflect.getOwnPropertyDescriptor(obj as object, key) !== undefined ? 1 : 0;\n else ret = Reflect.has(obj as object, key) ? 1 : 0;\n } catch (e) {\n js_host_exception_to_guest(ctx, e);\n return JS_EXCEPTION;\n }\n if (!ret) continue;\n pdone.done = 0;\n return key;\n }\n}\n\n/* ---------------------------------------------------------------------\n Jobs (Promises)\n --------------------------------------------------------------------- */\n\nexport function JS_EnqueueJob(ctx: JSContext, job_func: (ctx: JSContext, argv: JSValue[]) => JSValue, argv: JSValue[]): number {\n ctx.rt.job_list.push({ job_func, ctx, argv: argv.slice() });\n return 0;\n}\n\nexport function JS_IsJobPending(rt: JSRuntime): boolean { return rt.job_list.length > 0; }\n\n/* return < 0 if exception, 0 if no job pending, 1 if a job was executed\n successfully. The context of the job is returned in pctx */\nexport function JS_ExecutePendingJob(rt: JSRuntime, pctx: { ctx: JSContext | null }): number {\n if (rt.job_list.length === 0) { pctx.ctx = null; return 0; }\n const e = rt.job_list.shift()!;\n pctx.ctx = e.ctx;\n const res = e.job_func(e.ctx, e.argv);\n if (JS_IsException(res)) return -1;\n return 1;\n}\n\n/* ---------------------------------------------------------------------\n Eval\n --------------------------------------------------------------------- */\n\nexport function JS_EvalThis(ctx: JSContext, this_obj: JSValue, input: string, filename: string, eval_flags: number): JSValue {\n return hooks.JS_EvalInternal(ctx, this_obj, input, filename, eval_flags, -1);\n}\n\nexport function JS_Eval(ctx: JSContext, input: string, filename: string, eval_flags: number): JSValue {\n return JS_EvalThis(ctx, ctx.global_obj, input, filename, eval_flags);\n}\n\n/* run the function object produced by JS_EVAL_FLAG_COMPILE_ONLY */\nexport function JS_EvalFunction(ctx: JSContext, fun_obj: JSValue): JSValue {\n /* a compiled module (JS_TAG_MODULE in C): load its graph, link and evaluate it */\n if (hooks.js_module_eval_function !== null && fun_obj instanceof JSModuleDef) {\n return hooks.js_module_eval_function(ctx, fun_obj);\n }\n return JS_Call(ctx, fun_obj, ctx.global_obj, []);\n}\n\nexport function JS_RunGC(_rt: JSRuntime): void {}\n\n/* ---------------------------------------------------------------------\n Misc helpers\n --------------------------------------------------------------------- */\n\nexport function JS_NewString(ctx: JSContext, s: string): JSValue { return s; }\nexport function JS_NewStringLen(ctx: JSContext, s: string): JSValue { return s; }\nexport function JS_NewAtomString(ctx: JSContext, s: string): JSValue { return s; }\nexport function JS_NewBool(ctx: JSContext, v: boolean): JSValue { return v; }\nexport function JS_NewInt32(ctx: JSContext, v: number): JSValue { return v | 0; }\nexport function JS_NewUint32(ctx: JSContext, v: number): JSValue { return v >>> 0; }\nexport function JS_NewInt64(ctx: JSContext, v: number): JSValue { return v; }\nexport function JS_NewFloat64(ctx: JSContext, v: number): JSValue { return v; }\nexport function JS_NewCatchOffsetValue(v: number): JSValue { return v; }\n\nexport function JS_IsLiveObject(_rt: JSRuntime, obj: JSValue): boolean { return JS_IsObject(obj); }\n\n/* used by the interpreter: name of a class id */\nexport function JS_GetClassName(ctx: JSContext, class_id: JSClassID): string {\n return ctx.rt.atoms.toStr(ctx.rt.class_array[class_id]?.class_name ?? JS_ATOM_Object);\n}\n\n/* Object.prototype.toString tag helper */\nexport function js_object_class_name(ctx: JSContext, obj: JSObject): string {\n switch (JS_GetClassID(obj)) {\n case JSClassID.ARRAY: return 'Array';\n case JSClassID.ERROR: return 'Error';\n case JSClassID.ARGUMENTS:\n case JSClassID.MAPPED_ARGUMENTS: return 'Arguments';\n case JSClassID.BOOLEAN: return 'Boolean';\n case JSClassID.NUMBER: return 'Number';\n case JSClassID.STRING: return 'String';\n case JSClassID.DATE: return 'Date';\n case JSClassID.REGEXP: return 'RegExp';\n default:\n if (JS_IsFunction(ctx, obj)) return 'Function';\n return 'Object';\n }\n}\n\n/* copy the enumerable own properties of 'source' into 'target' (object spread) */\nexport function JS_CopyDataProperties(ctx: JSContext, target: JSValue, source: JSValue, excluded: JSValue, setprop: boolean): number {\n if (!JS_IsObject(source)) return 0;\n const tab = JS_GetOwnPropertyNamesInternal(ctx, source, JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!tab) return -1;\n for (const e of tab) {\n if (JS_IsObject(excluded)) {\n const ret = JS_GetOwnPropertyInternal(ctx, null, excluded, e.atom);\n if (ret < 0) return -1;\n if (ret) continue;\n }\n /* check enumerability (proxies may change it) */\n const desc = new_desc();\n const ret = JS_GetOwnPropertyInternal(ctx, desc, source, e.atom);\n if (ret < 0) return -1;\n if (!ret || !(desc.flags & JS_PROP_ENUMERABLE)) continue;\n const val = JS_GetProperty(ctx, source, e.atom);\n if (JS_IsException(val)) return -1;\n let r: number;\n if (setprop) r = JS_SetProperty(ctx, target, e.atom, val);\n else r = JS_DefinePropertyValue(ctx, target, e.atom, val, JS_PROP_C_W_E);\n if (r < 0) return -1;\n }\n return 0;\n}\n\n/* JSON-less value dump for debugging / qjs print */\nexport function JS_DumpValue(ctx: JSContext, val: JSValue): string {\n const s = JS_ToString(ctx, val);\n if (JS_IsException(s)) { JS_GetException(ctx); return '[exception]'; }\n return s as string;\n}\n\n/* mark an error object as already carrying its backtrace (the interpreter\n adds the backtrace of errors created without one at throw time) */\nexport function JS_SetErrorBacktraceDone(obj: JSValue): void {\n const m = js_get_meta(obj);\n if (m) m.has_backtrace = true;\n}\n"]}
|