Skip to content

Commit 84fd647

Browse files
alexmarkovCommit Queue
authored and
Commit Queue
committed
[vm] Refactor access to Integer value
Add methods to provide uniform access to values of Dart integers: Integer::Value() Integer::Value(IntegerPtr) Smi::Value() Smi::Value(SmiPtr) Mint::Value() Mint::Value(MintPtr) Remove AsInt64Value() AsTruncatedInt64Value() AsTruncatedUint32Value() GetInt64Value(IntegerPtr) Also, rename AsDoubleValue() to ToDouble() and remove unused (FitsIntoSmi, AsValidInteger) and value-based methods (IsZero, IsNegative). TEST=ci Change-Id: I28786ec3a14703574b7a192ead42eeefdbd09106 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/380586 Reviewed-by: Ryan Macnak <[email protected]> Commit-Queue: Alexander Markov <[email protected]>
1 parent 3cced31 commit 84fd647

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+225
-386
lines changed

runtime/lib/date.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ static int64_t kMaxAllowedSeconds = kMaxInt32;
1717
DEFINE_NATIVE_ENTRY(DateTime_timeZoneName, 0, 1) {
1818
GET_NON_NULL_NATIVE_ARGUMENT(Integer, dart_seconds,
1919
arguments->NativeArgAt(0));
20-
int64_t seconds = dart_seconds.AsInt64Value();
20+
int64_t seconds = dart_seconds.Value();
2121
if (llabs(seconds) > kMaxAllowedSeconds) {
2222
Exceptions::ThrowArgumentError(dart_seconds);
2323
}
@@ -28,7 +28,7 @@ DEFINE_NATIVE_ENTRY(DateTime_timeZoneName, 0, 1) {
2828
DEFINE_NATIVE_ENTRY(DateTime_timeZoneOffsetInSeconds, 0, 1) {
2929
GET_NON_NULL_NATIVE_ARGUMENT(Integer, dart_seconds,
3030
arguments->NativeArgAt(0));
31-
int64_t seconds = dart_seconds.AsInt64Value();
31+
int64_t seconds = dart_seconds.Value();
3232
if (llabs(seconds) > kMaxAllowedSeconds) {
3333
Exceptions::ThrowArgumentError(dart_seconds);
3434
}

runtime/lib/developer.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ DEFINE_NATIVE_ENTRY(Developer_log, 0, 8) {
5858
GET_NATIVE_ARGUMENT(Instance, dart_zone, arguments->NativeArgAt(5));
5959
GET_NATIVE_ARGUMENT(Instance, error, arguments->NativeArgAt(6));
6060
GET_NATIVE_ARGUMENT(Instance, stack_trace, arguments->NativeArgAt(7));
61-
Service::SendLogEvent(isolate, sequence.AsInt64Value(),
62-
timestamp.AsInt64Value(), level.Value(), name, message,
63-
dart_zone, error, stack_trace);
61+
Service::SendLogEvent(isolate, sequence.Value(), timestamp.Value(),
62+
level.Value(), name, message, dart_zone, error,
63+
stack_trace);
6464
return Object::null();
6565
#endif // PRODUCT
6666
}

runtime/lib/double.cc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ DEFINE_NATIVE_ENTRY(Double_doubleFromInteger, 0, 2) {
2626
if (FLAG_trace_intrinsified_natives) {
2727
OS::PrintErr("Double_doubleFromInteger %s\n", value.ToCString());
2828
}
29-
return Double::New(value.AsDoubleValue());
29+
return Double::New(value.ToDouble());
3030
}
3131

3232
DEFINE_NATIVE_ENTRY(Double_add, 0, 2) {
@@ -83,7 +83,7 @@ DEFINE_NATIVE_ENTRY(Double_greaterThan, 0, 2) {
8383
DEFINE_NATIVE_ENTRY(Double_greaterThanFromInteger, 0, 2) {
8484
const Double& right = Double::CheckedHandle(zone, arguments->NativeArgAt(0));
8585
GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1));
86-
return Bool::Get(left.AsDoubleValue() > right.value()).ptr();
86+
return Bool::Get(left.ToDouble() > right.value()).ptr();
8787
}
8888

8989
DEFINE_NATIVE_ENTRY(Double_equal, 0, 2) {
@@ -100,7 +100,7 @@ DEFINE_NATIVE_ENTRY(Double_equal, 0, 2) {
100100
DEFINE_NATIVE_ENTRY(Double_equalToInteger, 0, 2) {
101101
const Double& left = Double::CheckedHandle(zone, arguments->NativeArgAt(0));
102102
GET_NON_NULL_NATIVE_ARGUMENT(Integer, right, arguments->NativeArgAt(1));
103-
return Bool::Get(left.value() == right.AsDoubleValue()).ptr();
103+
return Bool::Get(left.value() == right.ToDouble()).ptr();
104104
}
105105

106106
#if defined(DART_HOST_OS_MACOS)
@@ -110,11 +110,11 @@ DEFINE_NATIVE_ENTRY(Double_equalToInteger, 0, 2) {
110110

111111
DEFINE_NATIVE_ENTRY(Double_parse, 0, 3) {
112112
GET_NON_NULL_NATIVE_ARGUMENT(String, value, arguments->NativeArgAt(0));
113-
GET_NON_NULL_NATIVE_ARGUMENT(Integer, startValue, arguments->NativeArgAt(1));
114-
GET_NON_NULL_NATIVE_ARGUMENT(Integer, endValue, arguments->NativeArgAt(2));
113+
GET_NON_NULL_NATIVE_ARGUMENT(Smi, startValue, arguments->NativeArgAt(1));
114+
GET_NON_NULL_NATIVE_ARGUMENT(Smi, endValue, arguments->NativeArgAt(2));
115115

116-
const intptr_t start = startValue.AsTruncatedUint32Value();
117-
const intptr_t end = endValue.AsTruncatedUint32Value();
116+
const intptr_t start = startValue.Value();
117+
const intptr_t end = endValue.Value();
118118
const intptr_t len = value.Length();
119119

120120
// Indices should be inside the string, and 0 <= start < end <= len.

runtime/lib/ffi.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ DEFINE_NATIVE_ENTRY(Ffi_deleteNativeCallable, 1, 1) {
5454

5555
DEFINE_NATIVE_ENTRY(Ffi_updateNativeCallableKeepIsolateAliveCounter, 1, 1) {
5656
const int64_t delta =
57-
Integer::CheckedHandle(zone, arguments->NativeArg0()).AsInt64Value();
57+
Integer::CheckedHandle(zone, arguments->NativeArg0()).Value();
5858
isolate->UpdateNativeCallableKeepIsolateAliveCounter(delta);
5959
return Object::null();
6060
}

runtime/lib/integers.cc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace dart {
2424
static bool CheckInteger(const Integer& i) {
2525
if (i.IsMint()) {
2626
const Mint& mint = Mint::Cast(i);
27-
return !Smi::IsValid(mint.value());
27+
return !Smi::IsValid(mint.Value());
2828
}
2929
return true;
3030
}
@@ -113,7 +113,7 @@ DEFINE_NATIVE_ENTRY(Integer_truncDivFromInteger, 0, 2) {
113113
GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1));
114114
ASSERT(CheckInteger(right_int));
115115
ASSERT(CheckInteger(left_int));
116-
ASSERT(!right_int.IsZero());
116+
ASSERT(right_int.Value() != 0);
117117
return left_int.ArithmeticOp(Token::kTRUNCDIV, right_int);
118118
}
119119

@@ -127,7 +127,7 @@ DEFINE_NATIVE_ENTRY(Integer_moduloFromInteger, 0, 2) {
127127
OS::PrintErr("Integer_moduloFromInteger %s mod %s\n", left_int.ToCString(),
128128
right_int.ToCString());
129129
}
130-
if (right_int.IsZero()) {
130+
if (right_int.Value() == 0) {
131131
// Should have been caught before calling into runtime.
132132
UNIMPLEMENTED();
133133
}
@@ -206,7 +206,7 @@ DEFINE_NATIVE_ENTRY(Integer_fromEnvironment, 0, 3) {
206206
static IntegerPtr ShiftOperationHelper(Token::Kind kind,
207207
const Integer& value,
208208
const Integer& amount) {
209-
if (amount.AsInt64Value() < 0) {
209+
if (amount.Value() < 0) {
210210
Exceptions::ThrowArgumentError(amount);
211211
}
212212
return value.ShiftOp(kind, amount, Heap::kNew);
@@ -266,7 +266,7 @@ DEFINE_NATIVE_ENTRY(Smi_bitLength, 0, 1) {
266266
if (FLAG_trace_intrinsified_natives) {
267267
OS::PrintErr("Smi_bitLength: %s\n", operand.ToCString());
268268
}
269-
int64_t value = operand.AsInt64Value();
269+
int64_t value = operand.Value();
270270
intptr_t result = Utils::BitLength(value);
271271
ASSERT(Smi::IsValid(result));
272272
return Smi::New(result);
@@ -309,7 +309,7 @@ DEFINE_NATIVE_ENTRY(Mint_bitNegate, 0, 1) {
309309
if (FLAG_trace_intrinsified_natives) {
310310
OS::PrintErr("Mint_bitNegate: %s\n", operand.ToCString());
311311
}
312-
int64_t result = ~operand.value();
312+
int64_t result = ~operand.Value();
313313
return Integer::New(result);
314314
}
315315

@@ -319,7 +319,7 @@ DEFINE_NATIVE_ENTRY(Mint_bitLength, 0, 1) {
319319
if (FLAG_trace_intrinsified_natives) {
320320
OS::PrintErr("Mint_bitLength: %s\n", operand.ToCString());
321321
}
322-
int64_t value = operand.AsInt64Value();
322+
int64_t value = operand.Value();
323323
intptr_t result = Utils::BitLength(value);
324324
ASSERT(Smi::IsValid(result));
325325
return Smi::New(result);

runtime/lib/simd128.cc

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_getSignMask, 0, 1) {
265265
DEFINE_NATIVE_ENTRY(Float32x4_shuffle, 0, 2) {
266266
GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0));
267267
GET_NON_NULL_NATIVE_ARGUMENT(Integer, mask, arguments->NativeArgAt(1));
268-
int64_t m = mask.AsInt64Value();
268+
int64_t m = mask.Value();
269269
ThrowMaskRangeException(m);
270270
float data[4] = {self.x(), self.y(), self.z(), self.w()};
271271
float _x = data[m & 0x3];
@@ -279,7 +279,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_shuffleMix, 0, 3) {
279279
GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0));
280280
GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1));
281281
GET_NON_NULL_NATIVE_ARGUMENT(Integer, mask, arguments->NativeArgAt(2));
282-
int64_t m = mask.AsInt64Value();
282+
int64_t m = mask.Value();
283283
ThrowMaskRangeException(m);
284284
float data[4] = {self.x(), self.y(), self.z(), self.w()};
285285
float other_data[4] = {other.x(), other.y(), other.z(), other.w()};
@@ -382,10 +382,10 @@ DEFINE_NATIVE_ENTRY(Int32x4_fromInts, 0, 4) {
382382
GET_NON_NULL_NATIVE_ARGUMENT(Integer, y, arguments->NativeArgAt(1));
383383
GET_NON_NULL_NATIVE_ARGUMENT(Integer, z, arguments->NativeArgAt(2));
384384
GET_NON_NULL_NATIVE_ARGUMENT(Integer, w, arguments->NativeArgAt(3));
385-
int32_t _x = static_cast<int32_t>(x.AsTruncatedUint32Value());
386-
int32_t _y = static_cast<int32_t>(y.AsTruncatedUint32Value());
387-
int32_t _z = static_cast<int32_t>(z.AsTruncatedUint32Value());
388-
int32_t _w = static_cast<int32_t>(w.AsTruncatedUint32Value());
385+
int32_t _x = static_cast<int32_t>(x.Value() & 0xFFFFFFFF);
386+
int32_t _y = static_cast<int32_t>(y.Value() & 0xFFFFFFFF);
387+
int32_t _z = static_cast<int32_t>(z.Value() & 0xFFFFFFFF);
388+
int32_t _w = static_cast<int32_t>(w.Value() & 0xFFFFFFFF);
389389
return Int32x4::New(_x, _y, _z, _w);
390390
}
391391

@@ -483,7 +483,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_getW, 0, 1) {
483483
DEFINE_NATIVE_ENTRY(Int32x4_shuffle, 0, 2) {
484484
GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0));
485485
GET_NON_NULL_NATIVE_ARGUMENT(Integer, mask, arguments->NativeArgAt(1));
486-
int64_t m = mask.AsInt64Value();
486+
int64_t m = mask.Value();
487487
ThrowMaskRangeException(m);
488488
int32_t data[4] = {self.x(), self.y(), self.z(), self.w()};
489489
int32_t _x = data[m & 0x3];
@@ -497,7 +497,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_shuffleMix, 0, 3) {
497497
GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0));
498498
GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, zw, arguments->NativeArgAt(1));
499499
GET_NON_NULL_NATIVE_ARGUMENT(Integer, mask, arguments->NativeArgAt(2));
500-
int64_t m = mask.AsInt64Value();
500+
int64_t m = mask.Value();
501501
ThrowMaskRangeException(m);
502502
int32_t data[4] = {self.x(), self.y(), self.z(), self.w()};
503503
int32_t zw_data[4] = {zw.x(), zw.y(), zw.z(), zw.w()};
@@ -511,7 +511,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_shuffleMix, 0, 3) {
511511
DEFINE_NATIVE_ENTRY(Int32x4_setX, 0, 2) {
512512
GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0));
513513
GET_NON_NULL_NATIVE_ARGUMENT(Integer, x, arguments->NativeArgAt(1));
514-
int32_t _x = static_cast<int32_t>(x.AsInt64Value() & 0xFFFFFFFF);
514+
int32_t _x = static_cast<int32_t>(x.Value() & 0xFFFFFFFF);
515515
int32_t _y = self.y();
516516
int32_t _z = self.z();
517517
int32_t _w = self.w();
@@ -522,7 +522,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setY, 0, 2) {
522522
GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0));
523523
GET_NON_NULL_NATIVE_ARGUMENT(Integer, y, arguments->NativeArgAt(1));
524524
int32_t _x = self.x();
525-
int32_t _y = static_cast<int32_t>(y.AsInt64Value() & 0xFFFFFFFF);
525+
int32_t _y = static_cast<int32_t>(y.Value() & 0xFFFFFFFF);
526526
int32_t _z = self.z();
527527
int32_t _w = self.w();
528528
return Int32x4::New(_x, _y, _z, _w);
@@ -533,7 +533,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setZ, 0, 2) {
533533
GET_NON_NULL_NATIVE_ARGUMENT(Integer, z, arguments->NativeArgAt(1));
534534
int32_t _x = self.x();
535535
int32_t _y = self.y();
536-
int32_t _z = static_cast<int32_t>(z.AsInt64Value() & 0xFFFFFFFF);
536+
int32_t _z = static_cast<int32_t>(z.Value() & 0xFFFFFFFF);
537537
int32_t _w = self.w();
538538
return Int32x4::New(_x, _y, _z, _w);
539539
}
@@ -544,7 +544,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setW, 0, 2) {
544544
int32_t _x = self.x();
545545
int32_t _y = self.y();
546546
int32_t _z = self.z();
547-
int32_t _w = static_cast<int32_t>(w.AsInt64Value() & 0xFFFFFFFF);
547+
int32_t _w = static_cast<int32_t>(w.Value() & 0xFFFFFFFF);
548548
return Int32x4::New(_x, _y, _z, _w);
549549
}
550550

runtime/lib/string.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ DEFINE_NATIVE_ENTRY(OneByteString_substringUnchecked, 0, 3) {
259259

260260
DEFINE_NATIVE_ENTRY(Internal_allocateOneByteString, 0, 1) {
261261
GET_NON_NULL_NATIVE_ARGUMENT(Integer, length_obj, arguments->NativeArgAt(0));
262-
const int64_t length = length_obj.AsInt64Value();
262+
const int64_t length = length_obj.Value();
263263
if ((length < 0) || (length > OneByteString::kMaxElements)) {
264264
// Assume that negative lengths are the result of wrapping in code in
265265
// string_patch.dart.
@@ -273,7 +273,7 @@ DEFINE_NATIVE_ENTRY(Internal_allocateOneByteString, 0, 1) {
273273

274274
DEFINE_NATIVE_ENTRY(Internal_allocateTwoByteString, 0, 1) {
275275
GET_NON_NULL_NATIVE_ARGUMENT(Integer, length_obj, arguments->NativeArgAt(0));
276-
const int64_t length = length_obj.AsInt64Value();
276+
const int64_t length = length_obj.Value();
277277
if ((length < 0) || (length > TwoByteString::kMaxElements)) {
278278
// Assume that negative lengths are the result of wrapping in code in
279279
// string_patch.dart.

runtime/lib/timeline.cc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,14 @@ DEFINE_NATIVE_ENTRY(Timeline_reportTaskEvent, 0, 5) {
5656
}
5757

5858
std::unique_ptr<const int64_t[]> flow_ids;
59-
if (flow_id.AsInt64Value() != TimelineEvent::kNoFlowId) {
59+
if (flow_id.Value() != TimelineEvent::kNoFlowId) {
6060
int64_t* flow_ids_internal = new int64_t[1];
61-
flow_ids_internal[0] = flow_id.AsInt64Value();
61+
flow_ids_internal[0] = flow_id.Value();
6262
flow_ids = std::unique_ptr<const int64_t[]>(flow_ids_internal);
6363
}
64-
intptr_t flow_id_count =
65-
flow_id.AsInt64Value() == TimelineEvent::kNoFlowId ? 0 : 1;
64+
intptr_t flow_id_count = flow_id.Value() == TimelineEvent::kNoFlowId ? 0 : 1;
6665
DartTimelineEventHelpers::ReportTaskEvent(
67-
event, id.AsInt64Value(), flow_id_count, flow_ids, type.Value(),
66+
event, id.Value(), flow_id_count, flow_ids, type.Value(),
6867
name.ToMallocCString(), args.ToMallocCString());
6968
#endif // SUPPORT_TIMELINE
7069
return Object::null();

runtime/vm/compiler/aot/aot_call_specializer.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ Definition* AotCallSpecializer::TryOptimizeDivisionOperation(
419419
}
420420

421421
const Object& rhs = right_value->BoundConstant();
422-
const int64_t value = Integer::Cast(rhs).AsInt64Value(); // smi and mint
422+
const int64_t value = Integer::Cast(rhs).Value(); // smi and mint
423423

424424
if (value == kMinInt64) {
425425
return nullptr; // The absolute value can't be held in an int64_t.

runtime/vm/compiler/backend/constant_propagator.cc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1285,7 +1285,7 @@ static bool IsIntegerOrDouble(const Object& value) {
12851285
}
12861286

12871287
static double ToDouble(const Object& value) {
1288-
return value.IsInteger() ? Integer::Cast(value).AsDoubleValue()
1288+
return value.IsInteger() ? Integer::Cast(value).ToDouble()
12891289
: Double::Cast(value).value();
12901290
}
12911291

@@ -1311,8 +1311,8 @@ void ConstantPropagator::VisitSmiToDouble(SmiToDoubleInstr* instr) {
13111311
}
13121312
if (value.IsInteger()) {
13131313
SetValue(instr,
1314-
Double::Handle(Z, Double::New(Integer::Cast(value).AsDoubleValue(),
1315-
Heap::kOld)));
1314+
Double::Handle(
1315+
Z, Double::New(Integer::Cast(value).ToDouble(), Heap::kOld)));
13161316
} else {
13171317
SetValue(instr, non_constant_);
13181318
}
@@ -1325,8 +1325,8 @@ void ConstantPropagator::VisitInt64ToDouble(Int64ToDoubleInstr* instr) {
13251325
}
13261326
if (value.IsInteger()) {
13271327
SetValue(instr,
1328-
Double::Handle(Z, Double::New(Integer::Cast(value).AsDoubleValue(),
1329-
Heap::kOld)));
1328+
Double::Handle(
1329+
Z, Double::New(Integer::Cast(value).ToDouble(), Heap::kOld)));
13301330
} else {
13311331
SetValue(instr, non_constant_);
13321332
}
@@ -1339,8 +1339,8 @@ void ConstantPropagator::VisitInt32ToDouble(Int32ToDoubleInstr* instr) {
13391339
}
13401340
if (value.IsInteger()) {
13411341
SetValue(instr,
1342-
Double::Handle(Z, Double::New(Integer::Cast(value).AsDoubleValue(),
1343-
Heap::kOld)));
1342+
Double::Handle(
1343+
Z, Double::New(Integer::Cast(value).ToDouble(), Heap::kOld)));
13441344
} else {
13451345
SetValue(instr, non_constant_);
13461346
}
@@ -1464,7 +1464,7 @@ void ConstantPropagator::VisitDoubleTestOp(DoubleTestOpInstr* instr) {
14641464
result = false;
14651465
break;
14661466
case MethodRecognizer::kDouble_getIsNegative: {
1467-
result = Integer::Cast(value).IsNegative();
1467+
result = Integer::Cast(value).Value() < 0;
14681468
break;
14691469
}
14701470
default:

runtime/vm/compiler/backend/constant_propagator_test.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ static void ConstantPropagatorUnboxedOpTest(
214214
EXPECT_PROPERTY(ret_val,
215215
it.IsConstant() && it.representation() == kTagged);
216216
EXPECT_EQ(expected.result,
217-
Integer::Cast(ret_val->AsConstant()->value()).AsInt64Value());
217+
Integer::Cast(ret_val->AsConstant()->value()).Value());
218218
} else {
219219
EXPECT_PROPERTY(ret_val,
220220
it.IsBoxInteger() && it.RequiredInputRepresentation(0) ==

0 commit comments

Comments
 (0)