Index: src/debug.h |
diff --git a/src/debug.h b/src/debug.h |
index 7ec78015c6d2d65794b8f0f299444ccf570683b2..2adbd243386b083f42a3cd5f7630256962d1d73a 100644 |
--- a/src/debug.h |
+++ b/src/debug.h |
@@ -457,6 +457,50 @@ class Debug { |
// Architecture-specific constant. |
static const bool kFrameDropperSupported; |
+ /** |
+ * Defines layout of a stack frame that supports padding. This is a regular |
+ * internal frame that has a flexible stack structure. LiveEdit can shift |
+ * its lower part up the stack, taking up the 'padding' space when additional |
+ * stack memory is required. |
+ * Such frame is expected immediately above the topmost JavaScript frame. |
+ * |
+ * Stack Layout: |
+ * --- Top |
+ * LiveEdit routine frames |
+ * --- |
+ * C frames of debug handler |
+ * --- |
+ * ... |
+ * --- |
+ * An internal frame that has n padding words: |
+ * - any number of words as needed by code -- upper part of frame |
+ * - padding size: a Smi storing n -- current size of padding |
+ * - padding: n words filled with kPaddingValue in form of Smi |
+ * - 3 context/type words of a regular InternalFrame |
+ * - fp |
+ * --- |
+ * Topmost JavaScript frame |
+ * --- |
+ * ... |
+ * --- Bottom |
+ */ |
+ class FramePaddingLayout : public AllStatic { |
+ public: |
+ // Architecture-specific constant. |
+ static const bool kIsSupported; |
+ |
+ // A size of frame base including fp. Padding words starts right above |
+ // the base. |
+ static const int kFrameBaseSize = 4; |
+ |
+ // A number of words that should be reserved on stack for the LiveEdit use. |
+ // Normally equals 1. Stored on stack in form of Smi. |
+ static const int kInitialSize; |
+ // A value that padding words are filled with (in form of Smi). Going |
+ // bottom-top, the first word not having this value is a counter word. |
+ static const int kPaddingValue; |
+ }; |
+ |
private: |
explicit Debug(Isolate* isolate); |
~Debug(); |