[vm] Remove unused dart:math and Double native methods

Flow graph builder implementation of certain dart:math and Double
methods is now used unconditionally, so corresponding native
methods are never used and can be removed.

This is a follow-up to
https://dart-review.googlesource.com/c/sdk/+/371980.

TEST=ci

Change-Id: Ibca2729f70f39af26a899d99724ce62efc3c8dae
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/372180
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
Alexander Markov 2024-06-18 21:51:16 +00:00 committed by Commit Queue
parent 40661a5876
commit b48008ebd0
6 changed files with 9 additions and 97 deletions

View file

@ -69,20 +69,6 @@ DEFINE_NATIVE_ENTRY(Double_div, 0, 2) {
return Double::New(Utils::DivideAllowZero(left, right));
}
DEFINE_NATIVE_ENTRY(Double_modulo, 0, 2) {
double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value();
GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1));
double right = right_object.value();
return Double::New(DartModulo(left, right));
}
DEFINE_NATIVE_ENTRY(Double_remainder, 0, 2) {
double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value();
GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1));
double right = right_object.value();
return Double::New(fmod_ieee(left, right));
}
DEFINE_NATIVE_ENTRY(Double_greaterThan, 0, 2) {
const Double& left = Double::CheckedHandle(zone, arguments->NativeArgAt(0));
GET_NON_NULL_NATIVE_ARGUMENT(Double, right, arguments->NativeArgAt(1));
@ -117,36 +103,11 @@ DEFINE_NATIVE_ENTRY(Double_equalToInteger, 0, 2) {
return Bool::Get(left.value() == right.AsDoubleValue()).ptr();
}
DEFINE_NATIVE_ENTRY(Double_round, 0, 1) {
const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0));
return Double::New(round(arg.value()));
}
DEFINE_NATIVE_ENTRY(Double_floor, 0, 1) {
const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0));
return Double::New(floor(arg.value()));
}
DEFINE_NATIVE_ENTRY(Double_ceil, 0, 1) {
const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0));
return Double::New(ceil(arg.value()));
}
DEFINE_NATIVE_ENTRY(Double_truncate, 0, 1) {
const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0));
return Double::New(trunc(arg.value()));
}
#if defined(DART_HOST_OS_MACOS)
// MAC OSX math library produces old style cast warning.
#pragma GCC diagnostic ignored "-Wold-style-cast"
#endif
DEFINE_NATIVE_ENTRY(Double_toInt, 0, 1) {
const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0));
return DoubleToInteger(zone, arg.value());
}
DEFINE_NATIVE_ENTRY(Double_parse, 0, 3) {
GET_NON_NULL_NATIVE_ARGUMENT(String, value, arguments->NativeArgAt(0));
GET_NON_NULL_NATIVE_ARGUMENT(Integer, startValue, arguments->NativeArgAt(1));

View file

@ -13,15 +13,6 @@
namespace dart {
DEFINE_NATIVE_ENTRY(Math_doublePow, 0, 2) {
const double operand =
Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value();
GET_NON_NULL_NATIVE_ARGUMENT(Double, exponent_object,
arguments->NativeArgAt(1));
const double exponent = exponent_object.value();
return Double::New(pow(operand, exponent));
}
DEFINE_NATIVE_ENTRY(Random_initialSeed, 0, 0) {
Random* rnd = isolate->random();
uint64_t seed = rnd->NextUInt32();

View file

@ -90,18 +90,11 @@ namespace dart {
V(Double_sub, 2) \
V(Double_mul, 2) \
V(Double_div, 2) \
V(Double_remainder, 2) \
V(Double_modulo, 2) \
V(Double_greaterThanFromInteger, 2) \
V(Double_equalToInteger, 2) \
V(Double_greaterThan, 2) \
V(Double_equal, 2) \
V(Double_doubleFromInteger, 2) \
V(Double_round, 1) \
V(Double_floor, 1) \
V(Double_ceil, 1) \
V(Double_truncate, 1) \
V(Double_toInt, 1) \
V(Double_parse, 3) \
V(Double_toString, 1) \
V(Double_toStringAsFixed, 2) \
@ -139,7 +132,6 @@ namespace dart {
V(String_toLowerCase, 1) \
V(String_toUpperCase, 1) \
V(String_concatRange, 3) \
V(Math_doublePow, 2) \
V(Random_initialSeed, 0) \
V(SecureRandom_getBytes, 1) \
V(DateTime_currentTimeMicros, 0) \

View file

@ -189,18 +189,18 @@ namespace dart {
V(_Double, _sub, DoubleSub, 0x282a346e) \
V(_Double, _mul, DoubleMul, 0x1f7bafac) \
V(_Double, _div, DoubleDiv, 0x28601fd1) \
V(_Double, _modulo, DoubleMod, 0xfd96802f) \
V(_Double, _remainder, DoubleRem, 0xf0f45c93) \
V(_Double, _modulo, DoubleMod, 0xfd967c6e) \
V(_Double, _remainder, DoubleRem, 0xf0f458d2) \
V(_Double, ceil, DoubleCeilToInt, 0xcedbc005) \
V(_Double, ceilToDouble, DoubleCeilToDouble, 0x5efeb719) \
V(_Double, ceilToDouble, DoubleCeilToDouble, 0x5efeb358) \
V(_Double, floor, DoubleFloorToInt, 0x2a1527c8) \
V(_Double, floorToDouble, DoubleFloorToDouble, 0x5497b388) \
V(_Double, roundToDouble, DoubleRoundToDouble, 0x562cb240) \
V(_Double, toInt, DoubleToInteger, 0x675208e9) \
V(_Double, truncateToDouble, DoubleTruncateToDouble, 0x62b76e99) \
V(_Double, floorToDouble, DoubleFloorToDouble, 0x5497afc7) \
V(_Double, roundToDouble, DoubleRoundToDouble, 0x562cae7f) \
V(_Double, toInt, DoubleToInteger, 0x67520167) \
V(_Double, truncateToDouble, DoubleTruncateToDouble, 0x62b76ad8) \
V(::, min, MathMin, 0x63eb7469) \
V(::, max, MathMax, 0xf9320c82) \
V(::, _doublePow, MathDoublePow, 0xaeabdc94) \
V(::, _doublePow, MathDoublePow, 0x428b8405) \
V(::, _intPow, MathIntPow, 0xab39e81a) \
V(::, _sin, MathSin, 0x17bdb243) \
V(::, _cos, MathCos, 0xf4776585) \

View file

@ -76,7 +76,6 @@ final class _Double implements double {
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:exact-result-type", _Double)
@pragma("vm:external-name", "Double_modulo")
external double _modulo(double other);
double remainder(num other) {
@ -86,7 +85,6 @@ final class _Double implements double {
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:exact-result-type", _Double)
@pragma("vm:external-name", "Double_remainder")
external double _remainder(double other);
@pragma("vm:recognized", "graph-intrinsic")
@ -208,22 +206,18 @@ final class _Double implements double {
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:exact-result-type", _Double)
@pragma("vm:external-name", "Double_round")
external double roundToDouble();
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:exact-result-type", _Double)
@pragma("vm:external-name", "Double_floor")
external double floorToDouble();
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:exact-result-type", _Double)
@pragma("vm:external-name", "Double_ceil")
external double ceilToDouble();
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:exact-result-type", _Double)
@pragma("vm:external-name", "Double_truncate")
external double truncateToDouble();
num clamp(num lowerLimit, num upperLimit) {
@ -245,8 +239,6 @@ final class _Double implements double {
@pragma("vm:recognized", "other")
@pragma("vm:prefer-inline")
@pragma("vm:non-nullable-result-type")
@pragma("vm:external-name", "Double_toInt")
external int toInt();
double toDouble() {

View file

@ -78,31 +78,7 @@ num pow(num x, num exponent) {
@pragma("vm:recognized", "other")
@pragma("vm:exact-result-type", "dart:core#_Double")
double _doublePow(double base, double exponent) {
if (exponent == 0.0) {
return 1.0; // ECMA-262 15.8.2.13
}
// Speed up simple cases.
if (exponent == 1.0) return base;
if (exponent == 2.0) return base * base;
if (exponent == 3.0) return base * base * base;
if (base == 1.0) return 1.0;
if (base.isNaN || exponent.isNaN) {
return double.nan;
}
if ((base != -double.infinity) && (exponent == 0.5)) {
if (base == 0.0) {
return 0.0;
}
return sqrt(base);
}
return _pow(base.toDouble(), exponent.toDouble());
}
@pragma("vm:external-name", "Math_doublePow")
external double _pow(double base, double exponent);
external double _doublePow(double base, double exponent);
@pragma("vm:recognized", "other")
int _intPow(int base, int exponent) {