Cherry pick http://codereview.chromium.org/1207003/show

Implement support for reattaching a global object to a context. This
can be used to use the same global object for different contexts at
different points in time.

Needed to fix b: 2533219

Change-Id: Ib3b0d35f6ce3e0a5f4b8e54561ba2e99a9ab0ab1
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
index 6e565e0..225865c 100644
--- a/src/bootstrapper.cc
+++ b/src/bootstrapper.cc
@@ -315,6 +315,17 @@
 }
 
 
+void Bootstrapper::ReattachGlobal(Handle<Context> env,
+                                  Handle<Object> global_object) {
+  ASSERT(global_object->IsJSGlobalProxy());
+  Handle<JSGlobalProxy> global = Handle<JSGlobalProxy>::cast(global_object);
+  env->global()->set_global_receiver(*global);
+  env->set_global_proxy(*global);
+  SetObjectPrototype(global, Handle<JSObject>(env->global()));
+  global->set_context(*env);
+}
+
+
 static Handle<JSFunction> InstallFunction(Handle<JSObject> target,
                                           const char* name,
                                           InstanceType type,