| 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 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 722 switch (class_id_) { | 722 switch (class_id_) { |
| 723 case kArrayCid: | 723 case kArrayCid: |
| 724 case kImmutableArrayCid: | 724 case kImmutableArrayCid: |
| 725 return CompileType::Dynamic(); | 725 return CompileType::Dynamic(); |
| 726 | 726 |
| 727 case kTypedDataFloat32ArrayCid: | 727 case kTypedDataFloat32ArrayCid: |
| 728 case kTypedDataFloat64ArrayCid: | 728 case kTypedDataFloat64ArrayCid: |
| 729 return CompileType::FromCid(kDoubleCid); | 729 return CompileType::FromCid(kDoubleCid); |
| 730 case kTypedDataFloat32x4ArrayCid: | 730 case kTypedDataFloat32x4ArrayCid: |
| 731 return CompileType::FromCid(kFloat32x4Cid); | 731 return CompileType::FromCid(kFloat32x4Cid); |
| 732 case kTypedDataUint32x4ArrayCid: | 732 case kTypedDataInt32x4ArrayCid: |
| 733 return CompileType::FromCid(kUint32x4Cid); | 733 return CompileType::FromCid(kInt32x4Cid); |
| 734 | 734 |
| 735 case kTypedDataInt8ArrayCid: | 735 case kTypedDataInt8ArrayCid: |
| 736 case kTypedDataUint8ArrayCid: | 736 case kTypedDataUint8ArrayCid: |
| 737 case kTypedDataUint8ClampedArrayCid: | 737 case kTypedDataUint8ClampedArrayCid: |
| 738 case kExternalTypedDataUint8ArrayCid: | 738 case kExternalTypedDataUint8ArrayCid: |
| 739 case kExternalTypedDataUint8ClampedArrayCid: | 739 case kExternalTypedDataUint8ClampedArrayCid: |
| 740 case kTypedDataInt16ArrayCid: | 740 case kTypedDataInt16ArrayCid: |
| 741 case kTypedDataUint16ArrayCid: | 741 case kTypedDataUint16ArrayCid: |
| 742 case kOneByteStringCid: | 742 case kOneByteStringCid: |
| 743 case kTwoByteStringCid: | 743 case kTwoByteStringCid: |
| (...skipping 29 matching lines...) Expand all Loading... |
| 773 case kTwoByteStringCid: | 773 case kTwoByteStringCid: |
| 774 return kTagged; | 774 return kTagged; |
| 775 case kTypedDataInt32ArrayCid: | 775 case kTypedDataInt32ArrayCid: |
| 776 case kTypedDataUint32ArrayCid: | 776 case kTypedDataUint32ArrayCid: |
| 777 // Instruction can deoptimize if we optimistically assumed that the result | 777 // Instruction can deoptimize if we optimistically assumed that the result |
| 778 // fits into Smi. | 778 // fits into Smi. |
| 779 return CanDeoptimize() ? kTagged : kUnboxedMint; | 779 return CanDeoptimize() ? kTagged : kUnboxedMint; |
| 780 case kTypedDataFloat32ArrayCid: | 780 case kTypedDataFloat32ArrayCid: |
| 781 case kTypedDataFloat64ArrayCid: | 781 case kTypedDataFloat64ArrayCid: |
| 782 return kUnboxedDouble; | 782 return kUnboxedDouble; |
| 783 case kTypedDataUint32x4ArrayCid: | 783 case kTypedDataInt32x4ArrayCid: |
| 784 return kUnboxedUint32x4; | 784 return kUnboxedInt32x4; |
| 785 case kTypedDataFloat32x4ArrayCid: | 785 case kTypedDataFloat32x4ArrayCid: |
| 786 return kUnboxedFloat32x4; | 786 return kUnboxedFloat32x4; |
| 787 default: | 787 default: |
| 788 UNIMPLEMENTED(); | 788 UNIMPLEMENTED(); |
| 789 return kTagged; | 789 return kTagged; |
| 790 } | 790 } |
| 791 } | 791 } |
| 792 | 792 |
| 793 | 793 |
| 794 LocationSummary* LoadIndexedInstr::MakeLocationSummary() const { | 794 LocationSummary* LoadIndexedInstr::MakeLocationSummary() const { |
| 795 const intptr_t kNumInputs = 2; | 795 const intptr_t kNumInputs = 2; |
| 796 const intptr_t kNumTemps = 0; | 796 const intptr_t kNumTemps = 0; |
| 797 LocationSummary* locs = | 797 LocationSummary* locs = |
| 798 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 798 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| 799 locs->set_in(0, Location::RequiresRegister()); | 799 locs->set_in(0, Location::RequiresRegister()); |
| 800 // The smi index is either untagged (element size == 1), or it is left smi | 800 // The smi index is either untagged (element size == 1), or it is left smi |
| 801 // tagged (for all element sizes > 1). | 801 // tagged (for all element sizes > 1). |
| 802 // TODO(regis): Revisit and see if the index can be immediate. | 802 // TODO(regis): Revisit and see if the index can be immediate. |
| 803 locs->set_in(1, Location::WritableRegister()); | 803 locs->set_in(1, Location::WritableRegister()); |
| 804 if ((representation() == kUnboxedDouble) || | 804 if ((representation() == kUnboxedDouble) || |
| 805 (representation() == kUnboxedFloat32x4) || | 805 (representation() == kUnboxedFloat32x4) || |
| 806 (representation() == kUnboxedUint32x4)) { | 806 (representation() == kUnboxedInt32x4)) { |
| 807 locs->set_out(Location::RequiresFpuRegister()); | 807 locs->set_out(Location::RequiresFpuRegister()); |
| 808 } else { | 808 } else { |
| 809 locs->set_out(Location::RequiresRegister()); | 809 locs->set_out(Location::RequiresRegister()); |
| 810 } | 810 } |
| 811 return locs; | 811 return locs; |
| 812 } | 812 } |
| 813 | 813 |
| 814 | 814 |
| 815 void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 815 void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 816 __ TraceSimMsg("LoadIndexedInstr"); | 816 __ TraceSimMsg("LoadIndexedInstr"); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 856 // If the data offset doesn't fit into the 18 bits we get for the addressing | 856 // If the data offset doesn't fit into the 18 bits we get for the addressing |
| 857 // mode, then we must load the offset into a register and add it to the | 857 // mode, then we must load the offset into a register and add it to the |
| 858 // index. | 858 // index. |
| 859 element_address = Address(index.reg(), | 859 element_address = Address(index.reg(), |
| 860 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 860 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); |
| 861 } | 861 } |
| 862 | 862 |
| 863 if ((representation() == kUnboxedDouble) || | 863 if ((representation() == kUnboxedDouble) || |
| 864 (representation() == kUnboxedMint) || | 864 (representation() == kUnboxedMint) || |
| 865 (representation() == kUnboxedFloat32x4) || | 865 (representation() == kUnboxedFloat32x4) || |
| 866 (representation() == kUnboxedUint32x4)) { | 866 (representation() == kUnboxedInt32x4)) { |
| 867 DRegister result = locs()->out().fpu_reg(); | 867 DRegister result = locs()->out().fpu_reg(); |
| 868 switch (class_id()) { | 868 switch (class_id()) { |
| 869 case kTypedDataInt32ArrayCid: | 869 case kTypedDataInt32ArrayCid: |
| 870 UNIMPLEMENTED(); | 870 UNIMPLEMENTED(); |
| 871 break; | 871 break; |
| 872 case kTypedDataUint32ArrayCid: | 872 case kTypedDataUint32ArrayCid: |
| 873 UNIMPLEMENTED(); | 873 UNIMPLEMENTED(); |
| 874 break; | 874 break; |
| 875 case kTypedDataFloat32ArrayCid: | 875 case kTypedDataFloat32ArrayCid: |
| 876 // Load single precision float and promote to double. | 876 // Load single precision float and promote to double. |
| 877 __ lwc1(STMP1, element_address); | 877 __ lwc1(STMP1, element_address); |
| 878 __ cvtds(result, STMP1); | 878 __ cvtds(result, STMP1); |
| 879 break; | 879 break; |
| 880 case kTypedDataFloat64ArrayCid: | 880 case kTypedDataFloat64ArrayCid: |
| 881 __ LoadDFromOffset(result, index.reg(), | 881 __ LoadDFromOffset(result, index.reg(), |
| 882 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 882 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); |
| 883 break; | 883 break; |
| 884 case kTypedDataUint32x4ArrayCid: | 884 case kTypedDataInt32x4ArrayCid: |
| 885 case kTypedDataFloat32x4ArrayCid: | 885 case kTypedDataFloat32x4ArrayCid: |
| 886 UNIMPLEMENTED(); | 886 UNIMPLEMENTED(); |
| 887 break; | 887 break; |
| 888 } | 888 } |
| 889 return; | 889 return; |
| 890 } | 890 } |
| 891 | 891 |
| 892 Register result = locs()->out().reg(); | 892 Register result = locs()->out().reg(); |
| 893 switch (class_id()) { | 893 switch (class_id()) { |
| 894 case kTypedDataInt8ArrayCid: | 894 case kTypedDataInt8ArrayCid: |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 958 case kTypedDataUint16ArrayCid: | 958 case kTypedDataUint16ArrayCid: |
| 959 return kTagged; | 959 return kTagged; |
| 960 case kTypedDataInt32ArrayCid: | 960 case kTypedDataInt32ArrayCid: |
| 961 case kTypedDataUint32ArrayCid: | 961 case kTypedDataUint32ArrayCid: |
| 962 return value()->IsSmiValue() ? kTagged : kUnboxedMint; | 962 return value()->IsSmiValue() ? kTagged : kUnboxedMint; |
| 963 case kTypedDataFloat32ArrayCid: | 963 case kTypedDataFloat32ArrayCid: |
| 964 case kTypedDataFloat64ArrayCid: | 964 case kTypedDataFloat64ArrayCid: |
| 965 return kUnboxedDouble; | 965 return kUnboxedDouble; |
| 966 case kTypedDataFloat32x4ArrayCid: | 966 case kTypedDataFloat32x4ArrayCid: |
| 967 return kUnboxedFloat32x4; | 967 return kUnboxedFloat32x4; |
| 968 case kTypedDataUint32x4ArrayCid: | 968 case kTypedDataInt32x4ArrayCid: |
| 969 return kUnboxedUint32x4; | 969 return kUnboxedInt32x4; |
| 970 default: | 970 default: |
| 971 UNIMPLEMENTED(); | 971 UNIMPLEMENTED(); |
| 972 return kTagged; | 972 return kTagged; |
| 973 } | 973 } |
| 974 } | 974 } |
| 975 | 975 |
| 976 | 976 |
| 977 LocationSummary* StoreIndexedInstr::MakeLocationSummary() const { | 977 LocationSummary* StoreIndexedInstr::MakeLocationSummary() const { |
| 978 const intptr_t kNumInputs = 3; | 978 const intptr_t kNumInputs = 3; |
| 979 const intptr_t kNumTemps = 0; | 979 const intptr_t kNumTemps = 0; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1001 case kTypedDataInt32ArrayCid: | 1001 case kTypedDataInt32ArrayCid: |
| 1002 case kTypedDataUint32ArrayCid: | 1002 case kTypedDataUint32ArrayCid: |
| 1003 locs->set_in(2, Location::WritableRegister()); | 1003 locs->set_in(2, Location::WritableRegister()); |
| 1004 break; | 1004 break; |
| 1005 case kTypedDataFloat32ArrayCid: | 1005 case kTypedDataFloat32ArrayCid: |
| 1006 // TODO(regis): Verify. | 1006 // TODO(regis): Verify. |
| 1007 // Need temp register for float-to-double conversion. | 1007 // Need temp register for float-to-double conversion. |
| 1008 locs->AddTemp(Location::RequiresFpuRegister()); | 1008 locs->AddTemp(Location::RequiresFpuRegister()); |
| 1009 // Fall through. | 1009 // Fall through. |
| 1010 case kTypedDataFloat64ArrayCid: // TODO(srdjan): Support Float64 constants. | 1010 case kTypedDataFloat64ArrayCid: // TODO(srdjan): Support Float64 constants. |
| 1011 case kTypedDataUint32x4ArrayCid: | 1011 case kTypedDataInt32x4ArrayCid: |
| 1012 case kTypedDataFloat32x4ArrayCid: | 1012 case kTypedDataFloat32x4ArrayCid: |
| 1013 locs->set_in(2, Location::RequiresFpuRegister()); | 1013 locs->set_in(2, Location::RequiresFpuRegister()); |
| 1014 break; | 1014 break; |
| 1015 default: | 1015 default: |
| 1016 UNREACHABLE(); | 1016 UNREACHABLE(); |
| 1017 return NULL; | 1017 return NULL; |
| 1018 } | 1018 } |
| 1019 return locs; | 1019 return locs; |
| 1020 } | 1020 } |
| 1021 | 1021 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1141 case kTypedDataFloat32ArrayCid: | 1141 case kTypedDataFloat32ArrayCid: |
| 1142 // Convert to single precision. | 1142 // Convert to single precision. |
| 1143 __ cvtsd(STMP1, locs()->in(2).fpu_reg()); | 1143 __ cvtsd(STMP1, locs()->in(2).fpu_reg()); |
| 1144 // Store. | 1144 // Store. |
| 1145 __ swc1(STMP1, element_address); | 1145 __ swc1(STMP1, element_address); |
| 1146 break; | 1146 break; |
| 1147 case kTypedDataFloat64ArrayCid: | 1147 case kTypedDataFloat64ArrayCid: |
| 1148 __ StoreDToOffset(locs()->in(2).fpu_reg(), index.reg(), | 1148 __ StoreDToOffset(locs()->in(2).fpu_reg(), index.reg(), |
| 1149 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); | 1149 FlowGraphCompiler::DataOffsetFor(class_id()) - kHeapObjectTag); |
| 1150 break; | 1150 break; |
| 1151 case kTypedDataUint32x4ArrayCid: | 1151 case kTypedDataInt32x4ArrayCid: |
| 1152 case kTypedDataFloat32x4ArrayCid: | 1152 case kTypedDataFloat32x4ArrayCid: |
| 1153 UNIMPLEMENTED(); | 1153 UNIMPLEMENTED(); |
| 1154 break; | 1154 break; |
| 1155 default: | 1155 default: |
| 1156 UNREACHABLE(); | 1156 UNREACHABLE(); |
| 1157 } | 1157 } |
| 1158 } | 1158 } |
| 1159 | 1159 |
| 1160 | 1160 |
| 1161 LocationSummary* GuardFieldInstr::MakeLocationSummary() const { | 1161 LocationSummary* GuardFieldInstr::MakeLocationSummary() const { |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1269 // list length here, without this check the list length could change | 1269 // list length here, without this check the list length could change |
| 1270 // without triggering a deoptimization. | 1270 // without triggering a deoptimization. |
| 1271 Label check_array, length_compared, no_fixed_length; | 1271 Label check_array, length_compared, no_fixed_length; |
| 1272 // If length is negative the length guard is either disabled or | 1272 // If length is negative the length guard is either disabled or |
| 1273 // has not been initialized, either way it is safe to skip the | 1273 // has not been initialized, either way it is safe to skip the |
| 1274 // length check. | 1274 // length check. |
| 1275 __ lw(CMPRES1, field_length_operand); | 1275 __ lw(CMPRES1, field_length_operand); |
| 1276 __ BranchSignedLess(CMPRES1, 0, &skip_length_check); | 1276 __ BranchSignedLess(CMPRES1, 0, &skip_length_check); |
| 1277 __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); | 1277 __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); |
| 1278 // Check for typed data array. | 1278 // Check for typed data array. |
| 1279 __ BranchSignedGreater(value_cid_reg, kTypedDataUint32x4ArrayCid, | 1279 __ BranchSignedGreater(value_cid_reg, kTypedDataInt32x4ArrayCid, |
| 1280 &no_fixed_length); | 1280 &no_fixed_length); |
| 1281 __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, | 1281 __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, |
| 1282 &check_array); | 1282 &check_array); |
| 1283 __ lw(TMP, FieldAddress(value_reg, TypedData::length_offset())); | 1283 __ lw(TMP, FieldAddress(value_reg, TypedData::length_offset())); |
| 1284 __ lw(CMPRES1, field_length_operand); | 1284 __ lw(CMPRES1, field_length_operand); |
| 1285 __ subu(CMPRES1, TMP, CMPRES1); | 1285 __ subu(CMPRES1, TMP, CMPRES1); |
| 1286 __ b(&length_compared); | 1286 __ b(&length_compared); |
| 1287 // Check for regular array. | 1287 // Check for regular array. |
| 1288 __ Bind(&check_array); | 1288 __ Bind(&check_array); |
| 1289 __ BranchSignedGreater(value_cid_reg, kImmutableArrayCid, | 1289 __ BranchSignedGreater(value_cid_reg, kImmutableArrayCid, |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 __ lw(CMPRES1, field_cid_operand); | 1345 __ lw(CMPRES1, field_cid_operand); |
| 1346 __ BranchNotEqual(CMPRES1, kIllegalCid, fail); | 1346 __ BranchNotEqual(CMPRES1, kIllegalCid, fail); |
| 1347 | 1347 |
| 1348 if (value_cid == kDynamicCid) { | 1348 if (value_cid == kDynamicCid) { |
| 1349 __ sw(value_cid_reg, field_cid_operand); | 1349 __ sw(value_cid_reg, field_cid_operand); |
| 1350 __ sw(value_cid_reg, field_nullability_operand); | 1350 __ sw(value_cid_reg, field_nullability_operand); |
| 1351 if (field_has_length) { | 1351 if (field_has_length) { |
| 1352 Label check_array, length_set, no_fixed_length; | 1352 Label check_array, length_set, no_fixed_length; |
| 1353 __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); | 1353 __ BranchEqual(value_cid_reg, kNullCid, &no_fixed_length); |
| 1354 // Check for typed data array. | 1354 // Check for typed data array. |
| 1355 __ BranchSignedGreater(value_cid_reg, kTypedDataUint32x4ArrayCid, | 1355 __ BranchSignedGreater(value_cid_reg, kTypedDataInt32x4ArrayCid, |
| 1356 &no_fixed_length); | 1356 &no_fixed_length); |
| 1357 __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, | 1357 __ BranchSignedLess(value_cid_reg, kTypedDataInt8ArrayCid, |
| 1358 &check_array); | 1358 &check_array); |
| 1359 // Destroy value_cid_reg (safe because we are finished with it). | 1359 // Destroy value_cid_reg (safe because we are finished with it). |
| 1360 __ lw(value_cid_reg, | 1360 __ lw(value_cid_reg, |
| 1361 FieldAddress(value_reg, TypedData::length_offset())); | 1361 FieldAddress(value_reg, TypedData::length_offset())); |
| 1362 __ sw(value_cid_reg, field_length_operand); | 1362 __ sw(value_cid_reg, field_length_operand); |
| 1363 // Updated field length typed data array. | 1363 // Updated field length typed data array. |
| 1364 __ b(&length_set); | 1364 __ b(&length_set); |
| 1365 // Check for regular array. | 1365 // Check for regular array. |
| (...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2593 UNIMPLEMENTED(); | 2593 UNIMPLEMENTED(); |
| 2594 return NULL; | 2594 return NULL; |
| 2595 } | 2595 } |
| 2596 | 2596 |
| 2597 | 2597 |
| 2598 void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2598 void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2599 UNIMPLEMENTED(); | 2599 UNIMPLEMENTED(); |
| 2600 } | 2600 } |
| 2601 | 2601 |
| 2602 | 2602 |
| 2603 LocationSummary* BoxUint32x4Instr::MakeLocationSummary() const { | 2603 LocationSummary* BoxInt32x4Instr::MakeLocationSummary() const { |
| 2604 UNIMPLEMENTED(); | 2604 UNIMPLEMENTED(); |
| 2605 return NULL; | 2605 return NULL; |
| 2606 } | 2606 } |
| 2607 | 2607 |
| 2608 | 2608 |
| 2609 void BoxUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2609 void BoxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2610 UNIMPLEMENTED(); | 2610 UNIMPLEMENTED(); |
| 2611 } | 2611 } |
| 2612 | 2612 |
| 2613 | 2613 |
| 2614 LocationSummary* UnboxUint32x4Instr::MakeLocationSummary() const { | 2614 LocationSummary* UnboxInt32x4Instr::MakeLocationSummary() const { |
| 2615 UNIMPLEMENTED(); | 2615 UNIMPLEMENTED(); |
| 2616 return NULL; | 2616 return NULL; |
| 2617 } | 2617 } |
| 2618 | 2618 |
| 2619 | 2619 |
| 2620 void UnboxUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2620 void UnboxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2621 UNIMPLEMENTED(); | 2621 UNIMPLEMENTED(); |
| 2622 } | 2622 } |
| 2623 | 2623 |
| 2624 | 2624 |
| 2625 LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary() const { | 2625 LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary() const { |
| 2626 const intptr_t kNumInputs = 2; | 2626 const intptr_t kNumInputs = 2; |
| 2627 const intptr_t kNumTemps = 0; | 2627 const intptr_t kNumTemps = 0; |
| 2628 LocationSummary* summary = | 2628 LocationSummary* summary = |
| 2629 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); | 2629 new LocationSummary(kNumInputs, kNumTemps, LocationSummary::kNoCall); |
| 2630 summary->set_in(0, Location::RequiresFpuRegister()); | 2630 summary->set_in(0, Location::RequiresFpuRegister()); |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2785 UNIMPLEMENTED(); | 2785 UNIMPLEMENTED(); |
| 2786 return NULL; | 2786 return NULL; |
| 2787 } | 2787 } |
| 2788 | 2788 |
| 2789 | 2789 |
| 2790 void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2790 void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2791 UNIMPLEMENTED(); | 2791 UNIMPLEMENTED(); |
| 2792 } | 2792 } |
| 2793 | 2793 |
| 2794 | 2794 |
| 2795 LocationSummary* Float32x4ToUint32x4Instr::MakeLocationSummary() const { | 2795 LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary() const { |
| 2796 UNIMPLEMENTED(); | 2796 UNIMPLEMENTED(); |
| 2797 return NULL; | 2797 return NULL; |
| 2798 } | 2798 } |
| 2799 | 2799 |
| 2800 | 2800 |
| 2801 void Float32x4ToUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2801 void Float32x4ToInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2802 UNIMPLEMENTED(); | 2802 UNIMPLEMENTED(); |
| 2803 } | 2803 } |
| 2804 | 2804 |
| 2805 | 2805 |
| 2806 LocationSummary* Uint32x4BoolConstructorInstr::MakeLocationSummary() const { | 2806 LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary() const { |
| 2807 UNIMPLEMENTED(); | 2807 UNIMPLEMENTED(); |
| 2808 return NULL; | 2808 return NULL; |
| 2809 } | 2809 } |
| 2810 | 2810 |
| 2811 | 2811 |
| 2812 void Uint32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2812 void Int32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2813 UNIMPLEMENTED(); | 2813 UNIMPLEMENTED(); |
| 2814 } | 2814 } |
| 2815 | 2815 |
| 2816 | 2816 |
| 2817 LocationSummary* Uint32x4GetFlagInstr::MakeLocationSummary() const { | 2817 LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary() const { |
| 2818 UNIMPLEMENTED(); | 2818 UNIMPLEMENTED(); |
| 2819 return NULL; | 2819 return NULL; |
| 2820 } | 2820 } |
| 2821 | 2821 |
| 2822 | 2822 |
| 2823 void Uint32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2823 void Int32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2824 UNIMPLEMENTED(); | 2824 UNIMPLEMENTED(); |
| 2825 } | 2825 } |
| 2826 | 2826 |
| 2827 | 2827 |
| 2828 LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary() const { | 2828 LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary() const { |
| 2829 UNIMPLEMENTED(); | 2829 UNIMPLEMENTED(); |
| 2830 return NULL; | 2830 return NULL; |
| 2831 } | 2831 } |
| 2832 | 2832 |
| 2833 | 2833 |
| 2834 void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2834 void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2835 UNIMPLEMENTED(); | 2835 UNIMPLEMENTED(); |
| 2836 } | 2836 } |
| 2837 | 2837 |
| 2838 | 2838 |
| 2839 LocationSummary* Uint32x4SelectInstr::MakeLocationSummary() const { | 2839 LocationSummary* Int32x4SelectInstr::MakeLocationSummary() const { |
| 2840 UNIMPLEMENTED(); | 2840 UNIMPLEMENTED(); |
| 2841 return NULL; | 2841 return NULL; |
| 2842 } | 2842 } |
| 2843 | 2843 |
| 2844 | 2844 |
| 2845 void Uint32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2845 void Int32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2846 UNIMPLEMENTED(); | 2846 UNIMPLEMENTED(); |
| 2847 } | 2847 } |
| 2848 | 2848 |
| 2849 | 2849 |
| 2850 LocationSummary* Uint32x4SetFlagInstr::MakeLocationSummary() const { | 2850 LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary() const { |
| 2851 UNIMPLEMENTED(); | 2851 UNIMPLEMENTED(); |
| 2852 return NULL; | 2852 return NULL; |
| 2853 } | 2853 } |
| 2854 | 2854 |
| 2855 | 2855 |
| 2856 void Uint32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2856 void Int32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2857 UNIMPLEMENTED(); | 2857 UNIMPLEMENTED(); |
| 2858 } | 2858 } |
| 2859 | 2859 |
| 2860 | 2860 |
| 2861 LocationSummary* Uint32x4ToFloat32x4Instr::MakeLocationSummary() const { | 2861 LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary() const { |
| 2862 UNIMPLEMENTED(); | 2862 UNIMPLEMENTED(); |
| 2863 return NULL; | 2863 return NULL; |
| 2864 } | 2864 } |
| 2865 | 2865 |
| 2866 | 2866 |
| 2867 void Uint32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2867 void Int32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2868 UNIMPLEMENTED(); | 2868 UNIMPLEMENTED(); |
| 2869 } | 2869 } |
| 2870 | 2870 |
| 2871 | 2871 |
| 2872 LocationSummary* BinaryUint32x4OpInstr::MakeLocationSummary() const { | 2872 LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary() const { |
| 2873 UNIMPLEMENTED(); | 2873 UNIMPLEMENTED(); |
| 2874 return NULL; | 2874 return NULL; |
| 2875 } | 2875 } |
| 2876 | 2876 |
| 2877 | 2877 |
| 2878 void BinaryUint32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { | 2878 void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
| 2879 UNIMPLEMENTED(); | 2879 UNIMPLEMENTED(); |
| 2880 } | 2880 } |
| 2881 | 2881 |
| 2882 | 2882 |
| 2883 LocationSummary* MathUnaryInstr::MakeLocationSummary() const { | 2883 LocationSummary* MathUnaryInstr::MakeLocationSummary() const { |
| 2884 if ((kind() == MethodRecognizer::kMathSin) || | 2884 if ((kind() == MethodRecognizer::kMathSin) || |
| 2885 (kind() == MethodRecognizer::kMathCos)) { | 2885 (kind() == MethodRecognizer::kMathCos)) { |
| 2886 const intptr_t kNumInputs = 1; | 2886 const intptr_t kNumInputs = 1; |
| 2887 const intptr_t kNumTemps = 0; | 2887 const intptr_t kNumTemps = 0; |
| 2888 LocationSummary* summary = | 2888 LocationSummary* summary = |
| (...skipping 891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3780 compiler->GenerateCall(token_pos(), | 3780 compiler->GenerateCall(token_pos(), |
| 3781 &label, | 3781 &label, |
| 3782 PcDescriptors::kOther, | 3782 PcDescriptors::kOther, |
| 3783 locs()); | 3783 locs()); |
| 3784 __ Drop(2); // Discard type arguments and receiver. | 3784 __ Drop(2); // Discard type arguments and receiver. |
| 3785 } | 3785 } |
| 3786 | 3786 |
| 3787 } // namespace dart | 3787 } // namespace dart |
| 3788 | 3788 |
| 3789 #endif // defined TARGET_ARCH_MIPS | 3789 #endif // defined TARGET_ARCH_MIPS |
| OLD | NEW |