aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/ZigGlobalObject.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/javascript/jsc/bindings/ZigGlobalObject.h')
-rw-r--r--src/javascript/jsc/bindings/ZigGlobalObject.h146
1 files changed, 78 insertions, 68 deletions
diff --git a/src/javascript/jsc/bindings/ZigGlobalObject.h b/src/javascript/jsc/bindings/ZigGlobalObject.h
index 48f5a1a02..edc250ecb 100644
--- a/src/javascript/jsc/bindings/ZigGlobalObject.h
+++ b/src/javascript/jsc/bindings/ZigGlobalObject.h
@@ -19,77 +19,87 @@ class Identifier;
namespace Zig {
class GlobalObject : public JSC::JSGlobalObject {
- using Base = JSC::JSGlobalObject;
-
- public:
- DECLARE_EXPORT_INFO;
- static const JSC::GlobalObjectMethodTable s_globalObjectMethodTable;
- Zig::Process *m_process;
- static constexpr bool needsDestruction = true;
- template <typename CellType, JSC::SubspaceAccess mode>
- static GCClient::IsoSubspace *subspaceFor(VM &vm) {
- return vm.globalObjectSpace<mode>();
- }
-
- static GlobalObject *create(JSC::VM &vm, JSC::Structure *structure) {
- auto *object = new (NotNull, JSC::allocateCell<GlobalObject>(vm)) GlobalObject(vm, structure);
- object->finishCreation(vm);
- return object;
- }
-
- static JSC::Structure *createStructure(JSC::VM &vm, JSC::JSValue prototype) {
- auto *result = JSC::Structure::create(
- vm, nullptr, prototype, JSC::TypeInfo(JSC::GlobalObjectType, Base::StructureFlags), info());
- result->setTransitionWatchpointIsLikelyToBeFired(true);
- return result;
- }
-
- static void reportUncaughtExceptionAtEventLoop(JSGlobalObject *, JSC::Exception *);
-
- static void queueMicrotaskToEventLoop(JSC::JSGlobalObject &global, Ref<JSC::Microtask> &&task);
- static JSC::JSInternalPromise *moduleLoaderImportModule(JSGlobalObject *, JSC::JSModuleLoader *,
- JSC::JSString *moduleNameValue,
- JSC::JSValue parameters,
- const JSC::SourceOrigin &);
- static JSC::Identifier moduleLoaderResolve(JSGlobalObject *, JSC::JSModuleLoader *,
- JSC::JSValue keyValue, JSC::JSValue referrerValue,
- JSC::JSValue);
- static JSC::JSInternalPromise *moduleLoaderFetch(JSGlobalObject *, JSC::JSModuleLoader *,
- JSC::JSValue, JSC::JSValue, JSC::JSValue);
- static JSC::JSObject *moduleLoaderCreateImportMetaProperties(JSGlobalObject *,
- JSC::JSModuleLoader *, JSC::JSValue,
- JSC::JSModuleRecord *, JSC::JSValue);
- static JSC::JSValue moduleLoaderEvaluate(JSGlobalObject *, JSC::JSModuleLoader *, JSC::JSValue,
- JSC::JSValue, JSC::JSValue, JSC::JSValue, JSC::JSValue);
- static void promiseRejectionTracker(JSGlobalObject *, JSC::JSPromise *,
- JSC::JSPromiseRejectionOperation);
- void setConsole(void *console);
- void installAPIGlobals(JSClassRef *globals, int count);
-
- private:
- GlobalObject(JSC::VM &vm, JSC::Structure *structure)
- : JSC::JSGlobalObject(vm, structure, &s_globalObjectMethodTable) {}
+ using Base = JSC::JSGlobalObject;
+
+public:
+ DECLARE_EXPORT_INFO;
+ static const JSC::GlobalObjectMethodTable s_globalObjectMethodTable;
+ Zig::Process* m_process;
+ static constexpr bool needsDestruction = true;
+ template<typename CellType, JSC::SubspaceAccess mode>
+ static GCClient::IsoSubspace* subspaceFor(VM& vm)
+ {
+ return vm.globalObjectSpace<mode>();
+ }
+
+ static GlobalObject* create(JSC::VM& vm, JSC::Structure* structure)
+ {
+ auto* object = new (NotNull, JSC::allocateCell<GlobalObject>(vm)) GlobalObject(vm, structure);
+ object->finishCreation(vm);
+ return object;
+ }
+
+ static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSValue prototype)
+ {
+ auto* result = JSC::Structure::create(
+ vm, nullptr, prototype, JSC::TypeInfo(JSC::GlobalObjectType, Base::StructureFlags), info());
+ result->setTransitionWatchpointIsLikelyToBeFired(true);
+ return result;
+ }
+
+ static void reportUncaughtExceptionAtEventLoop(JSGlobalObject*, JSC::Exception*);
+
+ static void queueMicrotaskToEventLoop(JSC::JSGlobalObject& global, Ref<JSC::Microtask>&& task);
+ static JSC::JSInternalPromise* moduleLoaderImportModule(JSGlobalObject*, JSC::JSModuleLoader*,
+ JSC::JSString* moduleNameValue,
+ JSC::JSValue parameters,
+ const JSC::SourceOrigin&);
+ static JSC::Identifier moduleLoaderResolve(JSGlobalObject*, JSC::JSModuleLoader*,
+ JSC::JSValue keyValue, JSC::JSValue referrerValue,
+ JSC::JSValue);
+ static JSC::JSInternalPromise* moduleLoaderFetch(JSGlobalObject*, JSC::JSModuleLoader*,
+ JSC::JSValue, JSC::JSValue, JSC::JSValue);
+ static JSC::JSObject* moduleLoaderCreateImportMetaProperties(JSGlobalObject*,
+ JSC::JSModuleLoader*, JSC::JSValue,
+ JSC::JSModuleRecord*, JSC::JSValue);
+ static JSC::JSValue moduleLoaderEvaluate(JSGlobalObject*, JSC::JSModuleLoader*, JSC::JSValue,
+ JSC::JSValue, JSC::JSValue, JSC::JSValue, JSC::JSValue);
+ static void promiseRejectionTracker(JSGlobalObject*, JSC::JSPromise*,
+ JSC::JSPromiseRejectionOperation);
+ void setConsole(void* console);
+ void installAPIGlobals(JSClassRef* globals, int count);
+
+private:
+ GlobalObject(JSC::VM& vm, JSC::Structure* structure)
+ : JSC::JSGlobalObject(vm, structure, &s_globalObjectMethodTable)
+ {
+ }
};
class JSMicrotaskCallback : public RefCounted<JSMicrotaskCallback> {
- public:
- static Ref<JSMicrotaskCallback> create(JSC::JSGlobalObject &globalObject,
- Ref<JSC::Microtask> &&task) {
- return adoptRef(*new JSMicrotaskCallback(globalObject, WTFMove(task).leakRef()));
- }
-
- void call() {
- JSC::VM &vm = m_globalObject->vm();
- auto task = &m_task.get();
- task->run(m_globalObject.get());
- }
-
- private:
- JSMicrotaskCallback(JSC::JSGlobalObject &globalObject, Ref<JSC::Microtask> &&task)
- : m_globalObject{globalObject.vm(), &globalObject}, m_task{WTFMove(task)} {}
-
- JSC::Strong<JSC::JSGlobalObject> m_globalObject;
- Ref<JSC::Microtask> m_task;
+public:
+ static Ref<JSMicrotaskCallback> create(JSC::JSGlobalObject& globalObject,
+ Ref<JSC::Microtask>&& task)
+ {
+ return adoptRef(*new JSMicrotaskCallback(globalObject, WTFMove(task).leakRef()));
+ }
+
+ void call()
+ {
+ JSC::VM& vm = m_globalObject->vm();
+ auto task = &m_task.get();
+ task->run(m_globalObject.get());
+ }
+
+private:
+ JSMicrotaskCallback(JSC::JSGlobalObject& globalObject, Ref<JSC::Microtask>&& task)
+ : m_globalObject { globalObject.vm(), &globalObject }
+ , m_task { WTFMove(task) }
+ {
+ }
+
+ JSC::Strong<JSC::JSGlobalObject> m_globalObject;
+ Ref<JSC::Microtask> m_task;
};
} // namespace Zig