Index: runtime/vm/stub_code_ia32.cc |
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc |
index 77a8471e17144b34fd959195993248c1aaa1829d..bc91284f25d78ccf6079d6453d433e1a2a382d6b 100644 |
--- a/runtime/vm/stub_code_ia32.cc |
+++ b/runtime/vm/stub_code_ia32.cc |
@@ -575,7 +575,7 @@ void StubCode::GenerateAllocateArrayStub(Assembler* assembler) { |
__ MaybeTraceAllocation(kArrayCid, |
EAX, |
&slow_case, |
- /* near_jump = */ false, |
+ Assembler::kFarJump, |
/* inline_isolate = */ false); |
const intptr_t fixed_size = sizeof(RawArray) + kObjectAlignment - 1; |
@@ -808,6 +808,12 @@ void StubCode::GenerateAllocateContextStub(Assembler* assembler) { |
__ leal(EBX, Address(EDX, TIMES_4, fixed_size)); |
__ andl(EBX, Immediate(-kObjectAlignment)); |
+ __ MaybeTraceAllocation(kContextCid, |
+ EAX, |
+ &slow_case, |
+ Assembler::kFarJump, |
+ /* inline_isolate = */ false); |
+ |
// Now allocate the object. |
// EDX: number of context variables. |
const intptr_t cid = kContextCid; |
@@ -1019,8 +1025,9 @@ void StubCode::GenerateAllocationStubForClass( |
__ movl(EDX, Address(ESP, kObjectTypeArgumentsOffset)); |
// EDX: instantiated type arguments. |
} |
+ Isolate* isolate = Isolate::Current(); |
if (FLAG_inline_alloc && Heap::IsAllocatableInNewSpace(instance_size) && |
- !cls.trace_allocation()) { |
+ !cls.TraceAllocation(isolate)) { |
Label slow_case; |
// Allocate the object and update top to point to |
// next object start and initialize the allocated object. |