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/base/utils/random-number-generator.h" | 9 #include "src/base/utils/random-number-generator.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 1778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1789 JSObject::AddProperty(container, NAME##_name, isolate->factory()->NAME(), \ | 1789 JSObject::AddProperty(container, NAME##_name, isolate->factory()->NAME(), \ |
1790 NONE); | 1790 NONE); |
1791 PUBLIC_SYMBOL_LIST(EXPORT_PUBLIC_SYMBOL) | 1791 PUBLIC_SYMBOL_LIST(EXPORT_PUBLIC_SYMBOL) |
1792 #undef EXPORT_PUBLIC_SYMBOL | 1792 #undef EXPORT_PUBLIC_SYMBOL |
1793 | 1793 |
1794 Handle<JSFunction> apply = InstallFunction( | 1794 Handle<JSFunction> apply = InstallFunction( |
1795 container, "reflect_apply", JS_OBJECT_TYPE, JSObject::kHeaderSize, | 1795 container, "reflect_apply", JS_OBJECT_TYPE, JSObject::kHeaderSize, |
1796 MaybeHandle<JSObject>(), Builtins::kReflectApply); | 1796 MaybeHandle<JSObject>(), Builtins::kReflectApply); |
1797 apply->shared()->set_internal_formal_parameter_count(3); | 1797 apply->shared()->set_internal_formal_parameter_count(3); |
1798 apply->shared()->set_length(3); | 1798 apply->shared()->set_length(3); |
| 1799 apply->shared()->set_feedback_vector( |
| 1800 *TypeFeedbackVector::CreatePushAppliedArgumentsVector(isolate)); |
1799 isolate->native_context()->set_reflect_apply(*apply); | 1801 isolate->native_context()->set_reflect_apply(*apply); |
1800 | 1802 |
1801 Handle<JSFunction> construct = InstallFunction( | 1803 Handle<JSFunction> construct = InstallFunction( |
1802 container, "reflect_construct", JS_OBJECT_TYPE, JSObject::kHeaderSize, | 1804 container, "reflect_construct", JS_OBJECT_TYPE, JSObject::kHeaderSize, |
1803 MaybeHandle<JSObject>(), Builtins::kReflectConstruct); | 1805 MaybeHandle<JSObject>(), Builtins::kReflectConstruct); |
1804 construct->shared()->set_internal_formal_parameter_count(3); | 1806 construct->shared()->set_internal_formal_parameter_count(3); |
1805 construct->shared()->set_length(2); | 1807 construct->shared()->set_length(2); |
| 1808 construct->shared()->set_feedback_vector( |
| 1809 *TypeFeedbackVector::CreatePushAppliedArgumentsVector(isolate)); |
1806 isolate->native_context()->set_reflect_construct(*construct); | 1810 isolate->native_context()->set_reflect_construct(*construct); |
1807 } | 1811 } |
1808 | 1812 |
1809 | 1813 |
1810 void Bootstrapper::ExportExperimentalFromRuntime(Isolate* isolate, | 1814 void Bootstrapper::ExportExperimentalFromRuntime(Isolate* isolate, |
1811 Handle<JSObject> container) { | 1815 Handle<JSObject> container) { |
1812 HandleScope scope(isolate); | 1816 HandleScope scope(isolate); |
1813 | 1817 |
1814 #define INITIALIZE_FLAG(FLAG) \ | 1818 #define INITIALIZE_FLAG(FLAG) \ |
1815 { \ | 1819 { \ |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2374 Handle<JSObject> proto = | 2378 Handle<JSObject> proto = |
2375 Handle<JSObject>(JSObject::cast(function->instance_prototype())); | 2379 Handle<JSObject>(JSObject::cast(function->instance_prototype())); |
2376 | 2380 |
2377 // Install the call and the apply functions. | 2381 // Install the call and the apply functions. |
2378 Handle<JSFunction> call = | 2382 Handle<JSFunction> call = |
2379 InstallFunction(proto, "call", JS_OBJECT_TYPE, JSObject::kHeaderSize, | 2383 InstallFunction(proto, "call", JS_OBJECT_TYPE, JSObject::kHeaderSize, |
2380 MaybeHandle<JSObject>(), Builtins::kFunctionCall); | 2384 MaybeHandle<JSObject>(), Builtins::kFunctionCall); |
2381 Handle<JSFunction> apply = | 2385 Handle<JSFunction> apply = |
2382 InstallFunction(proto, "apply", JS_OBJECT_TYPE, JSObject::kHeaderSize, | 2386 InstallFunction(proto, "apply", JS_OBJECT_TYPE, JSObject::kHeaderSize, |
2383 MaybeHandle<JSObject>(), Builtins::kFunctionApply); | 2387 MaybeHandle<JSObject>(), Builtins::kFunctionApply); |
| 2388 apply->shared()->set_feedback_vector( |
| 2389 *TypeFeedbackVector::CreatePushAppliedArgumentsVector(isolate())); |
2384 | 2390 |
2385 // Make sure that Function.prototype.call appears to be compiled. | 2391 // Make sure that Function.prototype.call appears to be compiled. |
2386 // The code will never be called, but inline caching for call will | 2392 // The code will never be called, but inline caching for call will |
2387 // only work if it appears to be compiled. | 2393 // only work if it appears to be compiled. |
2388 call->shared()->DontAdaptArguments(); | 2394 call->shared()->DontAdaptArguments(); |
2389 DCHECK(call->is_compiled()); | 2395 DCHECK(call->is_compiled()); |
2390 | 2396 |
2391 // Set the expected parameters for apply to 2; required by builtin. | 2397 // Set the expected parameters for apply to 2; required by builtin. |
2392 apply->shared()->set_internal_formal_parameter_count(2); | 2398 apply->shared()->set_internal_formal_parameter_count(2); |
2393 | 2399 |
(...skipping 831 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3225 } | 3231 } |
3226 | 3232 |
3227 | 3233 |
3228 // Called when the top-level V8 mutex is destroyed. | 3234 // Called when the top-level V8 mutex is destroyed. |
3229 void Bootstrapper::FreeThreadResources() { | 3235 void Bootstrapper::FreeThreadResources() { |
3230 DCHECK(!IsActive()); | 3236 DCHECK(!IsActive()); |
3231 } | 3237 } |
3232 | 3238 |
3233 } // namespace internal | 3239 } // namespace internal |
3234 } // namespace v8 | 3240 } // namespace v8 |
OLD | NEW |