Index: runtime/vm/stack_frame_x64.h |
=================================================================== |
--- runtime/vm/stack_frame_x64.h (revision 22469) |
+++ runtime/vm/stack_frame_x64.h (working copy) |
@@ -9,24 +9,31 @@ |
/* X64 Dart Frame Layout |
- | | <- TOS |
-Callee frame | ... | |
- | current ret addr | (PC of current frame) |
- +-------------------+ |
-Current frame | ... | <- RSP of current frame |
- | first local | |
- | PC Marker | (current frame's code entry) |
- | caller's RBP | <- RBP of current frame |
- | caller's ret addr | (PC of caller frame) |
- +-------------------+ |
-Caller frame | last parameter | |
- | ... | |
+ | | <- TOS |
+Callee frame | ... | |
+ | current ret addr | (PC of current frame) |
+ +--------------------+ |
+Current frame | ... | <- RSP of current frame |
+ | first local | |
+ | PC marker | (current frame's code entry + offset) |
+ | caller's RBP | <- RBP of current frame |
+ | caller's ret addr | (PC of caller frame) |
+ +--------------------+ |
+Caller frame | last parameter | <- RSP of caller frame |
+ | ... | |
*/ |
-static const int kLastParamSlotIndex = 2; // From fp. |
-static const int kFirstLocalSlotIndex = -2; // From fp. |
-static const int kPcSlotIndexFromSp = -1; |
+static const int kSavedPcSlotFromSp = -1; |
+static const int kFirstLocalSlotFromFp = -2; |
+static const int kPcMarkerSlotFromFp = -1; |
+static const int kSavedCallerFpSlotFromFp = 0; |
+static const int kParamEndSlotFromFp = 1; // Same slot as caller's ret addr. |
+static const int kCallerSpSlotFromFp = 2; |
+// Entry and exit frame layout. |
+static const int kSavedContextSlotFromEntryFp = -9; |
+static const int kExitLinkSlotFromEntryFp = -8; |
+ |
} // namespace dart |
#endif // VM_STACK_FRAME_X64_H_ |