| OLD | NEW |
| 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 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 static void GenerateMegamorphic(MacroAssembler* masm); | 474 static void GenerateMegamorphic(MacroAssembler* masm); |
| 475 | 475 |
| 476 // Bit mask to be tested against bit field for the cases when | 476 // Bit mask to be tested against bit field for the cases when |
| 477 // generic stub should go into slow case. | 477 // generic stub should go into slow case. |
| 478 // Access check is necessary explicitly since generic stub does not perform | 478 // Access check is necessary explicitly since generic stub does not perform |
| 479 // map checks. | 479 // map checks. |
| 480 static const int kSlowCaseBitFieldMask = | 480 static const int kSlowCaseBitFieldMask = |
| 481 (1 << Map::kIsAccessCheckNeeded) | (1 << Map::kHasIndexedInterceptor); | 481 (1 << Map::kIsAccessCheckNeeded) | (1 << Map::kHasIndexedInterceptor); |
| 482 | 482 |
| 483 static Handle<Code> initialize_stub(Isolate* isolate); | 483 static Handle<Code> initialize_stub(Isolate* isolate); |
| 484 static Handle<Code> initialize_stub_in_optimized_code(Isolate* isolate); | 484 static Handle<Code> initialize_stub_in_optimized_code( |
| 485 Isolate* isolate, State initialization_state); |
| 485 static Handle<Code> ChooseMegamorphicStub(Isolate* isolate); | 486 static Handle<Code> ChooseMegamorphicStub(Isolate* isolate); |
| 486 static Handle<Code> pre_monomorphic_stub(Isolate* isolate); | 487 static Handle<Code> pre_monomorphic_stub(Isolate* isolate); |
| 487 | 488 |
| 488 static void Clear(Isolate* isolate, Code* host, KeyedLoadICNexus* nexus); | 489 static void Clear(Isolate* isolate, Code* host, KeyedLoadICNexus* nexus); |
| 489 | 490 |
| 490 protected: | 491 protected: |
| 491 // receiver is HeapObject because it could be a String or a JSObject | 492 // receiver is HeapObject because it could be a String or a JSObject |
| 492 Handle<Code> LoadElementStub(Handle<HeapObject> receiver); | 493 Handle<Code> LoadElementStub(Handle<HeapObject> receiver); |
| 493 virtual Handle<Code> pre_monomorphic_stub() const { | 494 virtual Handle<Code> pre_monomorphic_stub() const { |
| 494 return pre_monomorphic_stub(isolate()); | 495 return pre_monomorphic_stub(isolate()); |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 625 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } | 626 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } |
| 626 static void GeneratePreMonomorphic(MacroAssembler* masm) { | 627 static void GeneratePreMonomorphic(MacroAssembler* masm) { |
| 627 GenerateMiss(masm); | 628 GenerateMiss(masm); |
| 628 } | 629 } |
| 629 static void GenerateMiss(MacroAssembler* masm); | 630 static void GenerateMiss(MacroAssembler* masm); |
| 630 static void GenerateSlow(MacroAssembler* masm); | 631 static void GenerateSlow(MacroAssembler* masm); |
| 631 static void GenerateMegamorphic(MacroAssembler* masm, | 632 static void GenerateMegamorphic(MacroAssembler* masm, |
| 632 LanguageMode language_mode); | 633 LanguageMode language_mode); |
| 633 static void GenerateSloppyArguments(MacroAssembler* masm); | 634 static void GenerateSloppyArguments(MacroAssembler* masm); |
| 634 | 635 |
| 636 static Handle<Code> initialize_stub(Isolate* isolate, |
| 637 LanguageMode language_mode, |
| 638 State initialization_state); |
| 639 |
| 635 protected: | 640 protected: |
| 636 virtual Handle<Code> pre_monomorphic_stub() const { | 641 virtual Handle<Code> pre_monomorphic_stub() const { |
| 637 return pre_monomorphic_stub(isolate(), language_mode()); | 642 return pre_monomorphic_stub(isolate(), language_mode()); |
| 638 } | 643 } |
| 639 static Handle<Code> pre_monomorphic_stub(Isolate* isolate, | 644 static Handle<Code> pre_monomorphic_stub(Isolate* isolate, |
| 640 LanguageMode language_mode) { | 645 LanguageMode language_mode) { |
| 641 if (is_strict(language_mode)) { | 646 if (is_strict(language_mode)) { |
| 642 return isolate->builtins()->KeyedStoreIC_PreMonomorphic_Strict(); | 647 return isolate->builtins()->KeyedStoreIC_PreMonomorphic_Strict(); |
| 643 } else { | 648 } else { |
| 644 return isolate->builtins()->KeyedStoreIC_PreMonomorphic(); | 649 return isolate->builtins()->KeyedStoreIC_PreMonomorphic(); |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 757 | 762 |
| 758 // Support functions for interceptor handlers. | 763 // Support functions for interceptor handlers. |
| 759 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly); | 764 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly); |
| 760 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor); | 765 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor); |
| 761 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor); | 766 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor); |
| 762 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor); | 767 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor); |
| 763 } | 768 } |
| 764 } // namespace v8::internal | 769 } // namespace v8::internal |
| 765 | 770 |
| 766 #endif // V8_IC_H_ | 771 #endif // V8_IC_H_ |
| OLD | NEW |