Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(192)

Side by Side Diff: src/objects.cc

Issue 2671553006: Allow global prototype to be a Proxy (Closed)
Patch Set: update bytecode Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <memory> 9 #include <memory>
10 #include <sstream> 10 #include <sstream>
(...skipping 1033 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 } 1044 }
1045 1045
1046 1046
1047 // static 1047 // static
1048 MaybeHandle<Object> JSProxy::GetProperty(Isolate* isolate, 1048 MaybeHandle<Object> JSProxy::GetProperty(Isolate* isolate,
1049 Handle<JSProxy> proxy, 1049 Handle<JSProxy> proxy,
1050 Handle<Name> name, 1050 Handle<Name> name,
1051 Handle<Object> receiver, 1051 Handle<Object> receiver,
1052 bool* was_found) { 1052 bool* was_found) {
1053 *was_found = true; 1053 *was_found = true;
1054 if (receiver->IsJSGlobalObject()) {
1055 THROW_NEW_ERROR(
1056 isolate,
1057 NewTypeError(MessageTemplate::kReadGlobalReferenceThroughProxy, name),
1058 Object);
1059 }
1060 1054
1061 DCHECK(!name->IsPrivate()); 1055 DCHECK(!name->IsPrivate());
1062 STACK_CHECK(isolate, MaybeHandle<Object>()); 1056 STACK_CHECK(isolate, MaybeHandle<Object>());
1063 Handle<Name> trap_name = isolate->factory()->get_string(); 1057 Handle<Name> trap_name = isolate->factory()->get_string();
1064 // 1. Assert: IsPropertyKey(P) is true. 1058 // 1. Assert: IsPropertyKey(P) is true.
1065 // 2. Let handler be the value of the [[ProxyHandler]] internal slot of O. 1059 // 2. Let handler be the value of the [[ProxyHandler]] internal slot of O.
1066 Handle<Object> handler(proxy->handler(), isolate); 1060 Handle<Object> handler(proxy->handler(), isolate);
1067 // 3. If handler is null, throw a TypeError exception. 1061 // 3. If handler is null, throw a TypeError exception.
1068 // 4. Assert: Type(handler) is Object. 1062 // 4. Assert: Type(handler) is Object.
1069 if (proxy->IsRevoked()) { 1063 if (proxy->IsRevoked()) {
(...skipping 19217 matching lines...) Expand 10 before | Expand all | Expand 10 after
20287 // depend on this. 20281 // depend on this.
20288 return DICTIONARY_ELEMENTS; 20282 return DICTIONARY_ELEMENTS;
20289 } 20283 }
20290 DCHECK_LE(kind, LAST_ELEMENTS_KIND); 20284 DCHECK_LE(kind, LAST_ELEMENTS_KIND);
20291 return kind; 20285 return kind;
20292 } 20286 }
20293 } 20287 }
20294 20288
20295 } // namespace internal 20289 } // namespace internal
20296 } // namespace v8 20290 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698