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

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: 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 3a1c8c54eef914a2c09fabe76006286fa6357a12..aab31326e6955b50be39bc87d61539ba2530c1f4 100644
--- a/runtime/vm/intermediate_language.cc
+++ b/runtime/vm/intermediate_language.cc
@@ -20,6 +20,45 @@ namespace dart {
DECLARE_FLAG(bool, enable_type_checks);
+UseVal::UseVal(Definition* definition)
+ : definition_(definition), next_use_(NULL), previous_use_(NULL) {
+ AddToDefUseChain();
+}
+
+void UseVal::set_definition(Definition* definition) {
+ ASSERT(definition != NULL);
+ RemoveFromDefUseChain();
+ definition_ = definition;
+ AddToDefUseChain();
+}
+
+void UseVal::RemoveFromDefUseChain() {
+ ASSERT(definition_ != NULL);
+ if (previous_use_ == NULL) {
+ ASSERT(definition_->def_use_chain() == this);
+ definition_->set_def_use_chain(next_use_);
+ } else {
+ previous_use_->next_use_ = next_use_;
+ }
+ if (next_use_ != NULL) {
+ next_use_->previous_use_ = previous_use_;
+ }
+ previous_use_ = next_use_ = NULL;
+ definition_ = NULL;
+}
+
+void UseVal::AddToDefUseChain() {
+ ASSERT(next_use_ == NULL && previous_use_ == NULL && definition_ != NULL);
+ UseVal* chain = definition_->def_use_chain();
+ if (chain != NULL) {
+ next_use_ = chain;
+ chain->previous_use_ = this;
+ }
+ definition_->set_def_use_chain(this);
+}
+
+
+
MethodRecognizer::Kind MethodRecognizer::RecognizeKind(
const Function& function) {

Powered by Google App Engine
This is Rietveld 408576698