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 #ifndef VM_ASSEMBLER_MIPS_H_ | 5 #ifndef VM_ASSEMBLER_MIPS_H_ |
6 #define VM_ASSEMBLER_MIPS_H_ | 6 #define VM_ASSEMBLER_MIPS_H_ |
7 | 7 |
8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
9 #error Do not include assembler_mips.h directly; use assembler.h instead. | 9 #error Do not include assembler_mips.h directly; use assembler.h instead. |
10 #endif | 10 #endif |
(...skipping 1160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1171 ASSERT(!in_delay_slot_); | 1171 ASSERT(!in_delay_slot_); |
1172 if (Utils::IsInt(kImmBits, offset)) { | 1172 if (Utils::IsInt(kImmBits, offset)) { |
1173 sw(reg, Address(base, offset)); | 1173 sw(reg, Address(base, offset)); |
1174 } else { | 1174 } else { |
1175 LoadImmediate(TMP, offset); | 1175 LoadImmediate(TMP, offset); |
1176 addu(TMP, base, TMP); | 1176 addu(TMP, base, TMP); |
1177 sw(reg, Address(TMP, 0)); | 1177 sw(reg, Address(TMP, 0)); |
1178 } | 1178 } |
1179 } | 1179 } |
1180 | 1180 |
| 1181 void StoreFieldToOffset(Register reg, Register base, int32_t offset) { |
| 1182 StoreToOffset(reg, base, offset - kHeapObjectTag); |
| 1183 } |
| 1184 |
| 1185 |
1181 void StoreDToOffset(DRegister reg, Register base, int32_t offset) { | 1186 void StoreDToOffset(DRegister reg, Register base, int32_t offset) { |
1182 ASSERT(!in_delay_slot_); | 1187 ASSERT(!in_delay_slot_); |
1183 FRegister lo = static_cast<FRegister>(reg * 2); | 1188 FRegister lo = static_cast<FRegister>(reg * 2); |
1184 FRegister hi = static_cast<FRegister>(reg * 2 + 1); | 1189 FRegister hi = static_cast<FRegister>(reg * 2 + 1); |
1185 swc1(lo, Address(base, offset)); | 1190 swc1(lo, Address(base, offset)); |
1186 swc1(hi, Address(base, offset + kWordSize)); | 1191 swc1(hi, Address(base, offset + kWordSize)); |
1187 } | 1192 } |
1188 | 1193 |
1189 void LoadDFromOffset(DRegister reg, Register base, int32_t offset) { | 1194 void LoadDFromOffset(DRegister reg, Register base, int32_t offset) { |
1190 ASSERT(!in_delay_slot_); | 1195 ASSERT(!in_delay_slot_); |
(...skipping 25 matching lines...) Expand all Loading... |
1216 void CompareObject(Register rd1, Register rd2, | 1221 void CompareObject(Register rd1, Register rd2, |
1217 Register rn, const Object& object); | 1222 Register rn, const Object& object); |
1218 | 1223 |
1219 void LoadIsolate(Register result); | 1224 void LoadIsolate(Register result); |
1220 | 1225 |
1221 void LoadClassId(Register result, Register object); | 1226 void LoadClassId(Register result, Register object); |
1222 void LoadClassById(Register result, Register class_id); | 1227 void LoadClassById(Register result, Register class_id); |
1223 void LoadClass(Register result, Register object); | 1228 void LoadClass(Register result, Register object); |
1224 void LoadTaggedClassIdMayBeSmi(Register result, Register object); | 1229 void LoadTaggedClassIdMayBeSmi(Register result, Register object); |
1225 | 1230 |
| 1231 void ComputeRange(Register result, |
| 1232 Register value, |
| 1233 Label* miss); |
| 1234 |
| 1235 void UpdateRangeFeedback(Register value, |
| 1236 intptr_t index, |
| 1237 Register ic_data, |
| 1238 Register scratch, |
| 1239 Label* miss); |
| 1240 |
1226 void StoreIntoObject(Register object, // Object we are storing into. | 1241 void StoreIntoObject(Register object, // Object we are storing into. |
1227 const Address& dest, // Where we are storing into. | 1242 const Address& dest, // Where we are storing into. |
1228 Register value, // Value we are storing. | 1243 Register value, // Value we are storing. |
1229 bool can_value_be_smi = true); | 1244 bool can_value_be_smi = true); |
1230 void StoreIntoObjectOffset(Register object, | 1245 void StoreIntoObjectOffset(Register object, |
1231 int32_t offset, | 1246 int32_t offset, |
1232 Register value, | 1247 Register value, |
1233 bool can_value_be_smi = true); | 1248 bool can_value_be_smi = true); |
1234 | 1249 |
1235 void StoreIntoObjectNoBarrier(Register object, | 1250 void StoreIntoObjectNoBarrier(Register object, |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1413 Register value, | 1428 Register value, |
1414 Label* no_update); | 1429 Label* no_update); |
1415 | 1430 |
1416 DISALLOW_ALLOCATION(); | 1431 DISALLOW_ALLOCATION(); |
1417 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1432 DISALLOW_COPY_AND_ASSIGN(Assembler); |
1418 }; | 1433 }; |
1419 | 1434 |
1420 } // namespace dart | 1435 } // namespace dart |
1421 | 1436 |
1422 #endif // VM_ASSEMBLER_MIPS_H_ | 1437 #endif // VM_ASSEMBLER_MIPS_H_ |
OLD | NEW |