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

Side by Side Diff: src/ic/ic.h

Issue 847963004: Replace generic KeyedStore stub with megamorphic version (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 11 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 | « src/builtins.cc ('k') | src/ic/ic.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 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 #ifndef V8_IC_H_ 5 #ifndef V8_IC_H_
6 #define V8_IC_H_ 6 #define V8_IC_H_
7 7
8 #include "src/ic/ic-state.h" 8 #include "src/ic/ic-state.h"
9 #include "src/macro-assembler.h" 9 #include "src/macro-assembler.h"
10 10
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 554
555 MUST_USE_RESULT MaybeHandle<Object> Store( 555 MUST_USE_RESULT MaybeHandle<Object> Store(
556 Handle<Object> object, Handle<Name> name, Handle<Object> value, 556 Handle<Object> object, Handle<Name> name, Handle<Object> value,
557 JSReceiver::StoreFromKeyed store_mode = 557 JSReceiver::StoreFromKeyed store_mode =
558 JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED); 558 JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED);
559 559
560 bool LookupForWrite(LookupIterator* it, Handle<Object> value, 560 bool LookupForWrite(LookupIterator* it, Handle<Object> value,
561 JSReceiver::StoreFromKeyed store_mode); 561 JSReceiver::StoreFromKeyed store_mode);
562 562
563 protected: 563 protected:
564 // Stub accessors.
564 Handle<Code> megamorphic_stub() OVERRIDE; 565 Handle<Code> megamorphic_stub() OVERRIDE;
565
566 // Stub accessors.
567 Handle<Code> generic_stub() const;
568
569 Handle<Code> slow_stub() const; 566 Handle<Code> slow_stub() const;
570 567
571 virtual Handle<Code> pre_monomorphic_stub() const { 568 virtual Handle<Code> pre_monomorphic_stub() const {
572 return pre_monomorphic_stub(isolate(), strict_mode()); 569 return pre_monomorphic_stub(isolate(), strict_mode());
573 } 570 }
574 571
575 static Handle<Code> pre_monomorphic_stub(Isolate* isolate, 572 static Handle<Code> pre_monomorphic_stub(Isolate* isolate,
576 StrictMode strict_mode); 573 StrictMode strict_mode);
577 574
578 // Update the inline cache and the global stub cache based on the 575 // Update the inline cache and the global stub cache based on the
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 Handle<Object> value); 630 Handle<Object> value);
634 631
635 // Code generators for stub routines. Only called once at startup. 632 // Code generators for stub routines. Only called once at startup.
636 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } 633 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); }
637 static void GeneratePreMonomorphic(MacroAssembler* masm) { 634 static void GeneratePreMonomorphic(MacroAssembler* masm) {
638 GenerateMiss(masm); 635 GenerateMiss(masm);
639 } 636 }
640 static void GenerateMiss(MacroAssembler* masm); 637 static void GenerateMiss(MacroAssembler* masm);
641 static void GenerateSlow(MacroAssembler* masm); 638 static void GenerateSlow(MacroAssembler* masm);
642 static void GenerateMegamorphic(MacroAssembler* masm, StrictMode strict_mode); 639 static void GenerateMegamorphic(MacroAssembler* masm, StrictMode strict_mode);
643 static void GenerateGeneric(MacroAssembler* masm, StrictMode strict_mode);
644 static void GenerateSloppyArguments(MacroAssembler* masm); 640 static void GenerateSloppyArguments(MacroAssembler* masm);
645 641
646 protected: 642 protected:
647 virtual Handle<Code> pre_monomorphic_stub() const { 643 virtual Handle<Code> pre_monomorphic_stub() const {
648 return pre_monomorphic_stub(isolate(), strict_mode()); 644 return pre_monomorphic_stub(isolate(), strict_mode());
649 } 645 }
650 static Handle<Code> pre_monomorphic_stub(Isolate* isolate, 646 static Handle<Code> pre_monomorphic_stub(Isolate* isolate,
651 StrictMode strict_mode) { 647 StrictMode strict_mode) {
652 if (strict_mode == STRICT) { 648 if (strict_mode == STRICT) {
653 return isolate->builtins()->KeyedStoreIC_PreMonomorphic_Strict(); 649 return isolate->builtins()->KeyedStoreIC_PreMonomorphic_Strict();
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 764
769 // Support functions for interceptor handlers. 765 // Support functions for interceptor handlers.
770 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly); 766 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly);
771 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor); 767 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor);
772 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor); 768 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor);
773 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor); 769 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor);
774 } 770 }
775 } // namespace v8::internal 771 } // namespace v8::internal
776 772
777 #endif // V8_IC_H_ 773 #endif // V8_IC_H_
OLDNEW
« no previous file with comments | « src/builtins.cc ('k') | src/ic/ic.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698