Index: runtime/vm/assembler_x64.cc |
diff --git a/runtime/vm/assembler_x64.cc b/runtime/vm/assembler_x64.cc |
index 48118d519c1c296892d78133a55d58321b292a07..e0ffcb37b2cdad41862f3197a81845c9e9cf5db7 100644 |
--- a/runtime/vm/assembler_x64.cc |
+++ b/runtime/vm/assembler_x64.cc |
@@ -3185,7 +3185,7 @@ void Assembler::Stop(const char* message, bool fixed_length_encoding) { |
} else { |
LoadImmediate(RDI, Immediate(message_address), PP); |
} |
- call(&Isolate::Current()->stub_code()->PrintStopMessageLabel()); |
+ call(&StubCode::PrintStopMessageLabel()); |
popq(RDI); // Restore RDI register. |
popq(TMP); // Restore TMP register. |
} else { |
@@ -3440,19 +3440,25 @@ void Assembler::LeaveStubFrame() { |
void Assembler::MaybeTraceAllocation(intptr_t cid, |
Label* trace, |
- bool near_jump) { |
+ bool near_jump, |
+ bool inline_isolate) { |
ASSERT(cid > 0); |
- intptr_t state_offset; |
- ClassTable* class_table = Isolate::Current()->class_table(); |
- ClassHeapStats** table_ptr = |
- class_table->StateAddressFor(cid, &state_offset); |
+ intptr_t state_offset = ClassTable::StateOffsetFor(cid); |
Register temp_reg = TMP; |
- if (cid < kNumPredefinedCids) { |
- movq(temp_reg, Immediate(reinterpret_cast<uword>(*table_ptr))); |
+ if (inline_isolate) { |
+ ClassTable* class_table = Isolate::Current()->class_table(); |
+ ClassHeapStats** table_ptr = class_table->TableAddressFor(cid); |
+ if (cid < kNumPredefinedCids) { |
+ movq(temp_reg, Immediate(reinterpret_cast<uword>(*table_ptr))); |
+ } else { |
+ movq(temp_reg, Immediate(reinterpret_cast<uword>(table_ptr))); |
+ movq(temp_reg, Address(temp_reg, 0)); |
+ } |
} else { |
- Register temp_reg = TMP; |
- movq(temp_reg, Immediate(reinterpret_cast<uword>(table_ptr))); |
- movq(temp_reg, Address(temp_reg, 0)); |
+ LoadIsolate(temp_reg); |
+ intptr_t table_offset = |
+ Isolate::class_table_offset() + ClassTable::TableOffsetFor(cid); |
+ movq(temp_reg, Address(temp_reg, table_offset)); |
} |
testb(Address(temp_reg, state_offset), |
Immediate(ClassHeapStats::TraceAllocationMask())); |