| 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"  // NOLINT |     5 #include "vm/globals.h"  // NOLINT | 
|     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/longjump.h" |     9 #include "vm/longjump.h" | 
|    10 #include "vm/runtime_entry.h" |    10 #include "vm/runtime_entry.h" | 
| (...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   878   AddImmediate(TMP, 1); |   878   AddImmediate(TMP, 1); | 
|   879   sw(TMP, Address(temp_reg, count_field_offset)); |   879   sw(TMP, Address(temp_reg, count_field_offset)); | 
|   880   lw(TMP, Address(temp_reg, size_field_offset)); |   880   lw(TMP, Address(temp_reg, size_field_offset)); | 
|   881   addu(TMP, TMP, size_reg); |   881   addu(TMP, TMP, size_reg); | 
|   882   sw(TMP, Address(temp_reg, size_field_offset)); |   882   sw(TMP, Address(temp_reg, size_field_offset)); | 
|   883 } |   883 } | 
|   884  |   884  | 
|   885  |   885  | 
|   886 void Assembler::MaybeTraceAllocation(intptr_t cid, |   886 void Assembler::MaybeTraceAllocation(intptr_t cid, | 
|   887                                      Register temp_reg, |   887                                      Register temp_reg, | 
|   888                                      Label* trace) { |   888                                      Label* trace, | 
 |   889                                      bool inline_isolate) { | 
|   889   ASSERT(cid > 0); |   890   ASSERT(cid > 0); | 
|   890   ASSERT(!in_delay_slot_); |   891   ASSERT(!in_delay_slot_); | 
|   891   ASSERT(temp_reg != kNoRegister); |   892   ASSERT(temp_reg != kNoRegister); | 
|   892   ASSERT(temp_reg != TMP); |   893   ASSERT(temp_reg != TMP); | 
|   893   intptr_t state_offset; |   894   intptr_t state_offset = ClassTable::StateOffsetFor(cid); | 
|   894   ClassTable* class_table = Isolate::Current()->class_table(); |   895   if (inline_isolate) { | 
|   895   ClassHeapStats** table_ptr = |   896     ClassTable* class_table = Isolate::Current()->class_table(); | 
|   896       class_table->StateAddressFor(cid, &state_offset); |   897     ClassHeapStats** table_ptr = class_table->TableAddressFor(cid); | 
|   897   if (cid < kNumPredefinedCids) { |   898     if (cid < kNumPredefinedCids) { | 
|   898     LoadImmediate(temp_reg, reinterpret_cast<uword>(*table_ptr) + state_offset); |   899       LoadImmediate(temp_reg, | 
 |   900                     reinterpret_cast<uword>(*table_ptr) + state_offset); | 
 |   901     } else { | 
 |   902       LoadImmediate(temp_reg, reinterpret_cast<uword>(table_ptr)); | 
 |   903       lw(temp_reg, Address(temp_reg, 0)); | 
 |   904       AddImmediate(temp_reg, state_offset); | 
 |   905     } | 
|   899   } else { |   906   } else { | 
|   900     LoadImmediate(temp_reg, reinterpret_cast<uword>(table_ptr)); |   907     LoadIsolate(temp_reg); | 
|   901     lw(temp_reg, Address(temp_reg, 0)); |   908     intptr_t table_offset = | 
 |   909         Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); | 
 |   910     lw(temp_reg, Address(temp_reg, table_offset)); | 
|   902     AddImmediate(temp_reg, state_offset); |   911     AddImmediate(temp_reg, state_offset); | 
|   903   } |   912   } | 
|   904   lw(temp_reg, Address(temp_reg, 0)); |   913   lw(temp_reg, Address(temp_reg, 0)); | 
|   905   andi(CMPRES1, temp_reg, Immediate(ClassHeapStats::TraceAllocationMask())); |   914   andi(CMPRES1, temp_reg, Immediate(ClassHeapStats::TraceAllocationMask())); | 
|   906   bne(CMPRES1, ZR, trace); |   915   bne(CMPRES1, ZR, trace); | 
|   907 } |   916 } | 
|   908  |   917  | 
|   909  |   918  | 
|   910 void Assembler::TryAllocate(const Class& cls, |   919 void Assembler::TryAllocate(const Class& cls, | 
|   911                             Label* failure, |   920                             Label* failure, | 
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1267   Label stop; |  1276   Label stop; | 
|  1268   b(&stop); |  1277   b(&stop); | 
|  1269   Emit(reinterpret_cast<int32_t>(message)); |  1278   Emit(reinterpret_cast<int32_t>(message)); | 
|  1270   Bind(&stop); |  1279   Bind(&stop); | 
|  1271   break_(Instr::kStopMessageCode); |  1280   break_(Instr::kStopMessageCode); | 
|  1272 } |  1281 } | 
|  1273  |  1282  | 
|  1274 }  // namespace dart |  1283 }  // namespace dart | 
|  1275  |  1284  | 
|  1276 #endif  // defined TARGET_ARCH_MIPS |  1285 #endif  // defined TARGET_ARCH_MIPS | 
| OLD | NEW |