From 2a0ab2aa9b07b99ce82564a01eeca3b666e91cf2 Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Mon, 22 Aug 2022 10:21:54 -0700 Subject: Fix build error --- src/bun.js/bindings/webcore/EventEmitter.h | 5 ++++- src/bun.js/bindings/webcore/IdentifierEventListenerMap.h | 11 +++++++++++ src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src/bun.js') diff --git a/src/bun.js/bindings/webcore/EventEmitter.h b/src/bun.js/bindings/webcore/EventEmitter.h index d6fd20c65..eb6fa2e77 100644 --- a/src/bun.js/bindings/webcore/EventEmitter.h +++ b/src/bun.js/bindings/webcore/EventEmitter.h @@ -76,8 +76,11 @@ public: const EventEmitterData* eventTargetData() const; + IdentifierEventListenerMap& eventListenerMap() { return ensureEventEmitterData().eventListenerMap; } + private: - EventEmitter(ScriptExecutionContext& context) : ContextDestructionObserver(&context) + EventEmitter(ScriptExecutionContext& context) + : ContextDestructionObserver(&context) { } diff --git a/src/bun.js/bindings/webcore/IdentifierEventListenerMap.h b/src/bun.js/bindings/webcore/IdentifierEventListenerMap.h index 34da21122..f2a60f0a1 100644 --- a/src/bun.js/bindings/webcore/IdentifierEventListenerMap.h +++ b/src/bun.js/bindings/webcore/IdentifierEventListenerMap.h @@ -56,6 +56,7 @@ public: WEBCORE_EXPORT SimpleEventListenerVector* find(const JSC::Identifier& eventType); const SimpleEventListenerVector* find(const JSC::Identifier& eventType) const { return const_cast(this)->find(eventType); } Vector eventTypes() const; + template void visitJSEventListeners(Visitor&); Lock& lock() { return m_lock; } @@ -64,4 +65,14 @@ private: Lock m_lock; }; +template +void IdentifierEventListenerMap::visitJSEventListeners(Visitor& visitor) +{ + Locker locker { m_lock }; + for (auto& entry : m_entries) { + for (auto& eventListener : entry.second) + eventListener->callback().visitJSFunction(visitor); + } +} + } // namespace WebCore diff --git a/src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp b/src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp index 53220536d..64ae6e1c8 100644 --- a/src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp +++ b/src/bun.js/bindings/webcore/JSEventEmitterCustom.cpp @@ -44,7 +44,7 @@ std::unique_ptr jsEventEmitterCast(VM& vm, JSC::JSGlobalO template void JSEventEmitter::visitAdditionalChildren(Visitor& visitor) { - wrapped().visitJSEventListeners(visitor); + wrapped().eventListenerMap().visitJSEventListeners(visitor); } DEFINE_VISIT_ADDITIONAL_CHILDREN(JSEventEmitter); -- cgit v1.2.3