PPC: [Heap] Fix comparing against new space top pointer

Port d6473f5c14

Original commit message:

    See bug description.

R=mlippautz@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=chromium:619382
LOG=N

Review-Url: https://codereview.chromium.org/2066603007
Cr-Commit-Position: refs/heads/master@{#37023}
This commit is contained in:
bjaideep 2016-06-15 23:25:37 -07:00 committed by Commit bot
parent 3adefd712c
commit b95de04412

View File

@ -4698,7 +4698,7 @@ void MacroAssembler::TestJSArrayForAllocationMemento(Register receiver_reg,
Label* no_memento_found) {
Label map_check;
Label top_check;
ExternalReference new_space_allocation_top =
ExternalReference new_space_allocation_top_adr =
ExternalReference::new_space_allocation_top_address(isolate());
const int kMementoMapOffset = JSArray::kSize - kHeapObjectTag;
const int kMementoEndOffset = kMementoMapOffset + AllocationMemento::kSize;
@ -4715,7 +4715,9 @@ void MacroAssembler::TestJSArrayForAllocationMemento(Register receiver_reg,
// If the object is in new space, we need to check whether it is on the same
// page as the current top.
Xor(r0, scratch_reg, Operand(new_space_allocation_top));
mov(ip, Operand(new_space_allocation_top_adr));
LoadP(ip, MemOperand(ip));
Xor(r0, scratch_reg, Operand(ip));
and_(r0, r0, mask, SetRC);
beq(&top_check, cr0);
// The object is on a different page than allocation top. Bail out if the
@ -4729,7 +4731,7 @@ void MacroAssembler::TestJSArrayForAllocationMemento(Register receiver_reg,
// If top is on the same page as the current object, we need to check whether
// we are below top.
bind(&top_check);
Cmpi(scratch_reg, Operand(new_space_allocation_top), r0);
cmp(scratch_reg, ip);
bgt(no_memento_found);
// Memento map check.
bind(&map_check);