From ed0b30b0237677b557558d6055db08c0625dd143 Mon Sep 17 00:00:00 2001 From: tbashiyy Date: Sun, 23 Nov 2025 00:23:09 +0900 Subject: [PATCH 1/3] update --- tests/expectations.json | 28 ++++++++++++++++++++++++---- tests/metrics.json | 6 +++--- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/tests/expectations.json b/tests/expectations.json index ac1dab8c1..7ae18560e 100644 --- a/tests/expectations.json +++ b/tests/expectations.json @@ -238,17 +238,37 @@ "built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/throw-rejected-return.js": "FAIL", "built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/throw-return-getter.js": "FAIL", "built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/throw-return.js": "FAIL", - "built-ins/Atomics/notify/negative-count.js": "FAIL", - "built-ins/Atomics/notify/notify-nan.js": "FAIL", - "built-ins/Atomics/notify/notify-zero.js": "FAIL", + "built-ins/Atomics/notify/bigint/notify-all-on-loc.js": "FAIL", + "built-ins/Atomics/notify/count-defaults-to-infinity-missing.js": "FAIL", + "built-ins/Atomics/notify/count-defaults-to-infinity-undefined.js": "FAIL", + "built-ins/Atomics/notify/notify-all-on-loc.js": "FAIL", + "built-ins/Atomics/notify/notify-all.js": "FAIL", + "built-ins/Atomics/notify/notify-in-order-one-time.js": "FAIL", + "built-ins/Atomics/notify/notify-in-order.js": "FAIL", + "built-ins/Atomics/notify/undefined-index-defaults-to-zero.js": "FAIL", "built-ins/Atomics/pause/descriptor.js": "FAIL", "built-ins/Atomics/pause/length.js": "FAIL", "built-ins/Atomics/pause/name.js": "FAIL", "built-ins/Atomics/pause/not-a-constructor.js": "FAIL", "built-ins/Atomics/pause/returns-undefined.js": "FAIL", + "built-ins/Atomics/wait/bigint/nan-for-timeout.js": "FAIL", + "built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js": "FAIL", + "built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js": "FAIL", + "built-ins/Atomics/wait/bigint/was-woken-before-timeout.js": "FAIL", + "built-ins/Atomics/wait/nan-for-timeout.js": "FAIL", + "built-ins/Atomics/wait/undefined-index-defaults-to-zero.js": "FAIL", + "built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js": "FAIL", + "built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js": "FAIL", + "built-ins/Atomics/wait/was-woken-before-timeout.js": "FAIL", + "built-ins/Atomics/waitAsync/bigint/nan-for-timeout-agent.js": "FAIL", "built-ins/Atomics/waitAsync/bigint/true-for-timeout.js": "FAIL", + "built-ins/Atomics/waitAsync/bigint/waiterlist-block-indexedposition-wake.js": "FAIL", + "built-ins/Atomics/waitAsync/bigint/was-woken-before-timeout.js": "FAIL", + "built-ins/Atomics/waitAsync/nan-for-timeout-agent.js": "FAIL", "built-ins/Atomics/waitAsync/returns-result-object-value-is-promise-resolves-to-timed-out.js": "FAIL", "built-ins/Atomics/waitAsync/true-for-timeout.js": "FAIL", + "built-ins/Atomics/waitAsync/waiterlist-block-indexedposition-wake.js": "FAIL", + "built-ins/Atomics/waitAsync/was-woken-before-timeout.js": "FAIL", "built-ins/BigInt/asUintN/arithmetic.js": "CRASH", "built-ins/Boolean/proto-from-ctor-realm.js": "FAIL", "built-ins/DataView/proto-from-ctor-realm-sab.js": "FAIL", @@ -850,7 +870,7 @@ "built-ins/Number/prototype/toExponential/return-values.js": "FAIL", "built-ins/Number/prototype/toExponential/tointeger-fractiondigits.js": "FAIL", "built-ins/Number/prototype/toExponential/undefined-fractiondigits.js": "FAIL", - "built-ins/Object/defineProperty/15.2.3.6-4-116.js": "FAIL", + "built-ins/Object/defineProperty/15.2.3.6-4-116.js": "TIMEOUT", "built-ins/Object/defineProperty/15.2.3.6-4-292-1.js": "FAIL", "built-ins/Object/defineProperty/15.2.3.6-4-293-2.js": "FAIL", "built-ins/Object/defineProperty/15.2.3.6-4-293-3.js": "FAIL", diff --git a/tests/metrics.json b/tests/metrics.json index 7c7b2c4da..6a2570e57 100644 --- a/tests/metrics.json +++ b/tests/metrics.json @@ -1,10 +1,10 @@ { "results": { "crash": 73, - "fail": 7643, - "pass": 39638, + "fail": 7662, + "pass": 39618, "skip": 3325, - "timeout": 17, + "timeout": 18, "unresolved": 37 }, "total": 50733 From 571c04e8ae7f6acd89c4bfecdd2a5b99678581be Mon Sep 17 00:00:00 2001 From: tbashiyy Date: Sun, 23 Nov 2025 00:32:56 +0900 Subject: [PATCH 2/3] fix(ecmascript):handling for cases exceeding the i64 range --- .../bigint_objects/bigint_constructor.rs | 48 +++++++++++-------- tests/expectations.json | 1 - tests/metrics.json | 4 +- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/nova_vm/src/ecmascript/builtins/numbers_and_dates/bigint_objects/bigint_constructor.rs b/nova_vm/src/ecmascript/builtins/numbers_and_dates/bigint_objects/bigint_constructor.rs index ed4b661e7..977ae8467 100644 --- a/nova_vm/src/ecmascript/builtins/numbers_and_dates/bigint_objects/bigint_constructor.rs +++ b/nova_vm/src/ecmascript/builtins/numbers_and_dates/bigint_objects/bigint_constructor.rs @@ -204,26 +204,36 @@ impl BigIntConstructor { let bigint = to_big_int(agent, bigint.get(agent), gc.reborrow()) .unbind()? .bind(gc.nogc()); - match bigint { - BigInt::BigInt(int) => { - let int = &agent[int].data; - let modulus = 2i64.pow(bits); - Ok( - BigInt::from_num_bigint(agent, ((int % modulus) + modulus) % modulus) - .into_value(), - ) - } - BigInt::SmallBigInt(int) => { - let int = int.into_i64(); - if let Some(modulo) = 2i64 - .checked_pow(bits) - .and_then(|base| int.checked_rem_euclid(base)) - { + + match 2i64.checked_pow(bits) { + Some(modulus) => match bigint { + BigInt::BigInt(int) => { + let int = &agent[int].data; + Ok( + BigInt::from_num_bigint(agent, ((int % modulus) + modulus) % modulus) + .into_value(), + ) + } + BigInt::SmallBigInt(int) => { + let int = int.into_i64(); + let modulo = int.rem_euclid(modulus); Ok(BigInt::from(SmallBigInt::try_from(modulo).unwrap()).into_value()) - } else { - let modulus = num_bigint::BigInt::from(2).pow(bits); - let result = ((int % modulus.clone()) + modulus.clone()) % modulus; - Ok(BigInt::from_num_bigint(agent, result).into_value()) + } + }, + None => { + let modulus = + num_bigint::BigInt::from_bytes_le(num_bigint::Sign::Plus, &[2]).pow(bits); + match bigint { + BigInt::BigInt(int) => { + let int = &agent[int].data; + let result = ((int % &modulus) + &modulus) % &modulus; + Ok(BigInt::from_num_bigint(agent, result).into_value()) + } + BigInt::SmallBigInt(int) => { + let int = int.into_i64(); + let result = ((int % &modulus) + &modulus) % &modulus; + Ok(BigInt::from_num_bigint(agent, result).into_value()) + } } } } diff --git a/tests/expectations.json b/tests/expectations.json index 7ae18560e..08ac487ad 100644 --- a/tests/expectations.json +++ b/tests/expectations.json @@ -269,7 +269,6 @@ "built-ins/Atomics/waitAsync/true-for-timeout.js": "FAIL", "built-ins/Atomics/waitAsync/waiterlist-block-indexedposition-wake.js": "FAIL", "built-ins/Atomics/waitAsync/was-woken-before-timeout.js": "FAIL", - "built-ins/BigInt/asUintN/arithmetic.js": "CRASH", "built-ins/Boolean/proto-from-ctor-realm.js": "FAIL", "built-ins/DataView/proto-from-ctor-realm-sab.js": "FAIL", "built-ins/DataView/proto-from-ctor-realm.js": "FAIL", diff --git a/tests/metrics.json b/tests/metrics.json index 6a2570e57..64e93f497 100644 --- a/tests/metrics.json +++ b/tests/metrics.json @@ -1,8 +1,8 @@ { "results": { - "crash": 73, + "crash": 72, "fail": 7662, - "pass": 39618, + "pass": 39619, "skip": 3325, "timeout": 18, "unresolved": 37 From ff06a58f9f0afa80e8efecb93c40a4a801f7d168 Mon Sep 17 00:00:00 2001 From: Aapo Alasuutari Date: Sat, 22 Nov 2025 19:12:24 +0200 Subject: [PATCH 3/3] chore(test262): Update expectations --- tests/expectations.json | 28 ++++------------------------ tests/metrics.json | 6 +++--- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/tests/expectations.json b/tests/expectations.json index 08ac487ad..23062b13f 100644 --- a/tests/expectations.json +++ b/tests/expectations.json @@ -238,37 +238,17 @@ "built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/throw-rejected-return.js": "FAIL", "built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/throw-return-getter.js": "FAIL", "built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/throw-return.js": "FAIL", - "built-ins/Atomics/notify/bigint/notify-all-on-loc.js": "FAIL", - "built-ins/Atomics/notify/count-defaults-to-infinity-missing.js": "FAIL", - "built-ins/Atomics/notify/count-defaults-to-infinity-undefined.js": "FAIL", - "built-ins/Atomics/notify/notify-all-on-loc.js": "FAIL", - "built-ins/Atomics/notify/notify-all.js": "FAIL", - "built-ins/Atomics/notify/notify-in-order-one-time.js": "FAIL", - "built-ins/Atomics/notify/notify-in-order.js": "FAIL", - "built-ins/Atomics/notify/undefined-index-defaults-to-zero.js": "FAIL", + "built-ins/Atomics/notify/negative-count.js": "FAIL", + "built-ins/Atomics/notify/notify-nan.js": "FAIL", + "built-ins/Atomics/notify/notify-zero.js": "FAIL", "built-ins/Atomics/pause/descriptor.js": "FAIL", "built-ins/Atomics/pause/length.js": "FAIL", "built-ins/Atomics/pause/name.js": "FAIL", "built-ins/Atomics/pause/not-a-constructor.js": "FAIL", "built-ins/Atomics/pause/returns-undefined.js": "FAIL", - "built-ins/Atomics/wait/bigint/nan-for-timeout.js": "FAIL", - "built-ins/Atomics/wait/bigint/waiterlist-block-indexedposition-wake.js": "FAIL", - "built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.js": "FAIL", - "built-ins/Atomics/wait/bigint/was-woken-before-timeout.js": "FAIL", - "built-ins/Atomics/wait/nan-for-timeout.js": "FAIL", - "built-ins/Atomics/wait/undefined-index-defaults-to-zero.js": "FAIL", - "built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js": "FAIL", - "built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js": "FAIL", - "built-ins/Atomics/wait/was-woken-before-timeout.js": "FAIL", - "built-ins/Atomics/waitAsync/bigint/nan-for-timeout-agent.js": "FAIL", "built-ins/Atomics/waitAsync/bigint/true-for-timeout.js": "FAIL", - "built-ins/Atomics/waitAsync/bigint/waiterlist-block-indexedposition-wake.js": "FAIL", - "built-ins/Atomics/waitAsync/bigint/was-woken-before-timeout.js": "FAIL", - "built-ins/Atomics/waitAsync/nan-for-timeout-agent.js": "FAIL", "built-ins/Atomics/waitAsync/returns-result-object-value-is-promise-resolves-to-timed-out.js": "FAIL", "built-ins/Atomics/waitAsync/true-for-timeout.js": "FAIL", - "built-ins/Atomics/waitAsync/waiterlist-block-indexedposition-wake.js": "FAIL", - "built-ins/Atomics/waitAsync/was-woken-before-timeout.js": "FAIL", "built-ins/Boolean/proto-from-ctor-realm.js": "FAIL", "built-ins/DataView/proto-from-ctor-realm-sab.js": "FAIL", "built-ins/DataView/proto-from-ctor-realm.js": "FAIL", @@ -869,7 +849,7 @@ "built-ins/Number/prototype/toExponential/return-values.js": "FAIL", "built-ins/Number/prototype/toExponential/tointeger-fractiondigits.js": "FAIL", "built-ins/Number/prototype/toExponential/undefined-fractiondigits.js": "FAIL", - "built-ins/Object/defineProperty/15.2.3.6-4-116.js": "TIMEOUT", + "built-ins/Object/defineProperty/15.2.3.6-4-116.js": "FAIL", "built-ins/Object/defineProperty/15.2.3.6-4-292-1.js": "FAIL", "built-ins/Object/defineProperty/15.2.3.6-4-293-2.js": "FAIL", "built-ins/Object/defineProperty/15.2.3.6-4-293-3.js": "FAIL", diff --git a/tests/metrics.json b/tests/metrics.json index 64e93f497..571f0129b 100644 --- a/tests/metrics.json +++ b/tests/metrics.json @@ -1,10 +1,10 @@ { "results": { "crash": 72, - "fail": 7662, - "pass": 39619, + "fail": 7643, + "pass": 39639, "skip": 3325, - "timeout": 18, + "timeout": 17, "unresolved": 37 }, "total": 50733