From ef2c9c330c1cf6a79a27d9ce06af1bdc7b5b18b6 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Mon, 10 Oct 2022 20:27:04 -0700 Subject: Process inherits from EventEmitter --- src/bun.js/bindings/Process.h | 23 ++++++++++------------- src/bun.js/bindings/ZigGlobalObject.cpp | 3 ++- 2 files changed, 12 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/bun.js/bindings/Process.h b/src/bun.js/bindings/Process.h index a710edbad..2952cfb7d 100644 --- a/src/bun.js/bindings/Process.h +++ b/src/bun.js/bindings/Process.h @@ -4,29 +4,25 @@ #include "BunBuiltinNames.h" #include "BunClientData.h" +#include "JSEventEmitter.h" namespace Zig { using namespace JSC; -class Process : public JSC::JSNonFinalObject { - using Base = JSC::JSNonFinalObject; +class Process : public WebCore::JSEventEmitter { + using Base = WebCore::JSEventEmitter; public: - Process(JSC::VM& vm, JSC::Structure* structure) - : Base(vm, structure) + Process(JSC::Structure* structure, WebCore::JSDOMGlobalObject& globalObject, Ref&& impl) + : Base(structure, globalObject, WTFMove(impl)) { } - DECLARE_INFO; + DECLARE_EXPORT_INFO; static constexpr unsigned StructureFlags = Base::StructureFlags; - template static GCClient::IsoSubspace* subspaceFor(VM& vm) - { - return &vm.plainObjectSpace(); - } - static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) { @@ -34,10 +30,11 @@ public: JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } - static Process* create(JSC::VM& vm, JSC::Structure* structure) + static Process* create(WebCore::JSDOMGlobalObject& globalObject, JSC::Structure* structure) { - Process* accessor = new (NotNull, JSC::allocateCell(vm)) Process(vm, structure); - accessor->finishCreation(vm); + auto emitter = WebCore::EventEmitter::create(*globalObject.scriptExecutionContext()); + Process* accessor = new (NotNull, JSC::allocateCell(globalObject.vm())) Process(structure, globalObject, WTFMove(emitter)); + accessor->finishCreation(globalObject.vm()); return accessor; } diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 0d0ec1128..85b3c27ee 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -1993,8 +1993,9 @@ void GlobalObject::finishCreation(VM& vm) m_processObject.initLater( [](const JSC::LazyProperty::Initializer& init) { + Zig::GlobalObject* globalObject = reinterpret_cast(init.owner); auto* process = Zig::Process::create( - init.vm, Zig::Process::createStructure(init.vm, init.owner, init.owner->objectPrototype())); + *globalObject, Zig::Process::createStructure(init.vm, init.owner, WebCore::JSEventEmitter::prototype(init.vm, *globalObject))); process->putDirectCustomAccessor(init.vm, JSC::Identifier::fromString(init.vm, "env"_s), JSC::CustomGetterSetter::create(init.vm, lazyProcessEnvGetter, lazyProcessEnvSetter), JSC::PropertyAttribute::DontDelete -- cgit v1.2.3