| Index: content/browser/frame_host/frame_tree.cc
 | 
| diff --git a/content/browser/frame_host/frame_tree.cc b/content/browser/frame_host/frame_tree.cc
 | 
| index e463c3ce2b0e2db75eff7cf3dd8272365901efc0..814980e527e1b3691dfb50c7c99fed8202bb7a80 100644
 | 
| --- a/content/browser/frame_host/frame_tree.cc
 | 
| +++ b/content/browser/frame_host/frame_tree.cc
 | 
| @@ -8,6 +8,7 @@
 | 
|  
 | 
|  #include "base/bind.h"
 | 
|  #include "base/callback.h"
 | 
| +#include "base/command_line.h"
 | 
|  #include "base/containers/hash_tables.h"
 | 
|  #include "base/lazy_instance.h"
 | 
|  #include "content/browser/frame_host/frame_tree_node.h"
 | 
| @@ -17,6 +18,7 @@
 | 
|  #include "content/browser/frame_host/render_frame_proxy_host.h"
 | 
|  #include "content/browser/renderer_host/render_view_host_factory.h"
 | 
|  #include "content/browser/renderer_host/render_view_host_impl.h"
 | 
| +#include "content/public/common/content_switches.h"
 | 
|  #include "third_party/WebKit/public/web/WebSandboxFlags.h"
 | 
|  
 | 
|  namespace content {
 | 
| @@ -226,9 +228,14 @@ void FrameTree::CreateProxiesForSiteInstance(
 | 
|      RenderViewHostImpl* render_view_host =
 | 
|          source->frame_tree()->GetRenderViewHost(site_instance);
 | 
|      if (!render_view_host) {
 | 
| -      root()->render_manager()->CreateRenderFrame(
 | 
| -          site_instance, nullptr, MSG_ROUTING_NONE,
 | 
| -          CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, nullptr);
 | 
| +      if (base::CommandLine::ForCurrentProcess()->HasSwitch(
 | 
| +            switches::kSitePerProcess)) {
 | 
| +        root()->render_manager()->CreateRenderFrameProxy(site_instance);
 | 
| +      } else {
 | 
| +        root()->render_manager()->CreateRenderFrame(
 | 
| +            site_instance, nullptr, MSG_ROUTING_NONE,
 | 
| +            CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, nullptr);
 | 
| +      }
 | 
|      } else {
 | 
|        root()->render_manager()->EnsureRenderViewInitialized(
 | 
|            source, render_view_host, site_instance);
 | 
| @@ -265,7 +272,6 @@ RenderViewHostImpl* FrameTree::CreateRenderViewHost(SiteInstance* site_instance,
 | 
|                                                      int main_frame_routing_id,
 | 
|                                                      bool swapped_out,
 | 
|                                                      bool hidden) {
 | 
| -  DCHECK(main_frame_routing_id != MSG_ROUTING_NONE);
 | 
|    RenderViewHostMap::iterator iter =
 | 
|        render_view_host_map_.find(site_instance->GetId());
 | 
|    if (iter != render_view_host_map_.end()) {
 | 
| @@ -274,7 +280,8 @@ RenderViewHostImpl* FrameTree::CreateRenderViewHost(SiteInstance* site_instance,
 | 
|      // Otherwise return the existing RenderViewHost for the SiteInstance.
 | 
|      RenderFrameHostImpl* main_frame = static_cast<RenderFrameHostImpl*>(
 | 
|          iter->second->GetMainFrame());
 | 
| -    if (main_frame->frame_tree_node()->render_manager()->IsPendingDeletion(
 | 
| +    if (main_frame &&
 | 
| +        main_frame->frame_tree_node()->render_manager()->IsPendingDeletion(
 | 
|              main_frame)) {
 | 
|        render_view_host_pending_shutdown_map_.insert(
 | 
|            std::pair<int, RenderViewHostImpl*>(site_instance->GetId(),
 | 
| 
 |