| Index: runtime/vm/flow_graph_builder.h
|
| ===================================================================
|
| --- runtime/vm/flow_graph_builder.h (revision 23243)
|
| +++ runtime/vm/flow_graph_builder.h (working copy)
|
| @@ -140,6 +140,9 @@
|
| bool IsInlining() const { return (exit_collector_ != NULL); }
|
| InlineExitCollector* exit_collector() const { return exit_collector_; }
|
|
|
| + intptr_t args_pushed() const { return args_pushed_; }
|
| + void add_args_pushed(intptr_t n) { args_pushed_ += n; }
|
| +
|
| private:
|
| intptr_t parameter_count() const {
|
| return num_copied_params_ + num_non_copied_params_;
|
| @@ -162,6 +165,9 @@
|
| intptr_t try_index_;
|
| GraphEntryInstr* graph_entry_;
|
|
|
| + // Outgoing argument stack height.
|
| + intptr_t args_pushed_;
|
| +
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(FlowGraphBuilder);
|
| };
|
|
|
| @@ -318,6 +324,10 @@
|
| temp_index_ -= n;
|
| }
|
|
|
| + // Returns a local variable index for a temporary local that is
|
| + // on top of the current expression stack.
|
| + intptr_t GetCurrentTempLocalIndex() const;
|
| +
|
| Value* BuildObjectAllocation(ConstructorCallNode* node);
|
| void BuildConstructorCall(ConstructorCallNode* node,
|
| PushArgumentInstr* alloc_value);
|
| @@ -346,21 +356,23 @@
|
|
|
| Value* BuildNullValue();
|
|
|
| + // Returns true if the run-time type check can be eliminated.
|
| + bool CanSkipTypeCheck(intptr_t token_pos,
|
| + Value* value,
|
| + const AbstractType& dst_type,
|
| + const String& dst_name);
|
| +
|
| + void BuildLetTempExpressions(LetNode* node);
|
| +
|
| private:
|
| + friend class TempLocalScope; // For ReturnDefinition.
|
| +
|
| // Specify a definition of the final result. Adds the definition to
|
| // the graph, but normally overridden in subclasses.
|
| virtual void ReturnDefinition(Definition* definition) {
|
| Do(definition);
|
| }
|
|
|
| - protected:
|
| - // Returns true if the run-time type check can be eliminated.
|
| - bool CanSkipTypeCheck(intptr_t token_pos,
|
| - Value* value,
|
| - const AbstractType& dst_type,
|
| - const String& dst_name);
|
| -
|
| - private:
|
| // Shared global state.
|
| FlowGraphBuilder* owner_;
|
|
|
| @@ -401,6 +413,7 @@
|
| virtual void VisitStoreStaticFieldNode(StoreStaticFieldNode* node);
|
| virtual void VisitTypeNode(TypeNode* node);
|
| virtual void VisitCommaNode(CommaNode* node);
|
| + virtual void VisitLetNode(LetNode* node);
|
|
|
| Value* value() const { return value_; }
|
|
|
|
|