summaryrefslogtreecommitdiff
path: root/Source/WebCore/bindings/js/GCController.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/WebCore/bindings/js/GCController.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/bindings/js/GCController.h')
-rw-r--r--Source/WebCore/bindings/js/GCController.h53
1 files changed, 23 insertions, 30 deletions
diff --git a/Source/WebCore/bindings/js/GCController.h b/Source/WebCore/bindings/js/GCController.h
index 7db5c3058..b948c3968 100644
--- a/Source/WebCore/bindings/js/GCController.h
+++ b/Source/WebCore/bindings/js/GCController.h
@@ -10,10 +10,10 @@
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
@@ -23,43 +23,36 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef GCController_h
-#define GCController_h
+#pragma once
-#if USE(CF)
-#include <wtf/FastMalloc.h>
+#include <heap/DeleteAllCodeEffort.h>
+#include <wtf/Forward.h>
#include <wtf/Noncopyable.h>
-#else
#include "Timer.h"
-#endif
namespace WebCore {
- class GCController {
- WTF_MAKE_NONCOPYABLE(GCController); WTF_MAKE_FAST_ALLOCATED;
- friend GCController& gcController();
+class GCController {
+ WTF_MAKE_NONCOPYABLE(GCController);
+ friend class WTF::NeverDestroyed<GCController>;
+public:
+ WEBCORE_EXPORT static GCController& singleton();
- public:
- void garbageCollectSoon();
- void garbageCollectNow(); // It's better to call garbageCollectSoon, unless you have a specific reason not to.
+ WEBCORE_EXPORT void garbageCollectSoon();
+ WEBCORE_EXPORT void garbageCollectNow(); // It's better to call garbageCollectSoon, unless you have a specific reason not to.
+ WEBCORE_EXPORT void garbageCollectNowIfNotDoneRecently();
+ void garbageCollectOnNextRunLoop();
- void garbageCollectOnAlternateThreadForDebugging(bool waitUntilDone); // Used for stress testing.
- void releaseExecutableMemory();
- void setJavaScriptGarbageCollectorTimerEnabled(bool);
- void discardAllCompiledCode();
+ WEBCORE_EXPORT void garbageCollectOnAlternateThreadForDebugging(bool waitUntilDone); // Used for stress testing.
+ WEBCORE_EXPORT void setJavaScriptGarbageCollectorTimerEnabled(bool);
+ WEBCORE_EXPORT void deleteAllCode(JSC::DeleteAllCodeEffort);
+ WEBCORE_EXPORT void deleteAllLinkedCode(JSC::DeleteAllCodeEffort);
- private:
- GCController(); // Use gcController() instead
+private:
+ GCController(); // Use singleton() instead.
-#if !USE(CF)
- void gcTimerFired(Timer<GCController>*);
- Timer<GCController> m_GCTimer;
-#endif
- };
-
- // Function to obtain the global GC controller.
- GCController& gcController() PURE_FUNCTION;
+ void gcTimerFired();
+ Timer m_GCTimer;
+};
} // namespace WebCore
-
-#endif // GCController_h