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
Andrew Johnson
7b0e05dea9
Use ISO C syntax for flexible array members
2024-07-30 11:09:21 +02:00
Kevin Wang
c4d3833966
Fix declaring property named get/set/async
2024-07-25 23:21:16 +02:00
Dmitry Volyntsev
da5b95dcaf
Fix GC leak in js_proxy_get()
...
Fixes: https://github.com/bellard/quickjs/issues/277
2024-07-16 23:04:18 +02:00
Saúl Ibarra Corretgé
763010663b
Add auxiliary structure for retrieving SAB tabs
2024-07-15 16:53:52 +02:00
Saúl Ibarra Corretgé
3ed591c02d
Introduce JS_ReadObject2
...
Analogously to JS_WriteObject2, it allows the user to get a tab with all
the SAB objects that were read.
This can help adjust reference counts in a scenario where a SAB that was
written increased it and it's necessary to decrease it upon reading it.
2024-07-15 16:53:52 +02:00
Saúl Ibarra Corretgé
c011898ea0
Fix memory leak in JS_WriteObject2
...
If a SAB was written sab_tab will have been allocated. Free it if the
user didn't provide a way to retrieve it.
2024-07-15 08:59:20 +02:00
Andrew Johnson
07fa1cbc4a
Add js_dbuf_realloc to avoid ubsan error
2024-07-02 00:43:34 +02:00
Andrew Johnson
d489078ea1
Avoid macro and function name collisions between sources
2024-06-27 22:54:40 +02:00
Andrew Johnson
136f5a2c66
Cleanup unused-variable warnings
2024-06-24 17:35:01 +02:00
Saúl Ibarra Corretgé
c98d445b63
Save cur_pc on delete OP
...
Fixes: https://github.com/quickjs-ng/quickjs/issues/431
2024-06-13 12:23:12 +02:00
KaruroChori
ed8f73413c
Add getter for GC threshold
2024-06-07 22:07:38 +02:00
Tom Lienard
d3da56b630
Sync TLA implementation with upstream
...
Fixes: https://github.com/quickjs-ng/quickjs/issues/339
2024-06-07 15:46:44 +02:00
Saúl Ibarra Corretgé
e5673a8e68
Add JS_ToBigUint64
...
Fixes: https://github.com/quickjs-ng/quickjs/issues/376
2024-06-04 19:03:26 +02:00
Charlie Gordon
3eaea6c4cf
Improve number conversions
...
- pass string length to `js_atof()` instead of end pointer
- get string length from `bf_ftoa()` in `js_bigint_to_string1`
2024-05-27 10:23:21 +02:00
Saúl Ibarra Corretgé
bb4878dd50
Add JS_ThrowPlainError
...
It's a helper for doing the following steps:
- Building an Error object
- Attaching a formatted message
- Throwing the object
Fixes: https://github.com/quickjs-ng/quickjs/issues/375
2024-05-27 10:11:49 +02:00