| Index: runtime/vm/assembler_x64.cc
|
| ===================================================================
|
| --- runtime/vm/assembler_x64.cc (revision 40325)
|
| +++ runtime/vm/assembler_x64.cc (working copy)
|
| @@ -3135,6 +3135,27 @@
|
| }
|
|
|
|
|
| +void Assembler::SetupPP(Register new_pp, Register temp_pc) {
|
| + Label next;
|
| + nop(4); // Need a fixed size sequence on frame entry.
|
| + call(&next);
|
| + Bind(&next);
|
| +
|
| + const intptr_t object_pool_pc_dist =
|
| + Instructions::HeaderSize() - Instructions::object_pool_offset() +
|
| + CodeSize();
|
| + const intptr_t offset =
|
| + Assembler::EntryPointToPcMarkerOffset() - CodeSize();
|
| + popq(temp_pc);
|
| + if (offset != 0) {
|
| + addq(temp_pc, Immediate(offset));
|
| + }
|
| +
|
| + // Load callee's pool pointer.
|
| + movq(new_pp, Address(temp_pc, -object_pool_pc_dist - offset));
|
| +}
|
| +
|
| +
|
| void Assembler::ComputeCounterAddressesForCid(intptr_t cid,
|
| Heap::Space space,
|
| Address* count_address,
|
|
|