Move the VM's typed_data implementation to runtime/lib.

This removes the additional indirection to the VM's implementation
for all the factory constructors.

Additionally, it removes one class per typed data list type, thus reducing
snapshot and generated code size.

BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org/1790593002 .
This commit is contained in:
Florian Schneider
2016-03-21 13:39:49 +01:00
parent 6efe664788
commit f3de2377ab
11 changed files with 1292 additions and 551 deletions
+1101 -292
View File
File diff suppressed because it is too large Load Diff
@@ -441,7 +441,7 @@ var tests = [
expect(result['id'], startsWith('objects/'));
expect(result['valueAsString'], isNull);
expect(result['class']['type'], equals('@Class'));
expect(result['class']['name'], equals('_Uint8Array'));
expect(result['class']['name'], equals('Uint8List'));
expect(result['size'], isPositive);
expect(result['fields'], isEmpty);
expect(result['length'], equals(3));
@@ -467,7 +467,7 @@ var tests = [
expect(result['id'], startsWith('objects/'));
expect(result['valueAsString'], isNull);
expect(result['class']['type'], equals('@Class'));
expect(result['class']['name'], equals('_Uint8Array'));
expect(result['class']['name'], equals('Uint8List'));
expect(result['size'], isPositive);
expect(result['fields'], isEmpty);
expect(result['length'], equals(3));
@@ -494,7 +494,7 @@ var tests = [
expect(result['id'], startsWith('objects/'));
expect(result['valueAsString'], isNull);
expect(result['class']['type'], equals('@Class'));
expect(result['class']['name'], equals('_Uint8Array'));
expect(result['class']['name'], equals('Uint8List'));
expect(result['size'], isPositive);
expect(result['fields'], isEmpty);
expect(result['length'], equals(3));
@@ -521,7 +521,7 @@ var tests = [
expect(result['id'], startsWith('objects/'));
expect(result['valueAsString'], isNull);
expect(result['class']['type'], equals('@Class'));
expect(result['class']['name'], equals('_Uint8Array'));
expect(result['class']['name'], equals('Uint8List'));
expect(result['size'], isPositive);
expect(result['fields'], isEmpty);
expect(result['length'], equals(3));
@@ -544,7 +544,7 @@ var tests = [
expect(result['id'], startsWith('objects/'));
expect(result['valueAsString'], isNull);
expect(result['class']['type'], equals('@Class'));
expect(result['class']['name'], equals('_Uint64Array'));
expect(result['class']['name'], equals('Uint64List'));
expect(result['size'], isPositive);
expect(result['fields'], isEmpty);
expect(result['length'], equals(3));
@@ -570,7 +570,7 @@ var tests = [
expect(result['id'], startsWith('objects/'));
expect(result['valueAsString'], isNull);
expect(result['class']['type'], equals('@Class'));
expect(result['class']['name'], equals('_Uint64Array'));
expect(result['class']['name'], equals('Uint64List'));
expect(result['size'], isPositive);
expect(result['fields'], isEmpty);
expect(result['length'], equals(3));
@@ -597,7 +597,7 @@ var tests = [
expect(result['id'], startsWith('objects/'));
expect(result['valueAsString'], isNull);
expect(result['class']['type'], equals('@Class'));
expect(result['class']['name'], equals('_Uint64Array'));
expect(result['class']['name'], equals('Uint64List'));
expect(result['size'], isPositive);
expect(result['fields'], isEmpty);
expect(result['length'], equals(3));
@@ -624,7 +624,7 @@ var tests = [
expect(result['id'], startsWith('objects/'));
expect(result['valueAsString'], isNull);
expect(result['class']['type'], equals('@Class'));
expect(result['class']['name'], equals('_Uint64Array'));
expect(result['class']['name'], equals('Uint64List'));
expect(result['size'], isPositive);
expect(result['fields'], isEmpty);
expect(result['length'], equals(3));
+1 -1
View File
@@ -82,7 +82,7 @@ static bootstrap_lib_props bootstrap_libraries[] = {
INIT_LIBRARY(ObjectStore::kTypedData,
typed_data,
Bootstrap::typed_data_source_paths_,
Bootstrap::typed_data_patch_paths_),
NULL),
INIT_LIBRARY(ObjectStore::kVMService,
_vmservice,
Bootstrap::_vmservice_source_paths_,
+2 -2
View File
@@ -3493,8 +3493,8 @@ DART_EXPORT Dart_Handle Dart_NewByteBuffer(Dart_Handle typed_data) {
}
Object& result = Object::Handle(Z);
result = GetByteBufferConstructor(T,
Symbols::_ByteBuffer(),
Symbols::_ByteBufferDot_New(),
Symbols::ByteBuffer(),
Symbols::ByteBufferDot_New(),
1);
ASSERT(!result.IsNull());
ASSERT(result.IsFunction());
+135 -149
View File
@@ -62,87 +62,87 @@ namespace dart {
V(::, min, MathMin, 1115051548) \
V(::, max, MathMax, 1410473322) \
V(::, _doublePow, MathDoublePow, 562154128) \
V(Float32x4, Float32x4., Float32x4Constructor, 1849420944) \
V(Float32x4, Float32x4.zero, Float32x4Zero, 762161262) \
V(Float32x4, Float32x4.splat, Float32x4Splat, 255855286) \
V(Float32x4, Float32x4.fromInt32x4Bits, Float32x4FromInt32x4Bits, 1718571366)\
V(Float32x4, Float32x4.fromFloat64x2, Float32x4FromFloat64x2, 1458098858) \
V(_Float32x4, shuffle, Float32x4Shuffle, 2015957023) \
V(_Float32x4, shuffleMix, Float32x4ShuffleMix, 1099087979) \
V(_Float32x4, get:signMask, Float32x4GetSignMask, 487049875) \
V(_Float32x4, _cmpequal, Float32x4Equal, 1069901308) \
V(_Float32x4, _cmpgt, Float32x4GreaterThan, 2112381651) \
V(_Float32x4, _cmpgte, Float32x4GreaterThanOrEqual, 1088241265) \
V(_Float32x4, _cmplt, Float32x4LessThan, 2001171012) \
V(_Float32x4, _cmplte, Float32x4LessThanOrEqual, 1568686387) \
V(_Float32x4, _cmpnequal, Float32x4NotEqual, 1833412828) \
V(_Float32x4, _min, Float32x4Min, 1194113943) \
V(_Float32x4, _max, Float32x4Max, 1876936155) \
V(_Float32x4, _scale, Float32x4Scale, 1176743640) \
V(_Float32x4, _sqrt, Float32x4Sqrt, 526238610) \
V(_Float32x4, _reciprocalSqrt, Float32x4ReciprocalSqrt, 860560177) \
V(_Float32x4, _reciprocal, Float32x4Reciprocal, 1703468100) \
V(_Float32x4, _negate, Float32x4Negate, 1409902640) \
V(_Float32x4, _abs, Float32x4Absolute, 2116840471) \
V(_Float32x4, _clamp, Float32x4Clamp, 1789892357) \
V(_Float32x4, withX, Float32x4WithX, 1311992575) \
V(_Float32x4, withY, Float32x4WithY, 175290640) \
V(_Float32x4, withZ, Float32x4WithZ, 837367384) \
V(_Float32x4, withW, Float32x4WithW, 1625145605) \
V(Float64x2, Float64x2., Float64x2Constructor, 1428850802) \
V(Float64x2, Float64x2.zero, Float64x2Zero, 29170676) \
V(Float64x2, Float64x2.splat, Float64x2Splat, 1077183856) \
V(Float64x2, Float64x2.fromFloat32x4, Float64x2FromFloat32x4, 1752000980) \
V(_Float64x2, get:x, Float64x2GetX, 1488958362) \
V(_Float64x2, get:y, Float64x2GetY, 1022688506) \
V(_Float64x2, _negate, Float64x2Negate, 960840275) \
V(_Float64x2, abs, Float64x2Abs, 52403783) \
V(_Float64x2, sqrt, Float64x2Sqrt, 2012680669) \
V(_Float64x2, get:signMask, Float64x2GetSignMask, 668856717) \
V(_Float64x2, scale, Float64x2Scale, 646122081) \
V(_Float64x2, withX, Float64x2WithX, 489409269) \
V(_Float64x2, withY, Float64x2WithY, 943642284) \
V(_Float64x2, min, Float64x2Min, 685235702) \
V(_Float64x2, max, Float64x2Max, 198659675) \
V(Int32x4, Int32x4., Int32x4Constructor, 80862812) \
V(Int32x4, Int32x4.bool, Int32x4BoolConstructor, 1949580252) \
V(Int32x4, Int32x4.fromFloat32x4Bits, Int32x4FromFloat32x4Bits, 1611205288) \
V(_Int32x4, get:flagX, Int32x4GetFlagX, 1446544324) \
V(_Int32x4, get:flagY, Int32x4GetFlagY, 1148149370) \
V(_Int32x4, get:flagZ, Int32x4GetFlagZ, 550901369) \
V(_Int32x4, get:flagW, Int32x4GetFlagW, 1346664620) \
V(_Int32x4, get:signMask, Int32x4GetSignMask, 740215269) \
V(_Int32x4, shuffle, Int32x4Shuffle, 549194518) \
V(_Int32x4, shuffleMix, Int32x4ShuffleMix, 1550866145) \
V(_Int32x4, select, Int32x4Select, 614943686) \
V(_Int32x4, withFlagX, Int32x4WithFlagX, 250974159) \
V(_Int32x4, withFlagY, Int32x4WithFlagY, 1686481348) \
V(_Int32x4, withFlagZ, Int32x4WithFlagZ, 645582330) \
V(_Int32x4, withFlagW, Int32x4WithFlagW, 878364277) \
V(_Float32Array, [], Float32ArrayGetIndexed, 1002307136) \
V(_Float32Array, []=, Float32ArraySetIndexed, 279546769) \
V(_Int8Array, [], Int8ArrayGetIndexed, 1141846285) \
V(_Int8Array, []=, Int8ArraySetIndexed, 1486839324) \
V(_Uint8ClampedArray, [], Uint8ClampedArrayGetIndexed, 513704632) \
V(_Uint8ClampedArray, []=, Uint8ClampedArraySetIndexed, 1015846567) \
V(Float32x4, Float32x4., Float32x4Constructor, 93751705) \
V(Float32x4, Float32x4.zero, Float32x4Zero, 1193954374) \
V(Float32x4, Float32x4.splat, Float32x4Splat, 12296613) \
V(Float32x4, Float32x4.fromInt32x4Bits, Float32x4FromInt32x4Bits, 1188039061)\
V(Float32x4, Float32x4.fromFloat64x2, Float32x4FromFloat64x2, 1750763218) \
V(Float32x4, shuffle, Float32x4Shuffle, 2015957023) \
V(Float32x4, shuffleMix, Float32x4ShuffleMix, 1099087979) \
V(Float32x4, get:signMask, Float32x4GetSignMask, 487049875) \
V(Float32x4, _cmpequal, Float32x4Equal, 1069901308) \
V(Float32x4, _cmpgt, Float32x4GreaterThan, 2112381651) \
V(Float32x4, _cmpgte, Float32x4GreaterThanOrEqual, 1088241265) \
V(Float32x4, _cmplt, Float32x4LessThan, 2001171012) \
V(Float32x4, _cmplte, Float32x4LessThanOrEqual, 1568686387) \
V(Float32x4, _cmpnequal, Float32x4NotEqual, 1833412828) \
V(Float32x4, _min, Float32x4Min, 1194113943) \
V(Float32x4, _max, Float32x4Max, 1876936155) \
V(Float32x4, _scale, Float32x4Scale, 1176743640) \
V(Float32x4, _sqrt, Float32x4Sqrt, 526238610) \
V(Float32x4, _reciprocalSqrt, Float32x4ReciprocalSqrt, 860560177) \
V(Float32x4, _reciprocal, Float32x4Reciprocal, 1703468100) \
V(Float32x4, _negate, Float32x4Negate, 1409902640) \
V(Float32x4, _abs, Float32x4Absolute, 2116840471) \
V(Float32x4, _clamp, Float32x4Clamp, 1789892357) \
V(Float32x4, withX, Float32x4WithX, 1311992575) \
V(Float32x4, withY, Float32x4WithY, 175290640) \
V(Float32x4, withZ, Float32x4WithZ, 837367384) \
V(Float32x4, withW, Float32x4WithW, 1625145605) \
V(Float64x2, Float64x2., Float64x2Constructor, 423355933) \
V(Float64x2, Float64x2.zero, Float64x2Zero, 2066666975) \
V(Float64x2, Float64x2.splat, Float64x2Splat, 716962994) \
V(Float64x2, Float64x2.fromFloat32x4, Float64x2FromFloat32x4, 792974246) \
V(Float64x2, get:x, Float64x2GetX, 1488958362) \
V(Float64x2, get:y, Float64x2GetY, 1022688506) \
V(Float64x2, _negate, Float64x2Negate, 960840275) \
V(Float64x2, abs, Float64x2Abs, 52403783) \
V(Float64x2, sqrt, Float64x2Sqrt, 2012680669) \
V(Float64x2, get:signMask, Float64x2GetSignMask, 668856717) \
V(Float64x2, scale, Float64x2Scale, 646122081) \
V(Float64x2, withX, Float64x2WithX, 489409269) \
V(Float64x2, withY, Float64x2WithY, 943642284) \
V(Float64x2, min, Float64x2Min, 685235702) \
V(Float64x2, max, Float64x2Max, 198659675) \
V(Int32x4, Int32x4., Int32x4Constructor, 649173415) \
V(Int32x4, Int32x4.bool, Int32x4BoolConstructor, 458597857) \
V(Int32x4, Int32x4.fromFloat32x4Bits, Int32x4FromFloat32x4Bits, 2122470988) \
V(Int32x4, get:flagX, Int32x4GetFlagX, 1446544324) \
V(Int32x4, get:flagY, Int32x4GetFlagY, 1148149370) \
V(Int32x4, get:flagZ, Int32x4GetFlagZ, 550901369) \
V(Int32x4, get:flagW, Int32x4GetFlagW, 1346664620) \
V(Int32x4, get:signMask, Int32x4GetSignMask, 740215269) \
V(Int32x4, shuffle, Int32x4Shuffle, 549194518) \
V(Int32x4, shuffleMix, Int32x4ShuffleMix, 1550866145) \
V(Int32x4, select, Int32x4Select, 614943686) \
V(Int32x4, withFlagX, Int32x4WithFlagX, 250974159) \
V(Int32x4, withFlagY, Int32x4WithFlagY, 1686481348) \
V(Int32x4, withFlagZ, Int32x4WithFlagZ, 645582330) \
V(Int32x4, withFlagW, Int32x4WithFlagW, 878364277) \
V(Float32List, [], Float32ArrayGetIndexed, 1002307136) \
V(Float32List, []=, Float32ArraySetIndexed, 279546769) \
V(Int8List, [], Int8ArrayGetIndexed, 1141846285) \
V(Int8List, []=, Int8ArraySetIndexed, 1486839324) \
V(Uint8ClampedList, [], Uint8ClampedArrayGetIndexed, 513704632) \
V(Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, 1015846567) \
V(_ExternalUint8ClampedArray, [], ExternalUint8ClampedArrayGetIndexed, \
513704632) \
V(_ExternalUint8ClampedArray, []=, ExternalUint8ClampedArraySetIndexed, \
1015846567) \
V(_Int16Array, [], Int16ArrayGetIndexed, 1826359619) \
V(_Int16Array, []=, Int16ArraySetIndexed, 1108689116) \
V(_Uint16Array, [], Uint16ArrayGetIndexed, 118958722) \
V(_Uint16Array, []=, Uint16ArraySetIndexed, 658824450) \
V(_Int32Array, [], Int32ArrayGetIndexed, 681203163) \
V(_Int32Array, []=, Int32ArraySetIndexed, 1786886245) \
V(_Int64Array, [], Int64ArrayGetIndexed, 1883155004) \
V(_Int64Array, []=, Int64ArraySetIndexed, 905815059) \
V(_Float32x4Array, [], Float32x4ArrayGetIndexed, 694822356) \
V(_Float32x4Array, []=, Float32x4ArraySetIndexed, 1166109127) \
V(_Int32x4Array, [], Int32x4ArrayGetIndexed, 668249259) \
V(_Int32x4Array, []=, Int32x4ArraySetIndexed, 654739449) \
V(_Float64x2Array, [], Float64x2ArrayGetIndexed, 196472005) \
V(_Float64x2Array, []=, Float64x2ArraySetIndexed, 1421858500) \
V(Int16List, [], Int16ArrayGetIndexed, 1826359619) \
V(Int16List, []=, Int16ArraySetIndexed, 1108689116) \
V(Uint16List, [], Uint16ArrayGetIndexed, 118958722) \
V(Uint16List, []=, Uint16ArraySetIndexed, 658824450) \
V(Int32List, [], Int32ArrayGetIndexed, 681203163) \
V(Int32List, []=, Int32ArraySetIndexed, 1786886245) \
V(Int64List, [], Int64ArrayGetIndexed, 1883155004) \
V(Int64List, []=, Int64ArraySetIndexed, 905815059) \
V(Float32x4List, [], Float32x4ArrayGetIndexed, 694822356) \
V(Float32x4List, []=, Float32x4ArraySetIndexed, 1166109127) \
V(Int32x4List, [], Int32x4ArrayGetIndexed, 668249259) \
V(Int32x4List, []=, Int32x4ArraySetIndexed, 654739449) \
V(Float64x2List, [], Float64x2ArrayGetIndexed, 196472005) \
V(Float64x2List, []=, Float64x2ArraySetIndexed, 1421858500) \
V(_Bigint, get:_neg, Bigint_getNeg, 1681019799) \
V(_Bigint, get:_used, Bigint_getUsed, 1439136438) \
V(_Bigint, get:_digits, Bigint_getDigits, 769722770) \
@@ -245,38 +245,38 @@ namespace dart {
#define TYPED_DATA_LIB_INTRINSIC_LIST(V) \
V(_Int8Array, ., TypedData_Int8Array_factory, 1058992179) \
V(_Uint8Array, ., TypedData_Uint8Array_factory, 1807546986) \
V(_Uint8ClampedArray, ., TypedData_Uint8ClampedArray_factory, 548459853) \
V(_Int16Array, ., TypedData_Int16Array_factory, 1796211480) \
V(_Uint16Array, ., TypedData_Uint16Array_factory, 1960868166) \
V(_Int32Array, ., TypedData_Int32Array_factory, 372258367) \
V(_Uint32Array, ., TypedData_Uint32Array_factory, 1446612721) \
V(_Int64Array, ., TypedData_Int64Array_factory, 964028713) \
V(_Uint64Array, ., TypedData_Uint64Array_factory, 721823156) \
V(_Float32Array, ., TypedData_Float32Array_factory, 392399264) \
V(_Float64Array, ., TypedData_Float64Array_factory, 42503976) \
V(_Float32x4Array, ., TypedData_Float32x4Array_factory, 1960198693) \
V(_Int32x4Array, ., TypedData_Int32x4Array_factory, 1433742555) \
V(_Float64x2Array, ., TypedData_Float64x2Array_factory, 165463437) \
V(Int8List, ., TypedData_Int8Array_factory, 779569635) \
V(Uint8List, ., TypedData_Uint8Array_factory, 1790399545) \
V(Uint8ClampedList, ., TypedData_Uint8ClampedArray_factory, 405875159) \
V(Int16List, ., TypedData_Int16Array_factory, 347431914) \
V(Uint16List, ., TypedData_Uint16Array_factory, 121990116) \
V(Int32List, ., TypedData_Int32Array_factory, 1540657744) \
V(Uint32List, ., TypedData_Uint32Array_factory, 1012511652) \
V(Int64List, ., TypedData_Int64Array_factory, 1473796807) \
V(Uint64List, ., TypedData_Uint64Array_factory, 738799620) \
V(Float32List, ., TypedData_Float32Array_factory, 1938690635) \
V(Float64List, ., TypedData_Float64Array_factory, 1344005361) \
V(Float32x4List, ., TypedData_Float32x4Array_factory, 2055067416) \
V(Int32x4List, ., TypedData_Int32x4Array_factory, 504220232) \
V(Float64x2List, ., TypedData_Float64x2Array_factory, 416019673) \
#define GRAPH_TYPED_DATA_INTRINSICS_LIST(V) \
V(_Uint8Array, [], Uint8ArrayGetIndexed, 513704632) \
V(_Uint8Array, []=, Uint8ArraySetIndexed, 2123520783) \
V(Uint8List, [], Uint8ArrayGetIndexed, 513704632) \
V(Uint8List, []=, Uint8ArraySetIndexed, 2123520783) \
V(_ExternalUint8Array, [], ExternalUint8ArrayGetIndexed, 513704632) \
V(_ExternalUint8Array, []=, ExternalUint8ArraySetIndexed, 2123520783) \
V(_Uint32Array, [], Uint32ArrayGetIndexed, 1179675338) \
V(_Uint32Array, []=, Uint32ArraySetIndexed, 1455695417) \
V(_Float64Array, []=, Float64ArraySetIndexed, 1929239576) \
V(_Float64Array, [], Float64ArrayGetIndexed, 816943529) \
V(Uint32List, [], Uint32ArrayGetIndexed, 1179675338) \
V(Uint32List, []=, Uint32ArraySetIndexed, 1455695417) \
V(Float64List, []=, Float64ArraySetIndexed, 1929239576) \
V(Float64List, [], Float64ArrayGetIndexed, 816943529) \
V(_TypedList, get:length, TypedDataLength, 546364442) \
V(_Float32x4, get:x, Float32x4ShuffleX, 1674625343) \
V(_Float32x4, get:y, Float32x4ShuffleY, 540293915) \
V(_Float32x4, get:z, Float32x4ShuffleZ, 320347578) \
V(_Float32x4, get:w, Float32x4ShuffleW, 1770606624) \
V(_Float32x4, _mul, Float32x4Mul, 861549065) \
V(_Float32x4, _sub, Float32x4Sub, 460363214) \
V(_Float32x4, _add, Float32x4Add, 1487592255) \
V(Float32x4, get:x, Float32x4ShuffleX, 1674625343) \
V(Float32x4, get:y, Float32x4ShuffleY, 540293915) \
V(Float32x4, get:z, Float32x4ShuffleZ, 320347578) \
V(Float32x4, get:w, Float32x4ShuffleW, 1770606624) \
V(Float32x4, _mul, Float32x4Mul, 861549065) \
V(Float32x4, _sub, Float32x4Sub, 460363214) \
V(Float32x4, _add, Float32x4Add, 1487592255) \
#define GRAPH_CORE_INTRINSICS_LIST(V) \
V(_List, get:length, ObjectArrayLength, 630471378) \
@@ -343,24 +343,24 @@ namespace dart {
V(_ImmutableList, [], ImmutableArrayGetIndexed, 360400496) \
V(_GrowableList, [], GrowableArrayGetIndexed, 1957529650) \
V(_GrowableList, []=, GrowableArraySetIndexed, 225246870) \
V(_Float32Array, [], Float32ArrayGetIndexed, 1002307136) \
V(_Float32Array, []=, Float32ArraySetIndexed, 279546769) \
V(_Float64Array, [], Float64ArrayGetIndexed, 816943529) \
V(_Float64Array, []=, Float64ArraySetIndexed, 1929239576) \
V(_Int8Array, [], Int8ArrayGetIndexed, 1141846285) \
V(_Int8Array, []=, Int8ArraySetIndexed, 1486839324) \
V(_Uint8Array, [], Uint8ArrayGetIndexed, 513704632) \
V(_Uint8Array, []=, Uint8ArraySetIndexed, 2123520783) \
V(_Uint8ClampedArray, [], Uint8ClampedArrayGetIndexed, 513704632) \
V(_Uint8ClampedArray, []=, Uint8ClampedArraySetIndexed, 1015846567) \
V(_Uint16Array, [], Uint16ArrayGetIndexed, 118958722) \
V(_Uint16Array, []=, Uint16ArraySetIndexed, 658824450) \
V(_Int16Array, [], Int16ArrayGetIndexed, 1826359619) \
V(_Int16Array, []=, Int16ArraySetIndexed, 1108689116) \
V(_Int32Array, [], Int32ArrayGetIndexed, 681203163) \
V(_Int32Array, []=, Int32ArraySetIndexed, 1786886245) \
V(_Int64Array, [], Int64ArrayGetIndexed, 1883155004) \
V(_Int64Array, []=, Int64ArraySetIndexed, 905815059) \
V(Float32List, [], Float32ArrayGetIndexed, 1002307136) \
V(Float32List, []=, Float32ArraySetIndexed, 279546769) \
V(Float64List, [], Float64ArrayGetIndexed, 816943529) \
V(Float64List, []=, Float64ArraySetIndexed, 1929239576) \
V(Int8List, [], Int8ArrayGetIndexed, 1141846285) \
V(Int8List, []=, Int8ArraySetIndexed, 1486839324) \
V(Uint8List, [], Uint8ArrayGetIndexed, 513704632) \
V(Uint8List, []=, Uint8ArraySetIndexed, 2123520783) \
V(Uint8ClampedList, [], Uint8ClampedArrayGetIndexed, 513704632) \
V(Uint8ClampedList, []=, Uint8ClampedArraySetIndexed, 1015846567) \
V(Uint16List, [], Uint16ArrayGetIndexed, 118958722) \
V(Uint16List, []=, Uint16ArraySetIndexed, 658824450) \
V(Int16List, [], Int16ArrayGetIndexed, 1826359619) \
V(Int16List, []=, Int16ArraySetIndexed, 1108689116) \
V(Int32List, [], Int32ArrayGetIndexed, 681203163) \
V(Int32List, []=, Int32ArraySetIndexed, 1786886245) \
V(Int64List, [], Int64ArrayGetIndexed, 1883155004) \
V(Int64List, []=, Int64ArraySetIndexed, 905815059) \
V(_Uint8ArrayView, [], Uint8ArrayViewGetIndexed, 215420949) \
V(_Uint8ArrayView, []=, Uint8ArrayViewSetIndexed, 1138146450) \
V(_Int8ArrayView, [], Int8ArrayViewGetIndexed, 1003520035) \
@@ -412,20 +412,6 @@ namespace dart {
V(_HashVMBase, set:_hashMask, LinkedHashMap_setHashMask, 340628211) \
V(_HashVMBase, get:_deletedKeys, LinkedHashMap_getDeletedKeys, 1340385546) \
V(_HashVMBase, set:_deletedKeys, LinkedHashMap_setDeletedKeys, 638315987) \
V(Uint8List, ., Uint8ListFactory, 1885328419) \
V(Int8List, ., Int8ListFactory, 551286096) \
V(Uint16List, ., Uint16ListFactory, 2018994846) \
V(Int16List, ., Int16ListFactory, 1934285336) \
V(Uint32List, ., Uint32ListFactory, 990865607) \
V(Int32List, ., Int32ListFactory, 2017670015) \
V(Uint64List, ., Uint64ListFactory, 1593070032) \
V(Int64List, ., Int64ListFactory, 1071205588) \
V(Float32List, ., Float32ListFactory, 1015272745) \
V(Float64List, ., Float64ListFactory, 626315429) \
V(Int32x4List, ., Int32x4ListFactory, 1693091079) \
V(Float32x4List, ., Float32x4ListFactory, 585154381) \
V(Float64x2List, ., Float64x2ListFactory, 874435184)
// A list of core function that should never be inlined.
#define INLINE_BLACK_LIST(V) \
@@ -474,7 +460,7 @@ class MethodRecognizer : public AllStatic {
enum Kind {
kUnknown,
#define DEFINE_ENUM_LIST(class_name, function_name, enum_name, fp) k##enum_name,
RECOGNIZED_LIST(DEFINE_ENUM_LIST)
RECOGNIZED_LIST(DEFINE_ENUM_LIST)
#undef DEFINE_ENUM_LIST
kNumRecognizedMethods
};
@@ -504,18 +490,18 @@ RECOGNIZED_LIST(DEFINE_ENUM_LIST)
V(_ListFactory, kArrayCid, 184405219) \
V(_GrowableListWithData, kGrowableObjectArrayCid, 131424500) \
V(_GrowableListFactory, kGrowableObjectArrayCid, 664918385) \
V(_Int8ArrayFactory, kTypedDataInt8ArrayCid, 1058992179) \
V(_Uint8ArrayFactory, kTypedDataUint8ArrayCid, 1807546986) \
V(_Uint8ClampedArrayFactory, kTypedDataUint8ClampedArrayCid, 548459853) \
V(_Int16ArrayFactory, kTypedDataInt16ArrayCid, 1796211480) \
V(_Uint16ArrayFactory, kTypedDataUint16ArrayCid, 1960868166) \
V(_Int32ArrayFactory, kTypedDataInt32ArrayCid, 372258367) \
V(_Uint32ArrayFactory, kTypedDataUint32ArrayCid, 1446612721) \
V(_Int64ArrayFactory, kTypedDataInt64ArrayCid, 964028713) \
V(_Uint64ArrayFactory, kTypedDataUint64ArrayCid, 721823156) \
V(_Float64ArrayFactory, kTypedDataFloat64ArrayCid, 42503976) \
V(_Float32ArrayFactory, kTypedDataFloat32ArrayCid, 392399264) \
V(_Float32x4ArrayFactory, kTypedDataFloat32x4ArrayCid, 1960198693) \
V(_Int8ArrayFactory, kTypedDataInt8ArrayCid, 779569635) \
V(_Uint8ArrayFactory, kTypedDataUint8ArrayCid, 1790399545) \
V(_Uint8ClampedArrayFactory, kTypedDataUint8ClampedArrayCid, 405875159) \
V(_Int16ArrayFactory, kTypedDataInt16ArrayCid, 347431914) \
V(_Uint16ArrayFactory, kTypedDataUint16ArrayCid, 121990116) \
V(_Int32ArrayFactory, kTypedDataInt32ArrayCid, 1540657744) \
V(_Uint32ArrayFactory, kTypedDataUint32ArrayCid, 1012511652) \
V(_Int64ArrayFactory, kTypedDataInt64ArrayCid, 1473796807) \
V(_Uint64ArrayFactory, kTypedDataUint64ArrayCid, 738799620) \
V(_Float64ArrayFactory, kTypedDataFloat64ArrayCid, 1344005361) \
V(_Float32ArrayFactory, kTypedDataFloat32ArrayCid, 1938690635) \
V(_Float32x4ArrayFactory, kTypedDataFloat32x4ArrayCid, 2055067416) \
// Class that recognizes factories and returns corresponding result cid.
+9 -17
View File
@@ -1438,10 +1438,10 @@ NOT_IN_PRODUCT(
ASSERT(!lib.IsNull());
ASSERT(lib.raw() == Library::TypedDataLibrary());
#define REGISTER_TYPED_DATA_CLASS(clazz) \
cls = Class::NewTypedDataClass(kTypedData##clazz##Cid); \
RegisterPrivateClass(cls, Symbols::_##clazz(), lib); \
cls = Class::NewTypedDataClass(kTypedData##clazz##ArrayCid); \
RegisterClass(cls, Symbols::clazz##List(), lib); \
CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS);
DART_CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS);
#undef REGISTER_TYPED_DATA_CLASS
#define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \
cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid); \
@@ -1460,46 +1460,39 @@ NOT_IN_PRODUCT(
cls = Class::New<Instance>(kByteBufferCid);
cls.set_instance_size(0);
cls.set_next_field_offset(-kWordSize);
RegisterPrivateClass(cls, Symbols::_ByteBuffer(), lib);
RegisterClass(cls, Symbols::ByteBuffer(), lib);
pending_classes.Add(cls);
CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS);
#undef REGISTER_EXT_TYPED_DATA_CLASS
// Register Float32x4 and Int32x4 in the object store.
cls = Class::New<Float32x4>();
object_store->set_float32x4_class(cls);
RegisterPrivateClass(cls, Symbols::_Float32x4(), lib);
cls = Class::New<Int32x4>();
object_store->set_int32x4_class(cls);
RegisterPrivateClass(cls, Symbols::_Int32x4(), lib);
cls = Class::New<Float64x2>();
object_store->set_float64x2_class(cls);
RegisterPrivateClass(cls, Symbols::_Float64x2(), lib);
cls = Class::New<Instance>(kIllegalCid);
RegisterClass(cls, Symbols::Float32x4(), lib);
cls.set_num_type_arguments(0);
cls.set_num_own_type_arguments(0);
cls.set_is_prefinalized();
pending_classes.Add(cls);
object_store->set_float32x4_class(cls);
type = Type::NewNonParameterizedType(cls);
object_store->set_float32x4_type(type);
cls = Class::New<Instance>(kIllegalCid);
cls = Class::New<Int32x4>();
RegisterClass(cls, Symbols::Int32x4(), lib);
cls.set_num_type_arguments(0);
cls.set_num_own_type_arguments(0);
cls.set_is_prefinalized();
pending_classes.Add(cls);
object_store->set_int32x4_class(cls);
type = Type::NewNonParameterizedType(cls);
object_store->set_int32x4_type(type);
cls = Class::New<Instance>(kIllegalCid);
cls = Class::New<Float64x2>();
RegisterClass(cls, Symbols::Float64x2(), lib);
cls.set_num_type_arguments(0);
cls.set_num_own_type_arguments(0);
cls.set_is_prefinalized();
pending_classes.Add(cls);
object_store->set_float64x2_class(cls);
type = Type::NewNonParameterizedType(cls);
object_store->set_float64x2_type(type);
@@ -7052,7 +7045,6 @@ bool Function::CheckSourceFingerprint(const char* prefix, int32_t fp) const {
// This output can be copied into a file, then used with sed
// to replace the old values.
// sed -i .bak -f /tmp/newkeys runtime/vm/method_recognizer.h
// sed -i .bak -f /tmp/newkeys runtime/vm/flow_graph_builder.h
THR_Print("s/V(%s, %d)/V(%s, %d)/\n",
prefix, fp, prefix, SourceFingerprint());
} else {
+1 -1
View File
@@ -313,7 +313,7 @@ void Precompiler::AddRoots(Dart_QualifiedFunctionName embedder_entry_points[]) {
{ "dart:isolate", "_SendPortImpl", "send" },
{ "dart:typed_data", "ByteData", "ByteData." },
{ "dart:typed_data", "ByteData", "ByteData._view" },
{ "dart:typed_data", "_ByteBuffer", "_ByteBuffer._New" },
{ "dart:typed_data", "ByteBuffer", "ByteBuffer._New" },
{ "dart:_vmservice", "::", "_registerIsolate" },
{ "dart:_vmservice", "::", "boot" },
{ "dart:developer", "Metrics", "_printMetrics" },
+1 -3
View File
@@ -958,7 +958,7 @@ TEST_CASE(Profiler_TypedArrayAllocation) {
Library::Handle(isolate->object_store()->typed_data_library());
const Class& float32_list_class =
Class::Handle(GetClass(typed_data_library, "_Float32Array"));
Class::Handle(GetClass(typed_data_library, "Float32List"));
EXPECT(!float32_list_class.IsNull());
Dart_Handle result = Dart_Invoke(lib, NewString("foo"), 0, NULL);
@@ -990,8 +990,6 @@ TEST_CASE(Profiler_TypedArrayAllocation) {
walker.Reset(Profile::kExclusiveCode);
EXPECT(walker.Down());
EXPECT_STREQ("_Float32Array._Float32Array", walker.CurrentName());
EXPECT(walker.Down());
EXPECT_STREQ("Float32List.Float32List", walker.CurrentName());
EXPECT(walker.Down());
EXPECT_STREQ("foo", walker.CurrentName());
+16
View File
@@ -108,6 +108,22 @@ namespace dart {
V(Int32x4Array) \
V(Float64x2Array) \
#define DART_CLASS_LIST_TYPED_DATA(V) \
V(Int8) \
V(Uint8) \
V(Uint8Clamped) \
V(Int16) \
V(Uint16) \
V(Int32) \
V(Uint32) \
V(Int64) \
V(Uint64) \
V(Float32) \
V(Float64) \
V(Float32x4) \
V(Int32x4) \
V(Float64x2)
#define CLASS_LIST_FOR_HANDLES(V) \
CLASS_LIST_NO_OBJECT_NOR_STRING_NOR_ARRAY(V) \
V(Array) \
+16 -33
View File
@@ -206,9 +206,6 @@ class ObjectPointerVisitor;
V(Object, "Object") \
V(Int, "int") \
V(Double, "double") \
V(_Float32x4, "_Float32x4") \
V(_Float64x2, "_Float64x2") \
V(_Int32x4, "_Int32x4") \
V(Float32x4, "Float32x4") \
V(Float64x2, "Float64x2") \
V(Int32x4, "Int32x4") \
@@ -226,34 +223,20 @@ class ObjectPointerVisitor;
V(Float64x2List, "Float64x2List") \
V(Float32List, "Float32List") \
V(Float64List, "Float64List") \
V(_Int8Array, "_Int8Array") \
V(_Int8ArrayFactory, "_Int8Array.") \
V(_Uint8Array, "_Uint8Array") \
V(_Uint8ArrayFactory, "_Uint8Array.") \
V(_Uint8ClampedArray, "_Uint8ClampedArray") \
V(_Uint8ClampedArrayFactory, "_Uint8ClampedArray.") \
V(_Int16Array, "_Int16Array") \
V(_Int16ArrayFactory, "_Int16Array.") \
V(_Uint16Array, "_Uint16Array") \
V(_Uint16ArrayFactory, "_Uint16Array.") \
V(_Int32Array, "_Int32Array") \
V(_Int32ArrayFactory, "_Int32Array.") \
V(_Uint32Array, "_Uint32Array") \
V(_Uint32ArrayFactory, "_Uint32Array.") \
V(_Int64Array, "_Int64Array") \
V(_Int64ArrayFactory, "_Int64Array.") \
V(_Uint64Array, "_Uint64Array") \
V(_Uint64ArrayFactory, "_Uint64Array.") \
V(_Float32x4Array, "_Float32x4Array") \
V(_Float32x4ArrayFactory, "_Float32x4Array.") \
V(_Int32x4Array, "_Int32x4Array") \
V(_Int32x4ArrayFactory, "_Int32x4Array.") \
V(_Float64x2Array, "_Float64x2Array") \
V(_Float64x2ArrayFactory, "_Float64x2Array.") \
V(_Float32Array, "_Float32Array") \
V(_Float32ArrayFactory, "_Float32Array.") \
V(_Float64Array, "_Float64Array") \
V(_Float64ArrayFactory, "_Float64Array.") \
V(_Int8ArrayFactory, "Int8List.") \
V(_Uint8ArrayFactory, "Uint8List.") \
V(_Uint8ClampedArrayFactory, "Uint8ClampedList.") \
V(_Int16ArrayFactory, "Int16List.") \
V(_Uint16ArrayFactory, "Uint16List.") \
V(_Int32ArrayFactory, "Int32List.") \
V(_Uint32ArrayFactory, "Uint32List.") \
V(_Int64ArrayFactory, "Int64List.") \
V(_Uint64ArrayFactory, "Uint64List.") \
V(_Float32x4ArrayFactory, "Float32x4List.") \
V(_Int32x4ArrayFactory, "Int32x4List.") \
V(_Float64x2ArrayFactory, "Float64x2List.") \
V(_Float32ArrayFactory, "Float32List.") \
V(_Float64ArrayFactory, "Float64List.") \
V(_Int8ArrayView, "_Int8ArrayView") \
V(_Uint8ArrayView, "_Uint8ArrayView") \
V(_Uint8ClampedArrayView, "_Uint8ClampedArrayView") \
@@ -286,8 +269,8 @@ class ObjectPointerVisitor;
V(ByteDataDot, "ByteData.") \
V(ByteDataDot_view, "ByteData._view") \
V(_ByteDataView, "_ByteDataView") \
V(_ByteBuffer, "_ByteBuffer") \
V(_ByteBufferDot_New, "_ByteBuffer._New") \
V(ByteBuffer, "ByteBuffer") \
V(ByteBufferDot_New, "ByteBuffer._New") \
V(_WeakProperty, "_WeakProperty") \
V(_MirrorReference, "_MirrorReference") \
V(InvocationMirror, "_InvocationMirror") \
+2 -45
View File
@@ -30,7 +30,6 @@
'snapshot_test_in_dat_file': 'snapshot_test_in.dat',
'snapshot_test_dart_file': 'snapshot_test.dart',
'typed_data_cc_file': '<(gen_source_dir)/typed_data_gen.cc',
'typed_data_patch_cc_file': '<(gen_source_dir)/typed_data_patch_gen.cc',
'vmservice_cc_file': '<(gen_source_dir)/vmservice_gen.cc',
'vmservice_patch_cc_file': '<(gen_source_dir)/vmservice_patch_gen.cc',
},
@@ -234,7 +233,6 @@
'generate_mirrors_patch_cc_file#host',
'generate_profiler_cc_file#host',
'generate_typed_data_cc_file#host',
'generate_typed_data_patch_cc_file#host',
'generate_vmservice_cc_file#host',
'generate_vmservice_patch_cc_file#host',
],
@@ -273,7 +271,6 @@
'<(mirrors_patch_cc_file)',
'<(profiler_cc_file)',
'<(typed_data_cc_file)',
'<(typed_data_patch_cc_file)',
'<(vmservice_cc_file)',
'<(vmservice_patch_cc_file)',
],
@@ -974,8 +971,8 @@
'type': 'none',
'toolsets':['host'],
'includes': [
# Load the shared library sources.
'../../sdk/lib/typed_data/typed_data_sources.gypi',
# Load the runtime implementation sources.
'../lib/typed_data_sources.gypi',
],
'sources/': [
# Exclude all .[cc|h] files.
@@ -1009,46 +1006,6 @@
},
]
},
{
'target_name': 'generate_typed_data_patch_cc_file',
'type': 'none',
'toolsets':['host'],
'includes': [
# Load the runtime implementation sources.
'../lib/typed_data_sources.gypi',
],
'sources/': [
# Exclude all .[cc|h] files.
# This is only here for reference. Excludes happen after
# variable expansion, so the script has to do its own
# exclude processing of the sources being passed.
['exclude', '\\.cc|h$'],
],
'actions': [
{
'action_name': 'generate_typed_data_patch_cc',
'inputs': [
'../tools/gen_library_src_paths.py',
'<(libgen_in_cc_file)',
'<@(_sources)',
],
'outputs': [
'<(typed_data_patch_cc_file)',
],
'action': [
'python',
'tools/gen_library_src_paths.py',
'--output', '<(typed_data_patch_cc_file)',
'--input_cc', '<(libgen_in_cc_file)',
'--include', 'vm/bootstrap.h',
'--var_name', 'dart::Bootstrap::typed_data_patch_paths_',
'--library_name', 'dart:typed_data',
'<@(_sources)',
],
'message': 'Generating ''<(typed_data_patch_cc_file)'' file.'
},
]
},
{
'target_name': 'generate_profiler_cc_file',
'type': 'none',