| Index: src/objects.cc
|
| ===================================================================
|
| --- src/objects.cc (revision 2322)
|
| +++ src/objects.cc (working copy)
|
| @@ -5788,11 +5788,10 @@
|
| }
|
|
|
|
|
| -bool JSObject::GetPropertyWithInterceptorProper(
|
| +Object* JSObject::GetPropertyWithInterceptorProper(
|
| JSObject* receiver,
|
| String* name,
|
| - PropertyAttributes* attributes,
|
| - Object** result_object) {
|
| + PropertyAttributes* attributes) {
|
| HandleScope scope;
|
| Handle<InterceptorInfo> interceptor(GetNamedInterceptor());
|
| Handle<JSObject> receiver_handle(receiver);
|
| @@ -5813,17 +5812,14 @@
|
| VMState state(EXTERNAL);
|
| result = getter(v8::Utils::ToLocal(name_handle), info);
|
| }
|
| - if (Top::has_scheduled_exception()) {
|
| - return false;
|
| - }
|
| - if (!result.IsEmpty()) {
|
| + if (!Top::has_scheduled_exception() && !result.IsEmpty()) {
|
| *attributes = NONE;
|
| - *result_object = *v8::Utils::OpenHandle(*result);
|
| - return true;
|
| + return *v8::Utils::OpenHandle(*result);
|
| }
|
| }
|
|
|
| - return false;
|
| + *attributes = ABSENT;
|
| + return Heap::undefined_value();
|
| }
|
|
|
|
|
| @@ -5837,12 +5833,13 @@
|
| Handle<JSObject> holder_handle(this);
|
| Handle<String> name_handle(name);
|
|
|
| - Object* result = NULL;
|
| - if (GetPropertyWithInterceptorProper(receiver, name, attributes, &result)) {
|
| + Object* result = GetPropertyWithInterceptorProper(receiver,
|
| + name,
|
| + attributes);
|
| + if (*attributes != ABSENT) {
|
| return result;
|
| - } else {
|
| - RETURN_IF_SCHEDULED_EXCEPTION();
|
| }
|
| + RETURN_IF_SCHEDULED_EXCEPTION();
|
|
|
| int property_index = lookup_hint->value();
|
| if (property_index >= 0) {
|
| @@ -5887,12 +5884,11 @@
|
| Handle<JSObject> holder_handle(this);
|
| Handle<String> name_handle(name);
|
|
|
| - Object* result = NULL;
|
| - if (GetPropertyWithInterceptorProper(receiver, name, attributes, &result)) {
|
| + Object* result = GetPropertyWithInterceptorProper(receiver, name, attributes);
|
| + if (*attributes != ABSENT) {
|
| return result;
|
| - } else {
|
| - RETURN_IF_SCHEDULED_EXCEPTION();
|
| }
|
| + RETURN_IF_SCHEDULED_EXCEPTION();
|
|
|
| result = holder_handle->GetPropertyPostInterceptor(
|
| *receiver_handle,
|
|
|