| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/debug/debug-scopes.h" | 5 #include "src/debug/debug-scopes.h" |
| 6 | 6 |
| 7 #include "src/ast/scopes.h" | 7 #include "src/ast/scopes.h" |
| 8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
| 9 #include "src/frames-inl.h" | 9 #include "src/frames-inl.h" |
| 10 #include "src/globals.h" | 10 #include "src/globals.h" |
| (...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 // Optimized frames are not supported. | 636 // Optimized frames are not supported. |
| 637 if (frame->is_optimized()) return false; | 637 if (frame->is_optimized()) return false; |
| 638 | 638 |
| 639 Handle<JSFunction> function(frame->function()); | 639 Handle<JSFunction> function(frame->function()); |
| 640 Handle<SharedFunctionInfo> shared(function->shared()); | 640 Handle<SharedFunctionInfo> shared(function->shared()); |
| 641 Handle<ScopeInfo> scope_info(shared->scope_info()); | 641 Handle<ScopeInfo> scope_info(shared->scope_info()); |
| 642 | 642 |
| 643 bool default_result = false; | 643 bool default_result = false; |
| 644 | 644 |
| 645 // Parameters. | 645 // Parameters. |
| 646 for (int i = 0; i < scope_info->ParameterCount(); ++i) { | 646 FOR_WITH_HANDLE_SCOPE( |
| 647 HandleScope scope(isolate_); | 647 isolate_, int, i = 0, i, i < scope_info->ParameterCount(), ++i, { |
| 648 if (String::Equals(handle(scope_info->ParameterName(i)), variable_name)) { | 648 if (String::Equals(handle(scope_info->ParameterName(i)), |
| 649 frame->SetParameterValue(i, *new_value); | 649 variable_name)) { |
| 650 // Argument might be shadowed in heap context, don't stop here. | 650 frame->SetParameterValue(i, *new_value); |
| 651 default_result = true; | 651 // Argument might be shadowed in heap context, don't stop here. |
| 652 } | 652 default_result = true; |
| 653 } | 653 } |
| 654 }); |
| 654 | 655 |
| 655 // Stack locals. | 656 // Stack locals. |
| 656 for (int i = 0; i < scope_info->StackLocalCount(); ++i) { | 657 FOR_WITH_HANDLE_SCOPE( |
| 657 HandleScope scope(isolate_); | 658 isolate_, int, i = 0, i, i < scope_info->StackLocalCount(), ++i, { |
| 658 if (String::Equals(handle(scope_info->StackLocalName(i)), variable_name)) { | 659 if (String::Equals(handle(scope_info->StackLocalName(i)), |
| 659 frame->SetExpression(scope_info->StackLocalIndex(i), *new_value); | 660 variable_name)) { |
| 660 return true; | 661 frame->SetExpression(scope_info->StackLocalIndex(i), *new_value); |
| 661 } | 662 return true; |
| 662 } | 663 } |
| 664 }); |
| 663 | 665 |
| 664 if (scope_info->HasContext()) { | 666 if (scope_info->HasContext()) { |
| 665 // Context locals. | 667 // Context locals. |
| 666 Handle<Context> frame_context(Context::cast(frame->context())); | 668 Handle<Context> frame_context(Context::cast(frame->context())); |
| 667 Handle<Context> function_context(frame_context->declaration_context()); | 669 Handle<Context> function_context(frame_context->declaration_context()); |
| 668 if (SetContextLocalValue(scope_info, function_context, variable_name, | 670 if (SetContextLocalValue(scope_info, function_context, variable_name, |
| 669 new_value)) { | 671 new_value)) { |
| 670 return true; | 672 return true; |
| 671 } | 673 } |
| 672 | 674 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 692 | 694 |
| 693 return default_result; | 695 return default_result; |
| 694 } | 696 } |
| 695 | 697 |
| 696 | 698 |
| 697 bool ScopeIterator::SetBlockVariableValue(Handle<String> variable_name, | 699 bool ScopeIterator::SetBlockVariableValue(Handle<String> variable_name, |
| 698 Handle<Object> new_value) { | 700 Handle<Object> new_value) { |
| 699 Handle<ScopeInfo> scope_info = CurrentScopeInfo(); | 701 Handle<ScopeInfo> scope_info = CurrentScopeInfo(); |
| 700 JavaScriptFrame* frame = GetFrame(); | 702 JavaScriptFrame* frame = GetFrame(); |
| 701 | 703 |
| 702 for (int i = 0; i < scope_info->StackLocalCount(); ++i) { | 704 FOR_WITH_HANDLE_SCOPE( |
| 703 HandleScope scope(isolate_); | 705 isolate_, int, i = 0, i, i < scope_info->StackLocalCount(), ++i, { |
| 704 if (String::Equals(handle(scope_info->StackLocalName(i)), variable_name)) { | 706 HandleScope scope(isolate_); |
| 705 frame->SetExpression(scope_info->StackLocalIndex(i), *new_value); | 707 if (String::Equals(handle(scope_info->StackLocalName(i)), |
| 706 return true; | 708 variable_name)) { |
| 707 } | 709 frame->SetExpression(scope_info->StackLocalIndex(i), *new_value); |
| 708 } | 710 return true; |
| 711 } |
| 712 }); |
| 709 | 713 |
| 710 if (HasContext()) { | 714 if (HasContext()) { |
| 711 Handle<Context> context = CurrentContext(); | 715 Handle<Context> context = CurrentContext(); |
| 712 if (SetContextLocalValue(scope_info, context, variable_name, new_value)) { | 716 if (SetContextLocalValue(scope_info, context, variable_name, new_value)) { |
| 713 return true; | 717 return true; |
| 714 } | 718 } |
| 715 | 719 |
| 716 Handle<JSObject> ext(context->extension_object(), isolate_); | 720 Handle<JSObject> ext(context->extension_object(), isolate_); |
| 717 if (!ext.is_null()) { | 721 if (!ext.is_null()) { |
| 718 Maybe<bool> maybe = JSReceiver::HasOwnProperty(ext, variable_name); | 722 Maybe<bool> maybe = JSReceiver::HasOwnProperty(ext, variable_name); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 854 DCHECK(beg_pos >= 0 && end_pos >= 0); | 858 DCHECK(beg_pos >= 0 && end_pos >= 0); |
| 855 if (beg_pos <= position && position < end_pos) { | 859 if (beg_pos <= position && position < end_pos) { |
| 856 GetNestedScopeChain(isolate, inner_scope, position); | 860 GetNestedScopeChain(isolate, inner_scope, position); |
| 857 return; | 861 return; |
| 858 } | 862 } |
| 859 } | 863 } |
| 860 } | 864 } |
| 861 | 865 |
| 862 } // namespace internal | 866 } // namespace internal |
| 863 } // namespace v8 | 867 } // namespace v8 |
| OLD | NEW |