Chromium Code Reviews| Index: src/ppc/macro-assembler-ppc.cc |
| diff --git a/src/ppc/macro-assembler-ppc.cc b/src/ppc/macro-assembler-ppc.cc |
| index ef90ff4b815789b8d15a34bfd3227ad7ccbdb5eb..e6e05da152ecf15036a7886089643529b47efa1f 100644 |
| --- a/src/ppc/macro-assembler-ppc.cc |
| +++ b/src/ppc/macro-assembler-ppc.cc |
| @@ -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,9 @@ 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); |
| + mov(ip, Operand(new_space_allocation_top_adr)); |
|
john.yan
2016/06/16 05:13:49
I am not sure why we need to do the load again.
|
| + LoadP(ip, MemOperand(ip)); |
| + cmp(scratch_reg, ip); |
| bgt(no_memento_found); |
| // Memento map check. |
| bind(&map_check); |