| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "vm/globals.h"  // Needed here to get TARGET_ARCH_MIPS. | 5 #include "vm/globals.h"  // Needed here to get TARGET_ARCH_MIPS. | 
| 6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) | 
| 7 | 7 | 
| 8 #include "vm/intermediate_language.h" | 8 #include "vm/intermediate_language.h" | 
| 9 | 9 | 
| 10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" | 
| (...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1032   switch (class_id_) { | 1032   switch (class_id_) { | 
| 1033     case kArrayCid: | 1033     case kArrayCid: | 
| 1034     case kImmutableArrayCid: | 1034     case kImmutableArrayCid: | 
| 1035       return CompileType::Dynamic(); | 1035       return CompileType::Dynamic(); | 
| 1036 | 1036 | 
| 1037     case kTypedDataFloat32ArrayCid: | 1037     case kTypedDataFloat32ArrayCid: | 
| 1038     case kTypedDataFloat64ArrayCid: | 1038     case kTypedDataFloat64ArrayCid: | 
| 1039       return CompileType::FromCid(kDoubleCid); | 1039       return CompileType::FromCid(kDoubleCid); | 
| 1040     case kTypedDataFloat32x4ArrayCid: | 1040     case kTypedDataFloat32x4ArrayCid: | 
| 1041       return CompileType::FromCid(kFloat32x4Cid); | 1041       return CompileType::FromCid(kFloat32x4Cid); | 
| 1042     case kTypedDataUint32x4ArrayCid: | 1042     case kTypedDataInt32x4ArrayCid: | 
| 1043       return CompileType::FromCid(kUint32x4Cid); | 1043       return CompileType::FromCid(kInt32x4Cid); | 
| 1044 | 1044 | 
| 1045     case kTypedDataInt8ArrayCid: | 1045     case kTypedDataInt8ArrayCid: | 
| 1046     case kTypedDataUint8ArrayCid: | 1046     case kTypedDataUint8ArrayCid: | 
| 1047     case kTypedDataUint8ClampedArrayCid: | 1047     case kTypedDataUint8ClampedArrayCid: | 
| 1048     case kExternalTypedDataUint8ArrayCid: | 1048     case kExternalTypedDataUint8ArrayCid: | 
| 1049     case kExternalTypedDataUint8ClampedArrayCid: | 1049     case kExternalTypedDataUint8ClampedArrayCid: | 
| 1050     case kTypedDataInt16ArrayCid: | 1050     case kTypedDataInt16ArrayCid: | 
| 1051     case kTypedDataUint16ArrayCid: | 1051     case kTypedDataUint16ArrayCid: | 
| 1052     case kOneByteStringCid: | 1052     case kOneByteStringCid: | 
| 1053     case kTwoByteStringCid: | 1053     case kTwoByteStringCid: | 
| (...skipping 29 matching lines...) Expand all  Loading... | 
| 1083     case kTwoByteStringCid: | 1083     case kTwoByteStringCid: | 
| 1084       return kTagged; | 1084       return kTagged; | 
| 1085     case kTypedDataInt32ArrayCid: | 1085     case kTypedDataInt32ArrayCid: | 
| 1086     case kTypedDataUint32ArrayCid: | 1086     case kTypedDataUint32ArrayCid: | 
| 1087       // Instruction can deoptimize if we optimistically assumed that the result | 1087       // Instruction can deoptimize if we optimistically assumed that the result | 
| 1088       // fits into Smi. | 1088       // fits into Smi. | 
| 1089       return CanDeoptimize() ? kTagged : kUnboxedMint; | 1089       return CanDeoptimize() ? kTagged : kUnboxedMint; | 
| 1090     case kTypedDataFloat32ArrayCid: | 1090     case kTypedDataFloat32ArrayCid: | 
| 1091     case kTypedDataFloat64ArrayCid: | 1091     case kTypedDataFloat64ArrayCid: | 
| 1092       return kUnboxedDouble; | 1092       return kUnboxedDouble; | 
| 1093     case kTypedDataUint32x4ArrayCid: | 1093     case kTypedDataInt32x4ArrayCid: | 
| 1094       return kUnboxedUint32x4; | 1094       return kUnboxedInt32x4; | 
| 1095     case kTypedDataFloat32x4ArrayCid: | 1095     case kTypedDataFloat32x4ArrayCid: | 
| 1096       return kUnboxedFloat32x4; | 1096       return kUnboxedFloat32x4; | 
| 1097     default: | 1097     default: | 
| 1098       UNIMPLEMENTED(); | 1098       UNIMPLEMENTED(); | 
| 1099       return kTagged; | 1099       return kTagged; | 
| 1100   } | 1100   } | 
| 1101 } | 1101 } | 
| 1102 | 1102 | 
| 1103 | 1103 | 
| 1104 LocationSummary* LoadIndexedInstr::MakeLocationSummary() const { | 1104 LocationSummary* LoadIndexedInstr::MakeLocationSummary() const { | 
| 1105   const intptr_t kNumInputs = 2; | 1105   const intptr_t kNumInputs = 2; | 
| 1106   const intptr_t kNumTemps = 0; | 1106   const intptr_t kNumTemps = 0; | 
| 1107   LocationSummary* locs = | 1107   LocationSummary* locs = | 
| 1108       new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 1108       new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| 1109   locs->set_in(0, Location::RequiresRegister()); | 1109   locs->set_in(0, Location::RequiresRegister()); | 
| 1110   // The smi index is either untagged (element size == 1), or it is left smi | 1110   // The smi index is either untagged (element size == 1), or it is left smi | 
| 1111   // tagged (for all element sizes > 1). | 1111   // tagged (for all element sizes > 1). | 
| 1112   // TODO(regis): Revisit and see if the index can be immediate. | 1112   // TODO(regis): Revisit and see if the index can be immediate. | 
| 1113   locs->set_in(1, Location::WritableRegister()); | 1113   locs->set_in(1, Location::WritableRegister()); | 
| 1114   if ((representation() == kUnboxedDouble) || | 1114   if ((representation() == kUnboxedDouble) || | 
| 1115       (representation() == kUnboxedFloat32x4) || | 1115       (representation() == kUnboxedFloat32x4) || | 
| 1116       (representation() == kUnboxedUint32x4)) { | 1116       (representation() == kUnboxedInt32x4)) { | 
| 1117     locs->set_out(Location::RequiresFpuRegister()); | 1117     locs->set_out(Location::RequiresFpuRegister()); | 
| 1118   } else { | 1118   } else { | 
| 1119     locs->set_out(Location::RequiresRegister()); | 1119     locs->set_out(Location::RequiresRegister()); | 
| 1120   } | 1120   } | 
| 1121   return locs; | 1121   return locs; | 
| 1122 } | 1122 } | 
| 1123 | 1123 | 
| 1124 | 1124 | 
| 1125 void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 1125 void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 1126   __ TraceSimMsg("LoadIndexedInstr"); | 1126   __ TraceSimMsg("LoadIndexedInstr"); | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1166     // If the data offset doesn't fit into the 18 bits we get for the addressing | 1166     // If the data offset doesn't fit into the 18 bits we get for the addressing | 
| 1167     // mode, then we must load the offset into a register and add it to the | 1167     // mode, then we must load the offset into a register and add it to the | 
| 1168     // index. | 1168     // index. | 
| 1169     element_address = Address(index.reg(), | 1169     element_address = Address(index.reg(), | 
| 1170         FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 1170         FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 
| 1171   } | 1171   } | 
| 1172 | 1172 | 
| 1173   if ((representation() == kUnboxedDouble) || | 1173   if ((representation() == kUnboxedDouble) || | 
| 1174       (representation() == kUnboxedMint) || | 1174       (representation() == kUnboxedMint) || | 
| 1175       (representation() == kUnboxedFloat32x4) || | 1175       (representation() == kUnboxedFloat32x4) || | 
| 1176       (representation() == kUnboxedUint32x4)) { | 1176       (representation() == kUnboxedInt32x4)) { | 
| 1177     DRegister result = locs()->out().fpu_reg(); | 1177     DRegister result = locs()->out().fpu_reg(); | 
| 1178     switch (class_id()) { | 1178     switch (class_id()) { | 
| 1179       case kTypedDataInt32ArrayCid: | 1179       case kTypedDataInt32ArrayCid: | 
| 1180         UNIMPLEMENTED(); | 1180         UNIMPLEMENTED(); | 
| 1181         break; | 1181         break; | 
| 1182       case kTypedDataUint32ArrayCid: | 1182       case kTypedDataUint32ArrayCid: | 
| 1183         UNIMPLEMENTED(); | 1183         UNIMPLEMENTED(); | 
| 1184         break; | 1184         break; | 
| 1185       case kTypedDataFloat32ArrayCid: | 1185       case kTypedDataFloat32ArrayCid: | 
| 1186         // Load single precision float and promote to double. | 1186         // Load single precision float and promote to double. | 
| 1187         __ lwc1(STMP1, element_address); | 1187         __ lwc1(STMP1, element_address); | 
| 1188         __ cvtds(result, STMP1); | 1188         __ cvtds(result, STMP1); | 
| 1189         break; | 1189         break; | 
| 1190       case kTypedDataFloat64ArrayCid: | 1190       case kTypedDataFloat64ArrayCid: | 
| 1191         __ LoadDFromOffset(result, index.reg(), | 1191         __ LoadDFromOffset(result, index.reg(), | 
| 1192             FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 1192             FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 
| 1193         break; | 1193         break; | 
| 1194       case kTypedDataUint32x4ArrayCid: | 1194       case kTypedDataInt32x4ArrayCid: | 
| 1195       case kTypedDataFloat32x4ArrayCid: | 1195       case kTypedDataFloat32x4ArrayCid: | 
| 1196         UNIMPLEMENTED(); | 1196         UNIMPLEMENTED(); | 
| 1197         break; | 1197         break; | 
| 1198     } | 1198     } | 
| 1199     return; | 1199     return; | 
| 1200   } | 1200   } | 
| 1201 | 1201 | 
| 1202   Register result = locs()->out().reg(); | 1202   Register result = locs()->out().reg(); | 
| 1203   switch (class_id()) { | 1203   switch (class_id()) { | 
| 1204     case kTypedDataInt8ArrayCid: | 1204     case kTypedDataInt8ArrayCid: | 
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1268     case kTypedDataUint16ArrayCid: | 1268     case kTypedDataUint16ArrayCid: | 
| 1269       return kTagged; | 1269       return kTagged; | 
| 1270     case kTypedDataInt32ArrayCid: | 1270     case kTypedDataInt32ArrayCid: | 
| 1271     case kTypedDataUint32ArrayCid: | 1271     case kTypedDataUint32ArrayCid: | 
| 1272       return value()->IsSmiValue() ? kTagged : kUnboxedMint; | 1272       return value()->IsSmiValue() ? kTagged : kUnboxedMint; | 
| 1273     case kTypedDataFloat32ArrayCid: | 1273     case kTypedDataFloat32ArrayCid: | 
| 1274     case kTypedDataFloat64ArrayCid: | 1274     case kTypedDataFloat64ArrayCid: | 
| 1275       return kUnboxedDouble; | 1275       return kUnboxedDouble; | 
| 1276     case kTypedDataFloat32x4ArrayCid: | 1276     case kTypedDataFloat32x4ArrayCid: | 
| 1277       return kUnboxedFloat32x4; | 1277       return kUnboxedFloat32x4; | 
| 1278     case kTypedDataUint32x4ArrayCid: | 1278     case kTypedDataInt32x4ArrayCid: | 
| 1279       return kUnboxedUint32x4; | 1279       return kUnboxedInt32x4; | 
| 1280     default: | 1280     default: | 
| 1281       UNIMPLEMENTED(); | 1281       UNIMPLEMENTED(); | 
| 1282       return kTagged; | 1282       return kTagged; | 
| 1283   } | 1283   } | 
| 1284 } | 1284 } | 
| 1285 | 1285 | 
| 1286 | 1286 | 
| 1287 LocationSummary* StoreIndexedInstr::MakeLocationSummary() const { | 1287 LocationSummary* StoreIndexedInstr::MakeLocationSummary() const { | 
| 1288   const intptr_t kNumInputs = 3; | 1288   const intptr_t kNumInputs = 3; | 
| 1289   const intptr_t kNumTemps = 0; | 1289   const intptr_t kNumTemps = 0; | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 1311     case kTypedDataInt32ArrayCid: | 1311     case kTypedDataInt32ArrayCid: | 
| 1312     case kTypedDataUint32ArrayCid: | 1312     case kTypedDataUint32ArrayCid: | 
| 1313       locs->set_in(2, Location::WritableRegister()); | 1313       locs->set_in(2, Location::WritableRegister()); | 
| 1314       break; | 1314       break; | 
| 1315     case kTypedDataFloat32ArrayCid: | 1315     case kTypedDataFloat32ArrayCid: | 
| 1316       // TODO(regis): Verify. | 1316       // TODO(regis): Verify. | 
| 1317       // Need temp register for float-to-double conversion. | 1317       // Need temp register for float-to-double conversion. | 
| 1318       locs->AddTemp(Location::RequiresFpuRegister()); | 1318       locs->AddTemp(Location::RequiresFpuRegister()); | 
| 1319       // Fall through. | 1319       // Fall through. | 
| 1320     case kTypedDataFloat64ArrayCid:  // TODO(srdjan): Support Float64 constants. | 1320     case kTypedDataFloat64ArrayCid:  // TODO(srdjan): Support Float64 constants. | 
| 1321     case kTypedDataUint32x4ArrayCid: | 1321     case kTypedDataInt32x4ArrayCid: | 
| 1322     case kTypedDataFloat32x4ArrayCid: | 1322     case kTypedDataFloat32x4ArrayCid: | 
| 1323       locs->set_in(2, Location::RequiresFpuRegister()); | 1323       locs->set_in(2, Location::RequiresFpuRegister()); | 
| 1324       break; | 1324       break; | 
| 1325     default: | 1325     default: | 
| 1326       UNREACHABLE(); | 1326       UNREACHABLE(); | 
| 1327       return NULL; | 1327       return NULL; | 
| 1328   } | 1328   } | 
| 1329   return locs; | 1329   return locs; | 
| 1330 } | 1330 } | 
| 1331 | 1331 | 
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1451     case kTypedDataFloat32ArrayCid: | 1451     case kTypedDataFloat32ArrayCid: | 
| 1452       // Convert to single precision. | 1452       // Convert to single precision. | 
| 1453       __ cvtsd(STMP1, locs()->in(2).fpu_reg()); | 1453       __ cvtsd(STMP1, locs()->in(2).fpu_reg()); | 
| 1454       // Store. | 1454       // Store. | 
| 1455       __ swc1(STMP1, element_address); | 1455       __ swc1(STMP1, element_address); | 
| 1456       break; | 1456       break; | 
| 1457     case kTypedDataFloat64ArrayCid: | 1457     case kTypedDataFloat64ArrayCid: | 
| 1458       __ StoreDToOffset(locs()->in(2).fpu_reg(), index.reg(), | 1458       __ StoreDToOffset(locs()->in(2).fpu_reg(), index.reg(), | 
| 1459           FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 1459           FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 
| 1460       break; | 1460       break; | 
| 1461     case kTypedDataUint32x4ArrayCid: | 1461     case kTypedDataInt32x4ArrayCid: | 
| 1462     case kTypedDataFloat32x4ArrayCid: | 1462     case kTypedDataFloat32x4ArrayCid: | 
| 1463       UNIMPLEMENTED(); | 1463       UNIMPLEMENTED(); | 
| 1464       break; | 1464       break; | 
| 1465     default: | 1465     default: | 
| 1466       UNREACHABLE(); | 1466       UNREACHABLE(); | 
| 1467   } | 1467   } | 
| 1468 } | 1468 } | 
| 1469 | 1469 | 
| 1470 | 1470 | 
| 1471 LocationSummary* GuardFieldInstr::MakeLocationSummary() const { | 1471 LocationSummary* GuardFieldInstr::MakeLocationSummary() const { | 
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1579           // list length here, without this check the list length could change | 1579           // list length here, without this check the list length could change | 
| 1580           // without triggering a deoptimization. | 1580           // without triggering a deoptimization. | 
| 1581           Label check_array, length_compared, no_fixed_length; | 1581           Label check_array, length_compared, no_fixed_length; | 
| 1582           // If length is negative the length guard is either disabled or | 1582           // If length is negative the length guard is either disabled or | 
| 1583           // has not been initialized, either way it is safe to skip the | 1583           // has not been initialized, either way it is safe to skip the | 
| 1584           // length check. | 1584           // length check. | 
| 1585           __ lw(CMPRES1, field_length_operand); | 1585           __ lw(CMPRES1, field_length_operand); | 
| 1586           __ BranchSignedLess(CMPRES1, 0, &skip_length_check); | 1586           __ BranchSignedLess(CMPRES1, 0, &skip_length_check); | 
| 1587           __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); | 1587           __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); | 
| 1588           // Check for typed data array. | 1588           // Check for typed data array. | 
| 1589           __ BranchSignedGreater(value_cid_reg, kTypedDataUint32x4ArrayCid, | 1589           __ BranchSignedGreater(value_cid_reg, kTypedDataInt32x4ArrayCid, | 
| 1590                                  &no_fixed_length); | 1590                                  &no_fixed_length); | 
| 1591           __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, | 1591           __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, | 
| 1592                               &check_array); | 1592                               &check_array); | 
| 1593           __ lw(TMP, FieldAddress(value_reg, TypedData::length_offset())); | 1593           __ lw(TMP, FieldAddress(value_reg, TypedData::length_offset())); | 
| 1594           __ lw(CMPRES1, field_length_operand); | 1594           __ lw(CMPRES1, field_length_operand); | 
| 1595           __ subu(CMPRES1, TMP, CMPRES1); | 1595           __ subu(CMPRES1, TMP, CMPRES1); | 
| 1596           __ b(&length_compared); | 1596           __ b(&length_compared); | 
| 1597           // Check for regular array. | 1597           // Check for regular array. | 
| 1598           __ Bind(&check_array); | 1598           __ Bind(&check_array); | 
| 1599           __ BranchSignedGreater(value_cid_reg, kImmutableArrayCid, | 1599           __ BranchSignedGreater(value_cid_reg, kImmutableArrayCid, | 
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1655     __ lw(CMPRES1, field_cid_operand); | 1655     __ lw(CMPRES1, field_cid_operand); | 
| 1656     __ BranchNotEqual(CMPRES1, kIllegalCid, fail); | 1656     __ BranchNotEqual(CMPRES1, kIllegalCid, fail); | 
| 1657 | 1657 | 
| 1658     if (value_cid == kDynamicCid) { | 1658     if (value_cid == kDynamicCid) { | 
| 1659       __ sw(value_cid_reg, field_cid_operand); | 1659       __ sw(value_cid_reg, field_cid_operand); | 
| 1660       __ sw(value_cid_reg, field_nullability_operand); | 1660       __ sw(value_cid_reg, field_nullability_operand); | 
| 1661       if (field_has_length) { | 1661       if (field_has_length) { | 
| 1662         Label check_array, length_set, no_fixed_length; | 1662         Label check_array, length_set, no_fixed_length; | 
| 1663         __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); | 1663         __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); | 
| 1664         // Check for typed data array. | 1664         // Check for typed data array. | 
| 1665         __ BranchSignedGreater(value_cid_reg, kTypedDataUint32x4ArrayCid, | 1665         __ BranchSignedGreater(value_cid_reg, kTypedDataInt32x4ArrayCid, | 
| 1666                                &no_fixed_length); | 1666                                &no_fixed_length); | 
| 1667         __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, | 1667         __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, | 
| 1668                             &check_array); | 1668                             &check_array); | 
| 1669         // Destroy value_cid_reg (safe because we are finished with it). | 1669         // Destroy value_cid_reg (safe because we are finished with it). | 
| 1670         __ lw(value_cid_reg, | 1670         __ lw(value_cid_reg, | 
| 1671               FieldAddress(value_reg, TypedData::length_offset())); | 1671               FieldAddress(value_reg, TypedData::length_offset())); | 
| 1672         __ sw(value_cid_reg, field_length_operand); | 1672         __ sw(value_cid_reg, field_length_operand); | 
| 1673         // Updated field length typed data array. | 1673         // Updated field length typed data array. | 
| 1674         __ b(&length_set); | 1674         __ b(&length_set); | 
| 1675         // Check for regular array. | 1675         // Check for regular array. | 
| (...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2903   UNIMPLEMENTED(); | 2903   UNIMPLEMENTED(); | 
| 2904   return NULL; | 2904   return NULL; | 
| 2905 } | 2905 } | 
| 2906 | 2906 | 
| 2907 | 2907 | 
| 2908 void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2908 void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 2909   UNIMPLEMENTED(); | 2909   UNIMPLEMENTED(); | 
| 2910 } | 2910 } | 
| 2911 | 2911 | 
| 2912 | 2912 | 
| 2913 LocationSummary* BoxUint32x4Instr::MakeLocationSummary() const { | 2913 LocationSummary* BoxInt32x4Instr::MakeLocationSummary() const { | 
| 2914   UNIMPLEMENTED(); | 2914   UNIMPLEMENTED(); | 
| 2915   return NULL; | 2915   return NULL; | 
| 2916 } | 2916 } | 
| 2917 | 2917 | 
| 2918 | 2918 | 
| 2919 void BoxUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2919 void BoxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 2920   UNIMPLEMENTED(); | 2920   UNIMPLEMENTED(); | 
| 2921 } | 2921 } | 
| 2922 | 2922 | 
| 2923 | 2923 | 
| 2924 LocationSummary* UnboxUint32x4Instr::MakeLocationSummary() const { | 2924 LocationSummary* UnboxInt32x4Instr::MakeLocationSummary() const { | 
| 2925   UNIMPLEMENTED(); | 2925   UNIMPLEMENTED(); | 
| 2926   return NULL; | 2926   return NULL; | 
| 2927 } | 2927 } | 
| 2928 | 2928 | 
| 2929 | 2929 | 
| 2930 void UnboxUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2930 void UnboxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 2931   UNIMPLEMENTED(); | 2931   UNIMPLEMENTED(); | 
| 2932 } | 2932 } | 
| 2933 | 2933 | 
| 2934 | 2934 | 
| 2935 LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary() const { | 2935 LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary() const { | 
| 2936   const intptr_t kNumInputs = 2; | 2936   const intptr_t kNumInputs = 2; | 
| 2937   const intptr_t kNumTemps = 0; | 2937   const intptr_t kNumTemps = 0; | 
| 2938   LocationSummary* summary = | 2938   LocationSummary* summary = | 
| 2939       new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 2939       new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 
| 2940   summary->set_in(0, Location::RequiresFpuRegister()); | 2940   summary->set_in(0, Location::RequiresFpuRegister()); | 
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3095   UNIMPLEMENTED(); | 3095   UNIMPLEMENTED(); | 
| 3096   return NULL; | 3096   return NULL; | 
| 3097 } | 3097 } | 
| 3098 | 3098 | 
| 3099 | 3099 | 
| 3100 void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3100 void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3101   UNIMPLEMENTED(); | 3101   UNIMPLEMENTED(); | 
| 3102 } | 3102 } | 
| 3103 | 3103 | 
| 3104 | 3104 | 
| 3105 LocationSummary* Float32x4ToUint32x4Instr::MakeLocationSummary() const { | 3105 LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary() const { | 
| 3106   UNIMPLEMENTED(); | 3106   UNIMPLEMENTED(); | 
| 3107   return NULL; | 3107   return NULL; | 
| 3108 } | 3108 } | 
| 3109 | 3109 | 
| 3110 | 3110 | 
| 3111 void Float32x4ToUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3111 void Float32x4ToInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3112   UNIMPLEMENTED(); | 3112   UNIMPLEMENTED(); | 
| 3113 } | 3113 } | 
| 3114 | 3114 | 
| 3115 | 3115 | 
| 3116 LocationSummary* Uint32x4BoolConstructorInstr::MakeLocationSummary() const { | 3116 LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary() const { | 
| 3117   UNIMPLEMENTED(); | 3117   UNIMPLEMENTED(); | 
| 3118   return NULL; | 3118   return NULL; | 
| 3119 } | 3119 } | 
| 3120 | 3120 | 
| 3121 | 3121 | 
| 3122 void Uint32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3122 void Int32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3123   UNIMPLEMENTED(); | 3123   UNIMPLEMENTED(); | 
| 3124 } | 3124 } | 
| 3125 | 3125 | 
| 3126 | 3126 | 
| 3127 LocationSummary* Uint32x4GetFlagInstr::MakeLocationSummary() const { | 3127 LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary() const { | 
| 3128   UNIMPLEMENTED(); | 3128   UNIMPLEMENTED(); | 
| 3129   return NULL; | 3129   return NULL; | 
| 3130 } | 3130 } | 
| 3131 | 3131 | 
| 3132 | 3132 | 
| 3133 void Uint32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3133 void Int32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3134   UNIMPLEMENTED(); | 3134   UNIMPLEMENTED(); | 
| 3135 } | 3135 } | 
| 3136 | 3136 | 
| 3137 | 3137 | 
| 3138 LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary() const { | 3138 LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary() const { | 
| 3139   UNIMPLEMENTED(); | 3139   UNIMPLEMENTED(); | 
| 3140   return NULL; | 3140   return NULL; | 
| 3141 } | 3141 } | 
| 3142 | 3142 | 
| 3143 | 3143 | 
| 3144 void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3144 void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3145   UNIMPLEMENTED(); | 3145   UNIMPLEMENTED(); | 
| 3146 } | 3146 } | 
| 3147 | 3147 | 
| 3148 | 3148 | 
| 3149 LocationSummary* Uint32x4SelectInstr::MakeLocationSummary() const { | 3149 LocationSummary* Int32x4SelectInstr::MakeLocationSummary() const { | 
| 3150   UNIMPLEMENTED(); | 3150   UNIMPLEMENTED(); | 
| 3151   return NULL; | 3151   return NULL; | 
| 3152 } | 3152 } | 
| 3153 | 3153 | 
| 3154 | 3154 | 
| 3155 void Uint32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3155 void Int32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3156   UNIMPLEMENTED(); | 3156   UNIMPLEMENTED(); | 
| 3157 } | 3157 } | 
| 3158 | 3158 | 
| 3159 | 3159 | 
| 3160 LocationSummary* Uint32x4SetFlagInstr::MakeLocationSummary() const { | 3160 LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary() const { | 
| 3161   UNIMPLEMENTED(); | 3161   UNIMPLEMENTED(); | 
| 3162   return NULL; | 3162   return NULL; | 
| 3163 } | 3163 } | 
| 3164 | 3164 | 
| 3165 | 3165 | 
| 3166 void Uint32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3166 void Int32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3167   UNIMPLEMENTED(); | 3167   UNIMPLEMENTED(); | 
| 3168 } | 3168 } | 
| 3169 | 3169 | 
| 3170 | 3170 | 
| 3171 LocationSummary* Uint32x4ToFloat32x4Instr::MakeLocationSummary() const { | 3171 LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary() const { | 
| 3172   UNIMPLEMENTED(); | 3172   UNIMPLEMENTED(); | 
| 3173   return NULL; | 3173   return NULL; | 
| 3174 } | 3174 } | 
| 3175 | 3175 | 
| 3176 | 3176 | 
| 3177 void Uint32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3177 void Int32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3178   UNIMPLEMENTED(); | 3178   UNIMPLEMENTED(); | 
| 3179 } | 3179 } | 
| 3180 | 3180 | 
| 3181 | 3181 | 
| 3182 LocationSummary* BinaryUint32x4OpInstr::MakeLocationSummary() const { | 3182 LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary() const { | 
| 3183   UNIMPLEMENTED(); | 3183   UNIMPLEMENTED(); | 
| 3184   return NULL; | 3184   return NULL; | 
| 3185 } | 3185 } | 
| 3186 | 3186 | 
| 3187 | 3187 | 
| 3188 void BinaryUint32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 3188 void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 
| 3189   UNIMPLEMENTED(); | 3189   UNIMPLEMENTED(); | 
| 3190 } | 3190 } | 
| 3191 | 3191 | 
| 3192 | 3192 | 
| 3193 LocationSummary* MathUnaryInstr::MakeLocationSummary() const { | 3193 LocationSummary* MathUnaryInstr::MakeLocationSummary() const { | 
| 3194   if ((kind() == MethodRecognizer::kMathSin) || | 3194   if ((kind() == MethodRecognizer::kMathSin) || | 
| 3195       (kind() == MethodRecognizer::kMathCos)) { | 3195       (kind() == MethodRecognizer::kMathCos)) { | 
| 3196     const intptr_t kNumInputs = 1; | 3196     const intptr_t kNumInputs = 1; | 
| 3197     const intptr_t kNumTemps = 0; | 3197     const intptr_t kNumTemps = 0; | 
| 3198     LocationSummary* summary = | 3198     LocationSummary* summary = | 
| (...skipping 891 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4090   compiler->GenerateCall(token_pos(), | 4090   compiler->GenerateCall(token_pos(), | 
| 4091                          &label, | 4091                          &label, | 
| 4092                          PcDescriptors::kOther, | 4092                          PcDescriptors::kOther, | 
| 4093                          locs()); | 4093                          locs()); | 
| 4094   __ Drop(2);  // Discard type arguments and receiver. | 4094   __ Drop(2);  // Discard type arguments and receiver. | 
| 4095 } | 4095 } | 
| 4096 | 4096 | 
| 4097 }  // namespace dart | 4097 }  // namespace dart | 
| 4098 | 4098 | 
| 4099 #endif  // defined TARGET_ARCH_MIPS | 4099 #endif  // defined TARGET_ARCH_MIPS | 
| OLD | NEW | 
|---|