Chromium Code Reviews| 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) { |