Merge Promise Guard with ESNEXT (#4725)

JerryScript-DCO-1.0-Signed-off-by: Bela Toth tbela@inf.u-szeged.hu
This commit is contained in:
Tóth Béla
2021-08-02 17:35:32 +02:00
committed by GitHub
parent 951044c036
commit f71a4a6975
29 changed files with 139 additions and 171 deletions
+1 -4
View File
@@ -46,14 +46,11 @@ const char * const ecma_error_json_not_supported_p = "JSON support is disabled";
* Error message, if Symbol support is disabled
*/
const char * const ecma_error_symbol_not_supported_p = "Symbol support is disabled";
#endif /* !JERRY_ESNEXT */
#if !JERRY_BUILTIN_PROMISE
/**
* Error message, if Promise support is disabled
*/
const char * const ecma_error_promise_not_supported_p = "Promise support is disabled";
#endif /* !JERRY_BUILTIN_PROMISE */
#endif /* !JERRY_ESNEXT */
#if !JERRY_BUILTIN_TYPEDARRAY
/**
+1 -3
View File
@@ -33,11 +33,9 @@ extern const char * const ecma_error_json_not_supported_p;
#if !JERRY_ESNEXT
extern const char * const ecma_error_symbol_not_supported_p;
#endif /* !JERRY_ESNEXT */
#if !JERRY_BUILTIN_PROMISE
extern const char * const ecma_error_promise_not_supported_p;
#endif /* !JERRY_BUILTIN_PROMISE */
#endif /* !JERRY_ESNEXT */
#if !JERRY_BUILTIN_TYPEDARRAY
extern const char * const ecma_error_typed_array_not_supported_p;
+19 -23
View File
@@ -40,9 +40,9 @@
#if JERRY_BUILTIN_TYPEDARRAY
#include "ecma-typedarray-object.h"
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#if JERRY_BUILTIN_PROMISE
#if JERRY_ESNEXT
#include "ecma-promise-object.h"
#endif /* JERRY_BUILTIN_PROMISE */
#endif /* JERRY_ESNEXT */
/* TODO: Extract GC to a separate component */
@@ -483,7 +483,7 @@ ecma_gc_mark_bound_function_object (ecma_object_t *object_p) /**< bound function
}
} /* ecma_gc_mark_bound_function_object */
#if JERRY_BUILTIN_PROMISE
#if JERRY_ESNEXT
/**
* Mark objects referenced by Promise built-in.
*/
@@ -527,7 +527,7 @@ ecma_gc_mark_promise_object (ecma_extended_object_t *ext_object_p) /**< extended
}
} /* ecma_gc_mark_promise_object */
#endif /* JERRY_BUILTIN_PROMISE */
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_CONTAINER
/**
@@ -957,13 +957,6 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */
break;
}
#endif /* JERRY_MODULE_SYSTEM */
#if JERRY_BUILTIN_PROMISE
case ECMA_OBJECT_CLASS_PROMISE:
{
ecma_gc_mark_promise_object (ext_object_p);
break;
}
#endif /* JERRY_BUILTIN_PROMISE */
#if JERRY_BUILTIN_DATAVIEW
case ECMA_OBJECT_CLASS_DATAVIEW:
{
@@ -1001,6 +994,11 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */
ecma_gc_mark_executable_object (object_p);
break;
}
case ECMA_OBJECT_CLASS_PROMISE:
{
ecma_gc_mark_promise_object (ext_object_p);
break;
}
case ECMA_OBJECT_CLASS_PROMISE_CAPABILITY:
{
ecma_promise_capabality_t *capability_p = (ecma_promise_capabality_t *) object_p;
@@ -1923,18 +1921,6 @@ ecma_gc_free_object (ecma_object_t *object_p) /**< object to free */
break;
}
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#if JERRY_BUILTIN_PROMISE
case ECMA_OBJECT_CLASS_PROMISE:
{
ecma_free_value_if_not_object (ext_object_p->u.cls.u3.value);
/* Reactions only contains objects. */
ecma_collection_destroy (((ecma_promise_object_t *) object_p)->reactions);
ext_object_size = sizeof (ecma_promise_object_t);
break;
}
#endif /* JERRY_BUILTIN_PROMISE */
#if JERRY_BUILTIN_WEAKREF
case ECMA_OBJECT_CLASS_WEAKREF:
{
@@ -1972,6 +1958,16 @@ ecma_gc_free_object (ecma_object_t *object_p) /**< object to free */
ext_object_size = ecma_gc_free_executable_object (object_p);
break;
}
case ECMA_OBJECT_CLASS_PROMISE:
{
ecma_free_value_if_not_object (ext_object_p->u.cls.u3.value);
/* Reactions only contains objects. */
ecma_collection_destroy (((ecma_promise_object_t *) object_p)->reactions);
ext_object_size = sizeof (ecma_promise_object_t);
break;
}
case ECMA_OBJECT_CLASS_PROMISE_CAPABILITY:
{
ext_object_size = sizeof (ecma_promise_capabality_t);
+4 -8
View File
@@ -698,10 +698,10 @@ typedef enum
#if JERRY_MODULE_SYSTEM
ECMA_OBJECT_CLASS_MODULE, /**< Module (ECMAScript v6, 15.2) */
#endif
#if JERRY_BUILTIN_PROMISE
#if JERRY_ESNEXT
ECMA_OBJECT_CLASS_PROMISE, /**< Promise (ECMAScript v6, 25.4) */
ECMA_OBJECT_CLASS_PROMISE_CAPABILITY, /**< Promise capability (ECMAScript v6, 25.4.1.1) */
#endif /* JERRY_BUILTIN_PROMISE */
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_DATAVIEW
ECMA_OBJECT_CLASS_DATAVIEW, /**< DataView (ECMAScript v6, 24.2) */
#endif /* JERRY_BUILTIN_DATAVIEW */
@@ -1017,10 +1017,8 @@ typedef struct
#if JERRY_ESNEXT
uint8_t iterator_kind; /**< type of iterator */
uint8_t regexp_string_iterator_flags; /**< flags for RegExp string iterator */
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_PROMISE
uint8_t promise_flags; /**< Promise object flags */
#endif /* JERRY_BUILTIN_PROMISE */
#endif /* JERRY_ESNEXT */
#if JERRY_BUILTIN_CONTAINER
uint8_t container_flags; /**< container object flags */
#endif /* JERRY_BUILTIN_CONTAINER */
@@ -1059,15 +1057,13 @@ typedef struct
ecma_value_t date; /**< Date object [[DateValue]] internal property */
#endif /* !JERRY_ESNEXT */
ecma_value_t target; /**< [[ProxyTarget]] or [[WeakRefTarget]] internal property */
#if JERRY_BUILTIN_PROMISE
ecma_value_t promise; /**< PromiseCapability[[Promise]] internal slot */
#endif /* JERRY_BUILTIN_PROMISE */
#if JERRY_BUILTIN_TYPEDARRAY
ecma_value_t arraybuffer; /**< for typedarray: ArrayBuffer reference */
#endif /* JERRY_BUILTIN_TYPEDARRAY */
#if JERRY_ESNEXT
ecma_value_t head; /**< points to the async generator task queue head item */
ecma_value_t iterated_value; /**< for %Iterator%: [[IteratedObject]] property */
ecma_value_t promise; /**< PromiseCapability[[Promise]] internal slot */
ecma_value_t spread_value; /**< for spread object: spreaded element */
int32_t tza; /**< TimeZone adjustment for date objects */
#endif /* JERRY_ESNEXT */
+2 -2
View File
@@ -56,9 +56,9 @@ ecma_init (void)
JERRY_CONTEXT (stack_base) = (uintptr_t) &sp;
#endif /* (JERRY_STACK_LIMIT != 0) */
#if JERRY_BUILTIN_PROMISE
#if JERRY_ESNEXT
ecma_job_queue_init ();
#endif /* JERRY_BUILTIN_PROMISE */
#endif /* JERRY_ESNEXT */
#if JERRY_ESNEXT
JERRY_CONTEXT (current_new_target_p) = NULL;