| Index: src/runtime/runtime-object.cc
|
| diff --git a/src/runtime/runtime-object.cc b/src/runtime/runtime-object.cc
|
| index b2a736d7a5bb41e07532366ac815da3693bcbace..d22b43399475066923e290cfee60e3d69f0213dd 100644
|
| --- a/src/runtime/runtime-object.cc
|
| +++ b/src/runtime/runtime-object.cc
|
| @@ -242,10 +242,8 @@ MaybeHandle<Object> Runtime::DefineObjectProperty(Handle<JSObject> js_object,
|
| }
|
|
|
|
|
| -RUNTIME_FUNCTION(Runtime_GetPrototype) {
|
| - HandleScope scope(isolate);
|
| - DCHECK(args.length() == 1);
|
| - CONVERT_ARG_HANDLE_CHECKED(Object, obj, 0);
|
| +MaybeHandle<Object> Runtime::GetPrototype(Isolate* isolate,
|
| + Handle<Object> obj) {
|
| // We don't expect access checks to be needed on JSProxy objects.
|
| DCHECK(!obj->IsAccessCheckNeeded() || obj->IsJSObject());
|
| PrototypeIterator iter(isolate, obj, PrototypeIterator::START_AT_RECEIVER);
|
| @@ -257,15 +255,26 @@ RUNTIME_FUNCTION(Runtime_GetPrototype) {
|
| isolate->ReportFailedAccessCheck(
|
| Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)),
|
| v8::ACCESS_GET);
|
| - RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate);
|
| - return isolate->heap()->undefined_value();
|
| + RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object);
|
| + return isolate->factory()->undefined_value();
|
| }
|
| iter.AdvanceIgnoringProxies();
|
| if (PrototypeIterator::GetCurrent(iter)->IsJSProxy()) {
|
| - return *PrototypeIterator::GetCurrent(iter);
|
| + return PrototypeIterator::GetCurrent(iter);
|
| }
|
| } while (!iter.IsAtEnd(PrototypeIterator::END_AT_NON_HIDDEN));
|
| - return *PrototypeIterator::GetCurrent(iter);
|
| + return PrototypeIterator::GetCurrent(iter);
|
| +}
|
| +
|
| +
|
| +RUNTIME_FUNCTION(Runtime_GetPrototype) {
|
| + HandleScope scope(isolate);
|
| + DCHECK(args.length() == 1);
|
| + CONVERT_ARG_HANDLE_CHECKED(Object, obj, 0);
|
| + Handle<Object> result;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
|
| + Runtime::GetPrototype(isolate, obj));
|
| + return *result;
|
| }
|
|
|
|
|
|
|