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

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

Issue 674913002: Use a simpler KeyedStoreGeneric stub (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « src/ic/ia32/ic-ia32.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 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 friend class IC; 532 friend class IC;
533 }; 533 };
534 534
535 535
536 enum KeyedStoreCheckMap { kDontCheckMap, kCheckMap }; 536 enum KeyedStoreCheckMap { kDontCheckMap, kCheckMap };
537 537
538 538
539 enum KeyedStoreIncrementLength { kDontIncrementLength, kIncrementLength }; 539 enum KeyedStoreIncrementLength { kDontIncrementLength, kIncrementLength };
540 540
541 541
542 enum KeyedStoreStubCacheRequirement {
543 kCallRuntimeOnMissingHandler,
544 kMissOnMissingHandler
545 };
546
547
548 class KeyedStoreIC : public StoreIC { 542 class KeyedStoreIC : public StoreIC {
549 public: 543 public:
550 // ExtraICState bits (building on IC) 544 // ExtraICState bits (building on IC)
551 // ExtraICState bits 545 // ExtraICState bits
552 class ExtraICStateKeyedAccessStoreMode 546 class ExtraICStateKeyedAccessStoreMode
553 : public BitField<KeyedAccessStoreMode, 2, 4> {}; // NOLINT 547 : public BitField<KeyedAccessStoreMode, 2, 4> {}; // NOLINT
554 548
555 class IcCheckTypeField : public BitField<IcCheckType, 6, 1> {}; 549 class IcCheckTypeField : public BitField<IcCheckType, 6, 1> {};
556 550
557 static ExtraICState ComputeExtraICState(StrictMode flag, 551 static ExtraICState ComputeExtraICState(StrictMode flag,
(...skipping 20 matching lines...) Expand all
578 Handle<Object> name, 572 Handle<Object> name,
579 Handle<Object> value); 573 Handle<Object> value);
580 574
581 // Code generators for stub routines. Only called once at startup. 575 // Code generators for stub routines. Only called once at startup.
582 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } 576 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); }
583 static void GeneratePreMonomorphic(MacroAssembler* masm) { 577 static void GeneratePreMonomorphic(MacroAssembler* masm) {
584 GenerateMiss(masm); 578 GenerateMiss(masm);
585 } 579 }
586 static void GenerateMiss(MacroAssembler* masm); 580 static void GenerateMiss(MacroAssembler* masm);
587 static void GenerateSlow(MacroAssembler* masm); 581 static void GenerateSlow(MacroAssembler* masm);
588 static void GenerateGeneric( 582 static void GenerateMegamorphic(MacroAssembler* masm, StrictMode strict_mode);
589 MacroAssembler* masm, StrictMode strict_mode, 583 static void GenerateGeneric(MacroAssembler* masm, StrictMode strict_mode);
590 KeyedStoreStubCacheRequirement handler_requirement);
591 static void GenerateSloppyArguments(MacroAssembler* masm); 584 static void GenerateSloppyArguments(MacroAssembler* masm);
592 585
593 protected: 586 protected:
594 virtual Handle<Code> pre_monomorphic_stub() const { 587 virtual Handle<Code> pre_monomorphic_stub() const {
595 return pre_monomorphic_stub(isolate(), strict_mode()); 588 return pre_monomorphic_stub(isolate(), strict_mode());
596 } 589 }
597 static Handle<Code> pre_monomorphic_stub(Isolate* isolate, 590 static Handle<Code> pre_monomorphic_stub(Isolate* isolate,
598 StrictMode strict_mode) { 591 StrictMode strict_mode) {
599 if (strict_mode == STRICT) { 592 if (strict_mode == STRICT) {
600 return isolate->builtins()->KeyedStoreIC_PreMonomorphic_Strict(); 593 return isolate->builtins()->KeyedStoreIC_PreMonomorphic_Strict();
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 708
716 // Support functions for interceptor handlers. 709 // Support functions for interceptor handlers.
717 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly); 710 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly);
718 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor); 711 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor);
719 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor); 712 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor);
720 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor); 713 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor);
721 } 714 }
722 } // namespace v8::internal 715 } // namespace v8::internal
723 716
724 #endif // V8_IC_H_ 717 #endif // V8_IC_H_
OLDNEW
« no previous file with comments | « src/ic/ia32/ic-ia32.cc ('k') | src/ic/ic.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698