satk0
2344d19220
Fix MSVC compilation when atomics experimental feature is not set
2024-10-07 22:34:01 +02:00
satk0
ba863b1a82
Follow declaration of variables before for loop
2024-10-07 22:34:01 +02:00
satk0
86b1853a21
Improve gcc warning fix
2024-10-07 22:34:01 +02:00
Saúl Ibarra Corretgé
52e0f24048
Fix computed reference on null or undefined
2024-10-07 21:39:59 +02:00
Saúl Ibarra Corretgé
acc0dd9273
Implement proper Symbol.toStringTag for iterators
2024-10-07 21:39:02 +02:00
Ben Noordhuis
9a37c57779
Fix thread-safety issue in quickjs-libc ( #578 )
...
`JS_NewClassID(rt, &class_id)` where `class_id` is a global variable
is unsafe when called from multiple threads but that is exactly what
quickjs-libc.c did.
Add a new JS_AddRuntimeFinalizer function that lets quickjs-libc
store the class ids in JSRuntimeState and defer freeing the memory
until the runtime is destroyed. Necessary because object finalizers
such as js_std_file_finalizer need to know the class id and run after
js_std_free_handlers runs.
Fixes: https://github.com/quickjs-ng/quickjs/issues/577
2024-10-07 21:27:38 +02:00
Saúl Ibarra Corretgé
a0877514b9
fixup!
2024-10-05 12:35:47 +02:00
Saúl Ibarra Corretgé
3dcadf1518
Fix next token parsing after a function definition
...
Ref: c06c399f4f
Fixes: https://github.com/quickjs-ng/quickjs/issues/572
2024-10-05 12:35:47 +02:00
Richard Davison
5590756b93
Move JS_{Dup,Free}Value and the RT variants from header, reduced duplication
2024-10-04 09:18:12 +02:00
Ben Noordhuis
1eb9608d64
Fix regexp split with zero-length capture group ( #566 )
...
The expected result of `"ab".split(/(c)*/)[1]` is `undefined` but
was in fact `"undefined"` due to unintentional stringification.
Fixes: https://github.com/quickjs-ng/quickjs/issues/565
2024-10-01 01:05:01 +02:00
Ben Noordhuis
348d60985d
Add Iterator.from ( #555 )
2024-09-27 00:16:50 +02:00
Ben Noordhuis
9a618ed426
Add Iterator.prototype.toArray ( #552 )
...
Churn in test262_errors.txt is due to fixing Iterator inheritance,
necessary to make the prototype method actually callable.
2024-09-25 22:45:02 +02:00
Ben Noordhuis
aefdee7b9a
Add Iterator ( #548 )
2024-09-24 22:07:29 +02:00
Saúl Ibarra Corretgé
3a96b9cb6f
Support private brand checks
...
Fixes: https://github.com/quickjs-ng/quickjs/issues/541
Ref: 3ab1c2b314
2024-09-24 18:37:02 +02:00
Saúl Ibarra Corretgé
c963112349
Fix use of js_malloc_usable_size
...
Make sure the one set in the malloc functions is used rather than the
default one, since it will likely use a different allocator.
For some reason, this didn't cause a problem on macOS, but it does in
Linux. Opsie! Added some CI to prevent these kinds of bugs.
2024-09-24 18:36:23 +02:00
Saúl Ibarra Corretgé
c25aad7b49
Add ability to (de)serialize symbols
...
Fixes: https://github.com/quickjs-ng/quickjs/issues/481
2024-09-24 10:01:08 +02:00
Saúl Ibarra Corretgé
d9a43d5a82
Provide a description for unitialized values in JS_ToStringInternal
...
After 56da486312
it's possible existing
code relied on the current exception not being null to dump it, and the
dumped value just said "[unsupported type]". This change provides a more
descriptive value.
2024-09-24 09:56:34 +02:00
Andrew Johnson
fe5be3cad9
Add JS_SetLength API function
2024-09-20 09:49:51 +02:00
Saúl Ibarra Corretgé
cfeeff91db
Refactor JSMallocFunctions to simplify the implementation
...
Rather than having the user take care of JSMallocState, take care of the
bookkeeping internally (and make JSMallocState non-public since it's no
longer necessary) and keep the allocation functions to the bare minimum.
This has the advantage that using a different allocator is just a few
lines of code, and there is no need to copy the default implementation
just to moficy the call to the allocation function.
Fixes: https://github.com/quickjs-ng/quickjs/issues/285
2024-09-19 20:49:09 +02:00
Saúl Ibarra Corretgé
5f5170796e
regexp: fixed the zero advance logic in quantifiers
...
Ref: 10fc744ae4
2024-09-14 22:00:48 +02:00
Saúl Ibarra Corretgé
56da486312
Add JS_HasException
...
Ref: db9dbd0a2b
Ref: 5417ab0159
2024-09-14 21:58:58 +02:00
Ben Noordhuis
8557bd0a0a
Add Set.prototype.isSupersetOf ( #532 )
2024-09-14 00:19:20 +02:00
Saúl Ibarra Corretgé
ac958f1d2f
Optional chaining fixes
...
Ref: f25e5d4094
2024-09-13 23:27:35 +02:00
Ben Noordhuis
0990875ae8
Add Set.prototype.isSubsetOf ( #529 )
2024-09-13 22:58:47 +02:00
Ben Noordhuis
12940d7877
Add Set.prototype.isDisjointFrom ( #528 )
2024-09-13 21:04:09 +02:00
Saúl Ibarra Corretgé
fb70e0994b
Simplify realloc
...
Call to our free wrapper when size is 0.
2024-09-11 22:09:27 +02:00
Saúl Ibarra Corretgé
5a41aaa6a3
Use calloc rather than malloc + memset
2024-09-11 22:09:27 +02:00
Saúl Ibarra Corretgé
5765855089
Silence noisy (and useless) MSVC warnings
2024-09-11 20:15:53 +02:00
Saúl Ibarra Corretgé
d6b4c7d24f
Actuall fix zero-length gnu_printf format string warning
...
Turns out it cannot be disabled through the pragma.
2024-09-11 19:49:52 +02:00
Saúl Ibarra Corretgé
4be1bcdb5e
Disable stack checks when running with ASAN in Debug builds
...
Fixes: https://github.com/quickjs-ng/quickjs/issues/502
2024-09-11 10:32:30 +02:00
Saúl Ibarra Corretgé
6dd2ce308a
Fix JS_DetectModule if the first statement is an await
2024-09-10 23:12:21 +02:00
Ben Noordhuis
b751ed5026
Add Set.prototype.intersection ( #511 )
2024-09-09 22:08:24 +02:00
Ben Noordhuis
6ba2448751
Add Set.prototype.symmetricDifference ( #507 )
2024-09-09 19:39:30 +02:00
Saúl Ibarra Corretgé
61c8fe6fb0
Run FinalizationRegistry callback in the job queue
...
The spec says HostMakeJobCallback has to be used on the callback: https://tc39.es/ecma262/multipage/managing-memory.html#sec-finalization-registry-cleanup-callback
That makes the following (arguably contrived) example run forever until
memory is exhausted.
```js
let count = 0;
function main() {
console.log(`main! ${++count}`);
const registry = new FinalizationRegistry(() => {
globalThis.foo = main();
});
registry.register([]);
registry.register([]);
return registry;
}
main();
console.log(count);
```
That is unlike V8, which runs 0 times. This can be explained by the
difference in GC implementations and since FinRec makes GC observable,
here we are!
Fixes: https://github.com/quickjs-ng/quickjs/issues/432
2024-09-09 11:32:36 +02:00
Saúl Ibarra Corretgé
c740aa07c1
Fix zero-length gnu_printf format string warning
...
```
src/quickjs/quickjs.c: In function ‘JS_ReadString’:
src/quickjs/quickjs.c:34274:26: warning: zero-length gnu_printf format string [-Wformat-zero-length]
34274 | bc_read_trace(s, ""); // hex dump and indentation
| ^~
src/quickjs/quickjs.c: In function ‘JS_ReadFunctionBytecode’:
src/quickjs/quickjs.c:34334:30: warning: zero-length gnu_printf format string [-Wformat-zero-length]
34334 | bc_read_trace(s, ""); // hex dump + indent
```
Ref: https://github.com/quickjs-ng/quickjs/issues/502
2024-09-09 11:18:02 +02:00
Ben Noordhuis
7513260d9a
Add Set.prototype.difference ( #504 )
2024-09-07 09:44:55 +02:00
Saúl Ibarra Corretgé
89d9305582
Fix DUMP_MODULE_RESOLVE flag checks
...
Make sure to always check if the flag is enabled.
2024-09-06 23:19:47 +02:00
Ben Noordhuis
8e81a88a18
Add Set.prototype.union ( #499 )
2024-09-06 09:24:21 +02:00
Saúl Ibarra Corretgé
77884360d6
Silence format-zero-length warning
2024-09-05 23:24:57 +02:00
Saúl Ibarra Corretgé
048f4278c0
Fix misleading indentation compilation errors
2024-09-05 23:24:57 +02:00
Saúl Ibarra Corretgé
114b8a4095
Enable all debug flags when compiling in debug mode
...
They still need to be individually enabled either via API or with the -D
CLI flag, but there is no need to modify the code and re-compile.
2024-09-05 23:24:57 +02:00
Ben Noordhuis
8c58e01928
Fix FinalizationRegistry with primitive held value ( #496 )
...
Apparently test262 does not test FinalizationRegistry#register() with
held values that are not objects.
Fixes: https://github.com/quickjs-ng/quickjs/issues/494
2024-09-04 12:32:32 +02:00
Ben Noordhuis
9bc41a8a00
Add Float16Array ( #491 )
2024-09-03 20:32:17 +02:00
Ben Noordhuis
0e5e9c2c49
Fix broken DUMP_BYTECODE debug option ( #489 )
...
Broken in commit 1baa6763f8
when unicode_from_utf8 was renamed to
utf8_decode_len.
2024-08-25 11:53:30 +02:00
Ben Noordhuis
568ac13ff5
Optimize js_map_write, don't loop twice ( #488 )
2024-08-23 17:53:17 +02:00
Ben Noordhuis
cee3b88edb
Fix async iterator missing throw method behavior ( #485 )
2024-08-22 09:02:11 +02:00
Ben Noordhuis
3a58376485
Support (de)serializing Map and Set objects ( #483 )
...
Fixes: https://github.com/quickjs-ng/quickjs/issues/482
2024-08-19 12:20:42 +02:00
Andrew Johnson
b65ed3bb73
Remove unnecessary forward reference for OpCodeEnum
2024-07-30 11:09:21 +02:00
Andrew Johnson
4bfffe8e12
Mark indirect goto and address-as-label as extensions
2024-07-30 11:09:21 +02:00
Andrew Johnson
9ba23f269c
Forward reference to enum type
2024-07-30 11:09:21 +02:00