// Copyright 2019 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @generateCppClass extern class PromiseCapability extends Struct { promise: JSReceiver|Undefined; // TODO(joshualitt): Can these be typed more specifically. resolve: Object; reject: Object; } // PromiseReaction constants type PromiseReactionType extends int31 constexpr 'PromiseReaction::Type'; const kPromiseReactionFulfill: constexpr PromiseReactionType generates 'PromiseReaction::kFulfill'; const kPromiseReactionReject: constexpr PromiseReactionType generates 'PromiseReaction::kReject'; const kPromiseReactionSize: constexpr int31 generates 'PromiseReaction::kSize'; const kPromiseReactionFulfillHandlerOffset: constexpr int31 generates 'PromiseReaction::kFulfillHandlerOffset'; const kPromiseReactionPromiseOrCapabilityOffset: constexpr int31 generates 'PromiseReaction::kPromiseOrCapabilityOffset'; const kPromiseReactionContinuationPreservedEmbedderDataOffset: constexpr int31 generates 'PromiseReaction::kContinuationPreservedEmbedderDataOffset'; @generateCppClass extern class PromiseReaction extends Struct { next: PromiseReaction|Zero; reject_handler: Callable|Undefined; fulfill_handler: Callable|Undefined; // Either a JSPromise (in case of native promises), a PromiseCapability // (general case), or undefined (in case of await). promise_or_capability: JSPromise|PromiseCapability|Undefined; continuation_preserved_embedder_data: Object|Undefined; } // PromiseReactionJobTask constants const kPromiseReactionJobTaskSizeOfAllPromiseReactionJobTasks: constexpr int31 generates 'PromiseReactionJobTask::kSizeOfAllPromiseReactionJobTasks'; const kPromiseReactionJobTaskHandlerOffset: constexpr int31 generates 'PromiseReactionJobTask::kHandlerOffset'; const kPromiseReactionJobTaskPromiseOrCapabilityOffset: constexpr int31 generates 'PromiseReactionJobTask::kPromiseOrCapabilityOffset'; const kPromiseReactionJobTaskContinuationPreservedEmbedderDataOffset: constexpr int31 generates 'PromiseReactionJobTask::kContinuationPreservedEmbedderDataOffset' ; @abstract @generateCppClass extern class PromiseReactionJobTask extends Microtask { argument: Object; context: Context; handler: Callable|Undefined; // Either a JSPromise (in case of native promises), a PromiseCapability // (general case), or undefined (in case of await). promise_or_capability: JSPromise|PromiseCapability|Undefined; continuation_preserved_embedder_data: Object|Undefined; } @generateCppClass extern class PromiseFulfillReactionJobTask extends PromiseReactionJobTask { } @generateCppClass extern class PromiseRejectReactionJobTask extends PromiseReactionJobTask { } @generateCppClass extern class PromiseResolveThenableJobTask extends Microtask { context: Context; promise_to_resolve: JSPromise; thenable: JSReceiver; then: JSReceiver; }