Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 34e0e023edc17512d21740dc1eb868bea710cfb2..26d844bdc36a70e11ec881d0cd6aa14305f70e58 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -555,12 +555,7 @@ MaybeHandle<Object> Object::GetPropertyWithDefinedGetter( |
} |
#endif |
- bool has_pending_exception; |
- Handle<Object> result = Execution::Call( |
- isolate, getter, receiver, 0, NULL, &has_pending_exception, true); |
- // Check for pending exception and return the result. |
- if (has_pending_exception) return MaybeHandle<Object>(); |
- return result; |
+ return Execution::Call(isolate, getter, receiver, 0, NULL, true); |
} |
@@ -2213,14 +2208,11 @@ void JSObject::EnqueueChangeRecord(Handle<JSObject> object, |
} |
Handle<Object> args[] = { type, object, name, old_value }; |
int argc = name.is_null() ? 2 : old_value->IsTheHole() ? 3 : 4; |
- bool threw; |
Execution::Call(isolate, |
Handle<JSFunction>(isolate->observers_notify_change()), |
isolate->factory()->undefined_value(), |
- argc, args, |
- &threw); |
- ASSERT(!threw); |
+ argc, args).Assert(); |
} |
@@ -3003,7 +2995,7 @@ MaybeHandle<Object> JSObject::SetPropertyWithCallback(Handle<JSObject> object, |
} |
-Handle<Object> JSReceiver::SetPropertyWithDefinedSetter( |
+MaybeHandle<Object> JSReceiver::SetPropertyWithDefinedSetter( |
Handle<JSReceiver> object, |
Handle<JSReceiver> setter, |
Handle<Object> value) { |
@@ -3019,12 +3011,11 @@ Handle<Object> JSReceiver::SetPropertyWithDefinedSetter( |
} |
#endif |
- bool has_pending_exception; |
Handle<Object> argv[] = { value }; |
- Execution::Call( |
- isolate, setter, object, ARRAY_SIZE(argv), argv, &has_pending_exception); |
- // Check for pending exception and return the result. |
- if (has_pending_exception) return Handle<Object>(); |
+ RETURN_ON_EXCEPTION( |
+ isolate, |
+ Execution::Call(isolate, setter, object, ARRAY_SIZE(argv), argv), |
+ Object); |
return value; |
} |
@@ -3690,12 +3681,16 @@ MaybeHandle<Object> JSProxy::SetPropertyViaPrototypesWithHandler( |
} |
// Emulate [[GetProperty]] semantics for proxies. |
- bool has_pending_exception; |
Handle<Object> argv[] = { result }; |
- Handle<Object> desc = Execution::Call( |
- isolate, isolate->to_complete_property_descriptor(), result, |
- ARRAY_SIZE(argv), argv, &has_pending_exception); |
- if (has_pending_exception) return MaybeHandle<Object>(); |
+ Handle<Object> desc; |
+ ASSIGN_RETURN_ON_EXCEPTION( |
+ isolate, desc, |
+ Execution::Call(isolate, |
+ isolate->to_complete_property_descriptor(), |
+ result, |
+ ARRAY_SIZE(argv), |
+ argv), |
+ Object); |
// [[GetProperty]] requires to check that all properties are configurable. |
Handle<String> configurable_name = |
@@ -3820,12 +3815,16 @@ PropertyAttributes JSProxy::GetPropertyAttributeWithHandler( |
if (result->IsUndefined()) return ABSENT; |
- bool has_pending_exception; |
Handle<Object> argv[] = { result }; |
- Handle<Object> desc = Execution::Call( |
- isolate, isolate->to_complete_property_descriptor(), result, |
- ARRAY_SIZE(argv), argv, &has_pending_exception); |
- if (has_pending_exception) return NONE; |
+ Handle<Object> desc; |
+ ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
+ isolate, desc, |
+ Execution::Call(isolate, |
+ isolate->to_complete_property_descriptor(), |
+ result, |
+ ARRAY_SIZE(argv), |
+ argv), |
+ NONE); |
// Convert result to PropertyAttributes. |
Handle<String> enum_n = isolate->factory()->InternalizeOneByteString( |
@@ -3924,8 +3923,7 @@ MaybeHandle<Object> JSProxy::CallTrap(Handle<JSProxy> proxy, |
trap = Handle<Object>(derived); |
} |
- bool threw; |
- return Execution::Call(isolate, trap, handler, argc, argv, &threw); |
+ return Execution::Call(isolate, trap, handler, argc, argv); |
} |
@@ -11356,12 +11354,11 @@ static void EnqueueSpliceRecord(Handle<JSArray> object, |
Handle<Object> args[] = |
{ object, index_object, deleted, add_count_object }; |
- bool threw; |
Execution::Call(isolate, |
Handle<JSFunction>(isolate->observers_enqueue_splice()), |
- isolate->factory()->undefined_value(), ARRAY_SIZE(args), args, |
- &threw); |
- ASSERT(!threw); |
+ isolate->factory()->undefined_value(), |
+ ARRAY_SIZE(args), |
+ args).Assert(); |
} |
@@ -11370,12 +11367,11 @@ static void BeginPerformSplice(Handle<JSArray> object) { |
HandleScope scope(isolate); |
Handle<Object> args[] = { object }; |
- bool threw; |
Execution::Call(isolate, |
Handle<JSFunction>(isolate->observers_begin_perform_splice()), |
- isolate->factory()->undefined_value(), ARRAY_SIZE(args), args, |
- &threw); |
- ASSERT(!threw); |
+ isolate->factory()->undefined_value(), |
+ ARRAY_SIZE(args), |
+ args).Assert(); |
} |
@@ -11384,12 +11380,11 @@ static void EndPerformSplice(Handle<JSArray> object) { |
HandleScope scope(isolate); |
Handle<Object> args[] = { object }; |
- bool threw; |
Execution::Call(isolate, |
Handle<JSFunction>(isolate->observers_end_perform_splice()), |
- isolate->factory()->undefined_value(), ARRAY_SIZE(args), args, |
- &threw); |
- ASSERT(!threw); |
+ isolate->factory()->undefined_value(), |
+ ARRAY_SIZE(args), |
+ args).Assert(); |
} |
@@ -12003,12 +11998,12 @@ MaybeHandle<Object> JSObject::GetElementWithCallback( |
} |
-Handle<Object> JSObject::SetElementWithCallback(Handle<JSObject> object, |
- Handle<Object> structure, |
- uint32_t index, |
- Handle<Object> value, |
- Handle<JSObject> holder, |
- StrictMode strict_mode) { |
+MaybeHandle<Object> JSObject::SetElementWithCallback(Handle<JSObject> object, |
+ Handle<Object> structure, |
+ uint32_t index, |
+ Handle<Object> value, |
+ Handle<JSObject> holder, |
+ StrictMode strict_mode) { |
Isolate* isolate = object->GetIsolate(); |
// We should never get here to initialize a const with the hole |
@@ -12036,7 +12031,7 @@ Handle<Object> JSObject::SetElementWithCallback(Handle<JSObject> object, |
args.Call(call_fun, |
v8::Utils::ToLocal(key), |
v8::Utils::ToLocal(value)); |
- RETURN_HANDLE_IF_SCHEDULED_EXCEPTION(isolate, Object); |
+ RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); |
return value; |
} |
@@ -12052,8 +12047,7 @@ Handle<Object> JSObject::SetElementWithCallback(Handle<JSObject> object, |
Handle<Object> args[2] = { key, holder }; |
Handle<Object> error = isolate->factory()->NewTypeError( |
"no_setter_in_callback", HandleVector(args, 2)); |
- isolate->Throw(*error); |
- return Handle<Object>(); |
+ return isolate->Throw<Object>(error); |
} |
} |
@@ -12061,7 +12055,7 @@ Handle<Object> JSObject::SetElementWithCallback(Handle<JSObject> object, |
if (structure->IsDeclaredAccessorInfo()) return value; |
UNREACHABLE(); |
- return Handle<Object>(); |
+ return MaybeHandle<Object>(); |
} |
@@ -12496,11 +12490,9 @@ MaybeHandle<Object> JSObject::SetElement(Handle<JSObject> object, |
if (object->HasExternalArrayElements() || |
object->HasFixedTypedArrayElements()) { |
if (!value->IsNumber() && !value->IsUndefined()) { |
- bool has_exception; |
- Handle<Object> number = |
- Execution::ToNumber(isolate, value, &has_exception); |
- if (has_exception) return MaybeHandle<Object>(); |
- value = number; |
+ ASSIGN_RETURN_ON_EXCEPTION( |
+ isolate, value, |
+ Execution::ToNumber(isolate, value), Object); |
} |
} |