Chromium Code Reviews| Index: vm/assembler_macros_x64.h |
| =================================================================== |
| --- vm/assembler_macros_x64.h (revision 7576) |
| +++ vm/assembler_macros_x64.h (working copy) |
| @@ -33,6 +33,49 @@ |
| Register class_reg, |
| Label* failure, |
| Register instance_reg); |
| + |
| + // Set up a dart frame on entry with a frame pointer and PC information to |
| + // enable easy access to the RawInstruction object of code corresponding |
| + // to this frame. |
| + // The dart frame layout is as follows: |
| + // .... |
| + // ret PC |
| + // saved RBP <=== RBP |
| + // pc (used to derive the RawInstruction Object of the dart code) |
| + // locals space <=== RSP |
| + // ..... |
| + // This code sets this up with the sequence: |
| + // pushq rbp |
| + // movq rbp, rsp |
| + // call L |
| + // L: <code to adjust saved pc if there is any intrinsification code> |
| + // ..... |
| + static void EnterDartFrame(Assembler* assembler, intptr_t frame_space); |
| + |
| + // Set up a stub frame so that the stack traversal code can easily identify |
| + // a stub frame. |
| + // The stub frame layout is as follows: |
| + // .... |
| + // ret PC |
| + // saved RBP |
| + // pc (used to derive the RawInstruction Object of the stub) |
| + // ..... |
| + // This code sets this up with the sequence: |
| + // pushq rbp |
| + // movq rbp, rsp |
| + // pushq immediate(0) |
| + // ..... |
| + static void EnterStubFrame(Assembler* assembler); |
| + |
| + // Instruction pattern from entrypoint is used in dart frame prologs |
| + // to set up the frame and save a PC which can be used to figure out the |
| + // RawInstruction object corresponding to the code running in the frame. |
| + // entrypoint: |
| + // pushq rbp (size is 1 byte) |
| + // movq rbp, rsp (size is 3 bytes) |
| + // call L (size is 5 bytes) |
|
srdjan
2012/05/14 20:00:17
ditto
siva
2012/05/15 23:52:39
Created issue (3069).
On 2012/05/14 20:00:17, srd
|
| + // L: |
| + static const intptr_t kOffsetOfSavedPCfromEntrypoint = 9; |
| }; |
| } // namespace dart. |