Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Unified Diff: runtime/vm/flow_graph_builder.h

Issue 10316005: Automatically assign temporary indices to definitions in the IL. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/vm/flow_graph_builder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/flow_graph_builder.h
diff --git a/runtime/vm/flow_graph_builder.h b/runtime/vm/flow_graph_builder.h
index a4bbd8ec33b4cef191fbfe32638fadad56056be5..9d8d7152f4977e1085b6cbd073cb7190bcdb6734 100644
--- a/runtime/vm/flow_graph_builder.h
+++ b/runtime/vm/flow_graph_builder.h
@@ -115,7 +115,6 @@ class EffectGraphVisitor : public AstNodeVisitor {
protected:
// Helpers for translating parts of the AST.
void TranslateArgumentList(const ArgumentListNode& node,
- intptr_t next_temp_index,
ZoneGrowableArray<Value*>* values);
// Build the load part of a instance field increment. Translates the
@@ -151,22 +150,19 @@ class EffectGraphVisitor : public AstNodeVisitor {
ZoneGrowableArray<Value*>* args);
// Returns the value of the type arguments of the instantiator.
- Value* BuildInstantiatorTypeArguments(intptr_t token_index,
- intptr_t start_index);
+ Value* BuildInstantiatorTypeArguments(intptr_t token_index);
// Perform a type check on the given value.
void BuildAssertAssignable(intptr_t token_index,
Value* value,
const AbstractType& dst_type,
- const String& dst_name,
- intptr_t start_index);
+ const String& dst_name);
// Perform a type check on the given value and return it.
Value* BuildAssignableValue(AstNode* value_node,
Value* value,
const AbstractType& dst_type,
- const String& dst_name,
- intptr_t start_index);
+ const String& dst_name);
virtual void BuildInstanceOf(ComparisonNode* node);
@@ -177,7 +173,10 @@ class EffectGraphVisitor : public AstNodeVisitor {
void CloseFragment() { exit_ = NULL; }
intptr_t AllocateTempIndex() { return temp_index_++; }
- void DeallocateTempIndex() { --temp_index_; }
+ void DeallocateTempIndex(intptr_t n) {
+ ASSERT(temp_index_ >= n);
+ temp_index_ -= n;
+ }
virtual void CompiletimeStringInterpolation(const Function& interpol_func,
const Array& literals);
@@ -248,10 +247,9 @@ class ValueGraphVisitor : public EffectGraphVisitor {
// the graph and returns its temporary value (i.e., set the output
// parameters).
virtual void ReturnComputation(Computation* computation) {
- BindInstr* defn = new BindInstr(temp_index(), computation);
+ BindInstr* defn = new BindInstr(computation);
AddInstruction(defn);
- AllocateTempIndex();
- value_ = new UseVal(defn);
+ ReturnValue(new UseVal(defn));
}
virtual void CompiletimeStringInterpolation(const Function& interpol_func,
@@ -305,14 +303,6 @@ class TestGraphVisitor : public ValueGraphVisitor {
// Closes the fragment and sets the output parameters.
virtual void ReturnValue(Value* value);
- // Specify a computation as the final result. Adds a Bind instruction to
- // the graph and branches on its value.
- virtual void ReturnComputation(Computation* computation) {
- BindInstr* defn = new BindInstr(temp_index(), computation);
- AddInstruction(defn);
- ReturnValue(new UseVal(defn));
- }
-
// Output parameters.
TargetEntryInstr** true_successor_address_;
TargetEntryInstr** false_successor_address_;
« no previous file with comments | « no previous file | runtime/vm/flow_graph_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698