Implement CreateAsyncFromSyncIterator (#4802)

JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik robert.fancsik@h-lab.eu
This commit is contained in:
Robert Fancsik
2021-10-28 12:45:47 +02:00
committed by GitHub
parent dd77ec914a
commit d2388e907f
24 changed files with 1015 additions and 418 deletions
+26
View File
@@ -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 ();