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

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

Issue 16022011: Enables optimization on MIPS (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 7 months 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_mips.h ('k') | runtime/vm/assembler_mips_test.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 #include "vm/globals.h" 5 #include "vm/globals.h"
6 #if defined(TARGET_ARCH_MIPS) 6 #if defined(TARGET_ARCH_MIPS)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/runtime_entry.h" 9 #include "vm/runtime_entry.h"
10 #include "vm/simulator.h" 10 #include "vm/simulator.h"
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 return object_pool_.Length() - 1; 197 return object_pool_.Length() - 1;
198 } 198 }
199 199
200 200
201 void Assembler::PushObject(const Object& object) { 201 void Assembler::PushObject(const Object& object) {
202 LoadObject(TMP1, object); 202 LoadObject(TMP1, object);
203 Push(TMP1); 203 Push(TMP1);
204 } 204 }
205 205
206 206
207 void Assembler::CompareObject(Register rd, Register rn, const Object& object) { 207 void Assembler::CompareObject(Register rd1, Register rd2,
208 Register rn, const Object& object) {
208 ASSERT(rn != TMP1); 209 ASSERT(rn != TMP1);
210 ASSERT(rd1 != TMP1);
211 ASSERT(rd1 != rd2);
209 LoadObject(TMP1, object); 212 LoadObject(TMP1, object);
210 subu(rd, rn, TMP1); 213 slt(rd1, rn, TMP1);
214 slt(rd2, TMP1, rn);
regis 2013/05/24 22:32:59 Do you always need both results? Would it make sen
zra 2013/05/24 23:25:47 Not always, no. Both are needed only when the obje
211 } 215 }
212 216
213 217
214 // Preserves object and value registers. 218 // Preserves object and value registers.
215 void Assembler::StoreIntoObjectFilterNoSmi(Register object, 219 void Assembler::StoreIntoObjectFilterNoSmi(Register object,
216 Register value, 220 Register value,
217 Label* no_update) { 221 Label* no_update) {
218 COMPILE_ASSERT((kNewObjectAlignmentOffset == kWordSize) && 222 COMPILE_ASSERT((kNewObjectAlignmentOffset == kWordSize) &&
219 (kOldObjectAlignmentOffset == 0), young_alignment); 223 (kOldObjectAlignmentOffset == 0), young_alignment);
220 224
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 Emit(reinterpret_cast<int32_t>(message)); 582 Emit(reinterpret_cast<int32_t>(message));
579 Bind(&msg); 583 Bind(&msg);
580 break_(Instr::kMsgMessageCode); 584 break_(Instr::kMsgMessageCode);
581 } 585 }
582 } 586 }
583 587
584 } // namespace dart 588 } // namespace dart
585 589
586 #endif // defined TARGET_ARCH_MIPS 590 #endif // defined TARGET_ARCH_MIPS
587 591
OLDNEW
« no previous file with comments | « runtime/vm/assembler_mips.h ('k') | runtime/vm/assembler_mips_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698