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

Unified Diff: runtime/vm/intermediate_language.h

Issue 12091091: Move recording of definition used from the value to the definition. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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
Index: runtime/vm/intermediate_language.h
diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h
index d23d668c84dbf71f7aa50890a3d9039f3d2d919b..03605f2df5f5d1acd13d0ece98320146e4e003b3 100644
--- a/runtime/vm/intermediate_language.h
+++ b/runtime/vm/intermediate_language.h
@@ -94,10 +94,8 @@ class Value : public ZoneAllocated {
intptr_t use_index() const { return use_index_; }
void set_use_index(intptr_t index) { use_index_ = index; }
- void AddToInputUseList();
- void AddToEnvUseList();
-
- void RemoveFromInputUseList();
+ static void AddToList(Value* value, Value** list);
+ static void RemoveFromList(Value* value, Value** list);
Value* Copy() { return new Value(definition_); }
@@ -1109,6 +1107,13 @@ class Definition : public Instruction {
Value* env_use_list() const { return env_use_list_; }
void set_env_use_list(Value* head) { env_use_list_ = head; }
+ void AddInputUse(Value* value) { Value::AddToList(value, &input_use_list_); }
+ void AddEnvUse(Value* value) { Value::AddToList(value, &env_use_list_); }
+
+ void RemoveInputUse(Value* value) {
+ Value::RemoveFromList(value, &input_use_list_);
+ }
+
// Replace uses of this definition with uses of other definition or value.
// Precondition: use lists must be properly calculated.
// Postcondition: use lists and use values are still valid.
@@ -1810,13 +1815,13 @@ class ConstraintInstr : public TemplateDefinition<2> {
Value* val = new Value(defn);
val->set_use_index(1);
val->set_instruction(this);
- val->AddToInputUseList();
+ defn->AddInputUse(val);
set_dependency(val);
}
void RemoveDependency() {
if (dependency() != NULL) {
- dependency()->RemoveFromInputUseList();
+ dependency()->definition()->RemoveInputUse(dependency());
set_dependency(NULL);
}
}

Powered by Google App Engine
This is Rietveld 408576698