From 5a1db9a9bbd65c6df9ad5da9ae1bf8e7f6cee066 Mon Sep 17 00:00:00 2001 From: Zoltan Herczeg Date: Thu, 7 Oct 2021 13:31:37 +0000 Subject: [PATCH] Split main promise event filter into multiple filters JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com --- docs/02.API-REFERENCE.md | 6 ++++-- .../ecma/operations/ecma-promise-object.c | 6 +++--- jerry-core/include/jerryscript-types.h | 18 ++++++++++-------- tests/unit-core/test-promise-callback.c | 4 +++- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/docs/02.API-REFERENCE.md b/docs/02.API-REFERENCE.md index 0b0db32300..5ad77cee7c 100644 --- a/docs/02.API-REFERENCE.md +++ b/docs/02.API-REFERENCE.md @@ -1301,9 +1301,11 @@ described in [jerry_promise_event_type_t](#jerry_promise_event_type_t). Possible values: - JERRY_PROMISE_EVENT_FILTER_DISABLE - Disable reporting of all events. -- JERRY_PROMISE_EVENT_FILTER_MAIN - Enables the following events: +- JERRY_PROMISE_EVENT_FILTER_CREATE - Enables the following event: - JERRY_PROMISE_EVENT_CREATE +- JERRY_PROMISE_EVENT_FILTER_RESOLVE - Enables the following event: - JERRY_PROMISE_EVENT_RESOLVE +- JERRY_PROMISE_EVENT_FILTER_REJECT - Enables the following event: - JERRY_PROMISE_EVENT_REJECT - JERRY_PROMISE_EVENT_FILTER_ERROR - Enables the following events: - JERRY_PROMISE_EVENT_RESOLVE_FULFILLED @@ -6152,7 +6154,7 @@ main (void) { jerry_init (JERRY_INIT_EMPTY); - jerry_promise_set_callback (JERRY_PROMISE_EVENT_FILTER_MAIN, promise_callback, NULL); + jerry_promise_set_callback (JERRY_PROMISE_EVENT_FILTER_CREATE, promise_callback, NULL); const char *source_p = "var p = Promise.resolve(0)\n" "p.then(function (v) { return v; })"; diff --git a/jerry-core/ecma/operations/ecma-promise-object.c b/jerry-core/ecma/operations/ecma-promise-object.c index ed96717a4a..3c6b73780b 100644 --- a/jerry-core/ecma/operations/ecma-promise-object.c +++ b/jerry-core/ecma/operations/ecma-promise-object.c @@ -195,7 +195,7 @@ ecma_reject_promise (ecma_value_t promise, /**< promise */ JERRY_ASSERT (ecma_promise_get_flags (obj_p) & ECMA_PROMISE_IS_PENDING); #if JERRY_PROMISE_CALLBACK - if (JERRY_UNLIKELY (JERRY_CONTEXT (promise_callback_filters) & JERRY_PROMISE_EVENT_FILTER_MAIN)) + if (JERRY_UNLIKELY (JERRY_CONTEXT (promise_callback_filters) & JERRY_PROMISE_EVENT_FILTER_REJECT)) { JERRY_ASSERT (JERRY_CONTEXT (promise_callback) != NULL); JERRY_CONTEXT (promise_callback) (JERRY_PROMISE_EVENT_REJECT, @@ -282,7 +282,7 @@ ecma_fulfill_promise (ecma_value_t promise, /**< promise */ } #if JERRY_PROMISE_CALLBACK - if (JERRY_UNLIKELY (JERRY_CONTEXT (promise_callback_filters) & JERRY_PROMISE_EVENT_FILTER_MAIN)) + if (JERRY_UNLIKELY (JERRY_CONTEXT (promise_callback_filters) & JERRY_PROMISE_EVENT_FILTER_RESOLVE)) { JERRY_ASSERT (JERRY_CONTEXT (promise_callback) != NULL); JERRY_CONTEXT (promise_callback) (JERRY_PROMISE_EVENT_RESOLVE, @@ -514,7 +514,7 @@ ecma_op_create_promise_object (ecma_value_t executor, /**< the executor function promise_object_p->reactions = reactions; #if JERRY_PROMISE_CALLBACK - if (JERRY_UNLIKELY (JERRY_CONTEXT (promise_callback_filters) & JERRY_PROMISE_EVENT_FILTER_MAIN)) + if (JERRY_UNLIKELY (JERRY_CONTEXT (promise_callback_filters) & JERRY_PROMISE_EVENT_FILTER_CREATE)) { JERRY_ASSERT (JERRY_CONTEXT (promise_callback) != NULL); JERRY_CONTEXT (promise_callback) (JERRY_PROMISE_EVENT_CREATE, diff --git a/jerry-core/include/jerryscript-types.h b/jerry-core/include/jerryscript-types.h index 5416612e36..872287112f 100644 --- a/jerry-core/include/jerryscript-types.h +++ b/jerry-core/include/jerryscript-types.h @@ -688,21 +688,23 @@ typedef enum typedef enum { JERRY_PROMISE_EVENT_FILTER_DISABLE = 0, /**< disable reporting of all events */ - JERRY_PROMISE_EVENT_FILTER_MAIN = (1 << 0), /**< enables the following events: - * JERRY_PROMISE_EVENT_CREATE - * JERRY_PROMISE_EVENT_RESOLVE - * JERRY_PROMISE_EVENT_REJECT */ - JERRY_PROMISE_EVENT_FILTER_ERROR = (1 << 1), /**< enables the following events: + JERRY_PROMISE_EVENT_FILTER_CREATE = (1 << 0), /**< enables the following event: + * JERRY_PROMISE_EVENT_CREATE */ + JERRY_PROMISE_EVENT_FILTER_RESOLVE = (1 << 1), /**< enables the following event: + * JERRY_PROMISE_EVENT_RESOLVE */ + JERRY_PROMISE_EVENT_FILTER_REJECT = (1 << 2), /**< enables the following event: + * JERRY_PROMISE_EVENT_REJECT */ + JERRY_PROMISE_EVENT_FILTER_ERROR = (1 << 3), /**< enables the following events: * JERRY_PROMISE_EVENT_RESOLVE_FULFILLED * JERRY_PROMISE_EVENT_REJECT_FULFILLED * JERRY_PROMISE_EVENT_REJECT_WITHOUT_HANDLER * JERRY_PROMISE_EVENT_CATCH_HANDLER_ADDED */ - JERRY_PROMISE_EVENT_FILTER_REACTION_JOB = (1 << 2), /**< enables the following events: + JERRY_PROMISE_EVENT_FILTER_REACTION_JOB = (1 << 4), /**< enables the following events: * JERRY_PROMISE_EVENT_BEFORE_REACTION_JOB * JERRY_PROMISE_EVENT_AFTER_REACTION_JOB */ - JERRY_PROMISE_EVENT_FILTER_ASYNC_MAIN = (1 << 3), /**< enables the following events: + JERRY_PROMISE_EVENT_FILTER_ASYNC_MAIN = (1 << 5), /**< enables the following event: * JERRY_PROMISE_EVENT_ASYNC_AWAIT */ - JERRY_PROMISE_EVENT_FILTER_ASYNC_REACTION_JOB = (1 << 4), /**< enables the following events: + JERRY_PROMISE_EVENT_FILTER_ASYNC_REACTION_JOB = (1 << 6), /**< enables the following events: * JERRY_PROMISE_EVENT_ASYNC_BEFORE_RESOLVE * JERRY_PROMISE_EVENT_ASYNC_BEFORE_REJECT * JERRY_PROMISE_EVENT_ASYNC_AFTER_RESOLVE diff --git a/tests/unit-core/test-promise-callback.c b/tests/unit-core/test-promise-callback.c index 164702444b..b2303250ef 100644 --- a/tests/unit-core/test-promise-callback.c +++ b/tests/unit-core/test-promise-callback.c @@ -134,7 +134,9 @@ main (void) jerry_init (JERRY_INIT_EMPTY); - jerry_promise_event_filter_t filters = (JERRY_PROMISE_EVENT_FILTER_MAIN + jerry_promise_event_filter_t filters = (JERRY_PROMISE_EVENT_FILTER_CREATE + | JERRY_PROMISE_EVENT_FILTER_RESOLVE + | JERRY_PROMISE_EVENT_FILTER_REJECT | JERRY_PROMISE_EVENT_FILTER_ERROR | JERRY_PROMISE_EVENT_FILTER_REACTION_JOB | JERRY_PROMISE_EVENT_FILTER_ASYNC_MAIN