| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "bootstrapper.h" | 5 #include "bootstrapper.h" |
| 6 | 6 |
| 7 #include "accessors.h" | 7 #include "accessors.h" |
| 8 #include "isolate-inl.h" | 8 #include "isolate-inl.h" |
| 9 #include "natives.h" | 9 #include "natives.h" |
| 10 #include "snapshot.h" | 10 #include "snapshot.h" |
| (...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 714 Handle<JSObject>( | 714 Handle<JSObject>( |
| 715 JSObject::cast(js_global_function->instance_prototype())); | 715 JSObject::cast(js_global_function->instance_prototype())); |
| 716 JSObject::SetLocalPropertyIgnoreAttributes( | 716 JSObject::SetLocalPropertyIgnoreAttributes( |
| 717 prototype, factory()->constructor_string(), | 717 prototype, factory()->constructor_string(), |
| 718 isolate()->object_function(), NONE).Check(); | 718 isolate()->object_function(), NONE).Check(); |
| 719 } else { | 719 } else { |
| 720 Handle<FunctionTemplateInfo> js_global_constructor( | 720 Handle<FunctionTemplateInfo> js_global_constructor( |
| 721 FunctionTemplateInfo::cast(js_global_template->constructor())); | 721 FunctionTemplateInfo::cast(js_global_template->constructor())); |
| 722 js_global_function = | 722 js_global_function = |
| 723 factory()->CreateApiFunction(js_global_constructor, | 723 factory()->CreateApiFunction(js_global_constructor, |
| 724 factory()->the_hole_value(), |
| 724 factory()->InnerGlobalObject); | 725 factory()->InnerGlobalObject); |
| 725 } | 726 } |
| 726 | 727 |
| 727 js_global_function->initial_map()->set_is_hidden_prototype(); | 728 js_global_function->initial_map()->set_is_hidden_prototype(); |
| 728 js_global_function->initial_map()->set_dictionary_map(true); | 729 js_global_function->initial_map()->set_dictionary_map(true); |
| 729 Handle<GlobalObject> inner_global = | 730 Handle<GlobalObject> inner_global = |
| 730 factory()->NewGlobalObject(js_global_function); | 731 factory()->NewGlobalObject(js_global_function); |
| 731 if (inner_global_out != NULL) { | 732 if (inner_global_out != NULL) { |
| 732 *inner_global_out = inner_global; | 733 *inner_global_out = inner_global; |
| 733 } | 734 } |
| 734 | 735 |
| 735 // Step 2: create or re-initialize the global proxy object. | 736 // Step 2: create or re-initialize the global proxy object. |
| 736 Handle<JSFunction> global_proxy_function; | 737 Handle<JSFunction> global_proxy_function; |
| 737 if (global_template.IsEmpty()) { | 738 if (global_template.IsEmpty()) { |
| 738 Handle<String> name = Handle<String>(heap()->empty_string()); | 739 Handle<String> name = Handle<String>(heap()->empty_string()); |
| 739 Handle<Code> code = Handle<Code>(isolate()->builtins()->builtin( | 740 Handle<Code> code = Handle<Code>(isolate()->builtins()->builtin( |
| 740 Builtins::kIllegal)); | 741 Builtins::kIllegal)); |
| 741 global_proxy_function = | 742 global_proxy_function = |
| 742 factory()->NewFunction(name, JS_GLOBAL_PROXY_TYPE, | 743 factory()->NewFunction(name, JS_GLOBAL_PROXY_TYPE, |
| 743 JSGlobalProxy::kSize, code, true); | 744 JSGlobalProxy::kSize, code, true); |
| 744 } else { | 745 } else { |
| 745 Handle<ObjectTemplateInfo> data = | 746 Handle<ObjectTemplateInfo> data = |
| 746 v8::Utils::OpenHandle(*global_template); | 747 v8::Utils::OpenHandle(*global_template); |
| 747 Handle<FunctionTemplateInfo> global_constructor( | 748 Handle<FunctionTemplateInfo> global_constructor( |
| 748 FunctionTemplateInfo::cast(data->constructor())); | 749 FunctionTemplateInfo::cast(data->constructor())); |
| 749 global_proxy_function = | 750 global_proxy_function = |
| 750 factory()->CreateApiFunction(global_constructor, | 751 factory()->CreateApiFunction(global_constructor, |
| 752 factory()->the_hole_value(), |
| 751 factory()->OuterGlobalObject); | 753 factory()->OuterGlobalObject); |
| 752 } | 754 } |
| 753 | 755 |
| 754 Handle<String> global_name = factory()->InternalizeOneByteString( | 756 Handle<String> global_name = factory()->InternalizeOneByteString( |
| 755 STATIC_ASCII_VECTOR("global")); | 757 STATIC_ASCII_VECTOR("global")); |
| 756 global_proxy_function->shared()->set_instance_class_name(*global_name); | 758 global_proxy_function->shared()->set_instance_class_name(*global_name); |
| 757 global_proxy_function->initial_map()->set_is_access_check_needed(true); | 759 global_proxy_function->initial_map()->set_is_access_check_needed(true); |
| 758 | 760 |
| 759 // Set global_proxy.__proto__ to js_global after ConfigureGlobalObjects | 761 // Set global_proxy.__proto__ to js_global after ConfigureGlobalObjects |
| 760 // Return the global proxy. | 762 // Return the global proxy. |
| (...skipping 1918 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2679 return from + sizeof(NestingCounterType); | 2681 return from + sizeof(NestingCounterType); |
| 2680 } | 2682 } |
| 2681 | 2683 |
| 2682 | 2684 |
| 2683 // Called when the top-level V8 mutex is destroyed. | 2685 // Called when the top-level V8 mutex is destroyed. |
| 2684 void Bootstrapper::FreeThreadResources() { | 2686 void Bootstrapper::FreeThreadResources() { |
| 2685 ASSERT(!IsActive()); | 2687 ASSERT(!IsActive()); |
| 2686 } | 2688 } |
| 2687 | 2689 |
| 2688 } } // namespace v8::internal | 2690 } } // namespace v8::internal |
| OLD | NEW |