[Chromium] fastMalloc has an extra branch on Windows
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 27 Nov 2012 07:34:15 +0000 (07:34 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 27 Nov 2012 07:34:15 +0000 (07:34 +0000)
https://bugs.webkit.org/show_bug.cgi?id=103027

Reviewed by Eric Seidel.

There's no need to override the new/delete operators on non-Mac
platform because:

1) We use the system malloc anyway.
2) We've modified the system malloc to crash in out-of-memory conditions.

This patch removes a branch (and a call) from malloc, which will
hopefully improve performance. I haven't measured the performance
characteristics of this patch, but I will look at the graphs closely
when landing.

* wtf/FastAllocBase.h:
* wtf/Platform.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@135828 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/FastAllocBase.h
Source/WTF/wtf/Platform.h

index e0ba382..71be15e 100644 (file)
@@ -1,3 +1,24 @@
+2012-11-26  Adam Barth  <abarth@webkit.org>
+
+        [Chromium] fastMalloc has an extra branch on Windows
+        https://bugs.webkit.org/show_bug.cgi?id=103027
+
+        Reviewed by Eric Seidel.
+
+        There's no need to override the new/delete operators on non-Mac
+        platform because:
+
+        1) We use the system malloc anyway.
+        2) We've modified the system malloc to crash in out-of-memory conditions.
+
+        This patch removes a branch (and a call) from malloc, which will
+        hopefully improve performance. I haven't measured the performance
+        characteristics of this patch, but I will look at the graphs closely
+        when landing.
+
+        * wtf/FastAllocBase.h:
+        * wtf/Platform.h:
+
 2012-11-26  Filip Pizlo  <fpizlo@apple.com>
 
         DataLog to a file should work if there are multiple processes using WTF
index a0804ad..ac6aaf9 100644 (file)
@@ -93,6 +93,8 @@
 #include <wtf/StdLibExtras.h>
 #include <wtf/TypeTraits.h>
 
+#if ENABLE(PER_OBJECT_FASTMALLOC_NEW)
+
 #define WTF_MAKE_FAST_ALLOCATED \
 public: \
     void* operator new(size_t, void* p) { return p; } \
@@ -131,6 +133,14 @@ public: \
 private: \
 typedef int __thisIsHereToForceASemicolonAfterThisMacro
 
+#else // !ENABLE(PER_OBJECT_FASTMALLOC_NEW)
+
+#define WTF_MAKE_FAST_ALLOCATED \
+private: \
+typedef int __thisIsHereToForceASemicolonAfterThisMacro
+
+#endif
+
 namespace WTF {
 
     // fastNew / fastDelete
index 1603019..76d3122 100644 (file)
 #endif
 
 #if PLATFORM(CHROMIUM)
-#if OS(DARWIN)
 /* We can't override the global operator new and delete on OS(DARWIN) because
- * some object are allocated by WebKit and deallocated by the embedder. */
-#define ENABLE_GLOBAL_FASTMALLOC_NEW 0
-#else /* !OS(DARWIN) */
-/* On non-OS(DARWIN), the "system malloc" is actually TCMalloc anyway, so there's
+ * some object are allocated by WebKit and deallocated by the embedder. 
+ *
+ * On non-OS(DARWIN), the "system malloc" is actually TCMalloc anyway, so there's
  * no need to use WebKit's copy of TCMalloc. */
+#define ENABLE_GLOBAL_FASTMALLOC_NEW 0
+#if !OS(DARWIN)
+#define ENABLE_PER_OBJECT_FASTMALLOC_NEW 0
 #define USE_SYSTEM_MALLOC 1
-#endif /* OS(DARWIN) */
+#endif /* !OS(DARWIN) */
 #endif /* PLATFORM(CHROMIUM) */
 
 #if PLATFORM(IOS)
 #define ENABLE_GLOBAL_FASTMALLOC_NEW 1
 #endif
 
+#if !defined(ENABLE_PER_OBJECT_FASTMALLOC_NEW)
+#define ENABLE_PER_OBJECT_FASTMALLOC_NEW 1
+#endif
+
 #if !defined(ENABLE_PARSED_STYLE_SHEET_CACHING)
 #define ENABLE_PARSED_STYLE_SHEET_CACHING 1
 #endif