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 "src/bootstrapper.h" | 5 #include "src/bootstrapper.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/api-natives.h" | 8 #include "src/api-natives.h" |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/extensions/externalize-string-extension.h" | 10 #include "src/extensions/externalize-string-extension.h" |
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
894 if (js_global_object_template.is_null()) { | 894 if (js_global_object_template.is_null()) { |
895 Handle<String> name = Handle<String>(heap()->empty_string()); | 895 Handle<String> name = Handle<String>(heap()->empty_string()); |
896 Handle<Code> code = isolate()->builtins()->Illegal(); | 896 Handle<Code> code = isolate()->builtins()->Illegal(); |
897 Handle<JSObject> prototype = | 897 Handle<JSObject> prototype = |
898 factory()->NewFunctionPrototype(isolate()->object_function()); | 898 factory()->NewFunctionPrototype(isolate()->object_function()); |
899 js_global_object_function = factory()->NewFunction( | 899 js_global_object_function = factory()->NewFunction( |
900 name, code, prototype, JS_GLOBAL_OBJECT_TYPE, JSGlobalObject::kSize); | 900 name, code, prototype, JS_GLOBAL_OBJECT_TYPE, JSGlobalObject::kSize); |
901 #ifdef DEBUG | 901 #ifdef DEBUG |
902 LookupIterator it(prototype, factory()->constructor_string(), | 902 LookupIterator it(prototype, factory()->constructor_string(), |
903 LookupIterator::OWN_SKIP_INTERCEPTOR); | 903 LookupIterator::OWN_SKIP_INTERCEPTOR); |
904 Handle<Object> value = JSReceiver::GetProperty(&it).ToHandleChecked(); | 904 Handle<Object> value = Object::GetProperty(&it).ToHandleChecked(); |
905 DCHECK(it.IsFound()); | 905 DCHECK(it.IsFound()); |
906 DCHECK_EQ(*isolate()->object_function(), *value); | 906 DCHECK_EQ(*isolate()->object_function(), *value); |
907 #endif | 907 #endif |
908 } else { | 908 } else { |
909 Handle<FunctionTemplateInfo> js_global_object_constructor( | 909 Handle<FunctionTemplateInfo> js_global_object_constructor( |
910 FunctionTemplateInfo::cast(js_global_object_template->constructor())); | 910 FunctionTemplateInfo::cast(js_global_object_template->constructor())); |
911 js_global_object_function = ApiNatives::CreateApiFunction( | 911 js_global_object_function = ApiNatives::CreateApiFunction( |
912 isolate(), js_global_object_constructor, factory()->the_hole_value(), | 912 isolate(), js_global_object_constructor, factory()->the_hole_value(), |
913 ApiNatives::GlobalObjectType); | 913 ApiNatives::GlobalObjectType); |
914 } | 914 } |
(...skipping 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1976 global, factory->InternalizeUtf8String(holder_expr)) | 1976 global, factory->InternalizeUtf8String(holder_expr)) |
1977 .ToHandleChecked()); | 1977 .ToHandleChecked()); |
1978 } | 1978 } |
1979 const char* inner = period_pos + 1; | 1979 const char* inner = period_pos + 1; |
1980 DCHECK(!strchr(inner, '.')); | 1980 DCHECK(!strchr(inner, '.')); |
1981 Vector<const char> property(holder_expr, | 1981 Vector<const char> property(holder_expr, |
1982 static_cast<int>(period_pos - holder_expr)); | 1982 static_cast<int>(period_pos - holder_expr)); |
1983 Handle<String> property_string = factory->InternalizeUtf8String(property); | 1983 Handle<String> property_string = factory->InternalizeUtf8String(property); |
1984 DCHECK(!property_string.is_null()); | 1984 DCHECK(!property_string.is_null()); |
1985 Handle<JSObject> object = Handle<JSObject>::cast( | 1985 Handle<JSObject> object = Handle<JSObject>::cast( |
1986 Object::GetProperty(global, property_string).ToHandleChecked()); | 1986 JSReceiver::GetProperty(global, property_string).ToHandleChecked()); |
1987 if (strcmp("prototype", inner) == 0) { | 1987 if (strcmp("prototype", inner) == 0) { |
1988 Handle<JSFunction> function = Handle<JSFunction>::cast(object); | 1988 Handle<JSFunction> function = Handle<JSFunction>::cast(object); |
1989 return Handle<JSObject>(JSObject::cast(function->prototype())); | 1989 return Handle<JSObject>(JSObject::cast(function->prototype())); |
1990 } | 1990 } |
1991 Handle<String> inner_string = factory->InternalizeUtf8String(inner); | 1991 Handle<String> inner_string = factory->InternalizeUtf8String(inner); |
1992 DCHECK(!inner_string.is_null()); | 1992 DCHECK(!inner_string.is_null()); |
1993 Handle<Object> value = | 1993 Handle<Object> value = |
1994 Object::GetProperty(object, inner_string).ToHandleChecked(); | 1994 JSReceiver::GetProperty(object, inner_string).ToHandleChecked(); |
1995 return Handle<JSObject>::cast(value); | 1995 return Handle<JSObject>::cast(value); |
1996 } | 1996 } |
1997 | 1997 |
1998 void Genesis::ConfigureUtilsObject(GlobalContextType context_type) { | 1998 void Genesis::ConfigureUtilsObject(GlobalContextType context_type) { |
1999 switch (context_type) { | 1999 switch (context_type) { |
2000 // We still need the utils object to find debug functions. | 2000 // We still need the utils object to find debug functions. |
2001 case DEBUG_CONTEXT: | 2001 case DEBUG_CONTEXT: |
2002 return; | 2002 return; |
2003 // Expose the natives in global if a valid name for it is specified. | 2003 // Expose the natives in global if a valid name for it is specified. |
2004 case FULL_CONTEXT: { | 2004 case FULL_CONTEXT: { |
(...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2730 concat->shared()->DontAdaptArguments(); | 2730 concat->shared()->DontAdaptArguments(); |
2731 DCHECK(concat->is_compiled()); | 2731 DCHECK(concat->is_compiled()); |
2732 // Set the lengths for the functions to satisfy ECMA-262. | 2732 // Set the lengths for the functions to satisfy ECMA-262. |
2733 concat->shared()->set_length(1); | 2733 concat->shared()->set_length(1); |
2734 } | 2734 } |
2735 | 2735 |
2736 // Set up the Promise constructor. | 2736 // Set up the Promise constructor. |
2737 { | 2737 { |
2738 Handle<String> key = factory()->Promise_string(); | 2738 Handle<String> key = factory()->Promise_string(); |
2739 Handle<JSFunction> function = Handle<JSFunction>::cast( | 2739 Handle<JSFunction> function = Handle<JSFunction>::cast( |
2740 Object::GetProperty(handle(native_context()->global_object()), key) | 2740 JSReceiver::GetProperty(handle(native_context()->global_object()), key) |
2741 .ToHandleChecked()); | 2741 .ToHandleChecked()); |
2742 JSFunction::EnsureHasInitialMap(function); | 2742 JSFunction::EnsureHasInitialMap(function); |
2743 function->initial_map()->set_instance_type(JS_PROMISE_TYPE); | 2743 function->initial_map()->set_instance_type(JS_PROMISE_TYPE); |
2744 function->shared()->set_construct_stub( | 2744 function->shared()->set_construct_stub( |
2745 *isolate()->builtins()->JSBuiltinsConstructStub()); | 2745 *isolate()->builtins()->JSBuiltinsConstructStub()); |
2746 InstallWithIntrinsicDefaultProto(isolate(), function, | 2746 InstallWithIntrinsicDefaultProto(isolate(), function, |
2747 Context::PROMISE_FUNCTION_INDEX); | 2747 Context::PROMISE_FUNCTION_INDEX); |
2748 } | 2748 } |
2749 | 2749 |
2750 InstallBuiltinFunctionIds(); | 2750 InstallBuiltinFunctionIds(); |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3029 } | 3029 } |
3030 return CallUtilsFunction(isolate(), "PostDebug"); | 3030 return CallUtilsFunction(isolate(), "PostDebug"); |
3031 } | 3031 } |
3032 | 3032 |
3033 | 3033 |
3034 static void InstallBuiltinFunctionId(Handle<JSObject> holder, | 3034 static void InstallBuiltinFunctionId(Handle<JSObject> holder, |
3035 const char* function_name, | 3035 const char* function_name, |
3036 BuiltinFunctionId id) { | 3036 BuiltinFunctionId id) { |
3037 Isolate* isolate = holder->GetIsolate(); | 3037 Isolate* isolate = holder->GetIsolate(); |
3038 Handle<Object> function_object = | 3038 Handle<Object> function_object = |
3039 Object::GetProperty(isolate, holder, function_name).ToHandleChecked(); | 3039 JSReceiver::GetProperty(isolate, holder, function_name).ToHandleChecked(); |
3040 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object); | 3040 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object); |
3041 function->shared()->set_builtin_function_id(id); | 3041 function->shared()->set_builtin_function_id(id); |
3042 } | 3042 } |
3043 | 3043 |
3044 | 3044 |
3045 #define INSTALL_BUILTIN_ID(holder_expr, fun_name, name) \ | 3045 #define INSTALL_BUILTIN_ID(holder_expr, fun_name, name) \ |
3046 { #holder_expr, #fun_name, k##name } \ | 3046 { #holder_expr, #fun_name, k##name } \ |
3047 , | 3047 , |
3048 | 3048 |
3049 | 3049 |
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3633 } | 3633 } |
3634 | 3634 |
3635 | 3635 |
3636 // Called when the top-level V8 mutex is destroyed. | 3636 // Called when the top-level V8 mutex is destroyed. |
3637 void Bootstrapper::FreeThreadResources() { | 3637 void Bootstrapper::FreeThreadResources() { |
3638 DCHECK(!IsActive()); | 3638 DCHECK(!IsActive()); |
3639 } | 3639 } |
3640 | 3640 |
3641 } // namespace internal | 3641 } // namespace internal |
3642 } // namespace v8 | 3642 } // namespace v8 |
OLD | NEW |