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

Unified Diff: runtime/vm/intermediate_language.cc

Issue 10826230: Added def-use chain to the intermediate language. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixed comments for def-use chain. Created 8 years, 4 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.cc
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
index 94c3cb16d60ecd0c96afbf3469b614a1b243f360..242afd86889e88a1ca3b927317c149eb7898b14e 100644
--- a/runtime/vm/intermediate_language.cc
+++ b/runtime/vm/intermediate_language.cc
@@ -20,6 +20,44 @@ namespace dart {
DECLARE_FLAG(bool, enable_type_checks);
+UseVal::UseVal(Definition* definition)
+ : definition_(definition), next_use_(NULL), previous_use_(NULL) {
+ AddToUseList();
+}
+
+void UseVal::SetDefinition(Definition* definition) {
+ ASSERT(definition != NULL);
+ RemoveFromUseList();
+ definition_ = definition;
+ AddToUseList();
+}
+
Florian Schneider 2012/08/10 12:28:00 Add an empty line here.
+void UseVal::RemoveFromUseList() {
+ ASSERT(definition_ != NULL);
+ if (next_use_ != NULL) {
+ next_use_->previous_use_ = previous_use_;
+ }
+ if (previous_use_ != NULL) {
+ previous_use_->next_use_ = next_use_;
+ } else {
+ // This is the head of the list.
+ ASSERT(definition_->use_list() == this);
+ definition_->set_use_list(next_use_);
+ }
+ previous_use_ = next_use_ = NULL;
+ definition_ = NULL;
+}
+
Florian Schneider 2012/08/10 12:28:00 Add an empty line here.
+void UseVal::AddToUseList() {
+ ASSERT(next_use_ == NULL && previous_use_ == NULL && definition_ != NULL);
+ UseVal* head = definition_->use_list();
+ if (head != NULL) {
+ next_use_ = head;
+ head->previous_use_ = this;
+ }
+ definition_->set_use_list(this);
+}
+
MethodRecognizer::Kind MethodRecognizer::RecognizeKind(
const Function& function) {

Powered by Google App Engine
This is Rietveld 408576698