Index: runtime/vm/stack_frame_arm.h |
diff --git a/runtime/vm/stack_frame_arm.h b/runtime/vm/stack_frame_arm.h |
index e391334fa1190a3e94fae5104cb921f326d1064e..8f22815048f24107ea06d7bcf289b4aeff6b9adb 100644 |
--- a/runtime/vm/stack_frame_arm.h |
+++ b/runtime/vm/stack_frame_arm.h |
@@ -12,16 +12,16 @@ namespace dart { |
| | <- TOS |
Callee frame | ... | |
| saved PP | (PP of current frame) |
+ | code object | |
| saved FP | (FP of current frame) |
| saved LR | (PC of current frame) |
- | callee's PC marker | |
+--------------------+ |
Current frame | ... T| <- SP of current frame |
| first local T| |
| caller's PP T| |
+ | code object T| (current frame's code object) |
| caller's FP | <- FP of current frame |
| caller's LR | (PC of caller frame) |
- | PC marker | (current frame's code entry + offset) |
+--------------------+ |
Caller frame | last parameter | <- SP of caller frame |
| ... | |
@@ -30,20 +30,20 @@ Caller frame | last parameter | <- SP of caller frame |
*/ |
static const int kDartFrameFixedSize = 4; // PP, FP, LR, PC marker. |
-static const int kSavedPcSlotFromSp = -2; |
+static const int kSavedPcSlotFromSp = -1; |
static const int kFirstObjectSlotFromFp = -1; // Used by GC to traverse stack. |
-static const int kFirstLocalSlotFromFp = -2; |
-static const int kSavedCallerPpSlotFromFp = -1; |
+static const int kFirstLocalSlotFromFp = -3; |
+static const int kSavedCallerPpSlotFromFp = -2; |
+static const int kPcMarkerSlotFromFp = -1; |
static const int kSavedCallerFpSlotFromFp = 0; |
static const int kSavedCallerPcSlotFromFp = 1; |
-static const int kPcMarkerSlotFromFp = 2; |
-static const int kParamEndSlotFromFp = 2; // One slot past last parameter. |
-static const int kCallerSpSlotFromFp = 3; |
+static const int kParamEndSlotFromFp = 1; // One slot past last parameter. |
+static const int kCallerSpSlotFromFp = 2; |
// Entry and exit frame layout. |
-static const int kExitLinkSlotFromEntryFp = -26; |
+static const int kExitLinkSlotFromEntryFp = -27; |
} // namespace dart |