From 4e4db65e26d7b72a460817d2708101e7fcc98b10 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Thu, 21 Oct 2021 09:50:00 -0400 Subject: [PATCH] LibJS: Remove now-redundant TemporaryClearException from Promise methods IteratorClose now handles exceptions itself before invoking VM::call(), so outside callers doubling that work isn't helpful. --- .../LibJS/Runtime/PromiseConstructor.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/PromiseConstructor.cpp b/Userland/Libraries/LibJS/Runtime/PromiseConstructor.cpp index 13c15452e0..e898f68c5c 100644 --- a/Userland/Libraries/LibJS/Runtime/PromiseConstructor.cpp +++ b/Userland/Libraries/LibJS/Runtime/PromiseConstructor.cpp @@ -272,10 +272,8 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(PromiseConstructor::all) auto result = perform_promise_all(global_object, *iterator_record, constructor, promise_capability, promise_resolve); if (result.is_error()) { - if (!iterator_record_is_complete(global_object, *iterator_record)) { - TemporaryClearException clear_exception(vm); // iterator_close() may invoke vm.call(), which VERIFYs no exception. + if (!iterator_record_is_complete(global_object, *iterator_record)) result = iterator_close(*iterator_record, result.release_error()); - } TRY_OR_REJECT(vm, promise_capability, result); } @@ -297,10 +295,8 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(PromiseConstructor::all_settled) auto result = perform_promise_all_settled(global_object, *iterator_record, constructor, promise_capability, promise_resolve); if (result.is_error()) { - if (!iterator_record_is_complete(global_object, *iterator_record)) { - TemporaryClearException clear_exception(vm); // iterator_close() may invoke vm.call(), which VERIFYs no exception. + if (!iterator_record_is_complete(global_object, *iterator_record)) result = iterator_close(*iterator_record, result.release_error()); - } TRY_OR_REJECT(vm, promise_capability, result); } @@ -322,10 +318,8 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(PromiseConstructor::any) auto result = perform_promise_any(global_object, *iterator_record, constructor, promise_capability, promise_resolve); if (result.is_error()) { - if (!iterator_record_is_complete(global_object, *iterator_record)) { - TemporaryClearException clear_exception(vm); // iterator_close() may invoke vm.call(), which VERIFYs no exception. + if (!iterator_record_is_complete(global_object, *iterator_record)) result = iterator_close(*iterator_record, result.release_error()); - } TRY_OR_REJECT(vm, promise_capability, result); } @@ -347,10 +341,8 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(PromiseConstructor::race) auto result = perform_promise_race(global_object, *iterator_record, constructor, promise_capability, promise_resolve); if (result.is_error()) { - if (!iterator_record_is_complete(global_object, *iterator_record)) { - TemporaryClearException clear_exception(vm); - result = iterator_close(*iterator_record, result.release_error()); // iterator_close() may invoke vm.call(), which VERIFYs no exception. - } + if (!iterator_record_is_complete(global_object, *iterator_record)) + result = iterator_close(*iterator_record, result.release_error()); TRY_OR_REJECT(vm, promise_capability, result); }