| 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 |