Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 4f23ea58b9f1e0ef70d7f6b38fcb5ba2e6be085a..2ab215c635a8f3aa2867c95f929792e27fb62b36 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -11147,10 +11147,9 @@ static bool GetOldValue(Isolate* isolate, |
return true; |
} |
-static void EnqueueSpliceRecord(Handle<JSArray> object, |
- uint32_t index, |
- Handle<JSArray> deleted, |
- uint32_t add_count) { |
+MUST_USE_RESULT static MaybeHandle<Object> EnqueueSpliceRecord( |
+ Handle<JSArray> object, uint32_t index, Handle<JSArray> deleted, |
+ uint32_t add_count) { |
Isolate* isolate = object->GetIsolate(); |
HandleScope scope(isolate); |
Handle<Object> index_object = isolate->factory()->NewNumberFromUint(index); |
@@ -11160,37 +11159,33 @@ static void EnqueueSpliceRecord(Handle<JSArray> object, |
Handle<Object> args[] = |
{ object, index_object, deleted, add_count_object }; |
- Execution::Call(isolate, |
- Handle<JSFunction>(isolate->observers_enqueue_splice()), |
- isolate->factory()->undefined_value(), |
- arraysize(args), |
- args).Assert(); |
+ return Execution::Call( |
+ isolate, Handle<JSFunction>(isolate->observers_enqueue_splice()), |
+ isolate->factory()->undefined_value(), arraysize(args), args); |
} |
-static void BeginPerformSplice(Handle<JSArray> object) { |
+MUST_USE_RESULT static MaybeHandle<Object> BeginPerformSplice( |
+ Handle<JSArray> object) { |
Isolate* isolate = object->GetIsolate(); |
HandleScope scope(isolate); |
Handle<Object> args[] = { object }; |
- Execution::Call(isolate, |
- Handle<JSFunction>(isolate->observers_begin_perform_splice()), |
- isolate->factory()->undefined_value(), |
- arraysize(args), |
- args).Assert(); |
+ return Execution::Call( |
+ isolate, Handle<JSFunction>(isolate->observers_begin_perform_splice()), |
+ isolate->factory()->undefined_value(), arraysize(args), args); |
} |
-static void EndPerformSplice(Handle<JSArray> object) { |
+MUST_USE_RESULT static MaybeHandle<Object> EndPerformSplice( |
+ Handle<JSArray> object) { |
Isolate* isolate = object->GetIsolate(); |
HandleScope scope(isolate); |
Handle<Object> args[] = { object }; |
- Execution::Call(isolate, |
- Handle<JSFunction>(isolate->observers_end_perform_splice()), |
- isolate->factory()->undefined_value(), |
- arraysize(args), |
- args).Assert(); |
+ return Execution::Call( |
+ isolate, Handle<JSFunction>(isolate->observers_end_perform_splice()), |
+ isolate->factory()->undefined_value(), arraysize(args), args); |
} |
@@ -11254,7 +11249,7 @@ MaybeHandle<Object> JSArray::SetElementsLength( |
CHECK(array->length()->ToArrayIndex(&new_length)); |
if (old_length == new_length) return hresult; |
- BeginPerformSplice(array); |
+ RETURN_ON_EXCEPTION(isolate, BeginPerformSplice(array), Object); |
for (int i = 0; i < indices.length(); ++i) { |
// For deletions where the property was an accessor, old_values[i] |
@@ -11273,7 +11268,7 @@ MaybeHandle<Object> JSArray::SetElementsLength( |
old_length_handle), |
Object); |
- EndPerformSplice(array); |
+ RETURN_ON_EXCEPTION(isolate, EndPerformSplice(array), Object); |
uint32_t index = Min(old_length, new_length); |
uint32_t add_count = new_length > old_length ? new_length - old_length : 0; |
@@ -11293,7 +11288,8 @@ MaybeHandle<Object> JSArray::SetElementsLength( |
STRICT).Assert(); |
} |
- EnqueueSpliceRecord(array, index, deleted, add_count); |
+ RETURN_ON_EXCEPTION( |
+ isolate, EnqueueSpliceRecord(array, index, deleted, add_count), Object); |
return hresult; |
} |
@@ -12478,7 +12474,8 @@ MaybeHandle<Object> JSObject::SetElement(Handle<JSObject> object, |
CHECK(old_length_handle->ToArrayIndex(&old_length)); |
CHECK(new_length_handle->ToArrayIndex(&new_length)); |
- BeginPerformSplice(Handle<JSArray>::cast(object)); |
+ RETURN_ON_EXCEPTION( |
+ isolate, BeginPerformSplice(Handle<JSArray>::cast(object)), Object); |
RETURN_ON_EXCEPTION( |
isolate, EnqueueChangeRecord(object, "add", name, old_value), Object); |
RETURN_ON_EXCEPTION( |
@@ -12486,10 +12483,14 @@ MaybeHandle<Object> JSObject::SetElement(Handle<JSObject> object, |
isolate->factory()->length_string(), |
old_length_handle), |
Object); |
- EndPerformSplice(Handle<JSArray>::cast(object)); |
+ RETURN_ON_EXCEPTION( |
+ isolate, EndPerformSplice(Handle<JSArray>::cast(object)), Object); |
Handle<JSArray> deleted = isolate->factory()->NewJSArray(0); |
- EnqueueSpliceRecord(Handle<JSArray>::cast(object), old_length, deleted, |
- new_length - old_length); |
+ RETURN_ON_EXCEPTION( |
+ isolate, |
+ EnqueueSpliceRecord(Handle<JSArray>::cast(object), old_length, |
+ deleted, new_length - old_length), |
+ Object); |
} else { |
RETURN_ON_EXCEPTION( |
isolate, EnqueueChangeRecord(object, "add", name, old_value), Object); |