Index: src/ast.h |
diff --git a/src/ast.h b/src/ast.h |
index dd4941673f7bf164c1285778ef46a20fba007bf1..a797272cec2d42432c94e6a7f09ad02c64a9a0f8 100644 |
--- a/src/ast.h |
+++ b/src/ast.h |
@@ -1102,19 +1102,32 @@ class WithStatement FINAL : public Statement { |
Expression* expression() const { return expression_; } |
Statement* statement() const { return statement_; } |
+ void set_base_id(int id) { base_id_ = id; } |
Benedikt Meurer
2015/01/22 10:35:17
There are no words to describe how ugly this is...
|
+ static int num_ids() { return parent_num_ids() + 1; } |
+ BailoutId EntryId() const { return BailoutId(local_id(0)); } |
+ |
protected: |
- WithStatement( |
- Zone* zone, Scope* scope, |
- Expression* expression, Statement* statement, int pos) |
+ WithStatement(Zone* zone, Scope* scope, Expression* expression, |
+ Statement* statement, int pos) |
: Statement(zone, pos), |
scope_(scope), |
expression_(expression), |
- statement_(statement) { } |
+ statement_(statement), |
+ base_id_(BailoutId::None().ToInt()) {} |
+ static int parent_num_ids() { return 0; } |
+ |
+ int base_id() const { |
+ DCHECK(!BailoutId(base_id_).IsNone()); |
+ return base_id_; |
+ } |
private: |
+ int local_id(int n) const { return base_id() + parent_num_ids() + n; } |
+ |
Scope* scope_; |
Expression* expression_; |
Statement* statement_; |
+ int base_id_; |
}; |