diff --git a/src/gpu/GrBatch.cpp b/src/gpu/GrBatch.cpp
index e1650a6..4df765e 100644
--- a/src/gpu/GrBatch.cpp
+++ b/src/gpu/GrBatch.cpp
@@ -1,35 +1,38 @@
 #include "GrBatch.h"
 
 #include "GrMemoryPool.h"
-#include "SkTLS.h"
+#include "SkMutex.h"
 
 // TODO I noticed a small benefit to using a larger exclusive pool for batches.  Its very small,
 // but seems to be mostly consistent.  There is a lot in flux right now, but we should really
 // revisit this when batch is everywhere
 
-class GrBatch_Globals {
+
+// We use a global pool protected by a mutex. Chrome may use the same GrContext on different
+// threads. The GrContext is not used concurrently on different threads and there is a memory
+// barrier between accesses of a context on different threads. Also, there may be multiple
+// GrContexts and those contexts may be in use concurrently on different threads.
+namespace {
+SK_DECLARE_STATIC_MUTEX(gBatchPoolMutex);
+class MemoryPoolAccessor {
 public:
-    static GrMemoryPool* GetTLS() {
-        return (GrMemoryPool*)SkTLS::Get(CreateTLS, DeleteTLS);
-    }
+    MemoryPoolAccessor() { gBatchPoolMutex.acquire(); }
 
-private:
-    static void* CreateTLS() {
-        return SkNEW_ARGS(GrMemoryPool, (16384, 16384));
-    }
+    ~MemoryPoolAccessor() { gBatchPoolMutex.release(); }
 
-    static void DeleteTLS(void* pool) {
-        SkDELETE(reinterpret_cast<GrMemoryPool*>(pool));
+    GrMemoryPool* pool() const {
+        static GrMemoryPool gPool(16384, 16384);
+        return &gPool;
     }
 };
+}
 
-int32_t GrBatch::gCurrBatchClassID =
-        GrBatch::kIllegalBatchClassID;
+int32_t GrBatch::gCurrBatchClassID = GrBatch::kIllegalBatchClassID;
 
 void* GrBatch::operator new(size_t size) {
-    return GrBatch_Globals::GetTLS()->allocate(size);
+    return MemoryPoolAccessor().pool()->allocate(size);
 }
 
 void GrBatch::operator delete(void* target) {
-    GrBatch_Globals::GetTLS()->release(target);
+    return MemoryPoolAccessor().pool()->release(target);
 }
