OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/arguments.h" | 8 #include "src/arguments.h" |
9 #include "src/debug.h" | 9 #include "src/debug.h" |
10 #include "src/deoptimizer.h" | 10 #include "src/deoptimizer.h" |
(...skipping 895 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
906 return true; | 906 return true; |
907 } | 907 } |
908 | 908 |
909 // Function context extension. These are variables introduced by eval. | 909 // Function context extension. These are variables introduced by eval. |
910 if (function_context->closure() == *function) { | 910 if (function_context->closure() == *function) { |
911 if (function_context->has_extension() && | 911 if (function_context->has_extension() && |
912 !function_context->IsNativeContext()) { | 912 !function_context->IsNativeContext()) { |
913 Handle<JSObject> ext(JSObject::cast(function_context->extension())); | 913 Handle<JSObject> ext(JSObject::cast(function_context->extension())); |
914 | 914 |
915 Maybe<bool> maybe = JSReceiver::HasProperty(ext, variable_name); | 915 Maybe<bool> maybe = JSReceiver::HasProperty(ext, variable_name); |
916 DCHECK(maybe.has_value); | 916 DCHECK(maybe.IsJust()); |
917 if (maybe.value) { | 917 if (maybe.FromJust()) { |
918 // We don't expect this to do anything except replacing | 918 // We don't expect this to do anything except replacing |
919 // property value. | 919 // property value. |
920 Runtime::SetObjectProperty(isolate, ext, variable_name, new_value, | 920 Runtime::SetObjectProperty(isolate, ext, variable_name, new_value, |
921 SLOPPY).Assert(); | 921 SLOPPY).Assert(); |
922 return true; | 922 return true; |
923 } | 923 } |
924 } | 924 } |
925 } | 925 } |
926 } | 926 } |
927 | 927 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
989 if (SetContextLocalValue(isolate, scope_info, context, variable_name, | 989 if (SetContextLocalValue(isolate, scope_info, context, variable_name, |
990 new_value)) { | 990 new_value)) { |
991 return true; | 991 return true; |
992 } | 992 } |
993 | 993 |
994 // Properties from the function context extension. This will | 994 // Properties from the function context extension. This will |
995 // be variables introduced by eval. | 995 // be variables introduced by eval. |
996 if (context->has_extension()) { | 996 if (context->has_extension()) { |
997 Handle<JSObject> ext(JSObject::cast(context->extension())); | 997 Handle<JSObject> ext(JSObject::cast(context->extension())); |
998 Maybe<bool> maybe = JSReceiver::HasProperty(ext, variable_name); | 998 Maybe<bool> maybe = JSReceiver::HasProperty(ext, variable_name); |
999 DCHECK(maybe.has_value); | 999 DCHECK(maybe.IsJust()); |
1000 if (maybe.value) { | 1000 if (maybe.FromJust()) { |
1001 // We don't expect this to do anything except replacing property value. | 1001 // We don't expect this to do anything except replacing property value. |
1002 Runtime::DefineObjectProperty(ext, variable_name, new_value, NONE) | 1002 Runtime::DefineObjectProperty(ext, variable_name, new_value, NONE) |
1003 .Assert(); | 1003 .Assert(); |
1004 return true; | 1004 return true; |
1005 } | 1005 } |
1006 } | 1006 } |
1007 | 1007 |
1008 return false; | 1008 return false; |
1009 } | 1009 } |
1010 | 1010 |
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2106 | 2106 |
2107 // Helper function to find or create the arguments object for | 2107 // Helper function to find or create the arguments object for |
2108 // Runtime_DebugEvaluate. | 2108 // Runtime_DebugEvaluate. |
2109 MUST_USE_RESULT static MaybeHandle<JSObject> MaterializeArgumentsObject( | 2109 MUST_USE_RESULT static MaybeHandle<JSObject> MaterializeArgumentsObject( |
2110 Isolate* isolate, Handle<JSObject> target, Handle<JSFunction> function) { | 2110 Isolate* isolate, Handle<JSObject> target, Handle<JSFunction> function) { |
2111 // Do not materialize the arguments object for eval or top-level code. | 2111 // Do not materialize the arguments object for eval or top-level code. |
2112 // Skip if "arguments" is already taken. | 2112 // Skip if "arguments" is already taken. |
2113 if (!function->shared()->is_function()) return target; | 2113 if (!function->shared()->is_function()) return target; |
2114 Maybe<bool> maybe = JSReceiver::HasOwnProperty( | 2114 Maybe<bool> maybe = JSReceiver::HasOwnProperty( |
2115 target, isolate->factory()->arguments_string()); | 2115 target, isolate->factory()->arguments_string()); |
2116 if (!maybe.has_value) return MaybeHandle<JSObject>(); | 2116 if (!maybe.IsJust()) return MaybeHandle<JSObject>(); |
2117 if (maybe.value) return target; | 2117 if (maybe.FromJust()) return target; |
2118 | 2118 |
2119 // FunctionGetArguments can't throw an exception. | 2119 // FunctionGetArguments can't throw an exception. |
2120 Handle<JSObject> arguments = | 2120 Handle<JSObject> arguments = |
2121 Handle<JSObject>::cast(Accessors::FunctionGetArguments(function)); | 2121 Handle<JSObject>::cast(Accessors::FunctionGetArguments(function)); |
2122 Handle<String> arguments_str = isolate->factory()->arguments_string(); | 2122 Handle<String> arguments_str = isolate->factory()->arguments_string(); |
2123 RETURN_ON_EXCEPTION(isolate, Runtime::DefineObjectProperty( | 2123 RETURN_ON_EXCEPTION(isolate, Runtime::DefineObjectProperty( |
2124 target, arguments_str, arguments, NONE), | 2124 target, arguments_str, arguments, NONE), |
2125 JSObject); | 2125 JSObject); |
2126 return target; | 2126 return target; |
2127 } | 2127 } |
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2811 return Smi::FromInt(isolate->debug()->is_active()); | 2811 return Smi::FromInt(isolate->debug()->is_active()); |
2812 } | 2812 } |
2813 | 2813 |
2814 | 2814 |
2815 RUNTIME_FUNCTION(RuntimeReference_DebugBreakInOptimizedCode) { | 2815 RUNTIME_FUNCTION(RuntimeReference_DebugBreakInOptimizedCode) { |
2816 UNIMPLEMENTED(); | 2816 UNIMPLEMENTED(); |
2817 return NULL; | 2817 return NULL; |
2818 } | 2818 } |
2819 } | 2819 } |
2820 } // namespace v8::internal | 2820 } // namespace v8::internal |
OLD | NEW |