Index: src/deoptimizer.h |
diff --git a/src/deoptimizer.h b/src/deoptimizer.h |
index 8f368b44ad687c8440825c4c34e06375ac27a289..27ff8ddcce51679f070cce934d820f9e79775dca 100644 |
--- a/src/deoptimizer.h |
+++ b/src/deoptimizer.h |
@@ -400,6 +400,12 @@ class FrameDescription { |
void SetKind(Code::Kind kind) { kind_ = kind; } |
#endif |
+ // Get the incoming arguments count. |
+ int ComputeParametersCount(); |
+ |
+ // Get a parameter value for an unoptimized frame. |
+ Object* GetParameter(Deoptimizer* deoptimizer, int index); |
+ |
// Get the expression stack height for a unoptimized frame. |
unsigned GetExpressionCount(Deoptimizer* deoptimizer); |
@@ -662,6 +668,9 @@ class DeoptimizedFrameInfo : public Malloced { |
// GC support. |
void Iterate(ObjectVisitor* v); |
+ // Return the number of incoming arguments. |
+ int parameters_count() { return parameters_count_; } |
+ |
// Return the height of the expression stack. |
int expression_count() { return expression_count_; } |
@@ -670,6 +679,12 @@ class DeoptimizedFrameInfo : public Malloced { |
return function_; |
} |
+ // Get an incoming argument. |
+ Object* GetParameter(int index) { |
+ ASSERT(0 <= index && index < parameters_count()); |
+ return parameters_[index]; |
+ } |
+ |
// Get an expression from the expression stack. |
Object* GetExpression(int index) { |
ASSERT(0 <= index && index < expression_count()); |
@@ -682,6 +697,12 @@ class DeoptimizedFrameInfo : public Malloced { |
function_ = function; |
} |
+ // Set an incoming argument. |
+ void SetParameter(int index, Object* obj) { |
+ ASSERT(0 <= index && index < parameters_count()); |
+ parameters_[index] = obj; |
+ } |
+ |
// Set an expression on the expression stack. |
void SetExpression(int index, Object* obj) { |
ASSERT(0 <= index && index < expression_count()); |
@@ -689,7 +710,9 @@ class DeoptimizedFrameInfo : public Malloced { |
} |
JSFunction* function_; |
+ int parameters_count_; |
int expression_count_; |
+ Object** parameters_; |
Object** expression_stack_; |
friend class Deoptimizer; |