mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 08:36:15 +00:00
LibJS: Replace standalone js_bigint() with BigInt::create()
Three standalone Cell creation functions remain in the JS namespace: - js_bigint() - js_string() - js_symbol() All of them are leftovers from early iterations when LibJS still took inspiration from JSC, which itself has jsString(). Nowadays, we pretty much exclusively use static create() functions to construct types allocated on the JS heap, and there's no reason to not do the same for these. Also change the return type from BigInt* to NonnullGCPtr<BigInt> while we're here. This is patch 1/3, replacement of js_string() and js_symbol() follow.
This commit is contained in:
@@ -80,11 +80,11 @@ JS_DEFINE_NATIVE_FUNCTION(BigIntConstructor::as_int_n)
|
||||
// NOTE: Some of the below conditionals are non-standard, but are to protect SignedBigInteger from
|
||||
// allocating an absurd amount of memory if `bits - 1` overflows to NumericLimits<size_t>::max.
|
||||
if ((bits == 0) && (mod >= BIGINT_ONE))
|
||||
return js_bigint(vm, mod.minus(bits_shift_left));
|
||||
return BigInt::create(vm, mod.minus(bits_shift_left));
|
||||
if ((bits > 0) && (mod >= BIGINT_ONE.shift_left(bits - 1)))
|
||||
return js_bigint(vm, mod.minus(bits_shift_left));
|
||||
return BigInt::create(vm, mod.minus(bits_shift_left));
|
||||
|
||||
return js_bigint(vm, mod);
|
||||
return BigInt::create(vm, mod);
|
||||
}
|
||||
|
||||
// 21.2.2.2 BigInt.asUintN ( bits, bigint ), https://tc39.es/ecma262/#sec-bigint.asuintn
|
||||
@@ -99,7 +99,7 @@ JS_DEFINE_NATIVE_FUNCTION(BigIntConstructor::as_uint_n)
|
||||
// 3. Return the BigInt value that represents ℝ(bigint) modulo 2bits.
|
||||
// FIXME: For large values of `bits`, this can likely be improved with a SignedBigInteger API to
|
||||
// drop the most significant bits.
|
||||
return js_bigint(vm, modulo(bigint->big_integer(), BIGINT_ONE.shift_left(bits)));
|
||||
return BigInt::create(vm, modulo(bigint->big_integer(), BIGINT_ONE.shift_left(bits)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user