| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index fec455a1003f8831b992d33ba682751e4a97ce9f..aec24718892b77eddd3a4bf66805ce0842da3f8c 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -385,6 +385,7 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
|
| V(PROMISE_REACTION_JOB_INFO_TYPE) \
|
| V(DEBUG_INFO_TYPE) \
|
| V(BREAK_POINT_INFO_TYPE) \
|
| + V(ASYNC_GENERATOR_REQUEST_TYPE) \
|
| V(PROTOTYPE_INFO_TYPE) \
|
| V(TUPLE2_TYPE) \
|
| V(TUPLE3_TYPE) \
|
| @@ -411,6 +412,8 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
|
| V(JS_ARGUMENTS_TYPE) \
|
| V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \
|
| V(JS_GENERATOR_OBJECT_TYPE) \
|
| + V(JS_ASYNC_GENERATOR_OBJECT_TYPE) \
|
| + V(JS_ASYNC_FROM_SYNC_ITERATOR_TYPE) \
|
| V(JS_MODULE_NAMESPACE_TYPE) \
|
| V(JS_ARRAY_TYPE) \
|
| V(JS_ARRAY_BUFFER_TYPE) \
|
| @@ -557,7 +560,8 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
|
| V(CONTEXT_EXTENSION, ContextExtension, context_extension) \
|
| V(CONSTANT_ELEMENTS_PAIR, ConstantElementsPair, constant_elements_pair) \
|
| V(MODULE, Module, module) \
|
| - V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry)
|
| + V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry) \
|
| + V(ASYNC_GENERATOR_REQUEST, AsyncGeneratorRequest, async_generator_request)
|
|
|
| // We use the full 8 bits of the instance_type field to encode heap object
|
| // instance types. The high-order bit (bit 7) is set if the object is not a
|
| @@ -722,6 +726,7 @@ enum InstanceType {
|
| BOX_TYPE,
|
| PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE,
|
| PROMISE_REACTION_JOB_INFO_TYPE,
|
| + ASYNC_GENERATOR_REQUEST_TYPE,
|
| DEBUG_INFO_TYPE,
|
| BREAK_POINT_INFO_TYPE,
|
| PROTOTYPE_INFO_TYPE,
|
| @@ -757,6 +762,8 @@ enum InstanceType {
|
| JS_ARGUMENTS_TYPE,
|
| JS_CONTEXT_EXTENSION_OBJECT_TYPE,
|
| JS_GENERATOR_OBJECT_TYPE,
|
| + JS_ASYNC_GENERATOR_OBJECT_TYPE,
|
| + JS_ASYNC_FROM_SYNC_ITERATOR_TYPE,
|
| JS_MODULE_NAMESPACE_TYPE,
|
| JS_ARRAY_TYPE,
|
| JS_ARRAY_BUFFER_TYPE,
|
| @@ -1048,6 +1055,7 @@ template <class C> inline bool Is(Object* obj);
|
| V(JSArgumentsObject) \
|
| V(JSContextExtensionObject) \
|
| V(JSGeneratorObject) \
|
| + V(JSAsyncGeneratorObject) \
|
| V(JSModuleNamespace) \
|
| V(Map) \
|
| V(DescriptorArray) \
|
| @@ -2755,6 +2763,22 @@ class JSIteratorResult: public JSObject {
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSIteratorResult);
|
| };
|
|
|
| +class JSAsyncFromSyncIterator : public JSObject {
|
| + public:
|
| + // Async-from-Sync Iterator instances are ordinary objects that inherit
|
| + // properties from the %AsyncFromSyncIteratorPrototype% intrinsic object.
|
| + // Async-from-Sync Iterator instances are initially created with the internal
|
| + // slots listed in Table 4.
|
| + // (proposal-async-iteration/#table-async-from-sync-iterator-internal-slots)
|
| + DECL_ACCESSORS(sync_iterator, HeapObject)
|
| +
|
| + // Offsets of object fields.
|
| + static const int kSyncIteratorOffset = JSObject::kHeaderSize;
|
| + static const int kSize = kSyncIteratorOffset + kPointerSize;
|
| +
|
| + private:
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(JSAsyncFromSyncIterator);
|
| +};
|
|
|
| // Common superclass for JSSloppyArgumentsObject and JSStrictArgumentsObject.
|
| class JSArgumentsObject: public JSObject {
|
| @@ -6633,6 +6657,30 @@ class PromiseReactionJobInfo : public Struct {
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(PromiseReactionJobInfo);
|
| };
|
|
|
| +class AsyncGeneratorRequest : public Struct {
|
| + public:
|
| + // Holds an AsyncGeneratorRequest, or Undefined.
|
| + DECL_ACCESSORS(next, Object)
|
| + DECL_INT_ACCESSORS(resume_mode)
|
| + DECL_ACCESSORS(value, Object)
|
| + DECL_ACCESSORS(promise, Object)
|
| + DECL_ACCESSORS(awaited_promise, Object)
|
| +
|
| + static const int kNextOffset = Struct::kHeaderSize;
|
| + static const int kResumeModeOffset = kNextOffset + kPointerSize;
|
| + static const int kValueOffset = kResumeModeOffset + kPointerSize;
|
| + static const int kPromiseOffset = kValueOffset + kPointerSize;
|
| + static const int kAwaitedPromiseOffset = kPromiseOffset + kPointerSize;
|
| + static const int kSize = kAwaitedPromiseOffset + kPointerSize;
|
| +
|
| + DECLARE_CAST(AsyncGeneratorRequest)
|
| + DECLARE_PRINTER(AsyncGeneratorRequest)
|
| + DECLARE_VERIFIER(AsyncGeneratorRequest)
|
| +
|
| + private:
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(AsyncGeneratorRequest);
|
| +};
|
| +
|
| // A simple one-element struct, useful where smis need to be boxed.
|
| class Box : public Struct {
|
| public:
|
| @@ -7926,6 +7974,30 @@ class JSGeneratorObject: public JSObject {
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSGeneratorObject);
|
| };
|
|
|
| +class JSAsyncGeneratorObject : public JSGeneratorObject {
|
| + public:
|
| + DECLARE_CAST(JSAsyncGeneratorObject)
|
| +
|
| + // Dispatched behavior.
|
| + DECLARE_VERIFIER(JSAsyncGeneratorObject)
|
| +
|
| + // [queue]
|
| + // Pointer to the head of a singly linked list of AsyncGeneratorRequest, or
|
| + // undefined.
|
| + DECL_ACCESSORS(queue, HeapObject)
|
| +
|
| + // [awaited_promise]
|
| + // A reference to the Promise of an AwaitExpression.
|
| + DECL_ACCESSORS(awaited_promise, HeapObject)
|
| +
|
| + // Layout description.
|
| + static const int kQueueOffset = JSGeneratorObject::kSize;
|
| + static const int kSize = kQueueOffset + kPointerSize;
|
| +
|
| + private:
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(JSAsyncGeneratorObject);
|
| +};
|
| +
|
| class ModuleInfoEntry : public Struct {
|
| public:
|
| DECLARE_CAST(ModuleInfoEntry)
|
|
|