Improve support for built-in native handlers (#4184)

JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai daniel.batyai@h-lab.eu
This commit is contained in:
Dániel Bátyai
2020-09-17 18:35:11 +02:00
committed by GitHub
parent f4af997935
commit 74f66879c2
18 changed files with 552 additions and 351 deletions
@@ -46,13 +46,13 @@ typedef enum
} ecma_promise_executor_type_t;
/**
* Description of the promise resolving functions.
* Description of a promise resolving function.
*/
typedef struct
{
ecma_value_t resolve; /**< the resolve function */
ecma_value_t reject; /**< the reject function */
} ecma_promise_resolving_functions_t;
ecma_extended_object_t header;
ecma_value_t promise;
} ecma_promise_resolver_t;
/**
* Description of the promise object.
@@ -62,6 +62,8 @@ typedef struct
{
ecma_extended_object_t header; /**< extended object part */
ecma_collection_t *reactions; /**< list of promise reactions */
ecma_value_t resolve; /**< resolve function */
ecma_value_t reject; /**< reject function */
} ecma_promise_object_t;
/**
@@ -139,9 +141,7 @@ ecma_promise_resolve_handler (const ecma_value_t function,
ecma_value_t ecma_promise_finally (ecma_value_t promise, ecma_value_t on_finally);
void ecma_promise_async_then (ecma_value_t promise, ecma_value_t executable_object);
ecma_value_t ecma_promise_async_await (ecma_extended_object_t *async_generator_object_p, ecma_value_t value);
void ecma_promise_create_resolving_functions (ecma_object_t *object_p, ecma_promise_resolving_functions_t *funcs,
bool create_already_resolved);
void ecma_promise_free_resolving_functions (ecma_promise_resolving_functions_t *funcs);
void ecma_promise_create_resolving_functions (ecma_promise_object_t *object_p);
uint32_t ecma_promise_remaining_inc_or_dec (ecma_value_t remaining, bool is_inc);
ecma_value_t ecma_promise_all_handler_cb (const ecma_value_t function_obj, const ecma_value_t this_val,