OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/compiler.h" | 5 #include "src/compiler.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "src/ast/ast-numbering.h" | 9 #include "src/ast/ast-numbering.h" |
10 #include "src/ast/prettyprinter.h" | 10 #include "src/ast/prettyprinter.h" |
(...skipping 1668 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1679 // Compute the function template for the native function. | 1679 // Compute the function template for the native function. |
1680 v8::Local<v8::FunctionTemplate> fun_template = | 1680 v8::Local<v8::FunctionTemplate> fun_template = |
1681 extension->GetNativeFunctionTemplate(v8_isolate, | 1681 extension->GetNativeFunctionTemplate(v8_isolate, |
1682 v8::Utils::ToLocal(name)); | 1682 v8::Utils::ToLocal(name)); |
1683 DCHECK(!fun_template.IsEmpty()); | 1683 DCHECK(!fun_template.IsEmpty()); |
1684 | 1684 |
1685 // Instantiate the function and create a shared function info from it. | 1685 // Instantiate the function and create a shared function info from it. |
1686 Handle<JSFunction> fun = Handle<JSFunction>::cast(Utils::OpenHandle( | 1686 Handle<JSFunction> fun = Handle<JSFunction>::cast(Utils::OpenHandle( |
1687 *fun_template->GetFunction(v8_isolate->GetCurrentContext()) | 1687 *fun_template->GetFunction(v8_isolate->GetCurrentContext()) |
1688 .ToLocalChecked())); | 1688 .ToLocalChecked())); |
1689 const int literals = fun->NumberOfLiterals(); | |
1690 Handle<Code> code = Handle<Code>(fun->shared()->code()); | 1689 Handle<Code> code = Handle<Code>(fun->shared()->code()); |
1691 Handle<Code> construct_stub = Handle<Code>(fun->shared()->construct_stub()); | 1690 Handle<Code> construct_stub = Handle<Code>(fun->shared()->construct_stub()); |
1692 Handle<SharedFunctionInfo> shared = isolate->factory()->NewSharedFunctionInfo( | 1691 Handle<SharedFunctionInfo> shared = isolate->factory()->NewSharedFunctionInfo( |
1693 name, literals, FunctionKind::kNormalFunction, code, | 1692 name, fun->shared()->num_literals(), FunctionKind::kNormalFunction, code, |
1694 Handle<ScopeInfo>(fun->shared()->scope_info())); | 1693 Handle<ScopeInfo>(fun->shared()->scope_info())); |
1695 shared->set_construct_stub(*construct_stub); | 1694 shared->set_construct_stub(*construct_stub); |
1696 shared->set_feedback_vector(fun->shared()->feedback_vector()); | 1695 shared->set_feedback_vector(fun->shared()->feedback_vector()); |
1697 | 1696 |
1698 // Copy the function data to the shared function info. | 1697 // Copy the function data to the shared function info. |
1699 shared->set_function_data(fun->shared()->function_data()); | 1698 shared->set_function_data(fun->shared()->function_data()); |
1700 int parameters = fun->shared()->internal_formal_parameter_count(); | 1699 int parameters = fun->shared()->internal_formal_parameter_count(); |
1701 shared->set_internal_formal_parameter_count(parameters); | 1700 shared->set_internal_formal_parameter_count(parameters); |
1702 | 1701 |
1703 return shared; | 1702 return shared; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1793 MaybeHandle<Code> code; | 1792 MaybeHandle<Code> code; |
1794 if (cached.code != nullptr) code = handle(cached.code); | 1793 if (cached.code != nullptr) code = handle(cached.code); |
1795 Handle<Context> native_context(function->context()->native_context()); | 1794 Handle<Context> native_context(function->context()->native_context()); |
1796 SharedFunctionInfo::AddToOptimizedCodeMap(shared, native_context, code, | 1795 SharedFunctionInfo::AddToOptimizedCodeMap(shared, native_context, code, |
1797 literals, BailoutId::None()); | 1796 literals, BailoutId::None()); |
1798 } | 1797 } |
1799 } | 1798 } |
1800 | 1799 |
1801 } // namespace internal | 1800 } // namespace internal |
1802 } // namespace v8 | 1801 } // namespace v8 |
OLD | NEW |