| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without | 
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are | 
| 4 // met: | 4 // met: | 
| 5 // | 5 // | 
| 6 //     * Redistributions of source code must retain the above copyright | 6 //     * Redistributions of source code must retain the above copyright | 
| 7 //       notice, this list of conditions and the following disclaimer. | 7 //       notice, this list of conditions and the following disclaimer. | 
| 8 //     * Redistributions in binary form must reproduce the above | 8 //     * Redistributions in binary form must reproduce the above | 
| 9 //       copyright notice, this list of conditions and the following | 9 //       copyright notice, this list of conditions and the following | 
| 10 //       disclaimer in the documentation and/or other materials provided | 10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
| 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
| 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
| 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
| 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 27 | 27 | 
| 28 #ifndef V8_IC_H_ | 28 #ifndef V8_IC_H_ | 
| 29 #define V8_IC_H_ | 29 #define V8_IC_H_ | 
| 30 | 30 | 
| 31 #include "macro-assembler.h" | 31 #include "macro-assembler.h" | 
| 32 #include "type-info.h" |  | 
| 33 | 32 | 
| 34 namespace v8 { | 33 namespace v8 { | 
| 35 namespace internal { | 34 namespace internal { | 
| 36 | 35 | 
| 37 | 36 | 
|  | 37 const int kMaxKeyedPolymorphism = 4; | 
|  | 38 | 
|  | 39 | 
| 38 // IC_UTIL_LIST defines all utility functions called from generated | 40 // IC_UTIL_LIST defines all utility functions called from generated | 
| 39 // inline caching code. The argument for the macro, ICU, is the function name. | 41 // inline caching code. The argument for the macro, ICU, is the function name. | 
| 40 #define IC_UTIL_LIST(ICU)                             \ | 42 #define IC_UTIL_LIST(ICU)                             \ | 
| 41   ICU(LoadIC_Miss)                                    \ | 43   ICU(LoadIC_Miss)                                    \ | 
| 42   ICU(KeyedLoadIC_Miss)                               \ | 44   ICU(KeyedLoadIC_Miss)                               \ | 
| 43   ICU(CallIC_Miss)                                    \ | 45   ICU(CallIC_Miss)                                    \ | 
| 44   ICU(KeyedCallIC_Miss)                               \ | 46   ICU(KeyedCallIC_Miss)                               \ | 
| 45   ICU(StoreIC_Miss)                                   \ | 47   ICU(StoreIC_Miss)                                   \ | 
| 46   ICU(StoreIC_ArrayLength)                            \ | 48   ICU(StoreIC_ArrayLength)                            \ | 
| 47   ICU(StoreIC_Slow)                                   \ | 49   ICU(StoreIC_Slow)                                   \ | 
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 289 | 291 | 
| 290   Address address() const { return address_; } | 292   Address address() const { return address_; } | 
| 291 | 293 | 
| 292   IC::UtilityId id() const { return id_; } | 294   IC::UtilityId id() const { return id_; } | 
| 293  private: | 295  private: | 
| 294   Address address_; | 296   Address address_; | 
| 295   IC::UtilityId id_; | 297   IC::UtilityId id_; | 
| 296 }; | 298 }; | 
| 297 | 299 | 
| 298 | 300 | 
|  | 301 enum StringStubFeedback { | 
|  | 302   DEFAULT_STRING_STUB = 0, | 
|  | 303   STRING_INDEX_OUT_OF_BOUNDS = 1 | 
|  | 304 }; | 
|  | 305 | 
|  | 306 | 
| 299 class CallICBase: public IC { | 307 class CallICBase: public IC { | 
| 300  public: | 308  public: | 
| 301   // ExtraICState bits | 309   // ExtraICState bits | 
| 302   class Contextual: public BitField<ContextualMode, 0, 1> {}; | 310   class Contextual: public BitField<ContextualMode, 0, 1> {}; | 
| 303   class StringStubState: public BitField<StringStubFeedback, 1, 1> {}; | 311   class StringStubState: public BitField<StringStubFeedback, 1, 1> {}; | 
| 304   static ExtraICState ComputeExtraICState(ContextualMode mode, | 312   static ExtraICState ComputeExtraICState(ContextualMode mode, | 
| 305                                           StringStubFeedback feedback) { | 313                                           StringStubFeedback feedback) { | 
| 306     return Contextual::encode(mode) | StringStubState::encode(feedback); | 314     return Contextual::encode(mode) | StringStubState::encode(feedback); | 
| 307   } | 315   } | 
| 308 | 316 | 
| (...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1028 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedCallIC_MissFromStubFailure); | 1036 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedCallIC_MissFromStubFailure); | 
| 1029 DECLARE_RUNTIME_FUNCTION(MaybeObject*, ElementsTransitionAndStoreIC_Miss); | 1037 DECLARE_RUNTIME_FUNCTION(MaybeObject*, ElementsTransitionAndStoreIC_Miss); | 
| 1030 DECLARE_RUNTIME_FUNCTION(MaybeObject*, BinaryOpIC_Miss); | 1038 DECLARE_RUNTIME_FUNCTION(MaybeObject*, BinaryOpIC_Miss); | 
| 1031 DECLARE_RUNTIME_FUNCTION(MaybeObject*, CompareNilIC_Miss); | 1039 DECLARE_RUNTIME_FUNCTION(MaybeObject*, CompareNilIC_Miss); | 
| 1032 DECLARE_RUNTIME_FUNCTION(MaybeObject*, ToBooleanIC_Miss); | 1040 DECLARE_RUNTIME_FUNCTION(MaybeObject*, ToBooleanIC_Miss); | 
| 1033 | 1041 | 
| 1034 | 1042 | 
| 1035 } }  // namespace v8::internal | 1043 } }  // namespace v8::internal | 
| 1036 | 1044 | 
| 1037 #endif  // V8_IC_H_ | 1045 #endif  // V8_IC_H_ | 
| OLD | NEW | 
|---|