Commit graph

396 commits

Author SHA1 Message Date
Saúl Ibarra Corretgé
4f02ab8cfa
Fix use-after-free on error during module evaluation
E.g. if during evaluation of module A, we start loading module B and
an error occurs. This results in a call to js_free_modules() with
JS_FREE_MODULE_NOT_EVALUATED, and since module A isn't yet evaluated,
it gets freed prematurely.

To solve this we improve js_free_modules() to ensure `eval_mark` is not
set. Once js_evaluate_module() returns for module A, it will notice that
an exception occurred and call js_free_modules() with
JS_FREE_MODULE_NOT_EVALUATED. Since `eval_mark` has been cleared by then,
module A gets cleaned up as well.

Co-authored-by: Ole André Vadla Ravnås <oleavr@gmail.com>
2023-11-07 22:23:09 +01:00
Ben Noordhuis
a3a57febed
Implement Array.prototype.toReversed (#19) 2023-11-07 17:31:33 +01:00
Saúl Ibarra Corretgé
e2ae8746ca
Drop support for "use strip"
Ref: https://github.com/quickjs-ng/quickjs/issues/20
2023-11-07 00:29:11 +01:00
Saúl Ibarra Corretgé
1fb9a5010f
Drop support for "use math"
Ref: https://github.com/quickjs-ng/quickjs/issues/20
2023-11-06 23:07:31 +01:00
Ben Noordhuis
9b3b3084fa
Implement TypedArray.prototype.at (#18) 2023-11-06 00:05:44 +01:00
Ben Noordhuis
83d909e70b Ignore more build artifacts 2023-11-05 14:47:33 +01:00
Ben Noordhuis
a59faac8c4
Improve interactive output on GHA (#15)
Before this commit the output of the test262 step was only visible in
the web interface at the end of the test run. Now it prints a status
update every few seconds.
2023-11-05 13:48:44 +01:00
Ben Noordhuis
18eb603e0d
Implement Promise.withResolvers (#14) 2023-11-05 11:08:58 +01:00
Ben Noordhuis
99eb81e1a6
Implement Array.prototype.at (#13) 2023-11-05 11:08:46 +01:00
Ben Noordhuis
55018345ed
Implement String.prototype.at (#12) 2023-11-05 11:08:27 +01:00
Ben Noordhuis
7be933ebca
Enable test262 on CI (#11)
Fixes: https://github.com/quickjs-ng/quickjs/issues/3
2023-11-04 10:27:57 +01:00
Ben Noordhuis
b6e5541d93 Enable ASan en UBSan sanitizers on macOS CI 2023-11-03 01:31:31 +01:00
Ben Noordhuis
e5bdada266 Remove unsafe sprintf() and strcat() calls
Prep work for enabling the sanitizers on macos CI since they are marked
as deprecated and cause the build to fail when -Werror is enabled.
2023-11-03 01:31:31 +01:00
Saúl Ibarra Corretgé
79f3bbc215 Fix build when bignum extensions are not enabled 2023-11-02 09:36:35 +01:00
Saúl Ibarra Corretgé
6d7fd42aae Add JS_GetUint8Array API
Shorthand for getting the underlying buffer of a Uint8Array.
2023-11-01 23:06:31 +01:00
Saúl Ibarra Corretgé
b11a10471d fixup! 2023-11-01 22:42:59 +01:00
Saúl Ibarra Corretgé
a9ac7a07ff Add top-level await support
Original author: zamfofex <zamfofex@twdb.moe>
2023-11-01 22:42:59 +01:00
Saúl Ibarra Corretgé
f51616eac8 Don't build with Atomics support by default
It's not currently implemented for Windows which makes the bytecode
generated by qjsc not portable.
2023-11-01 21:39:12 +01:00
Saúl Ibarra Corretgé
5f70d08c02 Update .gitignore 2023-11-01 21:06:41 +01:00
Ben Noordhuis
f2a8f04f13 Enable UBSan sanitizer on CI 2023-11-01 09:31:30 +01:00
Ben Noordhuis
d6fbd6b744 Fix UB signed integer overflow 2023-11-01 09:31:30 +01:00
Ben Noordhuis
4a8372a709 Fix UB left shift of negative number 2023-11-01 09:31:30 +01:00
Ben Noordhuis
83e6fca8be Add UndefinedBehaviorSanitizer support 2023-11-01 09:31:30 +01:00
Ben Noordhuis
a9957cdcee Fix UB nullptr passing to memcpy() 2023-11-01 09:31:30 +01:00
Ben Noordhuis
8217c69157 Fix UB shift into sign bit 2023-11-01 09:31:30 +01:00
Ben Noordhuis
141b7759c7 Enable sanitizers on CI 2023-11-01 05:20:14 +01:00
Ben Noordhuis
cd4579d106 Add MemorySanitizer support 2023-11-01 05:20:14 +01:00
Ben Noordhuis
f8b3a2e93c Fix sloppy mode arguments uninitialized value use
MemorySanitizer complained about uninitialized reads in
the indexed property code path in JS_GetPropertyValue()
with JS_CLASS_MAPPED_ARGUMENTS objects.
2023-11-01 05:20:14 +01:00
Ben Noordhuis
67585d0421 Fix -Wimplicit-const-int-float-conversion warnings
Compare against 0x1p63 instead of INT64_MAX. Converting INT64_MAX to
double rounds it up to INT64_MAX+1.

It made code like `if (d <= INT64_MAX) v = (int64_t)d;` behave subtly
wrong when `d >= 0x1p63` because then `v = (int64_t)d` wraps around to
a negative value.
2023-11-01 05:20:14 +01:00
Ben Noordhuis
62f67892ad
ci: add macos build+test workflow (#3) 2023-10-31 18:07:27 +01:00
Ben Noordhuis
2f7fd38f68
ci: add linux build+test workflow (#2) 2023-10-31 18:01:52 +01:00
bellard
2788d71e82 updated to Unicode 14.0.0 2022-03-06 19:00:24 +01:00
bellard
851695958a updated test262.conf 2022-03-06 18:55:04 +01:00
bellard
446099aa9e added Object.hasOwn() 2022-03-06 18:54:27 +01:00
bellard
b9f58802dc fixed invalid Array.prototype.push/unshift optimization 2022-03-06 18:53:03 +01:00
bellard
b5e62895c6 2021-03-27 release 2021-03-27 11:17:31 +01:00
bellard
204682fb87 2020-11-08 release take 2 2020-11-08 14:44:20 +01:00
bellard
b1f67dfc1a 2020-11-08 release 2020-11-08 14:30:56 +01:00
bellard
7c312df422 2020-09-06 release 2020-09-06 19:10:15 +02:00
bellard
8900766099 2020-07-05 release 2020-09-06 19:07:30 +02:00
bellard
1722758717 2020-04-12 release 2020-09-06 19:04:20 +02:00
bellard
383e2b06c8 2020-03-16 release 2020-09-06 19:02:03 +02:00
bellard
0e8fffd4de 2020-01-19 release 2020-09-06 18:57:11 +02:00
bellard
91459fb672 2020-01-05 release 2020-09-06 18:53:08 +02:00
bellard
9096e544ba test 2020-09-06 18:47:30 +02:00
bellard
831dc3af46
Initial commit 2020-09-06 18:24:53 +02:00