Index: runtime/vm/intrinsifier_arm64.cc |
=================================================================== |
--- runtime/vm/intrinsifier_arm64.cc (revision 40250) |
+++ runtime/vm/intrinsifier_arm64.cc (working copy) |
@@ -297,8 +297,8 @@ |
__ AddImmediate(R2, R2, fixed_size, kNoPP); \ |
__ andi(R2, R2, ~(kObjectAlignment - 1)); \ |
Heap* heap = Isolate::Current()->heap(); \ |
- \ |
- __ LoadImmediate(R0, heap->TopAddress(), kNoPP); \ |
+ Heap::Space space = heap->SpaceForAllocation(cid); \ |
+ __ LoadImmediate(R0, heap->TopAddress(space), kNoPP); \ |
__ ldr(R0, Address(R0, 0)); \ |
\ |
/* R2: allocation size. */ \ |
@@ -309,17 +309,17 @@ |
/* R0: potential new object start. */ \ |
/* R1: potential next object start. */ \ |
/* R2: allocation size. */ \ |
- __ LoadImmediate(R3, heap->EndAddress(), kNoPP); \ |
+ __ LoadImmediate(R3, heap->EndAddress(space), kNoPP); \ |
__ ldr(R3, Address(R3, 0)); \ |
__ cmp(R1, Operand(R3)); \ |
__ b(&fall_through, CS); \ |
\ |
/* Successfully allocated the object(s), now update top to point to */ \ |
/* next object start and initialize the object. */ \ |
- __ LoadImmediate(R3, heap->TopAddress(), kNoPP); \ |
+ __ LoadImmediate(R3, heap->TopAddress(space), kNoPP); \ |
__ str(R1, Address(R3, 0)); \ |
__ AddImmediate(R0, R0, kHeapObjectTag, kNoPP); \ |
- __ UpdateAllocationStatsWithSize(cid, R2, kNoPP); \ |
+ __ UpdateAllocationStatsWithSize(cid, R2, kNoPP, space); \ |
/* Initialize the tags. */ \ |
/* R0: new object start as a tagged pointer. */ \ |
/* R1: new object end address. */ \ |
@@ -1271,8 +1271,8 @@ |
Isolate* isolate = Isolate::Current(); |
Heap* heap = isolate->heap(); |
- |
- __ LoadImmediate(R3, heap->TopAddress(), kNoPP); |
+ Heap::Space space = heap->SpaceForAllocation(kOneByteStringCid); |
+ __ LoadImmediate(R3, heap->TopAddress(space), kNoPP); |
__ ldr(R0, Address(R3)); |
// length_reg: allocation size. |
@@ -1283,8 +1283,8 @@ |
// R0: potential new object start. |
// R1: potential next object start. |
// R2: allocation size. |
- // R3: heap->Top->Address(). |
- __ LoadImmediate(R7, heap->EndAddress(), kNoPP); |
+ // R3: heap->TopAddress(space). |
+ __ LoadImmediate(R7, heap->EndAddress(space), kNoPP); |
__ ldr(R7, Address(R7)); |
__ cmp(R1, Operand(R7)); |
__ b(&fail, CS); |
@@ -1293,7 +1293,7 @@ |
// next object start and initialize the object. |
__ str(R1, Address(R3)); |
__ AddImmediate(R0, R0, kHeapObjectTag, kNoPP); |
- __ UpdateAllocationStatsWithSize(kOneByteStringCid, R2, kNoPP); |
+ __ UpdateAllocationStatsWithSize(kOneByteStringCid, R2, kNoPP, space); |
// Initialize the tags. |
// R0: new object start as a tagged pointer. |