jseption 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +25 -4
  2. package/dist/atoms.d.ts +1 -0
  3. package/dist/atoms.js +2 -1
  4. package/dist/atoms.js.map +1 -1
  5. package/dist/builtins/base64.d.ts +14 -0
  6. package/dist/builtins/base64.js +219 -0
  7. package/dist/builtins/base64.js.map +1 -0
  8. package/dist/builtins/bigint.js +3 -3
  9. package/dist/builtins/bigint.js.map +1 -1
  10. package/dist/builtins/date.d.ts +1 -0
  11. package/dist/builtins/date.js +26 -12
  12. package/dist/builtins/date.js.map +1 -1
  13. package/dist/builtins/error.js +9 -0
  14. package/dist/builtins/error.js.map +1 -1
  15. package/dist/builtins/float16.d.ts +3 -0
  16. package/dist/builtins/float16.js +69 -0
  17. package/dist/builtins/float16.js.map +1 -0
  18. package/dist/builtins/function.js +2 -2
  19. package/dist/builtins/index.js +9 -6
  20. package/dist/builtins/index.js.map +1 -1
  21. package/dist/builtins/iterator.d.ts +2 -0
  22. package/dist/builtins/iterator.js +624 -0
  23. package/dist/builtins/iterator.js.map +1 -0
  24. package/dist/builtins/json.d.ts +13 -1
  25. package/dist/builtins/json.js +283 -211
  26. package/dist/builtins/json.js.map +1 -1
  27. package/dist/builtins/mapset.js +365 -6
  28. package/dist/builtins/mapset.js.map +1 -1
  29. package/dist/builtins/math.js +203 -3
  30. package/dist/builtins/math.js.map +1 -1
  31. package/dist/builtins/native.js +6 -6
  32. package/dist/builtins/object.js +9 -2
  33. package/dist/builtins/object.js.map +1 -1
  34. package/dist/builtins/promise.js +31 -11
  35. package/dist/builtins/promise.js.map +1 -1
  36. package/dist/builtins/proxy.js +2 -2
  37. package/dist/builtins/reflect.js +6 -2
  38. package/dist/builtins/reflect.js.map +1 -1
  39. package/dist/builtins/regexp.js +74 -3
  40. package/dist/builtins/regexp.js.map +1 -1
  41. package/dist/builtins/string.js +1 -1
  42. package/dist/builtins/symbol.js +1 -1
  43. package/dist/builtins/symbol.js.map +1 -1
  44. package/dist/builtins/typedarray.d.ts +1 -0
  45. package/dist/builtins/typedarray.js +302 -32
  46. package/dist/builtins/typedarray.js.map +1 -1
  47. package/dist/builtins/weakref.js +7 -7
  48. package/dist/embed.js +3 -3
  49. package/dist/interpreter.js +15 -14
  50. package/dist/interpreter.js.map +1 -1
  51. package/dist/jit.d.ts +1 -0
  52. package/dist/jit.js +51 -13
  53. package/dist/jit.js.map +1 -1
  54. package/dist/jit_hook.d.ts +1 -0
  55. package/dist/jit_hook.js.map +1 -1
  56. package/dist/jit_runtime.d.ts +1 -1
  57. package/dist/jit_runtime.js +6 -6
  58. package/dist/jit_runtime.js.map +1 -1
  59. package/dist/jit_stack.d.ts +1 -0
  60. package/dist/jit_stack.js +2 -1
  61. package/dist/jit_stack.js.map +1 -1
  62. package/dist/jseption.d.ts +2 -0
  63. package/dist/jseption.js +1 -0
  64. package/dist/jseption.js.map +1 -1
  65. package/dist/membrane.js +1 -1
  66. package/dist/module.js +5 -3
  67. package/dist/module.js.map +1 -1
  68. package/dist/parser.js +26 -9
  69. package/dist/parser.js.map +1 -1
  70. package/dist/print.d.ts +12 -0
  71. package/dist/print.js +494 -0
  72. package/dist/print.js.map +1 -0
  73. package/dist/qjs.js +13 -10
  74. package/dist/qjs.js.map +1 -1
  75. package/dist/quickjs.d.ts +8 -0
  76. package/dist/quickjs.js +132 -53
  77. package/dist/quickjs.js.map +1 -1
  78. package/dist/std.d.ts +4 -2
  79. package/dist/std.js +42 -8
  80. package/dist/std.js.map +1 -1
  81. package/dist/values.d.ts +31 -27
  82. package/dist/values.js.map +1 -1
  83. package/dist/version.d.ts +1 -1
  84. package/dist/version.js +1 -1
  85. package/dist/version.js.map +1 -1
  86. package/package.json +1 -1
@@ -1,10 +1,208 @@
1
1
  /*
2
2
  * Math object (port of the Math part of quickjs.c)
3
3
  *
4
- * Every Math function maps numbers to numbers with spec defined results,
5
- * so all of them are borrowed host natives (builtins/native.ts).
4
+ * The functions that map numbers to numbers with spec defined results are
5
+ * borrowed host natives (builtins/native.ts). Math.f16round and
6
+ * Math.sumPrecise are ported, so that they exist and give the same results
7
+ * on every host.
6
8
  */
7
- import { JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_PROP_STRING_DEF, JS_PROP_DOUBLE_DEF, JS_OBJECT_DEF, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag, } from "../quickjs.js";
9
+ import { JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_PROP_DOUBLE_DEF, JS_OBJECT_DEF, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag, JS_ATOM_next, JS_EXCEPTION, JS_IsException, JS_GetIterator, JS_GetProperty, JS_IteratorNext, JS_IteratorClose, JS_ThrowTypeError, JS_ToFloat64, } from "../quickjs.js";
10
+ import { f16round } from "./float16.js";
11
+ const SP_LIMB_BITS = 56;
12
+ const SP_RND_BITS = SP_LIMB_BITS - 53;
13
+ /* we add one extra limb to avoid having to test for overflows during the sum */
14
+ const SUM_PRECISE_ACC_LEN = 39;
15
+ const SUM_PRECISE_COUNTER_INIT = 250;
16
+ const LIMB_MASK = (1n << BigInt(SP_LIMB_BITS)) - 1n;
17
+ const sp_f64 = new Float64Array(1);
18
+ const sp_u64 = new BigUint64Array(sp_f64.buffer);
19
+ class SumPrecise {
20
+ state = 0 /* SumPreciseState.FINITE */;
21
+ counter = SUM_PRECISE_COUNTER_INIT;
22
+ /* 'acc' contains n_limbs and acc[n_limbs - 1] may be 0. 0 limbs
23
+ indicates a minus zero result when state = FINITE */
24
+ n_limbs = 0;
25
+ acc = new Array(SUM_PRECISE_ACC_LEN).fill(0n);
26
+ renorm() {
27
+ let carry = 0n;
28
+ for (let i = 0; i < this.n_limbs; i++) {
29
+ const v = this.acc[i] + carry;
30
+ this.acc[i] = v & LIMB_MASK;
31
+ carry = v >> BigInt(SP_LIMB_BITS);
32
+ }
33
+ /* we add a failsafe but it should be never reached in a
34
+ reasonnable amount of time */
35
+ if (carry !== 0n && this.n_limbs < SUM_PRECISE_ACC_LEN)
36
+ this.acc[this.n_limbs++] = carry;
37
+ }
38
+ add(d) {
39
+ sp_f64[0] = d;
40
+ const a = sp_u64[0];
41
+ const sgn = Number(a >> 63n);
42
+ const e = Number((a >> 52n) & 0x7ffn);
43
+ let m = a & ((1n << 52n) - 1n);
44
+ if (e === 2047) {
45
+ if (m === 0n) {
46
+ /* +/- infinity */
47
+ if (this.state === 3 /* SumPreciseState.NAN */ ||
48
+ (this.state === 2 /* SumPreciseState.MINUS_INFINITY */ && !sgn) ||
49
+ (this.state === 1 /* SumPreciseState.INFINITY */ && sgn)) {
50
+ this.state = 3 /* SumPreciseState.NAN */;
51
+ }
52
+ else {
53
+ this.state = 1 /* SumPreciseState.INFINITY */ + sgn;
54
+ }
55
+ }
56
+ else {
57
+ /* NaN */
58
+ this.state = 3 /* SumPreciseState.NAN */;
59
+ }
60
+ return;
61
+ }
62
+ let p, shift;
63
+ if (e === 0) {
64
+ if (m === 0n) {
65
+ /* zero */
66
+ if (this.n_limbs === 0 && !sgn)
67
+ this.n_limbs = 1;
68
+ return;
69
+ }
70
+ /* subnormal */
71
+ p = 0;
72
+ shift = 0;
73
+ }
74
+ else {
75
+ /* Note: we sum even if state != FINITE to avoid tests */
76
+ m |= 1n << 52n;
77
+ shift = e - 1;
78
+ /* 'p' is the position of a0 in acc */
79
+ p = Math.floor(shift / SP_LIMB_BITS);
80
+ shift %= SP_LIMB_BITS;
81
+ }
82
+ const a0 = (m << BigInt(shift)) & LIMB_MASK;
83
+ const a1 = m >> BigInt(SP_LIMB_BITS - shift);
84
+ if (!sgn) {
85
+ this.acc[p] += a0;
86
+ this.acc[p + 1] += a1;
87
+ }
88
+ else {
89
+ this.acc[p] -= a0;
90
+ this.acc[p + 1] -= a1;
91
+ }
92
+ this.n_limbs = Math.max(this.n_limbs, p + 2);
93
+ if (--this.counter === 0) {
94
+ this.counter = SUM_PRECISE_COUNTER_INIT;
95
+ this.renorm();
96
+ }
97
+ }
98
+ result() {
99
+ switch (this.state) {
100
+ case 1 /* SumPreciseState.INFINITY */: return Infinity;
101
+ case 2 /* SumPreciseState.MINUS_INFINITY */: return -Infinity;
102
+ case 3 /* SumPreciseState.NAN */: return NaN;
103
+ }
104
+ this.renorm();
105
+ const acc = this.acc;
106
+ let n = this.n_limbs;
107
+ /* minus zero result */
108
+ if (n === 0)
109
+ return -0;
110
+ /* normalize */
111
+ while (n > 0 && acc[n - 1] === 0n)
112
+ n--;
113
+ /* zero result. The spec tells it is always positive in the finite case */
114
+ if (n === 0)
115
+ return 0;
116
+ const is_neg = acc[n - 1] < 0n;
117
+ if (is_neg) {
118
+ /* negate */
119
+ let carry = 1n;
120
+ for (let i = 0; i < n - 1; i++) {
121
+ const v = LIMB_MASK - acc[i] + carry;
122
+ carry = v >> BigInt(SP_LIMB_BITS);
123
+ acc[i] = v & LIMB_MASK;
124
+ }
125
+ acc[n - 1] = -acc[n - 1] + carry - 1n;
126
+ while (n > 1 && acc[n - 1] === 0n)
127
+ n--;
128
+ }
129
+ const sign = is_neg ? 1n << 63n : 0n;
130
+ /* subnormal case */
131
+ if (n === 1 && acc[0] < (1n << 52n)) {
132
+ sp_u64[0] = sign | acc[0];
133
+ return sp_f64[0];
134
+ }
135
+ /* normal case */
136
+ let e = n * SP_LIMB_BITS;
137
+ let p = n - 1;
138
+ let m = acc[p];
139
+ const shift = (64 - m.toString(2).length) - (64 - SP_LIMB_BITS); /* clz64(m) - (64 - SP_LIMB_BITS) */
140
+ e = e - shift - 52;
141
+ if (shift !== 0) {
142
+ m <<= BigInt(shift);
143
+ if (p > 0) {
144
+ p--;
145
+ const shift1 = SP_LIMB_BITS - shift;
146
+ const nz = acc[p] & ((1n << BigInt(shift1)) - 1n);
147
+ m = m | (acc[p] >> BigInt(shift1)) | (nz !== 0n ? 1n : 0n);
148
+ }
149
+ }
150
+ const rnd_mask = (1n << BigInt(SP_RND_BITS)) - 1n;
151
+ if ((m & rnd_mask) === (1n << BigInt(SP_RND_BITS - 1))) {
152
+ /* see if the LSB part is non zero for the final rounding */
153
+ while (p > 0) {
154
+ p--;
155
+ if (acc[p] !== 0n) {
156
+ m |= 1n;
157
+ break;
158
+ }
159
+ }
160
+ }
161
+ /* rounding to nearest with ties to even */
162
+ const addend = (1n << BigInt(SP_RND_BITS - 1)) - 1n + ((m >> BigInt(SP_RND_BITS)) & 1n);
163
+ m = (m + addend) >> BigInt(SP_RND_BITS);
164
+ /* handle overflow in the rounding */
165
+ if (m === 1n << 53n)
166
+ e++;
167
+ if (e >= 2047) {
168
+ /* infinity */
169
+ return is_neg ? -Infinity : Infinity;
170
+ }
171
+ m &= (1n << 52n) - 1n;
172
+ sp_u64[0] = sign | (BigInt(e) << 52n) | m;
173
+ return sp_f64[0];
174
+ }
175
+ }
176
+ function js_math_sumPrecise(ctx, this_val, argv) {
177
+ const iter = JS_GetIterator(ctx, argv[0], false);
178
+ if (JS_IsException(iter))
179
+ return JS_EXCEPTION;
180
+ const next = JS_GetProperty(ctx, iter, JS_ATOM_next);
181
+ if (JS_IsException(next))
182
+ return JS_EXCEPTION;
183
+ const s = new SumPrecise();
184
+ const pdone = { done: 0 };
185
+ for (;;) {
186
+ const item = JS_IteratorNext(ctx, iter, next, [], pdone);
187
+ if (JS_IsException(item))
188
+ return JS_EXCEPTION;
189
+ if (pdone.done)
190
+ break;
191
+ if (typeof item !== 'number') {
192
+ JS_ThrowTypeError(ctx, 'not a number');
193
+ JS_IteratorClose(ctx, iter, true);
194
+ return JS_EXCEPTION;
195
+ }
196
+ s.add(item);
197
+ }
198
+ return s.result();
199
+ }
200
+ function js_math_f16round(ctx, this_val, argv) {
201
+ const a = JS_ToFloat64(ctx, argv[0]);
202
+ if (JS_IsException(a))
203
+ return JS_EXCEPTION;
204
+ return f16round(a);
205
+ }
8
206
  const M = Math;
9
207
  const js_math_funcs = [
10
208
  JS_NATIVE_DEF('min', 2, M.min),
@@ -40,9 +238,11 @@ const js_math_funcs = [
40
238
  JS_NATIVE_DEF('cbrt', 1, M.cbrt),
41
239
  JS_NATIVE_DEF('hypot', 2, M.hypot),
42
240
  JS_NATIVE_DEF('random', 0, M.random),
241
+ JS_CFUNC_DEF('f16round', 1, js_math_f16round),
43
242
  JS_NATIVE_DEF('fround', 1, M.fround),
44
243
  JS_NATIVE_DEF('imul', 2, M.imul),
45
244
  JS_NATIVE_DEF('clz32', 1, M.clz32),
245
+ JS_CFUNC_DEF('sumPrecise', 1, js_math_sumPrecise),
46
246
  JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Math', JS_PROP_CONFIGURABLE),
47
247
  JS_PROP_DOUBLE_DEF('E', 2.718281828459045, 0),
48
248
  JS_PROP_DOUBLE_DEF('LN10', 2.302585092994046, 0),
@@ -1 +1 @@
1
- {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/builtins/math.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Math object (port of the Math part of quickjs.c)\n *\n * Every Math function maps numbers to numbers with spec defined results,\n * so all of them are borrowed host natives (builtins/native.ts).\n */\nimport {\n JSContext, JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_PROP_STRING_DEF, JS_PROP_DOUBLE_DEF, JS_OBJECT_DEF,\n JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag,\n} from '../quickjs.ts';\n\nconst M = Math;\n\nconst js_math_funcs = [\n JS_NATIVE_DEF('min', 2, M.min),\n JS_NATIVE_DEF('max', 2, M.max),\n JS_NATIVE_DEF('abs', 1, M.abs),\n JS_NATIVE_DEF('floor', 1, M.floor),\n JS_NATIVE_DEF('ceil', 1, M.ceil),\n JS_NATIVE_DEF('round', 1, M.round),\n JS_NATIVE_DEF('sqrt', 1, M.sqrt),\n\n JS_NATIVE_DEF('acos', 1, M.acos),\n JS_NATIVE_DEF('asin', 1, M.asin),\n JS_NATIVE_DEF('atan', 1, M.atan),\n JS_NATIVE_DEF('atan2', 2, M.atan2),\n JS_NATIVE_DEF('cos', 1, M.cos),\n JS_NATIVE_DEF('exp', 1, M.exp),\n JS_NATIVE_DEF('log', 1, M.log),\n JS_NATIVE_DEF('pow', 2, M.pow),\n JS_NATIVE_DEF('sin', 1, M.sin),\n JS_NATIVE_DEF('tan', 1, M.tan),\n /* ES6 */\n JS_NATIVE_DEF('trunc', 1, M.trunc),\n JS_NATIVE_DEF('sign', 1, M.sign),\n JS_NATIVE_DEF('cosh', 1, M.cosh),\n JS_NATIVE_DEF('sinh', 1, M.sinh),\n JS_NATIVE_DEF('tanh', 1, M.tanh),\n JS_NATIVE_DEF('acosh', 1, M.acosh),\n JS_NATIVE_DEF('asinh', 1, M.asinh),\n JS_NATIVE_DEF('atanh', 1, M.atanh),\n JS_NATIVE_DEF('expm1', 1, M.expm1),\n JS_NATIVE_DEF('log1p', 1, M.log1p),\n JS_NATIVE_DEF('log2', 1, M.log2),\n JS_NATIVE_DEF('log10', 1, M.log10),\n JS_NATIVE_DEF('cbrt', 1, M.cbrt),\n JS_NATIVE_DEF('hypot', 2, M.hypot),\n JS_NATIVE_DEF('random', 0, M.random),\n JS_NATIVE_DEF('fround', 1, M.fround),\n JS_NATIVE_DEF('imul', 2, M.imul),\n JS_NATIVE_DEF('clz32', 1, M.clz32),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Math', JS_PROP_CONFIGURABLE),\n JS_PROP_DOUBLE_DEF('E', 2.718281828459045, 0),\n JS_PROP_DOUBLE_DEF('LN10', 2.302585092994046, 0),\n JS_PROP_DOUBLE_DEF('LN2', 0.6931471805599453, 0),\n JS_PROP_DOUBLE_DEF('LOG2E', 1.4426950408889634, 0),\n JS_PROP_DOUBLE_DEF('LOG10E', 0.4342944819032518, 0),\n JS_PROP_DOUBLE_DEF('PI', 3.141592653589793, 0),\n JS_PROP_DOUBLE_DEF('SQRT1_2', 0.7071067811865476, 0),\n JS_PROP_DOUBLE_DEF('SQRT2', 1.4142135623730951, 0),\n];\n\nconst js_math_obj = [\n JS_OBJECT_DEF('Math', js_math_funcs, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicMath(ctx: JSContext): void {\n JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_math_obj);\n}\n"]}
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/builtins/math.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Math object (port of the Math part of quickjs.c)\n *\n * The functions that map numbers to numbers with spec defined results are\n * borrowed host natives (builtins/native.ts). Math.f16round and\n * Math.sumPrecise are ported, so that they exist and give the same results\n * on every host.\n */\nimport {\n JSContext, JSValue, JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_PROP_DOUBLE_DEF,\n JS_OBJECT_DEF, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag, JS_ATOM_next, JS_EXCEPTION,\n JS_IsException, JS_GetIterator, JS_GetProperty, JS_IteratorNext, JS_IteratorClose, JS_ThrowTypeError, JS_ToFloat64,\n} from '../quickjs.ts';\nimport { f16round } from './float16.ts';\n\n/* ---------------------------------------------------------------------\n Math.sumPrecise (js_math_sumPrecise)\n\n The sum is exact: the accumulator is a fixed point number of\n SUM_PRECISE_ACC_LEN limbs of SP_LIMB_BITS bits (in signed 64 bit\n integers in the C version, here in bigints, which hold the same values:\n the counter renormalizes before a limb could overflow), and only the\n final result is rounded.\n --------------------------------------------------------------------- */\n\nconst enum SumPreciseState {\n FINITE,\n INFINITY,\n MINUS_INFINITY, /* must be after INFINITY */\n NAN, /* must be after MINUS_INFINITY */\n}\n\nconst SP_LIMB_BITS = 56;\nconst SP_RND_BITS = SP_LIMB_BITS - 53;\n/* we add one extra limb to avoid having to test for overflows during the sum */\nconst SUM_PRECISE_ACC_LEN = 39;\nconst SUM_PRECISE_COUNTER_INIT = 250;\nconst LIMB_MASK = (1n << BigInt(SP_LIMB_BITS)) - 1n;\n\nconst sp_f64 = new Float64Array(1);\nconst sp_u64 = new BigUint64Array(sp_f64.buffer);\n\nclass SumPrecise {\n state = SumPreciseState.FINITE;\n counter = SUM_PRECISE_COUNTER_INIT;\n /* 'acc' contains n_limbs and acc[n_limbs - 1] may be 0. 0 limbs\n indicates a minus zero result when state = FINITE */\n n_limbs = 0;\n acc: bigint[] = new Array(SUM_PRECISE_ACC_LEN).fill(0n);\n\n renorm(): void {\n let carry = 0n;\n for (let i = 0; i < this.n_limbs; i++) {\n const v = this.acc[i] + carry;\n this.acc[i] = v & LIMB_MASK;\n carry = v >> BigInt(SP_LIMB_BITS);\n }\n /* we add a failsafe but it should be never reached in a\n reasonnable amount of time */\n if (carry !== 0n && this.n_limbs < SUM_PRECISE_ACC_LEN) this.acc[this.n_limbs++] = carry;\n }\n\n add(d: number): void {\n sp_f64[0] = d;\n const a = sp_u64[0];\n const sgn = Number(a >> 63n);\n const e = Number((a >> 52n) & 0x7ffn);\n let m = a & ((1n << 52n) - 1n);\n if (e === 2047) {\n if (m === 0n) {\n /* +/- infinity */\n if (this.state === SumPreciseState.NAN ||\n (this.state === SumPreciseState.MINUS_INFINITY && !sgn) ||\n (this.state === SumPreciseState.INFINITY && sgn)) {\n this.state = SumPreciseState.NAN;\n } else {\n this.state = SumPreciseState.INFINITY + sgn;\n }\n } else {\n /* NaN */\n this.state = SumPreciseState.NAN;\n }\n return;\n }\n let p: number, shift: number;\n if (e === 0) {\n if (m === 0n) {\n /* zero */\n if (this.n_limbs === 0 && !sgn) this.n_limbs = 1;\n return;\n }\n /* subnormal */\n p = 0;\n shift = 0;\n } else {\n /* Note: we sum even if state != FINITE to avoid tests */\n m |= 1n << 52n;\n shift = e - 1;\n /* 'p' is the position of a0 in acc */\n p = Math.floor(shift / SP_LIMB_BITS);\n shift %= SP_LIMB_BITS;\n }\n const a0 = (m << BigInt(shift)) & LIMB_MASK;\n const a1 = m >> BigInt(SP_LIMB_BITS - shift);\n if (!sgn) {\n this.acc[p] += a0;\n this.acc[p + 1] += a1;\n } else {\n this.acc[p] -= a0;\n this.acc[p + 1] -= a1;\n }\n this.n_limbs = Math.max(this.n_limbs, p + 2);\n if (--this.counter === 0) {\n this.counter = SUM_PRECISE_COUNTER_INIT;\n this.renorm();\n }\n }\n\n result(): number {\n switch (this.state) {\n case SumPreciseState.INFINITY: return Infinity;\n case SumPreciseState.MINUS_INFINITY: return -Infinity;\n case SumPreciseState.NAN: return NaN;\n }\n this.renorm();\n const acc = this.acc;\n let n = this.n_limbs;\n /* minus zero result */\n if (n === 0) return -0;\n /* normalize */\n while (n > 0 && acc[n - 1] === 0n) n--;\n /* zero result. The spec tells it is always positive in the finite case */\n if (n === 0) return 0;\n const is_neg = acc[n - 1] < 0n;\n if (is_neg) {\n /* negate */\n let carry = 1n;\n for (let i = 0; i < n - 1; i++) {\n const v = LIMB_MASK - acc[i] + carry;\n carry = v >> BigInt(SP_LIMB_BITS);\n acc[i] = v & LIMB_MASK;\n }\n acc[n - 1] = -acc[n - 1] + carry - 1n;\n while (n > 1 && acc[n - 1] === 0n) n--;\n }\n const sign = is_neg ? 1n << 63n : 0n;\n /* subnormal case */\n if (n === 1 && acc[0] < (1n << 52n)) {\n sp_u64[0] = sign | acc[0];\n return sp_f64[0];\n }\n /* normal case */\n let e = n * SP_LIMB_BITS;\n let p = n - 1;\n let m = acc[p];\n const shift = (64 - m.toString(2).length) - (64 - SP_LIMB_BITS); /* clz64(m) - (64 - SP_LIMB_BITS) */\n e = e - shift - 52;\n if (shift !== 0) {\n m <<= BigInt(shift);\n if (p > 0) {\n p--;\n const shift1 = SP_LIMB_BITS - shift;\n const nz = acc[p] & ((1n << BigInt(shift1)) - 1n);\n m = m | (acc[p] >> BigInt(shift1)) | (nz !== 0n ? 1n : 0n);\n }\n }\n const rnd_mask = (1n << BigInt(SP_RND_BITS)) - 1n;\n if ((m & rnd_mask) === (1n << BigInt(SP_RND_BITS - 1))) {\n /* see if the LSB part is non zero for the final rounding */\n while (p > 0) {\n p--;\n if (acc[p] !== 0n) {\n m |= 1n;\n break;\n }\n }\n }\n /* rounding to nearest with ties to even */\n const addend = (1n << BigInt(SP_RND_BITS - 1)) - 1n + ((m >> BigInt(SP_RND_BITS)) & 1n);\n m = (m + addend) >> BigInt(SP_RND_BITS);\n /* handle overflow in the rounding */\n if (m === 1n << 53n) e++;\n if (e >= 2047) {\n /* infinity */\n return is_neg ? -Infinity : Infinity;\n }\n m &= (1n << 52n) - 1n;\n sp_u64[0] = sign | (BigInt(e) << 52n) | m;\n return sp_f64[0];\n }\n}\n\nfunction js_math_sumPrecise(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const iter = JS_GetIterator(ctx, argv[0], false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next)) return JS_EXCEPTION;\n const s = new SumPrecise();\n const pdone = { done: 0 };\n for (;;) {\n const item = JS_IteratorNext(ctx, iter, next, [], pdone);\n if (JS_IsException(item)) return JS_EXCEPTION;\n if (pdone.done) break;\n if (typeof item !== 'number') {\n JS_ThrowTypeError(ctx, 'not a number');\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n s.add(item);\n }\n return s.result();\n}\n\nfunction js_math_f16round(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const a = JS_ToFloat64(ctx, argv[0]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n return f16round(a as number);\n}\n\nconst M = Math;\n\nconst js_math_funcs = [\n JS_NATIVE_DEF('min', 2, M.min),\n JS_NATIVE_DEF('max', 2, M.max),\n JS_NATIVE_DEF('abs', 1, M.abs),\n JS_NATIVE_DEF('floor', 1, M.floor),\n JS_NATIVE_DEF('ceil', 1, M.ceil),\n JS_NATIVE_DEF('round', 1, M.round),\n JS_NATIVE_DEF('sqrt', 1, M.sqrt),\n\n JS_NATIVE_DEF('acos', 1, M.acos),\n JS_NATIVE_DEF('asin', 1, M.asin),\n JS_NATIVE_DEF('atan', 1, M.atan),\n JS_NATIVE_DEF('atan2', 2, M.atan2),\n JS_NATIVE_DEF('cos', 1, M.cos),\n JS_NATIVE_DEF('exp', 1, M.exp),\n JS_NATIVE_DEF('log', 1, M.log),\n JS_NATIVE_DEF('pow', 2, M.pow),\n JS_NATIVE_DEF('sin', 1, M.sin),\n JS_NATIVE_DEF('tan', 1, M.tan),\n /* ES6 */\n JS_NATIVE_DEF('trunc', 1, M.trunc),\n JS_NATIVE_DEF('sign', 1, M.sign),\n JS_NATIVE_DEF('cosh', 1, M.cosh),\n JS_NATIVE_DEF('sinh', 1, M.sinh),\n JS_NATIVE_DEF('tanh', 1, M.tanh),\n JS_NATIVE_DEF('acosh', 1, M.acosh),\n JS_NATIVE_DEF('asinh', 1, M.asinh),\n JS_NATIVE_DEF('atanh', 1, M.atanh),\n JS_NATIVE_DEF('expm1', 1, M.expm1),\n JS_NATIVE_DEF('log1p', 1, M.log1p),\n JS_NATIVE_DEF('log2', 1, M.log2),\n JS_NATIVE_DEF('log10', 1, M.log10),\n JS_NATIVE_DEF('cbrt', 1, M.cbrt),\n JS_NATIVE_DEF('hypot', 2, M.hypot),\n JS_NATIVE_DEF('random', 0, M.random),\n JS_CFUNC_DEF('f16round', 1, js_math_f16round),\n JS_NATIVE_DEF('fround', 1, M.fround),\n JS_NATIVE_DEF('imul', 2, M.imul),\n JS_NATIVE_DEF('clz32', 1, M.clz32),\n JS_CFUNC_DEF('sumPrecise', 1, js_math_sumPrecise),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Math', JS_PROP_CONFIGURABLE),\n JS_PROP_DOUBLE_DEF('E', 2.718281828459045, 0),\n JS_PROP_DOUBLE_DEF('LN10', 2.302585092994046, 0),\n JS_PROP_DOUBLE_DEF('LN2', 0.6931471805599453, 0),\n JS_PROP_DOUBLE_DEF('LOG2E', 1.4426950408889634, 0),\n JS_PROP_DOUBLE_DEF('LOG10E', 0.4342944819032518, 0),\n JS_PROP_DOUBLE_DEF('PI', 3.141592653589793, 0),\n JS_PROP_DOUBLE_DEF('SQRT1_2', 0.7071067811865476, 0),\n JS_PROP_DOUBLE_DEF('SQRT2', 1.4142135623730951, 0),\n];\n\nconst js_math_obj = [\n JS_OBJECT_DEF('Math', js_math_funcs, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicMath(ctx: JSContext): void {\n JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_math_obj);\n}\n"]}
@@ -126,7 +126,7 @@ function fix_wrapper(ctx, v, p) {
126
126
  value = Symbol.prototype.valueOf.call(v);
127
127
  break;
128
128
  case BigInt.prototype:
129
- class_id = 33 /* JSClassID.BIG_INT */;
129
+ class_id = 34 /* JSClassID.BIG_INT */;
130
130
  value = BigInt.prototype.valueOf.call(v);
131
131
  break;
132
132
  default: return;
@@ -210,11 +210,11 @@ function make_fix_iterator(host_proto, class_id) {
210
210
  return v;
211
211
  };
212
212
  }
213
- export const fix_array_iterator = make_fix_iterator(HOST_ARRAY_ITERATOR_PROTO, 40 /* JSClassID.ARRAY_ITERATOR */);
214
- export const fix_string_iterator = make_fix_iterator(HOST_STRING_ITERATOR_PROTO, 41 /* JSClassID.STRING_ITERATOR */);
215
- export const fix_map_iterator = make_fix_iterator(HOST_MAP_ITERATOR_PROTO, 38 /* JSClassID.MAP_ITERATOR */);
216
- export const fix_set_iterator = make_fix_iterator(HOST_SET_ITERATOR_PROTO, 39 /* JSClassID.SET_ITERATOR */);
217
- export const fix_regexp_string_iterator = make_fix_iterator(HOST_REGEXP_STRING_ITERATOR_PROTO, 42 /* JSClassID.REGEXP_STRING_ITERATOR */);
213
+ export const fix_array_iterator = make_fix_iterator(HOST_ARRAY_ITERATOR_PROTO, 41 /* JSClassID.ARRAY_ITERATOR */);
214
+ export const fix_string_iterator = make_fix_iterator(HOST_STRING_ITERATOR_PROTO, 42 /* JSClassID.STRING_ITERATOR */);
215
+ export const fix_map_iterator = make_fix_iterator(HOST_MAP_ITERATOR_PROTO, 39 /* JSClassID.MAP_ITERATOR */);
216
+ export const fix_set_iterator = make_fix_iterator(HOST_SET_ITERATOR_PROTO, 40 /* JSClassID.SET_ITERATOR */);
217
+ export const fix_regexp_string_iterator = make_fix_iterator(HOST_REGEXP_STRING_ITERATOR_PROTO, 43 /* JSClassID.REGEXP_STRING_ITERATOR */);
218
218
  /* iterator results `{ value, done }` are fresh host objects */
219
219
  export function fix_iter_result(ctx, r) {
220
220
  if (typeof r === 'object' && r !== null && Object.getPrototypeOf(r) === HOST_OBJECT_PROTO) {
@@ -107,6 +107,13 @@ export function js_set_prototype_internal(ctx, obj, proto_val, throw_flag) {
107
107
  }
108
108
  return ret;
109
109
  }
110
+ /* ported rather than forwarded to the host: the guest Object.prototype is an ordinary host
111
+ object, so the host would let its prototype change */
112
+ function js_object_setPrototypeOf(ctx, this_val, argv) {
113
+ if (js_set_prototype_internal(ctx, argv[0], argv[1], true) < 0)
114
+ return JS_EXCEPTION;
115
+ return argv[0];
116
+ }
110
117
  /* magic = 1 if called as Reflect.defineProperty */
111
118
  export function js_object_defineProperty(ctx, this_val, argv, magic) {
112
119
  const obj = argv[0];
@@ -419,7 +426,7 @@ function js_object___getClass(ctx, this_val, argv) {
419
426
  const v = argv[0];
420
427
  if (Q.JS_IsObject(v)) {
421
428
  let class_id = Q.JS_GetClassID(v);
422
- if (class_id === 44 /* JSClassID.PROXY */ && JS_IsFunction(ctx, v))
429
+ if (class_id === 45 /* JSClassID.PROXY */ && JS_IsFunction(ctx, v))
423
430
  class_id = 13 /* JSClassID.BYTECODE_FUNCTION */;
424
431
  atom = ctx.rt.class_array[class_id].class_name;
425
432
  }
@@ -530,7 +537,7 @@ function js_object___lookupGetter__(ctx, this_val, argv, setter) {
530
537
  const js_object_funcs = [
531
538
  JS_CFUNC_DEF('create', 2, js_object_create),
532
539
  JS_CFUNC_MAGIC_DEF('getPrototypeOf', 1, js_object_getPrototypeOf, 0),
533
- JS_NATIVE_DEF('setPrototypeOf', 2, Object.setPrototypeOf),
540
+ JS_CFUNC_DEF('setPrototypeOf', 2, js_object_setPrototypeOf),
534
541
  JS_CFUNC_MAGIC_DEF('defineProperty', 3, js_object_defineProperty, 0),
535
542
  JS_CFUNC_DEF('defineProperties', 2, js_object_defineProperties),
536
543
  JS_NATIVE_DEF('getOwnPropertyNames', 1, Object.getOwnPropertyNames, fix_array),
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/builtins/object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Object objects (port of the Object part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSAtom, JSPropertyDescriptor, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsNull, JS_IsObject, JS_IsFunction, JS_IsArray, JS_NewObject, JS_NewObjectProto, JS_NewArray, js_create_array,\n JS_ToObject, JS_ValueToAtom, JS_ATOM_NULL, JS_AtomToValue, JS_AtomToString, JS_GetProperty, JS_GetPropertyUint32,\n JS_GetPropertyInt64, JS_GetPrototype, JS_SetPrototypeInternal, JS_IsExtensible, JS_PreventExtensions,\n JS_GetOwnPropertyInternal, JS_GetOwnPropertyNamesInternal, JS_DefineProperty, JS_DefinePropertyValue,\n JS_DefinePropertyValueValue, JS_DefinePropertyValueInt64, js_obj_to_desc, new_desc, js_create_from_ctor,\n js_get_length64, JS_CopyDataProperties, JS_GetIterator, JS_IteratorNext, JS_IteratorClose, JS_Call, JS_Invoke,\n js_same_value, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject, JS_NewGlobalCConstructor,\n JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_NATIVE_DEF, JS_CFUNC_MAGIC_DEF, JS_CGETSET_DEF,\n JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_C_W_E, JS_PROP_GETSET, JS_PROP_THROW,\n JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_ENUMERABLE, JS_PROP_HAS_GET, JS_PROP_HAS_SET,\n JS_GPN_STRING_MASK, JS_GPN_SYMBOL_MASK, JS_GPN_ENUM_ONLY,\n JS_ATOM_Array, JS_ATOM_Function, JS_ATOM_Object, JS_ATOM_Symbol_toStringTag, JS_ATOM_toString, JS_ATOM_next,\n JS_ATOM_get, JS_ATOM_set, JS_ATOM_value, JS_ATOM_writable, JS_ATOM_enumerable, JS_ATOM_configurable,\n JS_ATOM_empty_string, JS_ATOM___proto__,\n} from '../quickjs.ts';\nimport { fix_any, fix_array, fix_entries } from './native.ts';\n\n/* same values as JSIteratorKind in builtins/index.ts (JS_ITERATOR_KIND_xxx in C) */\nconst enum ObjIterKind { KEY, VALUE, KEY_AND_VALUE }\n\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/* check_function() in C */\nfunction check_function(ctx: JSContext, obj: JSValue): number {\n if (JS_IsFunction(ctx, obj)) return 0;\n JS_ThrowTypeError(ctx, 'not a function');\n return -1;\n}\n\n/* JS_GetActiveFunction() in C */\nfunction JS_GetActiveFunction(ctx: JSContext): JSValue {\n return ctx.rt.current_stack_frame ? ctx.rt.current_stack_frame.cur_func : undefined;\n}\n\nexport function JS_DefinePropertyDesc(ctx: JSContext, obj: JSValue, prop: JSAtom, desc: JSValue, flags: number): number {\n const d = new_desc();\n if (js_obj_to_desc(ctx, d, desc) < 0) return -1;\n return JS_DefineProperty(ctx, obj, prop, d.value, d.getter, d.setter, d.flags | flags);\n}\n\nexport function JS_ObjectDefineProperties(ctx: JSContext, obj: JSValue, properties: JSValue): number {\n if (!JS_IsObject(obj)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n const props = JS_ToObject(ctx, properties);\n if (JS_IsException(props)) return -1;\n const p = props as JSObject;\n /* XXX: not done in the same order as the spec */\n const atoms = JS_GetOwnPropertyNamesInternal(ctx, p, JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!atoms) return -1;\n for (const e of atoms) {\n const desc = JS_GetProperty(ctx, props, e.atom);\n if (JS_IsException(desc)) return -1;\n if (JS_DefinePropertyDesc(ctx, obj, e.atom, desc, JS_PROP_THROW) < 0) return -1;\n }\n return 0;\n}\n\nfunction js_object_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsUndefined(new_target) && new_target !== JS_GetActiveFunction(ctx)) {\n return js_create_from_ctor(ctx, new_target, JSClassID.OBJECT);\n }\n const v = argv[0];\n if (v === null || v === undefined) return JS_NewObject(ctx);\n return JS_ToObject(ctx, v);\n}\n\nfunction js_object_create(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const proto = argv[0];\n if (!JS_IsObject(proto) && !JS_IsNull(proto)) return JS_ThrowTypeError(ctx, 'not a prototype');\n const obj = JS_NewObjectProto(ctx, proto);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const props = argv[1];\n if (!JS_IsUndefined(props)) {\n if (JS_ObjectDefineProperties(ctx, obj, props)) return JS_EXCEPTION;\n }\n return obj;\n}\n\nexport function js_object_getPrototypeOf(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const val = argv[0];\n if (!JS_IsObject(val)) {\n /* ES6 feature non compatible with ES5.1: primitive types are accepted */\n if (magic || JS_IsNull(val) || JS_IsUndefined(val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n }\n return JS_GetPrototype(ctx, val);\n}\n\n/* Wrapper around the core JS_SetPrototypeInternal reproducing the argument\n checks of the C version: a non object/null prototype is always a\n TypeError, a non object target is a TypeError unless throw_flag is set\n (then primitives are accepted), and a proxy trap returning false in\n throw mode is a TypeError. */\nexport function js_set_prototype_internal(ctx: JSContext, obj: JSValue, proto_val: JSValue, throw_flag: boolean): number {\n if (throw_flag) {\n if (JS_IsNull(obj) || JS_IsUndefined(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n } else {\n if (!JS_IsObject(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n }\n if (!JS_IsObject(proto_val) && !JS_IsNull(proto_val)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n const ret = JS_SetPrototypeInternal(ctx, obj, proto_val, throw_flag);\n if (ret === 0 && throw_flag) {\n /* only a proxy setPrototypeOf trap can return false here without\n having thrown already */\n JS_ThrowTypeError(ctx, 'proxy: bad prototype');\n return -1;\n }\n return ret;\n}\n\n/* magic = 1 if called as Reflect.defineProperty */\nexport function js_object_defineProperty(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const obj = argv[0];\n const prop = argv[1];\n const desc = argv[2];\n if (!JS_IsObject(obj)) return JS_ThrowTypeErrorNotAnObject(ctx);\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let flags = 0;\n if (!magic) flags |= JS_PROP_THROW;\n const ret = JS_DefinePropertyDesc(ctx, obj, atom, desc, flags);\n if (ret < 0) return JS_EXCEPTION;\n if (magic) return ret !== 0;\n return obj;\n}\n\nfunction js_object_defineProperties(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // defineProperties(obj, properties)\n const obj = argv[0];\n if (JS_ObjectDefineProperties(ctx, obj, argv[1])) return JS_EXCEPTION;\n return obj;\n}\n\n/* magic = 1 if called as __defineSetter__ */\nfunction js_object___defineGetter__(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const prop = argv[0];\n const value = argv[1];\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n if (check_function(ctx, value)) return JS_EXCEPTION;\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let flags = JS_PROP_THROW | JS_PROP_HAS_ENUMERABLE | JS_PROP_ENUMERABLE | JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE;\n let get: JSValue, set: JSValue;\n if (magic) {\n get = undefined;\n set = value;\n flags |= JS_PROP_HAS_SET;\n } else {\n get = value;\n set = undefined;\n flags |= JS_PROP_HAS_GET;\n }\n const ret = JS_DefineProperty(ctx, obj, atom, undefined, get, set, flags);\n if (ret < 0) return JS_EXCEPTION;\n return undefined;\n}\n\nexport function js_object_getOwnPropertyDescriptor(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n let obj: JSValue;\n if (magic) {\n /* Reflect.getOwnPropertyDescriptor case */\n if (!JS_IsObject(argv[0])) return JS_ThrowTypeErrorNotAnObject(ctx);\n obj = argv[0];\n } else {\n obj = JS_ToObject(ctx, argv[0]);\n if (JS_IsException(obj)) return obj;\n }\n const prop = argv[1];\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let ret: JSValue = undefined;\n if (JS_IsObject(obj)) {\n const desc = new_desc();\n const res = JS_GetOwnPropertyInternal(ctx, desc, obj, atom);\n if (res < 0) return JS_EXCEPTION;\n if (res) {\n ret = JS_NewObject(ctx);\n if (JS_IsException(ret)) return JS_EXCEPTION;\n const flags = JS_PROP_C_W_E | JS_PROP_THROW;\n if (desc.flags & JS_PROP_GETSET) {\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_get, desc.getter, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_set, desc.setter, flags) < 0) return JS_EXCEPTION;\n } else {\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_value, desc.value, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_writable, (desc.flags & JS_PROP_WRITABLE) !== 0, flags) < 0) return JS_EXCEPTION;\n }\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_enumerable, (desc.flags & JS_PROP_ENUMERABLE) !== 0, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_configurable, (desc.flags & JS_PROP_CONFIGURABLE) !== 0, flags) < 0) return JS_EXCEPTION;\n }\n }\n return ret;\n}\n\nfunction js_object_getOwnPropertyDescriptors(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n //getOwnPropertyDescriptors(obj)\n const obj = JS_ToObject(ctx, argv[0]);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const p = obj as JSObject;\n const props = JS_GetOwnPropertyNamesInternal(ctx, p, JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!props) return JS_EXCEPTION;\n const r = JS_NewObject(ctx);\n if (JS_IsException(r)) return JS_EXCEPTION;\n for (const e of props) {\n const atomValue = JS_AtomToValue(ctx, e.atom);\n if (JS_IsException(atomValue)) return JS_EXCEPTION;\n const desc = js_object_getOwnPropertyDescriptor(ctx, undefined, [obj, atomValue], 0);\n if (JS_IsException(desc)) return JS_EXCEPTION;\n if (!JS_IsUndefined(desc)) {\n if (JS_DefinePropertyValue(ctx, r, e.atom, desc, JS_PROP_C_W_E | JS_PROP_THROW) < 0) return JS_EXCEPTION;\n }\n }\n return r;\n}\n\nexport function JS_GetOwnPropertyNames2(ctx: JSContext, obj1: JSValue, flags: number, kind: number): JSValue {\n const obj = JS_ToObject(ctx, obj1);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const p = obj as JSObject;\n const atoms = JS_GetOwnPropertyNamesInternal(ctx, p, flags & ~JS_GPN_ENUM_ONLY);\n if (!atoms) return JS_EXCEPTION;\n const values: JSValue[] = [];\n for (const e of atoms) {\n const atom = e.atom;\n if (flags & JS_GPN_ENUM_ONLY) {\n /* Check if property is still enumerable */\n const desc = new_desc();\n const res = JS_GetOwnPropertyInternal(ctx, desc, p, atom);\n if (res < 0) return JS_EXCEPTION;\n if (!res) continue;\n if (!(desc.flags & JS_PROP_ENUMERABLE)) continue;\n }\n let val: JSValue;\n switch (kind) {\n default:\n case ObjIterKind.KEY:\n val = JS_AtomToValue(ctx, atom);\n if (JS_IsException(val)) return JS_EXCEPTION;\n break;\n case ObjIterKind.VALUE:\n val = JS_GetProperty(ctx, obj, atom);\n if (JS_IsException(val)) return JS_EXCEPTION;\n break;\n case ObjIterKind.KEY_AND_VALUE: {\n const key = JS_AtomToValue(ctx, atom);\n if (JS_IsException(key)) return JS_EXCEPTION;\n const value = JS_GetProperty(ctx, obj, atom);\n if (JS_IsException(value)) return JS_EXCEPTION;\n val = js_create_array(ctx, [key, value]);\n break;\n }\n }\n values.push(val);\n }\n return js_create_array(ctx, values);\n}\n\nfunction js_object_keys(ctx: JSContext, this_val: JSValue, argv: JSValue[], kind: number): JSValue {\n return JS_GetOwnPropertyNames2(ctx, argv[0], JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK, kind);\n}\n\nexport function js_object_isExtensible(ctx: JSContext, this_val: JSValue, argv: JSValue[], reflect: number): JSValue {\n const obj = argv[0];\n if (!JS_IsObject(obj)) {\n if (reflect) return JS_ThrowTypeErrorNotAnObject(ctx);\n return false;\n }\n const ret = JS_IsExtensible(ctx, obj);\n if (ret < 0) return JS_EXCEPTION;\n return ret !== 0;\n}\n\nexport function js_object_preventExtensions(ctx: JSContext, this_val: JSValue, argv: JSValue[], reflect: number): JSValue {\n const obj = argv[0];\n if (!JS_IsObject(obj)) {\n if (reflect) return JS_ThrowTypeErrorNotAnObject(ctx);\n return obj;\n }\n const ret = JS_PreventExtensions(ctx, obj);\n if (ret < 0) return JS_EXCEPTION;\n if (reflect) return ret !== 0;\n if (!ret) return JS_ThrowTypeError(ctx, 'proxy preventExtensions handler returned false');\n return obj;\n}\n\nfunction js_object_valueOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return JS_ToObject(ctx, this_val);\n}\n\nexport function js_object_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let tag: JSValue;\n if (JS_IsNull(this_val)) {\n tag = 'Null';\n } else if (JS_IsUndefined(this_val)) {\n tag = 'Undefined';\n } else {\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return obj;\n const is_array = JS_IsArray(ctx, obj);\n if (is_array < 0) return JS_EXCEPTION;\n let atom: JSAtom;\n if (is_array) {\n atom = JS_ATOM_Array;\n } else if (JS_IsFunction(ctx, obj)) {\n atom = JS_ATOM_Function;\n } else {\n const p = obj as JSObject;\n switch (Q.JS_GetClassID(p)) {\n case JSClassID.STRING:\n case JSClassID.ARGUMENTS:\n case JSClassID.MAPPED_ARGUMENTS:\n case JSClassID.ERROR:\n case JSClassID.BOOLEAN:\n case JSClassID.NUMBER:\n case JSClassID.DATE:\n case JSClassID.REGEXP:\n atom = ctx.rt.class_array[Q.JS_GetClassID(p)]!.class_name;\n break;\n default:\n atom = JS_ATOM_Object;\n break;\n }\n }\n tag = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_toStringTag);\n if (JS_IsException(tag)) return JS_EXCEPTION;\n if (typeof tag !== 'string') tag = JS_AtomToString(ctx, atom);\n }\n return '[object ' + (tag as string) + ']';\n}\n\nfunction js_object_toLocaleString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return JS_Invoke(ctx, this_val, JS_ATOM_toString, []);\n}\n\nfunction js_object_fromEntries(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n /* RequireObjectCoercible() not necessary because it is tested in\n JS_GetIterator() by JS_GetProperty() */\n const iterable = argv[0];\n const obj = JS_NewObject(ctx);\n if (JS_IsException(obj)) return obj;\n const iter = JS_GetIterator(ctx, iterable, false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next_method = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next_method)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const pdone = { done: 0 };\n for (;;) {\n const item = JS_IteratorNext(ctx, iter, next_method, [], pdone);\n if (JS_IsException(item)) return JS_EXCEPTION;\n if (pdone.done) break;\n if (!JS_IsObject(item)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const key = JS_GetPropertyUint32(ctx, item, 0);\n if (JS_IsException(key)) { JS_IteratorClose(ctx, iter, true); return JS_EXCEPTION; }\n const value = JS_GetPropertyUint32(ctx, item, 1);\n if (JS_IsException(value)) { JS_IteratorClose(ctx, iter, true); return JS_EXCEPTION; }\n if (JS_DefinePropertyValueValue(ctx, obj, key, value, JS_PROP_C_W_E | JS_PROP_THROW) < 0) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n }\n return obj;\n}\n\n/* __getClass is a debugging helper exposed by QuickJS */\nfunction js_object___getClass(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let atom: JSAtom;\n const v = argv[0];\n if (Q.JS_IsObject(v)) {\n let class_id = Q.JS_GetClassID(v);\n if (class_id === JSClassID.PROXY && JS_IsFunction(ctx, v)) class_id = JSClassID.BYTECODE_FUNCTION;\n atom = ctx.rt.class_array[class_id]!.class_name;\n } else {\n atom = JS_ATOM_empty_string;\n }\n return JS_AtomToString(ctx, atom);\n}\n\n/* append 'v' at the end of the array 'arr' (js_array_push() in C) */\nfunction array_append(ctx: JSContext, arr: JSValue, v: JSValue): number {\n const len = js_get_length64(ctx, arr);\n if (len < 0) return -1;\n return JS_DefinePropertyValueInt64(ctx, arr, len, v, JS_PROP_C_W_E | JS_PROP_THROW);\n}\n\n/* Object.groupBy (is_map = 0). Map.groupBy (is_map = 1) lives in mapset.ts */\nfunction js_object_groupBy(ctx: JSContext, this_val: JSValue, argv: JSValue[], is_map: number): JSValue {\n // \"is function?\" check must be observed before argv[0] is accessed\n const cb = argv[1];\n if (check_function(ctx, cb)) return JS_EXCEPTION;\n const iter = JS_GetIterator(ctx, argv[0], false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next)) return JS_EXCEPTION;\n const groups = JS_NewObjectProto(ctx, null);\n if (JS_IsException(groups)) return JS_EXCEPTION;\n const pdone = { done: 0 };\n for (let idx = 0; ; idx++) {\n if (idx >= MAX_SAFE_INTEGER) {\n JS_ThrowTypeError(ctx, 'too many elements');\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const v = JS_IteratorNext(ctx, iter, next, [], pdone);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (pdone.done) break; // v is JS_UNDEFINED\n const key = JS_Call(ctx, cb, ctx.global_obj, [v, idx]);\n if (JS_IsException(key)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const key_atom = JS_ValueToAtom(ctx, key);\n if (key_atom === JS_ATOM_NULL) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n let prop = JS_GetProperty(ctx, groups, key_atom);\n if (JS_IsException(prop)) return JS_EXCEPTION;\n if (JS_IsUndefined(prop)) {\n prop = JS_NewArray(ctx);\n if (JS_IsException(prop)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, groups, key_atom, prop, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n }\n if (array_append(ctx, prop, v) < 0) return JS_EXCEPTION;\n }\n return groups;\n}\n\nfunction js_object_get___proto__(ctx: JSContext, this_val: JSValue): JSValue {\n const val = JS_ToObject(ctx, this_val);\n if (JS_IsException(val)) return val;\n return JS_GetPrototype(ctx, val);\n}\n\nfunction js_object_set___proto__(ctx: JSContext, this_val: JSValue, proto: JSValue): JSValue {\n if (JS_IsUndefined(this_val) || JS_IsNull(this_val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n if (!JS_IsObject(proto) && !JS_IsNull(proto)) return undefined;\n if (js_set_prototype_internal(ctx, this_val, proto, true) < 0) return JS_EXCEPTION;\n return undefined;\n}\n\n/* magic = 1 for __lookupSetter__ */\nfunction js_object___lookupGetter__(ctx: JSContext, this_val: JSValue, argv: JSValue[], setter: number): JSValue {\n let obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const prop = JS_ValueToAtom(ctx, argv[0]);\n if (prop === JS_ATOM_NULL) return JS_EXCEPTION;\n for (;;) {\n const desc = new_desc();\n const has_prop = JS_GetOwnPropertyInternal(ctx, desc, obj as JSObject, prop);\n if (has_prop < 0) return JS_EXCEPTION;\n if (has_prop) {\n if (desc.flags & JS_PROP_GETSET) return setter ? desc.setter : desc.getter;\n return undefined;\n }\n obj = JS_GetPrototype(ctx, obj);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n if (JS_IsNull(obj)) return undefined;\n }\n}\n\nconst js_object_funcs = [\n JS_CFUNC_DEF('create', 2, js_object_create),\n JS_CFUNC_MAGIC_DEF('getPrototypeOf', 1, js_object_getPrototypeOf, 0),\n JS_NATIVE_DEF('setPrototypeOf', 2, Object.setPrototypeOf),\n JS_CFUNC_MAGIC_DEF('defineProperty', 3, js_object_defineProperty, 0),\n JS_CFUNC_DEF('defineProperties', 2, js_object_defineProperties),\n JS_NATIVE_DEF('getOwnPropertyNames', 1, Object.getOwnPropertyNames, fix_array),\n JS_NATIVE_DEF('getOwnPropertySymbols', 1, Object.getOwnPropertySymbols, fix_array),\n JS_CFUNC_MAGIC_DEF('groupBy', 2, js_object_groupBy, 0),\n JS_NATIVE_DEF('keys', 1, Object.keys, fix_array),\n JS_NATIVE_DEF('values', 1, Object.values, fix_array),\n JS_NATIVE_DEF('entries', 1, Object.entries, fix_entries),\n JS_NATIVE_DEF('isExtensible', 1, Object.isExtensible),\n JS_NATIVE_DEF('preventExtensions', 1, Object.preventExtensions),\n JS_CFUNC_MAGIC_DEF('getOwnPropertyDescriptor', 2, js_object_getOwnPropertyDescriptor, 0),\n JS_CFUNC_DEF('getOwnPropertyDescriptors', 1, js_object_getOwnPropertyDescriptors),\n JS_NATIVE_DEF('is', 2, Object.is),\n JS_NATIVE_DEF('assign', 2, Object.assign, fix_any),\n JS_NATIVE_DEF('seal', 1, Object.seal),\n JS_NATIVE_DEF('freeze', 1, Object.freeze),\n JS_NATIVE_DEF('isSealed', 1, Object.isSealed),\n JS_NATIVE_DEF('isFrozen', 1, Object.isFrozen),\n JS_CFUNC_DEF('__getClass', 1, js_object___getClass),\n JS_CFUNC_DEF('fromEntries', 1, js_object_fromEntries),\n JS_NATIVE_DEF('hasOwn', 2, Object.hasOwn),\n];\n\nconst js_object_proto_funcs = [\n JS_CFUNC_DEF('toString', 0, js_object_toString),\n JS_CFUNC_DEF('toLocaleString', 0, js_object_toLocaleString),\n JS_CFUNC_DEF('valueOf', 0, js_object_valueOf),\n JS_NATIVE_DEF('hasOwnProperty', 1, Object.prototype.hasOwnProperty),\n JS_NATIVE_DEF('isPrototypeOf', 1, Object.prototype.isPrototypeOf),\n JS_NATIVE_DEF('propertyIsEnumerable', 1, Object.prototype.propertyIsEnumerable),\n JS_CGETSET_DEF(JS_ATOM___proto__, js_object_get___proto__, js_object_set___proto__),\n JS_CFUNC_MAGIC_DEF('__defineGetter__', 2, js_object___defineGetter__, 0),\n JS_CFUNC_MAGIC_DEF('__defineSetter__', 2, js_object___defineGetter__, 1),\n JS_CFUNC_MAGIC_DEF('__lookupGetter__', 1, js_object___lookupGetter__, 0),\n JS_CFUNC_MAGIC_DEF('__lookupSetter__', 1, js_object___lookupGetter__, 1),\n];\n\nexport function JS_AddIntrinsicObject(ctx: JSContext): void {\n /* Object */\n const obj = JS_NewGlobalCConstructor(ctx, 'Object', js_object_constructor, 1, ctx.class_proto[JSClassID.OBJECT]);\n JS_SetPropertyFunctionList(ctx, obj, js_object_funcs);\n JS_SetPropertyFunctionList(ctx, ctx.class_proto[JSClassID.OBJECT], js_object_proto_funcs);\n}\n"]}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/builtins/object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Object objects (port of the Object part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSAtom, JSPropertyDescriptor, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsNull, JS_IsObject, JS_IsFunction, JS_IsArray, JS_NewObject, JS_NewObjectProto, JS_NewArray, js_create_array,\n JS_ToObject, JS_ValueToAtom, JS_ATOM_NULL, JS_AtomToValue, JS_AtomToString, JS_GetProperty, JS_GetPropertyUint32,\n JS_GetPropertyInt64, JS_GetPrototype, JS_SetPrototypeInternal, JS_IsExtensible, JS_PreventExtensions,\n JS_GetOwnPropertyInternal, JS_GetOwnPropertyNamesInternal, JS_DefineProperty, JS_DefinePropertyValue,\n JS_DefinePropertyValueValue, JS_DefinePropertyValueInt64, js_obj_to_desc, new_desc, js_create_from_ctor,\n js_get_length64, JS_CopyDataProperties, JS_GetIterator, JS_IteratorNext, JS_IteratorClose, JS_Call, JS_Invoke,\n js_same_value, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject, JS_NewGlobalCConstructor,\n JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_NATIVE_DEF, JS_CFUNC_MAGIC_DEF, JS_CGETSET_DEF,\n JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_C_W_E, JS_PROP_GETSET, JS_PROP_THROW,\n JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_ENUMERABLE, JS_PROP_HAS_GET, JS_PROP_HAS_SET,\n JS_GPN_STRING_MASK, JS_GPN_SYMBOL_MASK, JS_GPN_ENUM_ONLY,\n JS_ATOM_Array, JS_ATOM_Function, JS_ATOM_Object, JS_ATOM_Symbol_toStringTag, JS_ATOM_toString, JS_ATOM_next,\n JS_ATOM_get, JS_ATOM_set, JS_ATOM_value, JS_ATOM_writable, JS_ATOM_enumerable, JS_ATOM_configurable,\n JS_ATOM_empty_string, JS_ATOM___proto__,\n} from '../quickjs.ts';\nimport { fix_any, fix_array, fix_entries } from './native.ts';\n\n/* same values as JSIteratorKind in builtins/index.ts (JS_ITERATOR_KIND_xxx in C) */\nconst enum ObjIterKind { KEY, VALUE, KEY_AND_VALUE }\n\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/* check_function() in C */\nfunction check_function(ctx: JSContext, obj: JSValue): number {\n if (JS_IsFunction(ctx, obj)) return 0;\n JS_ThrowTypeError(ctx, 'not a function');\n return -1;\n}\n\n/* JS_GetActiveFunction() in C */\nfunction JS_GetActiveFunction(ctx: JSContext): JSValue {\n return ctx.rt.current_stack_frame ? ctx.rt.current_stack_frame.cur_func : undefined;\n}\n\nexport function JS_DefinePropertyDesc(ctx: JSContext, obj: JSValue, prop: JSAtom, desc: JSValue, flags: number): number {\n const d = new_desc();\n if (js_obj_to_desc(ctx, d, desc) < 0) return -1;\n return JS_DefineProperty(ctx, obj, prop, d.value, d.getter, d.setter, d.flags | flags);\n}\n\nexport function JS_ObjectDefineProperties(ctx: JSContext, obj: JSValue, properties: JSValue): number {\n if (!JS_IsObject(obj)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n const props = JS_ToObject(ctx, properties);\n if (JS_IsException(props)) return -1;\n const p = props as JSObject;\n /* XXX: not done in the same order as the spec */\n const atoms = JS_GetOwnPropertyNamesInternal(ctx, p, JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!atoms) return -1;\n for (const e of atoms) {\n const desc = JS_GetProperty(ctx, props, e.atom);\n if (JS_IsException(desc)) return -1;\n if (JS_DefinePropertyDesc(ctx, obj, e.atom, desc, JS_PROP_THROW) < 0) return -1;\n }\n return 0;\n}\n\nfunction js_object_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsUndefined(new_target) && new_target !== JS_GetActiveFunction(ctx)) {\n return js_create_from_ctor(ctx, new_target, JSClassID.OBJECT);\n }\n const v = argv[0];\n if (v === null || v === undefined) return JS_NewObject(ctx);\n return JS_ToObject(ctx, v);\n}\n\nfunction js_object_create(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const proto = argv[0];\n if (!JS_IsObject(proto) && !JS_IsNull(proto)) return JS_ThrowTypeError(ctx, 'not a prototype');\n const obj = JS_NewObjectProto(ctx, proto);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const props = argv[1];\n if (!JS_IsUndefined(props)) {\n if (JS_ObjectDefineProperties(ctx, obj, props)) return JS_EXCEPTION;\n }\n return obj;\n}\n\nexport function js_object_getPrototypeOf(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const val = argv[0];\n if (!JS_IsObject(val)) {\n /* ES6 feature non compatible with ES5.1: primitive types are accepted */\n if (magic || JS_IsNull(val) || JS_IsUndefined(val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n }\n return JS_GetPrototype(ctx, val);\n}\n\n/* Wrapper around the core JS_SetPrototypeInternal reproducing the argument\n checks of the C version: a non object/null prototype is always a\n TypeError, a non object target is a TypeError unless throw_flag is set\n (then primitives are accepted), and a proxy trap returning false in\n throw mode is a TypeError. */\nexport function js_set_prototype_internal(ctx: JSContext, obj: JSValue, proto_val: JSValue, throw_flag: boolean): number {\n if (throw_flag) {\n if (JS_IsNull(obj) || JS_IsUndefined(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n } else {\n if (!JS_IsObject(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n }\n if (!JS_IsObject(proto_val) && !JS_IsNull(proto_val)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n const ret = JS_SetPrototypeInternal(ctx, obj, proto_val, throw_flag);\n if (ret === 0 && throw_flag) {\n /* only a proxy setPrototypeOf trap can return false here without\n having thrown already */\n JS_ThrowTypeError(ctx, 'proxy: bad prototype');\n return -1;\n }\n return ret;\n}\n\n/* ported rather than forwarded to the host: the guest Object.prototype is an ordinary host\n object, so the host would let its prototype change */\nfunction js_object_setPrototypeOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n if (js_set_prototype_internal(ctx, argv[0], argv[1], true) < 0) return JS_EXCEPTION;\n return argv[0];\n}\n\n/* magic = 1 if called as Reflect.defineProperty */\nexport function js_object_defineProperty(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const obj = argv[0];\n const prop = argv[1];\n const desc = argv[2];\n if (!JS_IsObject(obj)) return JS_ThrowTypeErrorNotAnObject(ctx);\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let flags = 0;\n if (!magic) flags |= JS_PROP_THROW;\n const ret = JS_DefinePropertyDesc(ctx, obj, atom, desc, flags);\n if (ret < 0) return JS_EXCEPTION;\n if (magic) return ret !== 0;\n return obj;\n}\n\nfunction js_object_defineProperties(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // defineProperties(obj, properties)\n const obj = argv[0];\n if (JS_ObjectDefineProperties(ctx, obj, argv[1])) return JS_EXCEPTION;\n return obj;\n}\n\n/* magic = 1 if called as __defineSetter__ */\nfunction js_object___defineGetter__(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const prop = argv[0];\n const value = argv[1];\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n if (check_function(ctx, value)) return JS_EXCEPTION;\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let flags = JS_PROP_THROW | JS_PROP_HAS_ENUMERABLE | JS_PROP_ENUMERABLE | JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE;\n let get: JSValue, set: JSValue;\n if (magic) {\n get = undefined;\n set = value;\n flags |= JS_PROP_HAS_SET;\n } else {\n get = value;\n set = undefined;\n flags |= JS_PROP_HAS_GET;\n }\n const ret = JS_DefineProperty(ctx, obj, atom, undefined, get, set, flags);\n if (ret < 0) return JS_EXCEPTION;\n return undefined;\n}\n\nexport function js_object_getOwnPropertyDescriptor(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n let obj: JSValue;\n if (magic) {\n /* Reflect.getOwnPropertyDescriptor case */\n if (!JS_IsObject(argv[0])) return JS_ThrowTypeErrorNotAnObject(ctx);\n obj = argv[0];\n } else {\n obj = JS_ToObject(ctx, argv[0]);\n if (JS_IsException(obj)) return obj;\n }\n const prop = argv[1];\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let ret: JSValue = undefined;\n if (JS_IsObject(obj)) {\n const desc = new_desc();\n const res = JS_GetOwnPropertyInternal(ctx, desc, obj, atom);\n if (res < 0) return JS_EXCEPTION;\n if (res) {\n ret = JS_NewObject(ctx);\n if (JS_IsException(ret)) return JS_EXCEPTION;\n const flags = JS_PROP_C_W_E | JS_PROP_THROW;\n if (desc.flags & JS_PROP_GETSET) {\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_get, desc.getter, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_set, desc.setter, flags) < 0) return JS_EXCEPTION;\n } else {\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_value, desc.value, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_writable, (desc.flags & JS_PROP_WRITABLE) !== 0, flags) < 0) return JS_EXCEPTION;\n }\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_enumerable, (desc.flags & JS_PROP_ENUMERABLE) !== 0, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_configurable, (desc.flags & JS_PROP_CONFIGURABLE) !== 0, flags) < 0) return JS_EXCEPTION;\n }\n }\n return ret;\n}\n\nfunction js_object_getOwnPropertyDescriptors(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n //getOwnPropertyDescriptors(obj)\n const obj = JS_ToObject(ctx, argv[0]);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const p = obj as JSObject;\n const props = JS_GetOwnPropertyNamesInternal(ctx, p, JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!props) return JS_EXCEPTION;\n const r = JS_NewObject(ctx);\n if (JS_IsException(r)) return JS_EXCEPTION;\n for (const e of props) {\n const atomValue = JS_AtomToValue(ctx, e.atom);\n if (JS_IsException(atomValue)) return JS_EXCEPTION;\n const desc = js_object_getOwnPropertyDescriptor(ctx, undefined, [obj, atomValue], 0);\n if (JS_IsException(desc)) return JS_EXCEPTION;\n if (!JS_IsUndefined(desc)) {\n if (JS_DefinePropertyValue(ctx, r, e.atom, desc, JS_PROP_C_W_E | JS_PROP_THROW) < 0) return JS_EXCEPTION;\n }\n }\n return r;\n}\n\nexport function JS_GetOwnPropertyNames2(ctx: JSContext, obj1: JSValue, flags: number, kind: number): JSValue {\n const obj = JS_ToObject(ctx, obj1);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const p = obj as JSObject;\n const atoms = JS_GetOwnPropertyNamesInternal(ctx, p, flags & ~JS_GPN_ENUM_ONLY);\n if (!atoms) return JS_EXCEPTION;\n const values: JSValue[] = [];\n for (const e of atoms) {\n const atom = e.atom;\n if (flags & JS_GPN_ENUM_ONLY) {\n /* Check if property is still enumerable */\n const desc = new_desc();\n const res = JS_GetOwnPropertyInternal(ctx, desc, p, atom);\n if (res < 0) return JS_EXCEPTION;\n if (!res) continue;\n if (!(desc.flags & JS_PROP_ENUMERABLE)) continue;\n }\n let val: JSValue;\n switch (kind) {\n default:\n case ObjIterKind.KEY:\n val = JS_AtomToValue(ctx, atom);\n if (JS_IsException(val)) return JS_EXCEPTION;\n break;\n case ObjIterKind.VALUE:\n val = JS_GetProperty(ctx, obj, atom);\n if (JS_IsException(val)) return JS_EXCEPTION;\n break;\n case ObjIterKind.KEY_AND_VALUE: {\n const key = JS_AtomToValue(ctx, atom);\n if (JS_IsException(key)) return JS_EXCEPTION;\n const value = JS_GetProperty(ctx, obj, atom);\n if (JS_IsException(value)) return JS_EXCEPTION;\n val = js_create_array(ctx, [key, value]);\n break;\n }\n }\n values.push(val);\n }\n return js_create_array(ctx, values);\n}\n\nfunction js_object_keys(ctx: JSContext, this_val: JSValue, argv: JSValue[], kind: number): JSValue {\n return JS_GetOwnPropertyNames2(ctx, argv[0], JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK, kind);\n}\n\nexport function js_object_isExtensible(ctx: JSContext, this_val: JSValue, argv: JSValue[], reflect: number): JSValue {\n const obj = argv[0];\n if (!JS_IsObject(obj)) {\n if (reflect) return JS_ThrowTypeErrorNotAnObject(ctx);\n return false;\n }\n const ret = JS_IsExtensible(ctx, obj);\n if (ret < 0) return JS_EXCEPTION;\n return ret !== 0;\n}\n\nexport function js_object_preventExtensions(ctx: JSContext, this_val: JSValue, argv: JSValue[], reflect: number): JSValue {\n const obj = argv[0];\n if (!JS_IsObject(obj)) {\n if (reflect) return JS_ThrowTypeErrorNotAnObject(ctx);\n return obj;\n }\n const ret = JS_PreventExtensions(ctx, obj);\n if (ret < 0) return JS_EXCEPTION;\n if (reflect) return ret !== 0;\n if (!ret) return JS_ThrowTypeError(ctx, 'proxy preventExtensions handler returned false');\n return obj;\n}\n\nfunction js_object_valueOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return JS_ToObject(ctx, this_val);\n}\n\nexport function js_object_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let tag: JSValue;\n if (JS_IsNull(this_val)) {\n tag = 'Null';\n } else if (JS_IsUndefined(this_val)) {\n tag = 'Undefined';\n } else {\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return obj;\n const is_array = JS_IsArray(ctx, obj);\n if (is_array < 0) return JS_EXCEPTION;\n let atom: JSAtom;\n if (is_array) {\n atom = JS_ATOM_Array;\n } else if (JS_IsFunction(ctx, obj)) {\n atom = JS_ATOM_Function;\n } else {\n const p = obj as JSObject;\n switch (Q.JS_GetClassID(p)) {\n case JSClassID.STRING:\n case JSClassID.ARGUMENTS:\n case JSClassID.MAPPED_ARGUMENTS:\n case JSClassID.ERROR:\n case JSClassID.BOOLEAN:\n case JSClassID.NUMBER:\n case JSClassID.DATE:\n case JSClassID.REGEXP:\n atom = ctx.rt.class_array[Q.JS_GetClassID(p)]!.class_name;\n break;\n default:\n atom = JS_ATOM_Object;\n break;\n }\n }\n tag = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_toStringTag);\n if (JS_IsException(tag)) return JS_EXCEPTION;\n if (typeof tag !== 'string') tag = JS_AtomToString(ctx, atom);\n }\n return '[object ' + (tag as string) + ']';\n}\n\nfunction js_object_toLocaleString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return JS_Invoke(ctx, this_val, JS_ATOM_toString, []);\n}\n\nfunction js_object_fromEntries(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n /* RequireObjectCoercible() not necessary because it is tested in\n JS_GetIterator() by JS_GetProperty() */\n const iterable = argv[0];\n const obj = JS_NewObject(ctx);\n if (JS_IsException(obj)) return obj;\n const iter = JS_GetIterator(ctx, iterable, false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next_method = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next_method)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const pdone = { done: 0 };\n for (;;) {\n const item = JS_IteratorNext(ctx, iter, next_method, [], pdone);\n if (JS_IsException(item)) return JS_EXCEPTION;\n if (pdone.done) break;\n if (!JS_IsObject(item)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const key = JS_GetPropertyUint32(ctx, item, 0);\n if (JS_IsException(key)) { JS_IteratorClose(ctx, iter, true); return JS_EXCEPTION; }\n const value = JS_GetPropertyUint32(ctx, item, 1);\n if (JS_IsException(value)) { JS_IteratorClose(ctx, iter, true); return JS_EXCEPTION; }\n if (JS_DefinePropertyValueValue(ctx, obj, key, value, JS_PROP_C_W_E | JS_PROP_THROW) < 0) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n }\n return obj;\n}\n\n/* __getClass is a debugging helper exposed by QuickJS */\nfunction js_object___getClass(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let atom: JSAtom;\n const v = argv[0];\n if (Q.JS_IsObject(v)) {\n let class_id = Q.JS_GetClassID(v);\n if (class_id === JSClassID.PROXY && JS_IsFunction(ctx, v)) class_id = JSClassID.BYTECODE_FUNCTION;\n atom = ctx.rt.class_array[class_id]!.class_name;\n } else {\n atom = JS_ATOM_empty_string;\n }\n return JS_AtomToString(ctx, atom);\n}\n\n/* append 'v' at the end of the array 'arr' (js_array_push() in C) */\nfunction array_append(ctx: JSContext, arr: JSValue, v: JSValue): number {\n const len = js_get_length64(ctx, arr);\n if (len < 0) return -1;\n return JS_DefinePropertyValueInt64(ctx, arr, len, v, JS_PROP_C_W_E | JS_PROP_THROW);\n}\n\n/* Object.groupBy (is_map = 0). Map.groupBy (is_map = 1) lives in mapset.ts */\nfunction js_object_groupBy(ctx: JSContext, this_val: JSValue, argv: JSValue[], is_map: number): JSValue {\n // \"is function?\" check must be observed before argv[0] is accessed\n const cb = argv[1];\n if (check_function(ctx, cb)) return JS_EXCEPTION;\n const iter = JS_GetIterator(ctx, argv[0], false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next)) return JS_EXCEPTION;\n const groups = JS_NewObjectProto(ctx, null);\n if (JS_IsException(groups)) return JS_EXCEPTION;\n const pdone = { done: 0 };\n for (let idx = 0; ; idx++) {\n if (idx >= MAX_SAFE_INTEGER) {\n JS_ThrowTypeError(ctx, 'too many elements');\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const v = JS_IteratorNext(ctx, iter, next, [], pdone);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (pdone.done) break; // v is JS_UNDEFINED\n const key = JS_Call(ctx, cb, ctx.global_obj, [v, idx]);\n if (JS_IsException(key)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const key_atom = JS_ValueToAtom(ctx, key);\n if (key_atom === JS_ATOM_NULL) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n let prop = JS_GetProperty(ctx, groups, key_atom);\n if (JS_IsException(prop)) return JS_EXCEPTION;\n if (JS_IsUndefined(prop)) {\n prop = JS_NewArray(ctx);\n if (JS_IsException(prop)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, groups, key_atom, prop, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n }\n if (array_append(ctx, prop, v) < 0) return JS_EXCEPTION;\n }\n return groups;\n}\n\nfunction js_object_get___proto__(ctx: JSContext, this_val: JSValue): JSValue {\n const val = JS_ToObject(ctx, this_val);\n if (JS_IsException(val)) return val;\n return JS_GetPrototype(ctx, val);\n}\n\nfunction js_object_set___proto__(ctx: JSContext, this_val: JSValue, proto: JSValue): JSValue {\n if (JS_IsUndefined(this_val) || JS_IsNull(this_val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n if (!JS_IsObject(proto) && !JS_IsNull(proto)) return undefined;\n if (js_set_prototype_internal(ctx, this_val, proto, true) < 0) return JS_EXCEPTION;\n return undefined;\n}\n\n/* magic = 1 for __lookupSetter__ */\nfunction js_object___lookupGetter__(ctx: JSContext, this_val: JSValue, argv: JSValue[], setter: number): JSValue {\n let obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const prop = JS_ValueToAtom(ctx, argv[0]);\n if (prop === JS_ATOM_NULL) return JS_EXCEPTION;\n for (;;) {\n const desc = new_desc();\n const has_prop = JS_GetOwnPropertyInternal(ctx, desc, obj as JSObject, prop);\n if (has_prop < 0) return JS_EXCEPTION;\n if (has_prop) {\n if (desc.flags & JS_PROP_GETSET) return setter ? desc.setter : desc.getter;\n return undefined;\n }\n obj = JS_GetPrototype(ctx, obj);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n if (JS_IsNull(obj)) return undefined;\n }\n}\n\nconst js_object_funcs = [\n JS_CFUNC_DEF('create', 2, js_object_create),\n JS_CFUNC_MAGIC_DEF('getPrototypeOf', 1, js_object_getPrototypeOf, 0),\n JS_CFUNC_DEF('setPrototypeOf', 2, js_object_setPrototypeOf),\n JS_CFUNC_MAGIC_DEF('defineProperty', 3, js_object_defineProperty, 0),\n JS_CFUNC_DEF('defineProperties', 2, js_object_defineProperties),\n JS_NATIVE_DEF('getOwnPropertyNames', 1, Object.getOwnPropertyNames, fix_array),\n JS_NATIVE_DEF('getOwnPropertySymbols', 1, Object.getOwnPropertySymbols, fix_array),\n JS_CFUNC_MAGIC_DEF('groupBy', 2, js_object_groupBy, 0),\n JS_NATIVE_DEF('keys', 1, Object.keys, fix_array),\n JS_NATIVE_DEF('values', 1, Object.values, fix_array),\n JS_NATIVE_DEF('entries', 1, Object.entries, fix_entries),\n JS_NATIVE_DEF('isExtensible', 1, Object.isExtensible),\n JS_NATIVE_DEF('preventExtensions', 1, Object.preventExtensions),\n JS_CFUNC_MAGIC_DEF('getOwnPropertyDescriptor', 2, js_object_getOwnPropertyDescriptor, 0),\n JS_CFUNC_DEF('getOwnPropertyDescriptors', 1, js_object_getOwnPropertyDescriptors),\n JS_NATIVE_DEF('is', 2, Object.is),\n JS_NATIVE_DEF('assign', 2, Object.assign, fix_any),\n JS_NATIVE_DEF('seal', 1, Object.seal),\n JS_NATIVE_DEF('freeze', 1, Object.freeze),\n JS_NATIVE_DEF('isSealed', 1, Object.isSealed),\n JS_NATIVE_DEF('isFrozen', 1, Object.isFrozen),\n JS_CFUNC_DEF('__getClass', 1, js_object___getClass),\n JS_CFUNC_DEF('fromEntries', 1, js_object_fromEntries),\n JS_NATIVE_DEF('hasOwn', 2, Object.hasOwn),\n];\n\nconst js_object_proto_funcs = [\n JS_CFUNC_DEF('toString', 0, js_object_toString),\n JS_CFUNC_DEF('toLocaleString', 0, js_object_toLocaleString),\n JS_CFUNC_DEF('valueOf', 0, js_object_valueOf),\n JS_NATIVE_DEF('hasOwnProperty', 1, Object.prototype.hasOwnProperty),\n JS_NATIVE_DEF('isPrototypeOf', 1, Object.prototype.isPrototypeOf),\n JS_NATIVE_DEF('propertyIsEnumerable', 1, Object.prototype.propertyIsEnumerable),\n JS_CGETSET_DEF(JS_ATOM___proto__, js_object_get___proto__, js_object_set___proto__),\n JS_CFUNC_MAGIC_DEF('__defineGetter__', 2, js_object___defineGetter__, 0),\n JS_CFUNC_MAGIC_DEF('__defineSetter__', 2, js_object___defineGetter__, 1),\n JS_CFUNC_MAGIC_DEF('__lookupGetter__', 1, js_object___lookupGetter__, 0),\n JS_CFUNC_MAGIC_DEF('__lookupSetter__', 1, js_object___lookupGetter__, 1),\n];\n\nexport function JS_AddIntrinsicObject(ctx: JSContext): void {\n /* Object */\n const obj = JS_NewGlobalCConstructor(ctx, 'Object', js_object_constructor, 1, ctx.class_proto[JSClassID.OBJECT]);\n JS_SetPropertyFunctionList(ctx, obj, js_object_funcs);\n JS_SetPropertyFunctionList(ctx, ctx.class_proto[JSClassID.OBJECT], js_object_proto_funcs);\n}\n"]}