diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index ee6130b..0cd5116 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -42,6 +42,11 @@
     static GrContext* Create(GrEngine engine,
                              GrPlatform3DContext context3D);
 
+    /**
+     * Returns the number of GrContext instances for the current thread.
+     */
+    static int GetThreadInstanceCount();
+
     virtual ~GrContext();
 
     /**
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 3cc2c89..5a0f689 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -24,6 +24,7 @@
 #include "GrStencilBuffer.h"
 #include "GrTextStrike.h"
 #include "SkTLazy.h"
+#include "SkTLS.h"
 #include "SkTrace.h"
 
 #define DEFER_TEXT_RENDERING 1
@@ -68,6 +69,23 @@
     return ctx;
 }
 
+namespace {
+void* CreateThreadInstanceCount() {
+    return new int(0);
+}
+void DeleteThreadInstanceCount(void* v) {
+    delete reinterpret_cast<int*>(v);
+}
+#define THREAD_INSTANCE_COUNT                                               \
+    (*reinterpret_cast<int*>(SkTLS::Get(CreateThreadInstanceCount,          \
+                                        DeleteThreadInstanceCount)))
+
+}
+
+int GrContext::GetThreadInstanceCount() {
+    return THREAD_INSTANCE_COUNT;
+}
+
 GrContext::~GrContext() {
     this->flush();
 
@@ -87,6 +105,8 @@
     GrSafeUnref(fPathRendererChain);
     GrSafeUnref(fSoftwarePathRenderer);
     fDrawState->unref();
+
+    --THREAD_INSTANCE_COUNT;
 }
 
 void GrContext::contextLost() {
@@ -1699,6 +1719,8 @@
 }
 
 GrContext::GrContext(GrGpu* gpu) {
+    ++THREAD_INSTANCE_COUNT;
+
     fGpu = gpu;
     fGpu->ref();
     fGpu->setContext(this);
