| Index: runtime/vm/flow_graph_builder.h
|
| diff --git a/runtime/vm/flow_graph_builder.h b/runtime/vm/flow_graph_builder.h
|
| index f787d4629e3e379ad12db4cfe43b90841ce62363..f9adcd6e935b723714c5f9f5bd14ed89423797f2 100644
|
| --- a/runtime/vm/flow_graph_builder.h
|
| +++ b/runtime/vm/flow_graph_builder.h
|
| @@ -25,6 +25,9 @@ class LocalVariable;
|
| class ParsedFunction;
|
| class String;
|
|
|
| +class NestedStatement;
|
| +class TestGraphVisitor;
|
| +
|
| // List of recognized list factories:
|
| // (factory-name-symbol, result-cid, fingerprint).
|
| // TODO(srdjan): Store the values in the snapshot instead.
|
| @@ -106,8 +109,6 @@ class InlineExitCollector: public ZoneAllocated {
|
| };
|
|
|
|
|
| -class NestedStatement;
|
| -
|
| // Build a flow graph from a parsed function's AST.
|
| class FlowGraphBuilder: public ValueObject {
|
| public:
|
| @@ -128,8 +129,7 @@ class FlowGraphBuilder: public ValueObject {
|
| intptr_t AllocateBlockId() { return ++last_used_block_id_; }
|
| void SetInitialBlockId(intptr_t id) { last_used_block_id_ = id; }
|
|
|
| - void set_context_level(intptr_t value) { context_level_ = value; }
|
| - intptr_t context_level() const { return context_level_; }
|
| + intptr_t context_level() const;
|
|
|
| void IncrementLoopDepth() { ++loop_depth_; }
|
| void DecrementLoopDepth() { --loop_depth_; }
|
| @@ -198,7 +198,6 @@ class FlowGraphBuilder: public ValueObject {
|
| ZoneGrowableArray<const Field*>* guarded_fields_;
|
|
|
| intptr_t last_used_block_id_;
|
| - intptr_t context_level_;
|
| intptr_t try_index_;
|
| intptr_t catch_try_index_;
|
| intptr_t loop_depth_;
|
| @@ -221,44 +220,6 @@ class FlowGraphBuilder: public ValueObject {
|
| };
|
|
|
|
|
| -// Base class for a stack of enclosing statements of interest (e.g.,
|
| -// blocks (breakable) and loops (continuable)).
|
| -class NestedStatement : public ValueObject {
|
| - public:
|
| - NestedStatement(FlowGraphBuilder* owner, const SourceLabel* label)
|
| - : owner_(owner),
|
| - label_(label),
|
| - outer_(owner->nesting_stack_),
|
| - break_target_(NULL) {
|
| - // Push on the owner's nesting stack.
|
| - owner->nesting_stack_ = this;
|
| - }
|
| -
|
| - virtual ~NestedStatement() {
|
| - // Pop from the owner's nesting stack.
|
| - ASSERT(owner_->nesting_stack_ == this);
|
| - owner_->nesting_stack_ = outer_;
|
| - }
|
| -
|
| - FlowGraphBuilder* owner() const { return owner_; }
|
| - const SourceLabel* label() const { return label_; }
|
| - NestedStatement* outer() const { return outer_; }
|
| - JoinEntryInstr* break_target() const { return break_target_; }
|
| -
|
| - virtual JoinEntryInstr* BreakTargetFor(SourceLabel* label);
|
| - virtual JoinEntryInstr* ContinueTargetFor(SourceLabel* label);
|
| -
|
| - private:
|
| - FlowGraphBuilder* owner_;
|
| - const SourceLabel* label_;
|
| - NestedStatement* outer_;
|
| -
|
| - JoinEntryInstr* break_target_;
|
| -};
|
| -
|
| -
|
| -class TestGraphVisitor;
|
| -
|
| // Translate an AstNode to a control-flow graph fragment for its effects
|
| // (e.g., a statement or an expression in an effect context). Implements a
|
| // function from an AstNode and next temporary index to a graph fragment
|
| @@ -402,8 +363,8 @@ class EffectGraphVisitor : public AstNodeVisitor {
|
|
|
| bool MustSaveRestoreContext(SequenceNode* node) const;
|
|
|
| - // Moves parent context into the context register.
|
| - void UnchainContext();
|
| + // Moves the nth parent context into the context register.
|
| + void UnchainContexts(intptr_t n);
|
|
|
| void CloseFragment() { exit_ = NULL; }
|
|
|
|
|