OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 <stdlib.h> | 5 #include <stdlib.h> |
6 #include <limits> | 6 #include <limits> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 10892 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10903 // entered (if the debugger is entered). The reason for switching context here | 10903 // entered (if the debugger is entered). The reason for switching context here |
10904 // is that for some property lookups (accessors and interceptors) callbacks | 10904 // is that for some property lookups (accessors and interceptors) callbacks |
10905 // into the embedding application can occour, and the embedding application | 10905 // into the embedding application can occour, and the embedding application |
10906 // could have the assumption that its own native context is the current | 10906 // could have the assumption that its own native context is the current |
10907 // context and not some internal debugger context. | 10907 // context and not some internal debugger context. |
10908 SaveContext save(isolate); | 10908 SaveContext save(isolate); |
10909 if (isolate->debug()->in_debug_scope()) { | 10909 if (isolate->debug()->in_debug_scope()) { |
10910 isolate->set_context(*isolate->debug()->debugger_entry()->GetContext()); | 10910 isolate->set_context(*isolate->debug()->debugger_entry()->GetContext()); |
10911 } | 10911 } |
10912 | 10912 |
10913 // Skip the global proxy as it has no properties and always delegates to the | |
10914 // real global object. | |
10915 if (obj->IsJSGlobalProxy()) { | |
10916 obj = Handle<JSObject>(JSObject::cast(obj->GetPrototype())); | |
10917 } | |
10918 | |
10919 | |
10920 // Check if the name is trivially convertible to an index and get the element | 10913 // Check if the name is trivially convertible to an index and get the element |
10921 // if so. | 10914 // if so. |
10922 uint32_t index; | 10915 uint32_t index; |
10923 if (name->AsArrayIndex(&index)) { | 10916 if (name->AsArrayIndex(&index)) { |
10924 Handle<FixedArray> details = isolate->factory()->NewFixedArray(2); | 10917 Handle<FixedArray> details = isolate->factory()->NewFixedArray(2); |
10925 Handle<Object> element_or_char; | 10918 Handle<Object> element_or_char; |
10926 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 10919 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
10927 isolate, element_or_char, | 10920 isolate, element_or_char, |
10928 Runtime::GetElementOrCharAt(isolate, obj, index)); | 10921 Runtime::GetElementOrCharAt(isolate, obj, index)); |
10929 details->set(0, *element_or_char); | 10922 details->set(0, *element_or_char); |
(...skipping 4281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15211 } | 15204 } |
15212 return NULL; | 15205 return NULL; |
15213 } | 15206 } |
15214 | 15207 |
15215 | 15208 |
15216 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { | 15209 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { |
15217 return &(kIntrinsicFunctions[static_cast<int>(id)]); | 15210 return &(kIntrinsicFunctions[static_cast<int>(id)]); |
15218 } | 15211 } |
15219 | 15212 |
15220 } } // namespace v8::internal | 15213 } } // namespace v8::internal |
OLD | NEW |