summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/runtime/JSPromise.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/runtime/JSPromise.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/JavaScriptCore/runtime/JSPromise.h')
-rw-r--r--Source/JavaScriptCore/runtime/JSPromise.h68
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