Assume that ReportFailedAccessCheck always schedules an exception.
R=verwaest@chromium.org BUG= Review URL: https://codereview.chromium.org/1420413002 Cr-Commit-Position: refs/heads/master@{#31560}
This commit is contained in:
parent
34143f09d2
commit
effe76ad25
@ -1712,6 +1712,7 @@ MUST_USE_RESULT static MaybeHandle<Object> HandleApiCallHelper(
|
||||
if (!isolate->MayAccess(handle(isolate->context()), js_receiver)) {
|
||||
isolate->ReportFailedAccessCheck(js_receiver);
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
||||
UNREACHABLE();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1011,7 +1011,8 @@ MaybeHandle<Object> JSObject::GetPropertyWithFailedAccessCheck(
|
||||
|
||||
it->isolate()->ReportFailedAccessCheck(checked);
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(it->isolate(), Object);
|
||||
return it->factory()->undefined_value();
|
||||
UNREACHABLE();
|
||||
return MaybeHandle<Object>();
|
||||
}
|
||||
|
||||
|
||||
@ -1030,7 +1031,8 @@ Maybe<PropertyAttributes> JSObject::GetPropertyAttributesWithFailedAccessCheck(
|
||||
it->isolate()->ReportFailedAccessCheck(checked);
|
||||
RETURN_VALUE_IF_SCHEDULED_EXCEPTION(it->isolate(),
|
||||
Nothing<PropertyAttributes>());
|
||||
return Just(ABSENT);
|
||||
UNREACHABLE();
|
||||
return Nothing<PropertyAttributes>();
|
||||
}
|
||||
|
||||
|
||||
@ -1059,8 +1061,6 @@ Maybe<bool> JSObject::SetPropertyWithFailedAccessCheck(
|
||||
it->isolate()->ReportFailedAccessCheck(checked);
|
||||
RETURN_VALUE_IF_SCHEDULED_EXCEPTION(it->isolate(), Nothing<bool>());
|
||||
UNREACHABLE();
|
||||
it->isolate()->Throw(
|
||||
*it->isolate()->factory()->NewTypeError(MessageTemplate::kNoAccess));
|
||||
return Nothing<bool>();
|
||||
}
|
||||
|
||||
@ -4792,7 +4792,7 @@ MaybeHandle<Object> JSObject::DefineOwnPropertyIgnoreAttributes(
|
||||
if (!it->HasAccess()) {
|
||||
it->isolate()->ReportFailedAccessCheck(it->GetHolder<JSObject>());
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(it->isolate(), Object);
|
||||
return value;
|
||||
UNREACHABLE();
|
||||
}
|
||||
break;
|
||||
|
||||
@ -5821,7 +5821,7 @@ MaybeHandle<Object> JSReceiver::DeleteProperty(LookupIterator* it,
|
||||
if (it->HasAccess()) break;
|
||||
isolate->ReportFailedAccessCheck(it->GetHolder<JSObject>());
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
||||
return it->factory()->false_value();
|
||||
UNREACHABLE();
|
||||
case LookupIterator::INTERCEPTOR: {
|
||||
MaybeHandle<Object> maybe_result =
|
||||
JSObject::DeletePropertyWithInterceptor(it);
|
||||
@ -6782,8 +6782,6 @@ Maybe<bool> JSObject::PreventExtensions(Handle<JSObject> object,
|
||||
isolate->ReportFailedAccessCheck(object);
|
||||
RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, Nothing<bool>());
|
||||
UNREACHABLE();
|
||||
RETURN_FAILURE(isolate, should_throw,
|
||||
NewTypeError(MessageTemplate::kNoAccess));
|
||||
}
|
||||
|
||||
if (object->IsJSGlobalProxy()) {
|
||||
@ -6879,8 +6877,6 @@ Maybe<bool> JSObject::PreventExtensionsWithTransition(
|
||||
isolate->ReportFailedAccessCheck(object);
|
||||
RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, Nothing<bool>());
|
||||
UNREACHABLE();
|
||||
RETURN_FAILURE(isolate, should_throw,
|
||||
NewTypeError(MessageTemplate::kNoAccess));
|
||||
}
|
||||
|
||||
if (object->IsJSGlobalProxy()) {
|
||||
@ -7782,6 +7778,7 @@ MaybeHandle<FixedArray> JSReceiver::GetKeys(Handle<JSReceiver> object,
|
||||
if (iter.IsAtEnd(PrototypeIterator::END_AT_NON_HIDDEN)) {
|
||||
isolate->ReportFailedAccessCheck(current);
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, FixedArray);
|
||||
UNREACHABLE();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -7894,7 +7891,7 @@ MaybeHandle<Object> JSObject::DefineAccessor(LookupIterator* it,
|
||||
if (!it->HasAccess()) {
|
||||
isolate->ReportFailedAccessCheck(it->GetHolder<JSObject>());
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
||||
return isolate->factory()->undefined_value();
|
||||
UNREACHABLE();
|
||||
}
|
||||
it->Next();
|
||||
}
|
||||
@ -7959,7 +7956,7 @@ MaybeHandle<Object> JSObject::SetAccessor(Handle<JSObject> object,
|
||||
if (!it.HasAccess()) {
|
||||
isolate->ReportFailedAccessCheck(object);
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
||||
return it.factory()->undefined_value();
|
||||
UNREACHABLE();
|
||||
}
|
||||
it.Next();
|
||||
}
|
||||
@ -8006,7 +8003,7 @@ MaybeHandle<Object> JSObject::GetAccessor(Handle<JSObject> object,
|
||||
if (it.HasAccess()) continue;
|
||||
isolate->ReportFailedAccessCheck(it.GetHolder<JSObject>());
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
||||
return isolate->factory()->undefined_value();
|
||||
UNREACHABLE();
|
||||
|
||||
case LookupIterator::JSPROXY:
|
||||
return isolate->factory()->undefined_value();
|
||||
|
@ -272,6 +272,7 @@ static MaybeHandle<Object> LoadFromSuper(Isolate* isolate,
|
||||
!isolate->MayAccess(handle(isolate->context()), home_object)) {
|
||||
isolate->ReportFailedAccessCheck(home_object);
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
PrototypeIterator iter(isolate, home_object);
|
||||
@ -297,6 +298,7 @@ static MaybeHandle<Object> LoadElementFromSuper(Isolate* isolate,
|
||||
!isolate->MayAccess(handle(isolate->context()), home_object)) {
|
||||
isolate->ReportFailedAccessCheck(home_object);
|
||||
RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
PrototypeIterator iter(isolate, home_object);
|
||||
@ -374,6 +376,7 @@ static Object* StoreToSuper(Isolate* isolate, Handle<JSObject> home_object,
|
||||
!isolate->MayAccess(handle(isolate->context()), home_object)) {
|
||||
isolate->ReportFailedAccessCheck(home_object);
|
||||
RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate);
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
PrototypeIterator iter(isolate, home_object);
|
||||
@ -399,6 +402,7 @@ static Object* StoreElementToSuper(Isolate* isolate,
|
||||
!isolate->MayAccess(handle(isolate->context()), home_object)) {
|
||||
isolate->ReportFailedAccessCheck(home_object);
|
||||
RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate);
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
PrototypeIterator iter(isolate, home_object);
|
||||
|
Loading…
Reference in New Issue
Block a user