Implement CreateAsyncFromSyncIterator (#4802)
JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik robert.fancsik@h-lab.eu
This commit is contained in:
@@ -129,6 +129,11 @@ const char * const ecma_error_class_is_non_configurable = "Prototype property of
|
||||
*/
|
||||
const char * const ecma_error_argument_is_not_an_object = "Argument is not an object";
|
||||
|
||||
/**
|
||||
* Error message length of 'ecma_error_argument_is_not_an_object'
|
||||
*/
|
||||
const int ecma_error_argument_is_not_an_object_length = 25;
|
||||
|
||||
/**
|
||||
* Error message, argument is not a Proxy object
|
||||
*/
|
||||
|
||||
@@ -69,6 +69,7 @@ extern const char * const ecma_error_arraybuffer_is_detached;
|
||||
extern const char * const ecma_error_cannot_convert_to_object;
|
||||
extern const char * const ecma_error_class_is_non_configurable;
|
||||
extern const char * const ecma_error_argument_is_not_an_object;
|
||||
extern const int ecma_error_argument_is_not_an_object_length;
|
||||
extern const char * const ecma_error_argument_is_not_a_proxy;
|
||||
extern const char * const ecma_error_target_is_not_a_constructor;
|
||||
extern const char * const ecma_error_argument_is_not_an_regexp;
|
||||
|
||||
@@ -1013,6 +1013,19 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ECMA_OBJECT_CLASS_ASYNC_FROM_SYNC_ITERATOR:
|
||||
{
|
||||
ecma_async_from_sync_iterator_object_t *iter_p = (ecma_async_from_sync_iterator_object_t *) ext_object_p;
|
||||
|
||||
ecma_gc_set_object_visited (ecma_get_object_from_value (iter_p->header.u.cls.u3.sync_iterator));
|
||||
|
||||
if (!ecma_is_value_undefined (iter_p->sync_next_method))
|
||||
{
|
||||
ecma_gc_set_object_visited (ecma_get_object_from_value (iter_p->sync_next_method));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case ECMA_OBJECT_CLASS_ARRAY_ITERATOR:
|
||||
case ECMA_OBJECT_CLASS_SET_ITERATOR:
|
||||
case ECMA_OBJECT_CLASS_MAP_ITERATOR:
|
||||
@@ -1208,6 +1221,10 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ECMA_NATIVE_HANDLER_ASYNC_FROM_SYNC_ITERATOR_UNWRAP:
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
@@ -1911,6 +1928,11 @@ ecma_gc_free_object (ecma_object_t *object_p) /**< object to free */
|
||||
ext_object_size = sizeof (ecma_promise_capabality_t);
|
||||
break;
|
||||
}
|
||||
case ECMA_OBJECT_CLASS_ASYNC_FROM_SYNC_ITERATOR:
|
||||
{
|
||||
ext_object_size = sizeof (ecma_async_from_sync_iterator_object_t);
|
||||
break;
|
||||
}
|
||||
#endif /* JERRY_ESNEXT */
|
||||
#if JERRY_MODULE_SYSTEM
|
||||
case ECMA_OBJECT_CLASS_MODULE:
|
||||
@@ -2039,6 +2061,10 @@ ecma_gc_free_object (ecma_object_t *object_p) /**< object to free */
|
||||
ext_object_size = sizeof (ecma_promise_value_thunk_t);
|
||||
break;
|
||||
}
|
||||
case ECMA_NATIVE_HANDLER_ASYNC_FROM_SYNC_ITERATOR_UNWRAP:
|
||||
{
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
JERRY_UNREACHABLE ();
|
||||
|
||||
@@ -772,6 +772,7 @@ typedef enum
|
||||
#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) */
|
||||
ECMA_OBJECT_CLASS_ASYNC_FROM_SYNC_ITERATOR, /**< AsyncFromSyncIterator (ECMAScript v11, 25.1.4) */
|
||||
#endif /* JERRY_ESNEXT */
|
||||
#if JERRY_BUILTIN_DATAVIEW
|
||||
ECMA_OBJECT_CLASS_DATAVIEW, /**< DataView (ECMAScript v6, 24.2) */
|
||||
@@ -1124,6 +1125,7 @@ typedef struct
|
||||
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 sync_iterator; /**< IteratorRecord [[Iterator]] internal slot for AsyncFromSyncIterator */
|
||||
ecma_value_t spread_value; /**< for spread object: spreaded element */
|
||||
int32_t tza; /**< TimeZone adjustment for date objects */
|
||||
#endif /* JERRY_ESNEXT */
|
||||
@@ -2507,6 +2509,14 @@ typedef enum
|
||||
ECMA_CONSTRUCTOR_FUNCTION_HAS_HERITAGE = (1 << 0), /**< heritage object is present */
|
||||
} ecma_constructor_function_flags_t;
|
||||
|
||||
/**
|
||||
* Description of AsyncFromSyncIterator objects.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
ecma_extended_object_t header; /**< header part */
|
||||
ecma_value_t sync_next_method; /**< IteratorRecord [[NextMethod]] internal slot */
|
||||
} ecma_async_from_sync_iterator_object_t;
|
||||
#endif /* JERRY_ESNEXT */
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user