Experiment: use TCMalloc for Blink WTF FastMalloc.

This is a temporary CL. It is intended to be reverted
soon (1 day) and it's only purpose is collecting some
experimental data on the pagecycler dashboard.

BUG: 10431702

Change-Id: Ibce40d28a28cff20303869f8a690a1d6155747a4
diff --git a/Source/config.h b/Source/config.h
index bf664ff..95df9bd 100644
--- a/Source/config.h
+++ b/Source/config.h
@@ -107,6 +107,12 @@
 #define WTF_USE_SYSTEM_MALLOC 1
 #endif /* OS(MACOSX) */
 
+/* Experimental: evaluate use of TCMalloc on Android (which does NOT have TCMalloc by default) */
+#if OS(ANDROID)
+#undef WTF_USE_SYSTEM_MALLOC
+#define HAVE_MADV_DONTNEED 1
+#endif
+
 #if OS(POSIX)
 #define HAVE_MMAP 1
 #define HAVE_SIGNAL_H 1
diff --git a/Source/wtf/FastMalloc.cpp b/Source/wtf/FastMalloc.cpp
index 9c524f9..6651a89 100644
--- a/Source/wtf/FastMalloc.cpp
+++ b/Source/wtf/FastMalloc.cpp
@@ -343,6 +343,8 @@
     {
 #if OS(MACOSX)
         return arc4random();
+#elif OS(ANDROID)
+        return static_cast<uint32_t>(random());
 #else
         return static_cast<uint32_t>(static_cast<uintptr_t>(currentTime() * 10000) ^ reinterpret_cast<uintptr_t>(&kLLHardeningMask));
 #endif
diff --git a/Source/wtf/wtf.gyp b/Source/wtf/wtf.gyp
index 2c04f12..bac2704 100644
--- a/Source/wtf/wtf.gyp
+++ b/Source/wtf/wtf.gyp
@@ -155,6 +155,11 @@
             ['exclude', 'TC.*\\.(cpp|h)$'],
           ],
         }],
+        ['OS=="android"', {
+          'sources/': [
+            ['include', 'TC.*\\.(cpp|h)$'],
+          ],
+        }],
       ],
     },
   ]
diff --git a/Source/wtf/wtf.target.darwin-arm.mk b/Source/wtf/wtf.target.darwin-arm.mk
index d0b0d39..97d6c93 100644
--- a/Source/wtf/wtf.target.darwin-arm.mk
+++ b/Source/wtf/wtf.target.darwin-arm.mk
@@ -77,6 +77,7 @@
 	third_party/WebKit/Source/wtf/RefCountedLeakCounter.cpp \
 	third_party/WebKit/Source/wtf/SHA1.cpp \
 	third_party/WebKit/Source/wtf/SizeLimits.cpp \
+	third_party/WebKit/Source/wtf/TCSystemAlloc.cpp \
 	third_party/WebKit/Source/wtf/ThreadIdentifierDataPthreads.cpp \
 	third_party/WebKit/Source/wtf/Threading.cpp \
 	third_party/WebKit/Source/wtf/ThreadingPthreads.cpp \
diff --git a/Source/wtf/wtf.target.darwin-mips.mk b/Source/wtf/wtf.target.darwin-mips.mk
index 59e3ac7..cab7684 100644
--- a/Source/wtf/wtf.target.darwin-mips.mk
+++ b/Source/wtf/wtf.target.darwin-mips.mk
@@ -77,6 +77,7 @@
 	third_party/WebKit/Source/wtf/RefCountedLeakCounter.cpp \
 	third_party/WebKit/Source/wtf/SHA1.cpp \
 	third_party/WebKit/Source/wtf/SizeLimits.cpp \
+	third_party/WebKit/Source/wtf/TCSystemAlloc.cpp \
 	third_party/WebKit/Source/wtf/ThreadIdentifierDataPthreads.cpp \
 	third_party/WebKit/Source/wtf/Threading.cpp \
 	third_party/WebKit/Source/wtf/ThreadingPthreads.cpp \
diff --git a/Source/wtf/wtf.target.darwin-x86.mk b/Source/wtf/wtf.target.darwin-x86.mk
index c3da494..3510909 100644
--- a/Source/wtf/wtf.target.darwin-x86.mk
+++ b/Source/wtf/wtf.target.darwin-x86.mk
@@ -77,6 +77,7 @@
 	third_party/WebKit/Source/wtf/RefCountedLeakCounter.cpp \
 	third_party/WebKit/Source/wtf/SHA1.cpp \
 	third_party/WebKit/Source/wtf/SizeLimits.cpp \
+	third_party/WebKit/Source/wtf/TCSystemAlloc.cpp \
 	third_party/WebKit/Source/wtf/ThreadIdentifierDataPthreads.cpp \
 	third_party/WebKit/Source/wtf/Threading.cpp \
 	third_party/WebKit/Source/wtf/ThreadingPthreads.cpp \
diff --git a/Source/wtf/wtf.target.linux-arm.mk b/Source/wtf/wtf.target.linux-arm.mk
index d0b0d39..97d6c93 100644
--- a/Source/wtf/wtf.target.linux-arm.mk
+++ b/Source/wtf/wtf.target.linux-arm.mk
@@ -77,6 +77,7 @@
 	third_party/WebKit/Source/wtf/RefCountedLeakCounter.cpp \
 	third_party/WebKit/Source/wtf/SHA1.cpp \
 	third_party/WebKit/Source/wtf/SizeLimits.cpp \
+	third_party/WebKit/Source/wtf/TCSystemAlloc.cpp \
 	third_party/WebKit/Source/wtf/ThreadIdentifierDataPthreads.cpp \
 	third_party/WebKit/Source/wtf/Threading.cpp \
 	third_party/WebKit/Source/wtf/ThreadingPthreads.cpp \
diff --git a/Source/wtf/wtf.target.linux-mips.mk b/Source/wtf/wtf.target.linux-mips.mk
index 59e3ac7..cab7684 100644
--- a/Source/wtf/wtf.target.linux-mips.mk
+++ b/Source/wtf/wtf.target.linux-mips.mk
@@ -77,6 +77,7 @@
 	third_party/WebKit/Source/wtf/RefCountedLeakCounter.cpp \
 	third_party/WebKit/Source/wtf/SHA1.cpp \
 	third_party/WebKit/Source/wtf/SizeLimits.cpp \
+	third_party/WebKit/Source/wtf/TCSystemAlloc.cpp \
 	third_party/WebKit/Source/wtf/ThreadIdentifierDataPthreads.cpp \
 	third_party/WebKit/Source/wtf/Threading.cpp \
 	third_party/WebKit/Source/wtf/ThreadingPthreads.cpp \
diff --git a/Source/wtf/wtf.target.linux-x86.mk b/Source/wtf/wtf.target.linux-x86.mk
index c3da494..3510909 100644
--- a/Source/wtf/wtf.target.linux-x86.mk
+++ b/Source/wtf/wtf.target.linux-x86.mk
@@ -77,6 +77,7 @@
 	third_party/WebKit/Source/wtf/RefCountedLeakCounter.cpp \
 	third_party/WebKit/Source/wtf/SHA1.cpp \
 	third_party/WebKit/Source/wtf/SizeLimits.cpp \
+	third_party/WebKit/Source/wtf/TCSystemAlloc.cpp \
 	third_party/WebKit/Source/wtf/ThreadIdentifierDataPthreads.cpp \
 	third_party/WebKit/Source/wtf/Threading.cpp \
 	third_party/WebKit/Source/wtf/ThreadingPthreads.cpp \