| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/scopes.h" | 5 #include "vm/scopes.h" |
| 6 | 6 |
| 7 #include "vm/object.h" | 7 #include "vm/object.h" |
| 8 #include "vm/stack_frame.h" | 8 #include "vm/stack_frame.h" |
| 9 #include "vm/symbols.h" | 9 #include "vm/symbols.h" |
| 10 | 10 |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 (label->kind() == SourceLabel::kSwitch))) { | 432 (label->kind() == SourceLabel::kSwitch))) { |
| 433 return label; | 433 return label; |
| 434 } | 434 } |
| 435 } | 435 } |
| 436 current_scope = current_scope->parent(); | 436 current_scope = current_scope->parent(); |
| 437 } | 437 } |
| 438 return NULL; | 438 return NULL; |
| 439 } | 439 } |
| 440 | 440 |
| 441 | 441 |
| 442 SourceLabel* LocalScope::LookupInnermostCatchLabel() { | |
| 443 LocalScope* current_scope = this; | |
| 444 while (current_scope != NULL) { | |
| 445 for (intptr_t i = 0; i < current_scope->labels_.length(); i++) { | |
| 446 SourceLabel* label = current_scope->labels_[i]; | |
| 447 if (label->kind() == SourceLabel::kCatch) { | |
| 448 return label; | |
| 449 } | |
| 450 } | |
| 451 current_scope = current_scope->parent(); | |
| 452 } | |
| 453 return NULL; | |
| 454 } | |
| 455 | |
| 456 | |
| 457 LocalScope* LocalScope::LookupSwitchScope() { | 442 LocalScope* LocalScope::LookupSwitchScope() { |
| 458 LocalScope* current_scope = this->parent(); | 443 LocalScope* current_scope = this->parent(); |
| 459 int this_level = this->function_level(); | 444 int this_level = this->function_level(); |
| 460 while (current_scope != NULL && | 445 while (current_scope != NULL && |
| 461 current_scope->function_level() == this_level) { | 446 current_scope->function_level() == this_level) { |
| 462 for (int i = 0; i < current_scope->labels_.length(); i++) { | 447 for (int i = 0; i < current_scope->labels_.length(); i++) { |
| 463 SourceLabel* label = current_scope->labels_[i]; | 448 SourceLabel* label = current_scope->labels_[i]; |
| 464 if (label->kind() == SourceLabel::kSwitch) { | 449 if (label->kind() == SourceLabel::kSwitch) { |
| 465 // This scope contains a label that is bound to a switch statement, | 450 // This scope contains a label that is bound to a switch statement, |
| 466 // so it is the scope of the a statement body. | 451 // so it is the scope of the a statement body. |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 return fixed_parameter_count - (index() - kParamEndSlotFromFp); | 625 return fixed_parameter_count - (index() - kParamEndSlotFromFp); |
| 641 } else { | 626 } else { |
| 642 // Shift negative indexes so that the lowest one is 0 (they are still | 627 // Shift negative indexes so that the lowest one is 0 (they are still |
| 643 // non-positive). | 628 // non-positive). |
| 644 return fixed_parameter_count - (index() - kFirstLocalSlotFromFp); | 629 return fixed_parameter_count - (index() - kFirstLocalSlotFromFp); |
| 645 } | 630 } |
| 646 } | 631 } |
| 647 | 632 |
| 648 | 633 |
| 649 } // namespace dart | 634 } // namespace dart |
| OLD | NEW |