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/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
821 } \ | 821 } \ |
822 } while (false) | 822 } while (false) |
823 | 823 |
824 | 824 |
825 // static | 825 // static |
826 MaybeHandle<Object> JSProxy::GetProperty(Isolate* isolate, | 826 MaybeHandle<Object> JSProxy::GetProperty(Isolate* isolate, |
827 Handle<JSProxy> proxy, | 827 Handle<JSProxy> proxy, |
828 Handle<Name> name, | 828 Handle<Name> name, |
829 Handle<Object> receiver, | 829 Handle<Object> receiver, |
830 LanguageMode language_mode) { | 830 LanguageMode language_mode) { |
| 831 if (receiver->IsJSGlobalObject()) { |
| 832 THROW_NEW_ERROR( |
| 833 isolate, |
| 834 NewTypeError(MessageTemplate::kReadGlobalReferenceThroughProxy, name), |
| 835 Object); |
| 836 } |
| 837 |
831 STACK_CHECK(MaybeHandle<Object>()); | 838 STACK_CHECK(MaybeHandle<Object>()); |
832 Handle<Name> trap_name = isolate->factory()->get_string(); | 839 Handle<Name> trap_name = isolate->factory()->get_string(); |
833 // 1. Assert: IsPropertyKey(P) is true. | 840 // 1. Assert: IsPropertyKey(P) is true. |
834 // 2. Let handler be the value of the [[ProxyHandler]] internal slot of O. | 841 // 2. Let handler be the value of the [[ProxyHandler]] internal slot of O. |
835 Handle<Object> handler(proxy->handler(), isolate); | 842 Handle<Object> handler(proxy->handler(), isolate); |
836 // 3. If handler is null, throw a TypeError exception. | 843 // 3. If handler is null, throw a TypeError exception. |
837 // 4. Assert: Type(handler) is Object. | 844 // 4. Assert: Type(handler) is Object. |
838 if (proxy->IsRevoked()) { | 845 if (proxy->IsRevoked()) { |
839 THROW_NEW_ERROR(isolate, | 846 THROW_NEW_ERROR(isolate, |
840 NewTypeError(MessageTemplate::kProxyRevoked, trap_name), | 847 NewTypeError(MessageTemplate::kProxyRevoked, trap_name), |
(...skipping 18524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19365 if (cell->value() != *new_value) { | 19372 if (cell->value() != *new_value) { |
19366 cell->set_value(*new_value); | 19373 cell->set_value(*new_value); |
19367 Isolate* isolate = cell->GetIsolate(); | 19374 Isolate* isolate = cell->GetIsolate(); |
19368 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19375 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
19369 isolate, DependentCode::kPropertyCellChangedGroup); | 19376 isolate, DependentCode::kPropertyCellChangedGroup); |
19370 } | 19377 } |
19371 } | 19378 } |
19372 | 19379 |
19373 } // namespace internal | 19380 } // namespace internal |
19374 } // namespace v8 | 19381 } // namespace v8 |
OLD | NEW |