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

Side by Side Diff: src/bootstrapper.cc

Issue 2663033003: [builtins] TurboFan version of Array.prototype.forEach including fast path for FAST_ELEMENTS (Closed)
Patch Set: Review feedback Created 3 years, 10 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/builtins/builtins.h » ('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/ieee754.h" 9 #include "src/base/ieee754.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 void ConfigureUtilsObject(GlobalContextType context_type); 210 void ConfigureUtilsObject(GlobalContextType context_type);
211 211
212 #define DECLARE_FEATURE_INITIALIZATION(id, descr) \ 212 #define DECLARE_FEATURE_INITIALIZATION(id, descr) \
213 void InitializeGlobal_##id(); 213 void InitializeGlobal_##id();
214 214
215 HARMONY_INPROGRESS(DECLARE_FEATURE_INITIALIZATION) 215 HARMONY_INPROGRESS(DECLARE_FEATURE_INITIALIZATION)
216 HARMONY_STAGED(DECLARE_FEATURE_INITIALIZATION) 216 HARMONY_STAGED(DECLARE_FEATURE_INITIALIZATION)
217 HARMONY_SHIPPING(DECLARE_FEATURE_INITIALIZATION) 217 HARMONY_SHIPPING(DECLARE_FEATURE_INITIALIZATION)
218 #undef DECLARE_FEATURE_INITIALIZATION 218 #undef DECLARE_FEATURE_INITIALIZATION
219 219
220 void InitializeGlobal_enable_fast_array_builtins();
221
220 Handle<JSFunction> InstallArrayBuffer(Handle<JSObject> target, 222 Handle<JSFunction> InstallArrayBuffer(Handle<JSObject> target,
221 const char* name, Builtins::Name call, 223 const char* name, Builtins::Name call,
222 BuiltinFunctionId id); 224 BuiltinFunctionId id);
223 Handle<JSFunction> InstallInternalArray(Handle<JSObject> target, 225 Handle<JSFunction> InstallInternalArray(Handle<JSObject> target,
224 const char* name, 226 const char* name,
225 ElementsKind elements_kind); 227 ElementsKind elements_kind);
226 bool InstallNatives(GlobalContextType context_type); 228 bool InstallNatives(GlobalContextType context_type);
227 229
228 void InstallTypedArray(const char* name, ElementsKind elements_kind, 230 void InstallTypedArray(const char* name, ElementsKind elements_kind,
229 Handle<JSFunction>* fun); 231 Handle<JSFunction>* fun);
(...skipping 2674 matching lines...) Expand 10 before | Expand all | Expand 10 after
2904 } 2906 }
2905 2907
2906 2908
2907 void Genesis::InitializeExperimentalGlobal() { 2909 void Genesis::InitializeExperimentalGlobal() {
2908 #define FEATURE_INITIALIZE_GLOBAL(id, descr) InitializeGlobal_##id(); 2910 #define FEATURE_INITIALIZE_GLOBAL(id, descr) InitializeGlobal_##id();
2909 2911
2910 HARMONY_INPROGRESS(FEATURE_INITIALIZE_GLOBAL) 2912 HARMONY_INPROGRESS(FEATURE_INITIALIZE_GLOBAL)
2911 HARMONY_STAGED(FEATURE_INITIALIZE_GLOBAL) 2913 HARMONY_STAGED(FEATURE_INITIALIZE_GLOBAL)
2912 HARMONY_SHIPPING(FEATURE_INITIALIZE_GLOBAL) 2914 HARMONY_SHIPPING(FEATURE_INITIALIZE_GLOBAL)
2913 #undef FEATURE_INITIALIZE_GLOBAL 2915 #undef FEATURE_INITIALIZE_GLOBAL
2916
2917 InitializeGlobal_enable_fast_array_builtins();
2914 } 2918 }
2915 2919
2916 2920
2917 bool Bootstrapper::CompileBuiltin(Isolate* isolate, int index) { 2921 bool Bootstrapper::CompileBuiltin(Isolate* isolate, int index) {
2918 Vector<const char> name = Natives::GetScriptName(index); 2922 Vector<const char> name = Natives::GetScriptName(index);
2919 Handle<String> source_code = 2923 Handle<String> source_code =
2920 isolate->bootstrapper()->SourceLookup<Natives>(index); 2924 isolate->bootstrapper()->SourceLookup<Natives>(index);
2921 2925
2922 // We pass in extras_utils so that builtin code can set it up for later use 2926 // We pass in extras_utils so that builtin code can set it up for later use
2923 // by actual extras code, compiled with CompileExtraBuiltin. 2927 // by actual extras code, compiled with CompileExtraBuiltin.
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after
3533 JSGlobalObject::cast(native_context->global_object())); 3537 JSGlobalObject::cast(native_context->global_object()));
3534 Handle<String> symbol_string = factory->InternalizeUtf8String("Symbol"); 3538 Handle<String> symbol_string = factory->InternalizeUtf8String("Symbol");
3535 Handle<JSObject> symbol = Handle<JSObject>::cast( 3539 Handle<JSObject> symbol = Handle<JSObject>::cast(
3536 JSObject::GetProperty(global, symbol_string).ToHandleChecked()); 3540 JSObject::GetProperty(global, symbol_string).ToHandleChecked());
3537 Handle<String> name_string = factory->InternalizeUtf8String(name); 3541 Handle<String> name_string = factory->InternalizeUtf8String(name);
3538 PropertyAttributes attributes = 3542 PropertyAttributes attributes =
3539 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); 3543 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
3540 JSObject::AddProperty(symbol, name_string, value, attributes); 3544 JSObject::AddProperty(symbol, name_string, value, attributes);
3541 } 3545 }
3542 3546
3547 void Genesis::InitializeGlobal_enable_fast_array_builtins() {
3548 if (!FLAG_enable_fast_array_builtins) return;
3549
3550 Handle<JSGlobalObject> global(native_context()->global_object());
3551 Isolate* isolate = global->GetIsolate();
3552 Factory* factory = isolate->factory();
3553
3554 LookupIterator it1(global, factory->NewStringFromAsciiChecked("Array"),
3555 LookupIterator::OWN_SKIP_INTERCEPTOR);
3556 Handle<Object> array_object = Object::GetProperty(&it1).ToHandleChecked();
3557 LookupIterator it2(array_object,
3558 factory->NewStringFromAsciiChecked("prototype"),
3559 LookupIterator::OWN_SKIP_INTERCEPTOR);
3560 Handle<Object> array_prototype = Object::GetProperty(&it2).ToHandleChecked();
3561 LookupIterator it3(array_prototype,
3562 factory->NewStringFromAsciiChecked("forEach"),
3563 LookupIterator::OWN_SKIP_INTERCEPTOR);
3564 Handle<Object> for_each_function =
3565 Object::GetProperty(&it3).ToHandleChecked();
3566 Handle<JSFunction>::cast(for_each_function)
3567 ->set_code(isolate->builtins()->builtin(Builtins::kArrayForEach));
3568 }
3543 3569
3544 void Genesis::InitializeGlobal_harmony_sharedarraybuffer() { 3570 void Genesis::InitializeGlobal_harmony_sharedarraybuffer() {
3545 if (!FLAG_harmony_sharedarraybuffer) return; 3571 if (!FLAG_harmony_sharedarraybuffer) return;
3546 3572
3547 Handle<JSGlobalObject> global(native_context()->global_object()); 3573 Handle<JSGlobalObject> global(native_context()->global_object());
3548 Isolate* isolate = global->GetIsolate(); 3574 Isolate* isolate = global->GetIsolate();
3549 Factory* factory = isolate->factory(); 3575 Factory* factory = isolate->factory();
3550 3576
3551 Handle<JSFunction> shared_array_buffer_fun = 3577 Handle<JSFunction> shared_array_buffer_fun =
3552 InstallArrayBuffer(global, "SharedArrayBuffer", 3578 InstallArrayBuffer(global, "SharedArrayBuffer",
(...skipping 1291 matching lines...) Expand 10 before | Expand all | Expand 10 after
4844 } 4870 }
4845 4871
4846 4872
4847 // Called when the top-level V8 mutex is destroyed. 4873 // Called when the top-level V8 mutex is destroyed.
4848 void Bootstrapper::FreeThreadResources() { 4874 void Bootstrapper::FreeThreadResources() {
4849 DCHECK(!IsActive()); 4875 DCHECK(!IsActive());
4850 } 4876 }
4851 4877
4852 } // namespace internal 4878 } // namespace internal
4853 } // namespace v8 4879 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/builtins/builtins.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698