X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/a253471d7f8e4d91bf6ebabab00155c3b387d3d0..93a3786624b2768d89bfa27e46598dc64e2fb70a:/runtime/GCActivityCallback.h diff --git a/runtime/GCActivityCallback.h b/runtime/GCActivityCallback.h index 4e0d967..80edaa7 100644 --- a/runtime/GCActivityCallback.h +++ b/runtime/GCActivityCallback.h @@ -29,6 +29,7 @@ #ifndef GCActivityCallback_h #define GCActivityCallback_h +#include "HeapTimer.h" #include #include @@ -40,54 +41,90 @@ namespace JSC { class Heap; -class GCActivityCallback { +class GCActivityCallback : public HeapTimer { + WTF_MAKE_FAST_ALLOCATED; public: - virtual ~GCActivityCallback() { } virtual void didAllocate(size_t) { } virtual void willCollect() { } - virtual void synchronize() { } virtual void cancel() { } - virtual void didStartVMShutdown() { } - virtual void invalidate() { } + bool isEnabled() const { return m_enabled; } + void setEnabled(bool enabled) { m_enabled = enabled; } +#if PLATFORM(IOS) static bool s_shouldCreateGCTimer; +#endif // PLATFORM(IOS) protected: - GCActivityCallback() {} -}; +#if USE(CF) + GCActivityCallback(VM* vm, CFRunLoopRef runLoop) + : HeapTimer(vm, runLoop) + , m_enabled(true) + { + } +#elif PLATFORM(EFL) + GCActivityCallback(VM* vm, bool flag) + : HeapTimer(vm) + , m_enabled(flag) + { + } +#else + GCActivityCallback(VM* vm) + : HeapTimer(vm) + , m_enabled(true) + { + } +#endif -struct DefaultGCActivityCallbackPlatformData; + bool m_enabled; +}; class DefaultGCActivityCallback : public GCActivityCallback { public: - static DefaultGCActivityCallback* create(Heap*); + static PassOwnPtr create(Heap*); DefaultGCActivityCallback(Heap*); - JS_EXPORT_PRIVATE virtual ~DefaultGCActivityCallback(); - +#if PLATFORM(IOS) JS_EXPORT_PRIVATE virtual void didAllocate(size_t); JS_EXPORT_PRIVATE virtual void willCollect(); - JS_EXPORT_PRIVATE virtual void synchronize(); JS_EXPORT_PRIVATE virtual void cancel(); - JS_EXPORT_PRIVATE virtual void didStartVMShutdown(); - JS_EXPORT_PRIVATE virtual void invalidate(); + + JS_EXPORT_PRIVATE virtual void doWork(); +#else + virtual void didAllocate(size_t); + virtual void willCollect(); + virtual void cancel(); + + virtual void doWork(); +#endif #if USE(CF) protected: +#if PLATFORM(IOS) JS_EXPORT_PRIVATE DefaultGCActivityCallback(Heap*, CFRunLoopRef); - void commonConstructor(Heap*, CFRunLoopRef); +#else + DefaultGCActivityCallback(Heap*, CFRunLoopRef); +#endif // PLATFORM(IOS) #endif +#if USE(CF) || PLATFORM(QT) || PLATFORM(EFL) +protected: + void cancelTimer(); + void scheduleTimer(double); private: - OwnPtr d; + double m_delay; +#endif }; -inline DefaultGCActivityCallback* DefaultGCActivityCallback::create(Heap* heap) +inline PassOwnPtr DefaultGCActivityCallback::create(Heap* heap) { +#if PLATFORM(IOS) // Big hack. if (GCActivityCallback::s_shouldCreateGCTimer) - return new DefaultGCActivityCallback(heap); - return 0; + return adoptPtr(new DefaultGCActivityCallback(heap)); + return nullptr; +#else + return adoptPtr(new DefaultGCActivityCallback(heap)); +#endif // PLATFORM(IOS) } }