Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index c87e962bcfffbc2dc6c811903a418faec3ffa51c..554473e9910ebd89af02e186a4d4478c1b8f129c 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -910,11 +910,11 @@ MaybeHandle<Object> JSProxy::GetPrototype(Handle<JSProxy> proxy) { |
} |
-bool JSProxy::IsRevoked(Handle<JSProxy> proxy) { |
+bool JSProxy::IsRevoked() { |
// TODO(neis): Decide on how to represent revocation. For now, revocation is |
// unsupported. |
- DCHECK(proxy->target()->IsJSReceiver()); |
- DCHECK(proxy->handler()->IsJSReceiver()); |
+ DCHECK(target()->IsJSReceiver()); |
+ DCHECK(handler()->IsJSReceiver()); |
return false; |
} |
@@ -4529,7 +4529,7 @@ Maybe<bool> JSProxy::HasProperty(Isolate* isolate, Handle<JSProxy> proxy, |
// 2. Let handler be the value of the [[ProxyHandler]] internal slot of O. |
Handle<Object> handler(proxy->handler(), isolate); |
// 3. If handler is null, throw a TypeError exception. |
- if (JSProxy::IsRevoked(proxy)) { |
+ if (proxy->IsRevoked()) { |
isolate->Throw(*isolate->factory()->NewTypeError( |
MessageTemplate::kProxyRevoked, isolate->factory()->has_string())); |
return Nothing<bool>(); |
@@ -4705,7 +4705,7 @@ Maybe<bool> JSProxy::DeletePropertyOrElement(Handle<JSProxy> proxy, |
Factory* factory = isolate->factory(); |
Handle<String> trap_name = factory->deleteProperty_string(); |
- if (IsRevoked(proxy)) { |
+ if (proxy->IsRevoked()) { |
isolate->Throw( |
*factory->NewTypeError(MessageTemplate::kProxyRevoked, trap_name)); |
return Nothing<bool>(); |
@@ -4750,7 +4750,7 @@ Maybe<bool> JSProxy::DeletePropertyOrElement(Handle<JSProxy> proxy, |
// static |
MaybeHandle<Context> JSProxy::GetFunctionRealm(Handle<JSProxy> proxy) { |
DCHECK(proxy->map()->is_constructor()); |
- if (JSProxy::IsRevoked(proxy)) { |
+ if (proxy->IsRevoked()) { |
THROW_NEW_ERROR(proxy->GetIsolate(), |
NewTypeError(MessageTemplate::kProxyRevoked), Context); |
} |
@@ -4805,7 +4805,7 @@ Maybe<PropertyAttributes> JSProxy::GetPropertyAttributes(LookupIterator* it) { |
MaybeHandle<Object> JSProxy::GetTrap(Handle<JSProxy> proxy, |
Handle<String> trap) { |
- DCHECK(!IsRevoked(proxy)); |
+ DCHECK(!proxy->IsRevoked()); |
Isolate* isolate = proxy->GetIsolate(); |
Handle<JSReceiver> handler(JSReceiver::cast(proxy->handler()), isolate); |
return Object::GetMethod(handler, trap); |
@@ -6781,33 +6781,31 @@ bool JSArray::ArraySetLength(Isolate* isolate, Handle<JSArray> a, |
// ES6 9.5.6 |
// static |
-bool JSProxy::DefineOwnProperty(Isolate* isolate, Handle<JSProxy> object, |
+bool JSProxy::DefineOwnProperty(Isolate* isolate, Handle<JSProxy> proxy, |
Handle<Object> key, PropertyDescriptor* desc, |
ShouldThrow should_throw) { |
+ Handle<String> trap_name = isolate->factory()->defineProperty_string(); |
// 1. Assert: IsPropertyKey(P) is true. |
DCHECK(key->IsName() || key->IsNumber()); |
// 2. Let handler be the value of the [[ProxyHandler]] internal slot of O. |
- Handle<Object> handler(object->handler(), isolate); |
+ Handle<Object> handler(proxy->handler(), isolate); |
// 3. If handler is null, throw a TypeError exception. |
- // TODO(jkummerow): Use "IsRevoked()" instead once we have it. |
- if (handler->IsNull()) { |
+ if (proxy->IsRevoked()) { |
isolate->Throw(*isolate->factory()->NewTypeError( |
- MessageTemplate::kProxyHandlerNonObject)); |
+ MessageTemplate::kProxyRevoked, trap_name)); |
return false; |
} |
// 4. Assert: Type(handler) is Object. |
DCHECK(handler->IsJSReceiver()); |
// If the handler is not null, the target can't be null either. |
- DCHECK(object->target()->IsSpecObject()); |
+ DCHECK(proxy->target()->IsSpecObject()); |
// 5. Let target be the value of the [[ProxyTarget]] internal slot of O. |
- Handle<JSReceiver> target(JSReceiver::cast(object->target()), isolate); |
+ Handle<JSReceiver> target(JSReceiver::cast(proxy->target()), isolate); |
// 6. Let trap be ? GetMethod(handler, "defineProperty"). |
Handle<Object> trap; |
ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
isolate, trap, |
- Object::GetMethod(Handle<JSReceiver>::cast(handler), |
- isolate->factory()->defineProperty_string()), |
- false); |
+ Object::GetMethod(Handle<JSReceiver>::cast(handler), trap_name), false); |
// 7. If trap is undefined, then: |
if (trap->IsUndefined()) { |
// 7a. Return target.[[DefineOwnProperty]](P, Desc). |
@@ -6968,16 +6966,18 @@ bool JSReceiver::GetOwnPropertyDescriptor(LookupIterator* it, |
// static |
bool JSProxy::GetOwnPropertyDescriptor(LookupIterator* it, |
PropertyDescriptor* desc) { |
- DCHECK(it->GetHolder<Object>()->IsJSProxy()); |
+ Handle<JSProxy> proxy = it->GetHolder<JSProxy>(); |
Isolate* isolate = it->isolate(); |
+ Handle<String> trap_name = |
+ isolate->factory()->getOwnPropertyDescriptor_string(); |
Handle<Name> property_name = it->GetName(); |
// 1. (Assert) |
// 2. Let handler be the value of the [[ProxyHandler]] internal slot of O. |
- Handle<Object> handler(it->GetHolder<JSProxy>()->handler(), isolate); |
+ Handle<Object> handler(proxy->handler(), isolate); |
// 3. If handler is null, throw a TypeError exception. |
- if (handler->IsNull()) { |
+ if (proxy->IsRevoked()) { |
isolate->Throw(*isolate->factory()->NewTypeError( |
- MessageTemplate::kProxyHandlerNonObject)); |
+ MessageTemplate::kProxyRevoked, trap_name)); |
return false; |
} |
// 4. Assert: Type(handler) is Object. |
@@ -6991,9 +6991,7 @@ bool JSProxy::GetOwnPropertyDescriptor(LookupIterator* it, |
Handle<Object> trap; |
ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
isolate, trap, |
- Object::GetMethod(Handle<JSReceiver>::cast(handler), |
- isolate->factory()->getOwnPropertyDescriptor_string()), |
- false); |
+ Object::GetMethod(Handle<JSReceiver>::cast(handler), trap_name), false); |
// 7. If trap is undefined, then |
if (trap->IsUndefined()) { |
// 7a. Return target.[[GetOwnProperty]](P). |
@@ -7233,7 +7231,7 @@ Maybe<bool> JSProxy::PreventExtensions(Handle<JSProxy> proxy, |
Factory* factory = isolate->factory(); |
Handle<String> trap_name = factory->preventExtensions_string(); |
- if (IsRevoked(proxy)) { |
+ if (proxy->IsRevoked()) { |
isolate->Throw( |
*factory->NewTypeError(MessageTemplate::kProxyRevoked, trap_name)); |
return Nothing<bool>(); |
@@ -7343,7 +7341,7 @@ Maybe<bool> JSProxy::IsExtensible(Handle<JSProxy> proxy) { |
Factory* factory = isolate->factory(); |
Handle<String> trap_name = factory->isExtensible_string(); |
- if (IsRevoked(proxy)) { |
+ if (proxy->IsRevoked()) { |
isolate->Throw( |
*factory->NewTypeError(MessageTemplate::kProxyRevoked, trap_name)); |
return Nothing<bool>(); |
@@ -8208,7 +8206,7 @@ bool JSProxy::Enumerate(Isolate* isolate, Handle<JSReceiver> receiver, |
// 1. Let handler be the value of the [[ProxyHandler]] internal slot of O. |
Handle<Object> handler(proxy->handler(), isolate); |
// 2. If handler is null, throw a TypeError exception. |
- if (IsRevoked(proxy)) { |
+ if (proxy->IsRevoked()) { |
isolate->Throw(*isolate->factory()->NewTypeError( |
MessageTemplate::kProxyRevoked, |
isolate->factory()->enumerate_string())); |
@@ -8316,7 +8314,7 @@ bool JSProxy::OwnPropertyKeys(Isolate* isolate, Handle<JSReceiver> receiver, |
// 1. Let handler be the value of the [[ProxyHandler]] internal slot of O. |
Handle<Object> handler(proxy->handler(), isolate); |
// 2. If handler is null, throw a TypeError exception. |
- if (IsRevoked(proxy)) { |
+ if (proxy->IsRevoked()) { |
isolate->Throw(*isolate->factory()->NewTypeError( |
MessageTemplate::kProxyRevoked, isolate->factory()->ownKeys_string())); |
return false; |