| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 Factory* factory = object->GetIsolate()->factory(); | 320 Factory* factory = object->GetIsolate()->factory(); |
| 321 Handle<Map> old_to_map = Handle<Map>(object->map()); | 321 Handle<Map> old_to_map = Handle<Map>(object->map()); |
| 322 Handle<Map> new_to_map = factory->CopyMap(old_to_map); | 322 Handle<Map> new_to_map = factory->CopyMap(old_to_map); |
| 323 new_to_map->set_prototype(*proto); | 323 new_to_map->set_prototype(*proto); |
| 324 object->set_map(*new_to_map); | 324 object->set_map(*new_to_map); |
| 325 } | 325 } |
| 326 | 326 |
| 327 | 327 |
| 328 void Bootstrapper::DetachGlobal(Handle<Context> env) { | 328 void Bootstrapper::DetachGlobal(Handle<Context> env) { |
| 329 Factory* factory = env->GetIsolate()->factory(); | 329 Factory* factory = env->GetIsolate()->factory(); |
| 330 JSGlobalProxy::cast(env->global_proxy())-> | 330 Handle<JSGlobalProxy> global_proxy(JSGlobalProxy::cast(env->global_proxy())); |
| 331 set_native_context(*factory->null_value()); | 331 global_proxy->set_native_context(*factory->null_value()); |
| 332 SetObjectPrototype(Handle<JSObject>(env->global_proxy()), | 332 SetObjectPrototype(global_proxy, factory->null_value()); |
| 333 factory->null_value()); | |
| 334 env->set_global_proxy(env->global_object()); | 333 env->set_global_proxy(env->global_object()); |
| 335 env->global_object()->set_global_receiver(env->global_object()); | 334 env->global_object()->set_global_receiver(env->global_object()); |
| 336 } | 335 } |
| 337 | 336 |
| 338 | 337 |
| 339 void Bootstrapper::ReattachGlobal(Handle<Context> env, | 338 void Bootstrapper::ReattachGlobal(Handle<Context> env, |
| 340 Handle<Object> global_object) { | 339 Handle<JSGlobalProxy> global_proxy) { |
| 341 ASSERT(global_object->IsJSGlobalProxy()); | 340 env->global_object()->set_global_receiver(*global_proxy); |
| 342 Handle<JSGlobalProxy> global = Handle<JSGlobalProxy>::cast(global_object); | 341 env->set_global_proxy(*global_proxy); |
| 343 env->global_object()->set_global_receiver(*global); | 342 SetObjectPrototype(global_proxy, Handle<JSObject>(env->global_object())); |
| 344 env->set_global_proxy(*global); | 343 global_proxy->set_native_context(*env); |
| 345 SetObjectPrototype(global, Handle<JSObject>(env->global_object())); | |
| 346 global->set_native_context(*env); | |
| 347 } | 344 } |
| 348 | 345 |
| 349 | 346 |
| 350 static Handle<JSFunction> InstallFunction(Handle<JSObject> target, | 347 static Handle<JSFunction> InstallFunction(Handle<JSObject> target, |
| 351 const char* name, | 348 const char* name, |
| 352 InstanceType type, | 349 InstanceType type, |
| 353 int instance_size, | 350 int instance_size, |
| 354 Handle<JSObject> prototype, | 351 Handle<JSObject> prototype, |
| 355 Builtins::Name call, | 352 Builtins::Name call, |
| 356 bool is_ecma_native) { | 353 bool is_ecma_native) { |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 return Handle<JSGlobalProxy>::cast( | 787 return Handle<JSGlobalProxy>::cast( |
| 791 factory()->NewJSObject(global_proxy_function, TENURED)); | 788 factory()->NewJSObject(global_proxy_function, TENURED)); |
| 792 } | 789 } |
| 793 } | 790 } |
| 794 | 791 |
| 795 | 792 |
| 796 void Genesis::HookUpGlobalProxy(Handle<GlobalObject> inner_global, | 793 void Genesis::HookUpGlobalProxy(Handle<GlobalObject> inner_global, |
| 797 Handle<JSGlobalProxy> global_proxy) { | 794 Handle<JSGlobalProxy> global_proxy) { |
| 798 // Set the native context for the global object. | 795 // Set the native context for the global object. |
| 799 inner_global->set_native_context(*native_context()); | 796 inner_global->set_native_context(*native_context()); |
| 797 inner_global->set_global_context(*native_context()); |
| 800 inner_global->set_global_receiver(*global_proxy); | 798 inner_global->set_global_receiver(*global_proxy); |
| 801 global_proxy->set_native_context(*native_context()); | 799 global_proxy->set_native_context(*native_context()); |
| 802 native_context()->set_global_proxy(*global_proxy); | 800 native_context()->set_global_proxy(*global_proxy); |
| 803 } | 801 } |
| 804 | 802 |
| 805 | 803 |
| 806 void Genesis::HookUpInnerGlobal(Handle<GlobalObject> inner_global) { | 804 void Genesis::HookUpInnerGlobal(Handle<GlobalObject> inner_global) { |
| 807 Handle<GlobalObject> inner_global_from_snapshot( | 805 Handle<GlobalObject> inner_global_from_snapshot( |
| 808 GlobalObject::cast(native_context_->extension())); | 806 GlobalObject::cast(native_context_->extension())); |
| 809 Handle<JSBuiltinsObject> builtins_global(native_context_->builtins()); | 807 Handle<JSBuiltinsObject> builtins_global(native_context_->builtins()); |
| (...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1436 Handle<String> name = factory()->LookupAsciiSymbol("builtins"); | 1434 Handle<String> name = factory()->LookupAsciiSymbol("builtins"); |
| 1437 builtins_fun->shared()->set_instance_class_name(*name); | 1435 builtins_fun->shared()->set_instance_class_name(*name); |
| 1438 builtins_fun->initial_map()->set_dictionary_map(true); | 1436 builtins_fun->initial_map()->set_dictionary_map(true); |
| 1439 builtins_fun->initial_map()->set_prototype(heap()->null_value()); | 1437 builtins_fun->initial_map()->set_prototype(heap()->null_value()); |
| 1440 | 1438 |
| 1441 // Allocate the builtins object. | 1439 // Allocate the builtins object. |
| 1442 Handle<JSBuiltinsObject> builtins = | 1440 Handle<JSBuiltinsObject> builtins = |
| 1443 Handle<JSBuiltinsObject>::cast(factory()->NewGlobalObject(builtins_fun)); | 1441 Handle<JSBuiltinsObject>::cast(factory()->NewGlobalObject(builtins_fun)); |
| 1444 builtins->set_builtins(*builtins); | 1442 builtins->set_builtins(*builtins); |
| 1445 builtins->set_native_context(*native_context()); | 1443 builtins->set_native_context(*native_context()); |
| 1444 builtins->set_global_context(*native_context()); |
| 1446 builtins->set_global_receiver(*builtins); | 1445 builtins->set_global_receiver(*builtins); |
| 1447 | 1446 |
| 1448 // Set up the 'global' properties of the builtins object. The | 1447 // Set up the 'global' properties of the builtins object. The |
| 1449 // 'global' property that refers to the global object is the only | 1448 // 'global' property that refers to the global object is the only |
| 1450 // way to get from code running in the builtins context to the | 1449 // way to get from code running in the builtins context to the |
| 1451 // global object. | 1450 // global object. |
| 1452 static const PropertyAttributes attributes = | 1451 static const PropertyAttributes attributes = |
| 1453 static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE); | 1452 static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE); |
| 1454 Handle<String> global_symbol = factory()->LookupAsciiSymbol("global"); | 1453 Handle<String> global_symbol = factory()->LookupAsciiSymbol("global"); |
| 1455 Handle<Object> global_obj(native_context()->global_object()); | 1454 Handle<Object> global_obj(native_context()->global_object()); |
| (...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2396 return from + sizeof(NestingCounterType); | 2395 return from + sizeof(NestingCounterType); |
| 2397 } | 2396 } |
| 2398 | 2397 |
| 2399 | 2398 |
| 2400 // Called when the top-level V8 mutex is destroyed. | 2399 // Called when the top-level V8 mutex is destroyed. |
| 2401 void Bootstrapper::FreeThreadResources() { | 2400 void Bootstrapper::FreeThreadResources() { |
| 2402 ASSERT(!IsActive()); | 2401 ASSERT(!IsActive()); |
| 2403 } | 2402 } |
| 2404 | 2403 |
| 2405 } } // namespace v8::internal | 2404 } } // namespace v8::internal |
| OLD | NEW |