Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(315)

Side by Side Diff: src/bootstrapper.cc

Issue 1120613002: VectorICs: built-in function apply should use an IC. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/ia32/builtins-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1713 matching lines...) Expand 10 before | Expand all | Expand 10 after
1724 void Genesis::InitializeGlobal_harmony_reflect() { 1724 void Genesis::InitializeGlobal_harmony_reflect() {
1725 Handle<JSObject> builtins(native_context()->builtins()); 1725 Handle<JSObject> builtins(native_context()->builtins());
1726 // Install references to functions of the Reflect object 1726 // Install references to functions of the Reflect object
1727 if (FLAG_harmony_reflect || FLAG_harmony_spreadcalls) { 1727 if (FLAG_harmony_reflect || FLAG_harmony_spreadcalls) {
1728 Handle<JSFunction> apply = InstallFunction( 1728 Handle<JSFunction> apply = InstallFunction(
1729 builtins, "$reflectApply", JS_OBJECT_TYPE, JSObject::kHeaderSize, 1729 builtins, "$reflectApply", JS_OBJECT_TYPE, JSObject::kHeaderSize,
1730 MaybeHandle<JSObject>(), Builtins::kReflectApply); 1730 MaybeHandle<JSObject>(), Builtins::kReflectApply);
1731 Handle<JSFunction> construct = InstallFunction( 1731 Handle<JSFunction> construct = InstallFunction(
1732 builtins, "$reflectConstruct", JS_OBJECT_TYPE, JSObject::kHeaderSize, 1732 builtins, "$reflectConstruct", JS_OBJECT_TYPE, JSObject::kHeaderSize,
1733 MaybeHandle<JSObject>(), Builtins::kReflectConstruct); 1733 MaybeHandle<JSObject>(), Builtins::kReflectConstruct);
1734 if (FLAG_vector_ics) {
1735 // Apply embeds an IC, so we need a type vector of size 1 in the shared
1736 // function info.
1737 FeedbackVectorSpec spec(0, Code::CALL_IC);
1738 Handle<TypeFeedbackVector> feedback_vector =
1739 factory()->NewTypeFeedbackVector(&spec);
1740 apply->shared()->set_feedback_vector(*feedback_vector);
1741
1742 feedback_vector = factory()->NewTypeFeedbackVector(&spec);
1743 construct->shared()->set_feedback_vector(*feedback_vector);
1744 }
1745
1746 apply->shared()->set_internal_formal_parameter_count(3); 1734 apply->shared()->set_internal_formal_parameter_count(3);
1747 apply->shared()->set_length(3); 1735 apply->shared()->set_length(3);
1748 1736
1749 construct->shared()->set_internal_formal_parameter_count(3); 1737 construct->shared()->set_internal_formal_parameter_count(3);
1750 construct->shared()->set_length(2); 1738 construct->shared()->set_length(2);
1751 } 1739 }
1752 1740
1753 if (!FLAG_harmony_reflect) return; 1741 if (!FLAG_harmony_reflect) return;
1754 Handle<JSGlobalObject> global(JSGlobalObject::cast( 1742 Handle<JSGlobalObject> global(JSGlobalObject::cast(
1755 native_context()->global_object())); 1743 native_context()->global_object()));
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
2174 Handle<JSObject> proto = 2162 Handle<JSObject> proto =
2175 Handle<JSObject>(JSObject::cast(function->instance_prototype())); 2163 Handle<JSObject>(JSObject::cast(function->instance_prototype()));
2176 2164
2177 // Install the call and the apply functions. 2165 // Install the call and the apply functions.
2178 Handle<JSFunction> call = 2166 Handle<JSFunction> call =
2179 InstallFunction(proto, "call", JS_OBJECT_TYPE, JSObject::kHeaderSize, 2167 InstallFunction(proto, "call", JS_OBJECT_TYPE, JSObject::kHeaderSize,
2180 MaybeHandle<JSObject>(), Builtins::kFunctionCall); 2168 MaybeHandle<JSObject>(), Builtins::kFunctionCall);
2181 Handle<JSFunction> apply = 2169 Handle<JSFunction> apply =
2182 InstallFunction(proto, "apply", JS_OBJECT_TYPE, JSObject::kHeaderSize, 2170 InstallFunction(proto, "apply", JS_OBJECT_TYPE, JSObject::kHeaderSize,
2183 MaybeHandle<JSObject>(), Builtins::kFunctionApply); 2171 MaybeHandle<JSObject>(), Builtins::kFunctionApply);
2184 if (FLAG_vector_ics) {
2185 // Apply embeds an IC, so we need a type vector of size 1 in the shared
2186 // function info.
2187 FeedbackVectorSpec spec(0, Code::CALL_IC);
2188 Handle<TypeFeedbackVector> feedback_vector =
2189 factory()->NewTypeFeedbackVector(&spec);
2190 apply->shared()->set_feedback_vector(*feedback_vector);
2191 }
2192 2172
2193 // Make sure that Function.prototype.call appears to be compiled. 2173 // Make sure that Function.prototype.call appears to be compiled.
2194 // The code will never be called, but inline caching for call will 2174 // The code will never be called, but inline caching for call will
2195 // only work if it appears to be compiled. 2175 // only work if it appears to be compiled.
2196 call->shared()->DontAdaptArguments(); 2176 call->shared()->DontAdaptArguments();
2197 DCHECK(call->is_compiled()); 2177 DCHECK(call->is_compiled());
2198 2178
2199 // Set the expected parameters for apply to 2; required by builtin. 2179 // Set the expected parameters for apply to 2; required by builtin.
2200 apply->shared()->set_internal_formal_parameter_count(2); 2180 apply->shared()->set_internal_formal_parameter_count(2);
2201 2181
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
2959 return from + sizeof(NestingCounterType); 2939 return from + sizeof(NestingCounterType);
2960 } 2940 }
2961 2941
2962 2942
2963 // Called when the top-level V8 mutex is destroyed. 2943 // Called when the top-level V8 mutex is destroyed.
2964 void Bootstrapper::FreeThreadResources() { 2944 void Bootstrapper::FreeThreadResources() {
2965 DCHECK(!IsActive()); 2945 DCHECK(!IsActive());
2966 } 2946 }
2967 2947
2968 } } // namespace v8::internal 2948 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/ia32/builtins-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698