Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Side by Side Diff: runtime/vm/assembler_mips.h

Issue 735543003: Range feedback for binary integer operations. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/assembler_ia32_test.cc ('k') | runtime/vm/assembler_mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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_
OLDNEW
« no previous file with comments | « runtime/vm/assembler_ia32_test.cc ('k') | runtime/vm/assembler_mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698