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:
neis 2015-10-26 05:30:11 -07:00 committed by Commit bot
parent 34143f09d2
commit effe76ad25
3 changed files with 15 additions and 13 deletions

View File

@ -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();
}
}
}

View File

@ -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();

View File

@ -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);