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:
parent
3adefd712c
commit
b95de04412
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user