| Index: runtime/vm/assembler_arm.cc
|
| ===================================================================
|
| --- runtime/vm/assembler_arm.cc (revision 21707)
|
| +++ runtime/vm/assembler_arm.cc (working copy)
|
| @@ -1261,6 +1261,14 @@
|
| }
|
|
|
|
|
| +void Assembler::LoadPoolPointer() {
|
| + const intptr_t object_pool_pc_dist =
|
| + Instructions::HeaderSize() - Instructions::object_pool_offset() +
|
| + CodeSize() + Instr::kPCReadOffset;
|
| + LoadFromOffset(kLoadWord, PP, PC, -object_pool_pc_dist);
|
| +}
|
| +
|
| +
|
| void Assembler::LoadObject(Register rd, const Object& object) {
|
| // Smis and VM heap objects are never relocated; do not use object pool.
|
| if (object.IsSmi()) {
|
| @@ -1972,10 +1980,7 @@
|
| }
|
|
|
| // Setup pool pointer for this dart function.
|
| - const intptr_t object_pool_pc_dist =
|
| - Instructions::HeaderSize() - Instructions::object_pool_offset() +
|
| - CodeSize() + Instr::kPCReadOffset;
|
| - ldr(PP, Address(PC, -object_pool_pc_dist));
|
| + LoadPoolPointer();
|
|
|
| // Reserve space for locals.
|
| AddImmediate(SP, -frame_size);
|
| @@ -2000,10 +2005,7 @@
|
| EnterFrame(regs, 0);
|
| if (uses_pp) {
|
| // Setup pool pointer for this stub.
|
| - const intptr_t object_pool_pc_dist =
|
| - Instructions::HeaderSize() - Instructions::object_pool_offset() +
|
| - CodeSize() + Instr::kPCReadOffset;
|
| - ldr(PP, Address(PC, -object_pool_pc_dist));
|
| + LoadPoolPointer();
|
| }
|
| }
|
|
|
|
|