| Index: chrome/renderer/render_thread.cc
 | 
| ===================================================================
 | 
| --- chrome/renderer/render_thread.cc	(revision 18344)
 | 
| +++ chrome/renderer/render_thread.cc	(working copy)
 | 
| @@ -8,8 +8,10 @@
 | 
|  #include <vector>
 | 
|  
 | 
|  #include "base/command_line.h"
 | 
| +#include "base/lazy_instance.h"
 | 
|  #include "base/shared_memory.h"
 | 
|  #include "base/stats_table.h"
 | 
| +#include "base/thread_local.h"
 | 
|  #include "chrome/common/app_cache/app_cache_context_impl.h"
 | 
|  #include "chrome/common/app_cache/app_cache_dispatcher.h"
 | 
|  #include "chrome/common/chrome_switches.h"
 | 
| @@ -57,6 +59,9 @@
 | 
|  
 | 
|  static const unsigned int kCacheStatsDelayMS = 2000 /* milliseconds */;
 | 
|  
 | 
| +static base::LazyInstance<base::ThreadLocalPointer<RenderThread> > lazy_tls(
 | 
| +    base::LINKER_INITIALIZED);
 | 
| +
 | 
|  //-----------------------------------------------------------------------------
 | 
|  // Methods below are only called on the owner's thread:
 | 
|  
 | 
| @@ -81,8 +86,7 @@
 | 
|  }
 | 
|  
 | 
|  RenderThread* RenderThread::current() {
 | 
| -  DCHECK(!IsPluginProcess());
 | 
| -  return static_cast<RenderThread*>(ChildThread::current());
 | 
| +  return lazy_tls.Pointer()->Get();
 | 
|  }
 | 
|  
 | 
|  void RenderThread::AddFilter(IPC::ChannelProxy::MessageFilter* filter) {
 | 
| @@ -128,6 +132,7 @@
 | 
|  #endif
 | 
|  
 | 
|  void RenderThread::Init() {
 | 
| +  lazy_tls.Pointer()->Set(this);
 | 
|  #if defined(OS_WIN)
 | 
|    // If you are running plugins in this thread you need COM active but in
 | 
|    // the normal case you don't.
 | 
| @@ -172,8 +177,8 @@
 | 
|    }
 | 
|  
 | 
|    notification_service_.reset();
 | 
| -
 | 
|    ChildThread::CleanUp();
 | 
| +  lazy_tls.Pointer()->Set(NULL);
 | 
|  
 | 
|    // TODO(port)
 | 
|  #if defined(OS_WIN)
 | 
| 
 |