Lines Matching refs:bigint

20 #include "src/objects/bigint.h"
23 #include "src/bigint/bigint.h"
71 static Handle<MutableBigInt> Cast(Handle<FreshlyAllocatedBigInt> bigint) {
72 SLOW_DCHECK(bigint->IsBigInt());
73 return Handle<MutableBigInt>::cast(bigint);
138 static_assert(std::is_same<bigint::digit_t, BigIntBase::digit_t>::value,
152 bigint::Digits GetDigits(BigIntBase bigint) {
153 return bigint::Digits(
154 reinterpret_cast<bigint::digit_t*>(
155 bigint.ptr() + BigIntBase::kDigitsOffset - kHeapObjectTag),
156 bigint.length());
158 bigint::Digits GetDigits(Handle<BigIntBase> bigint) {
159 return GetDigits(*bigint);
162 bigint::RWDigits GetRWDigits(MutableBigInt bigint) {
163 return bigint::RWDigits(
164 reinterpret_cast<bigint::digit_t*>(
165 bigint.ptr() + BigIntBase::kDigitsOffset - kHeapObjectTag),
166 bigint.length());
168 bigint::RWDigits GetRWDigits(Handle<MutableBigInt> bigint) {
169 return GetRWDigits(*bigint);
451 int result_length = bigint::MultiplyResultLength(GetDigits(x), GetDigits(y));
457 bigint::Status status = isolate->bigint_processor()->Multiply(
459 if (status == bigint::Status::kInterrupted) {
478 if (bigint::Compare(GetDigits(x), GetDigits(y)) < 0) {
486 int result_length = bigint::DivideResultLength(GetDigits(x), GetDigits(y));
491 bigint::Status status = isolate->bigint_processor()->Divide(
493 if (status == bigint::Status::kInterrupted) {
510 // See https://github.com/tc39/proposal-bigint/issues/84 though.
511 if (bigint::Compare(GetDigits(x), GetDigits(y)) < 0) return x;
514 int result_length = bigint::ModuloResultLength(GetDigits(y));
519 bigint::Status status = isolate->bigint_processor()->Modulo(
521 if (status == bigint::Status::kInterrupted) {
537 bigint::AddSignedResultLength(x->length(), y->length(), xsign == ysign);
544 bool result_sign = bigint::AddSigned(GetRWDigits(result), GetDigits(x), xsign,
556 int result_length = bigint::SubtractSignedResultLength(
564 bool result_sign = bigint::SubtractSigned(GetRWDigits(result), GetDigits(x),
617 int result = bigint::Compare(GetDigits(x), GetDigits(y));
639 bigint::BitwiseAnd_PosPos_ResultLength(x->length(), y->length());
641 bigint::BitwiseAnd_PosPos(GetRWDigits(result), GetDigits(x), GetDigits(y));
645 bigint::BitwiseAnd_NegNeg_ResultLength(x->length(), y->length());
649 bigint::BitwiseAnd_NegNeg(GetRWDigits(result), GetDigits(x), GetDigits(y));
653 int result_length = bigint::BitwiseAnd_PosNeg_ResultLength(x->length());
655 bigint::BitwiseAnd_PosNeg(GetRWDigits(result), GetDigits(x), GetDigits(y));
668 bigint::BitwiseXor_PosPos_ResultLength(x->length(), y->length());
670 bigint::BitwiseXor_PosPos(GetRWDigits(result), GetDigits(x), GetDigits(y));
674 bigint::BitwiseXor_NegNeg_ResultLength(x->length(), y->length());
676 bigint::BitwiseXor_NegNeg(GetRWDigits(result), GetDigits(x), GetDigits(y));
681 bigint::BitwiseXor_PosNeg_ResultLength(x->length(), y->length());
685 bigint::BitwiseXor_PosNeg(GetRWDigits(result), GetDigits(x), GetDigits(y));
695 int result_length = bigint::BitwiseOrResultLength(x->length(), y->length());
699 bigint::BitwiseOr_PosPos(GetRWDigits(result), GetDigits(x), GetDigits(y));
702 bigint::BitwiseOr_NegNeg(GetRWDigits(result), GetDigits(x), GetDigits(y));
706 bigint::BitwiseOr_PosNeg(GetRWDigits(result), GetDigits(x), GetDigits(y));
924 MaybeHandle<String> BigInt::ToString(Isolate* isolate, Handle<BigInt> bigint,
926 if (bigint->is_zero()) {
929 const bool sign = bigint->sign();
933 if (bigint->length() == 1 && radix == 10) {
938 digit_t digit = bigint->digit(0);
971 bigint::ToStringResultLength(GetDigits(bigint), radix, sign);
985 bigint::Status status = isolate->bigint_processor()->ToString(
986 characters, &chars_written, GetDigits(bigint), radix, sign);
987 if (status == bigint::Status::kInterrupted) {
1012 DCHECK_NE(chars[i], bigint::kStringZapValue);
1222 bigint::AddOne(GetRWDigits(result), GetDigits(x));
1237 bigint::SubtractOne(GetRWDigits(result), GetDigits(x));
1250 const int result_length = bigint::LeftShift_ResultLength(
1259 bigint::LeftShift(GetRWDigits(result), GetDigits(x), shift);
1273 bigint::RightShiftState state;
1275 bigint::RightShift_ResultLength(GetDigits(x), sign, shift, &state);
1281 bigint::RightShift(GetRWDigits(result), GetDigits(x), shift, state);
1311 bigint::FromStringAccumulator* accumulator,
1317 bigint::Status status =
1319 if (status == bigint::Status::kInterrupted) {
1327 bigint::FromStringAccumulator*,
1330 bigint::FromStringAccumulator*,
1415 bigint::AsIntNResultLength(GetDigits(x), x->sign(), static_cast<int>(n));
1419 bool negative = bigint::AsIntN(GetRWDigits(result), GetDigits(x), x->sign(),
1434 int result_length = bigint::AsUintN_Neg_ResultLength(static_cast<int>(n));
1436 bigint::AsUintN_Neg(GetRWDigits(result), GetDigits(x), static_cast<int>(n));
1440 bigint::AsUintN_Pos_ResultLength(GetDigits(x), static_cast<int>(n));
1443 bigint::AsUintN_Pos(GetRWDigits(result), GetDigits(x), static_cast<int>(n));
1605 bigint::Add(GetRWDigits(result), GetDigits(x), GetDigits(y));
1613 return bigint::Compare(GetDigits(x), GetDigits(y));
1622 bigint::Subtract(GetRWDigits(result), GetDigits(x), GetDigits(y));