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

Side by Side Diff: src/code-stubs.cc

Issue 368263003: Use a stub in crankshaft for grow store arrays. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Performance fixes. Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/bootstrapper.h" 7 #include "src/bootstrapper.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 #include "src/cpu-profiler.h" 9 #include "src/cpu-profiler.h"
10 #include "src/factory.h" 10 #include "src/factory.h"
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 637
638 638
639 void KeyedStringLengthStub::InitializeInterfaceDescriptor( 639 void KeyedStringLengthStub::InitializeInterfaceDescriptor(
640 CodeStubInterfaceDescriptor* descriptor) { 640 CodeStubInterfaceDescriptor* descriptor) {
641 Register registers[] = { LoadIC::ReceiverRegister(), 641 Register registers[] = { LoadIC::ReceiverRegister(),
642 LoadIC::NameRegister() }; 642 LoadIC::NameRegister() };
643 descriptor->Initialize(ARRAY_SIZE(registers), registers); 643 descriptor->Initialize(ARRAY_SIZE(registers), registers);
644 } 644 }
645 645
646 646
647 void GrowArrayElementsStub::InitializeInterfaceDescriptor(
648 CodeStubInterfaceDescriptor* descriptor) {
649 Register registers[] = { ObjectRegister(),
650 KeyRegister(),
651 CapacityRegister() };
652 Address deopt_handler = Runtime::FunctionForId(
653 Runtime::kGrowArrayElements)->entry;
654 descriptor->Initialize(ARRAY_SIZE(registers), registers, deopt_handler);
655 }
656
657
647 void KeyedLoadDictionaryElementPlatformStub::Generate( 658 void KeyedLoadDictionaryElementPlatformStub::Generate(
648 MacroAssembler* masm) { 659 MacroAssembler* masm) {
649 KeyedLoadStubCompiler::GenerateLoadDictionaryElement(masm); 660 KeyedLoadStubCompiler::GenerateLoadDictionaryElement(masm);
650 } 661 }
651 662
652 663
653 void CreateAllocationSiteStub::GenerateAheadOfTime(Isolate* isolate) { 664 void CreateAllocationSiteStub::GenerateAheadOfTime(Isolate* isolate) {
654 CreateAllocationSiteStub stub(isolate); 665 CreateAllocationSiteStub stub(isolate);
655 stub.GetCode(); 666 stub.GetCode();
656 } 667 }
657 668
658 669
670 void GrowArrayElementsStub::GenerateAheadOfTime(Isolate* isolate) {
671 // Generate for all elements kinds
672 int last_index = GetSequenceIndexFromFastElementsKind(
673 TERMINAL_FAST_ELEMENTS_KIND);
674 for (int i = 0; i <= last_index; ++i) {
675 ElementsKind kind = GetFastElementsKindFromSequenceIndex(i);
676 GrowArrayElementsStub stub1(isolate, true, kind);
677 stub1.GetCode();
678 GrowArrayElementsStub stub2(isolate, false, kind);
679 stub2.GetCode();
680 }
681 }
682
683
659 void KeyedStoreElementStub::Generate(MacroAssembler* masm) { 684 void KeyedStoreElementStub::Generate(MacroAssembler* masm) {
660 switch (elements_kind_) { 685 switch (elements_kind_) {
661 case FAST_ELEMENTS: 686 case FAST_ELEMENTS:
662 case FAST_HOLEY_ELEMENTS: 687 case FAST_HOLEY_ELEMENTS:
663 case FAST_SMI_ELEMENTS: 688 case FAST_SMI_ELEMENTS:
664 case FAST_HOLEY_SMI_ELEMENTS: 689 case FAST_HOLEY_SMI_ELEMENTS:
665 case FAST_DOUBLE_ELEMENTS: 690 case FAST_DOUBLE_ELEMENTS:
666 case FAST_HOLEY_DOUBLE_ELEMENTS: 691 case FAST_HOLEY_DOUBLE_ELEMENTS:
667 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ 692 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
668 case EXTERNAL_##TYPE##_ELEMENTS: \ 693 case EXTERNAL_##TYPE##_ELEMENTS: \
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 InstallDescriptor(isolate, &stub3); 959 InstallDescriptor(isolate, &stub3);
935 } 960 }
936 961
937 InternalArrayConstructorStub::InternalArrayConstructorStub( 962 InternalArrayConstructorStub::InternalArrayConstructorStub(
938 Isolate* isolate) : PlatformCodeStub(isolate) { 963 Isolate* isolate) : PlatformCodeStub(isolate) {
939 InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); 964 InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate);
940 } 965 }
941 966
942 967
943 } } // namespace v8::internal 968 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698