diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/runtime/JSPromise.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/JavaScriptCore/runtime/JSPromise.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/JSPromise.h | 68 |
1 files changed, 17 insertions, 51 deletions
diff --git a/Source/JavaScriptCore/runtime/JSPromise.h b/Source/JavaScriptCore/runtime/JSPromise.h index d1d1854d9..639f650bc 100644 --- a/Source/JavaScriptCore/runtime/JSPromise.h +++ b/Source/JavaScriptCore/runtime/JSPromise.h @@ -23,71 +23,37 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef JSPromise_h -#define JSPromise_h +#pragma once -#if ENABLE(PROMISES) - -#include "JSDestructibleObject.h" +#include "JSObject.h" namespace JSC { -class JSPromiseReaction; -class JSPromiseConstructor; - -class JSPromise : public JSDestructibleObject { +class JSPromise : public JSNonFinalObject { public: - typedef JSDestructibleObject Base; + typedef JSNonFinalObject Base; - static JSPromise* create(VM&, JSGlobalObject*, JSPromiseConstructor*); + static JSPromise* create(VM&, Structure*); static Structure* createStructure(VM&, JSGlobalObject*, JSValue); - DECLARE_INFO; + DECLARE_EXPORT_INFO; - enum class Status { - Unresolved, - HasResolution, - HasRejection + enum class Status : unsigned { + Pending = 1, + Fulfilled, + Rejected }; - Status status() const - { - return m_status; - } - - JSValue result() const - { - ASSERT(m_status != Status::Unresolved); - return m_result.get(); - } - - JSPromiseConstructor* constructor() const - { - return m_constructor.get(); - } + Status status(VM&) const; + JSValue result(VM&) const; - void reject(VM&, JSValue); - void resolve(VM&, JSValue); + // Initialize the promise with the executor. + // This may raise a JS exception. + void initialize(ExecState*, JSGlobalObject*, JSValue executor); - void appendResolveReaction(VM&, JSPromiseReaction*); - void appendRejectReaction(VM&, JSPromiseReaction*); - -private: +protected: JSPromise(VM&, Structure*); - void finishCreation(VM&, JSPromiseConstructor*); - static const unsigned StructureFlags = OverridesVisitChildren | JSObject::StructureFlags; - static void destroy(JSCell*); - static void visitChildren(JSCell*, SlotVisitor&); - - Status m_status; - WriteBarrier<Unknown> m_result; - WriteBarrier<JSPromiseConstructor> m_constructor; - Vector<WriteBarrier<JSPromiseReaction>> m_resolveReactions; - Vector<WriteBarrier<JSPromiseReaction>> m_rejectReactions; + void finishCreation(VM&); }; } // namespace JSC - -#endif // ENABLE(PROMISES) - -#endif // JSPromise_h |