| OLD | NEW | 
|---|
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_IC_COMPILER_H_ | 5 #ifndef V8_IC_IC_COMPILER_H_ | 
| 6 #define V8_IC_IC_COMPILER_H_ | 6 #define V8_IC_IC_COMPILER_H_ | 
| 7 | 7 | 
| 8 #include "src/ic/access-compiler.h" | 8 #include "src/ic/access-compiler.h" | 
| 9 | 9 | 
| 10 namespace v8 { | 10 namespace v8 { | 
| 11 namespace internal { | 11 namespace internal { | 
| 12 | 12 | 
| 13 | 13 | 
| 14 class PropertyICCompiler : public PropertyAccessCompiler { | 14 class PropertyICCompiler : public PropertyAccessCompiler { | 
| 15  public: | 15  public: | 
| 16   // Finds the Code object stored in the Heap::non_monomorphic_cache(). | 16   // Finds the Code object stored in the Heap::non_monomorphic_cache(). | 
| 17   static Code* FindPreMonomorphic(Isolate* isolate, Code::Kind kind, | 17   static Code* FindPreMonomorphic(Isolate* isolate, Code::Kind kind, | 
| 18                                   ExtraICState extra_ic_state); | 18                                   ExtraICState extra_ic_state); | 
| 19 | 19 | 
| 20   // Named | 20   // Named | 
| 21   static Handle<Code> ComputeLoad(Isolate* isolate, InlineCacheState ic_state, |  | 
| 22                                   ExtraICState extra_state); |  | 
| 23   static Handle<Code> ComputeStore(Isolate* isolate, InlineCacheState ic_state, | 21   static Handle<Code> ComputeStore(Isolate* isolate, InlineCacheState ic_state, | 
| 24                                    ExtraICState extra_state); | 22                                    ExtraICState extra_state); | 
| 25 | 23 | 
| 26   static Handle<Code> ComputeMonomorphic(Code::Kind kind, Handle<Name> name, | 24   static Handle<Code> ComputeMonomorphic(Code::Kind kind, Handle<Name> name, | 
| 27                                          Handle<Map> map, Handle<Code> handler, | 25                                          Handle<Map> map, Handle<Code> handler, | 
| 28                                          ExtraICState extra_ic_state); | 26                                          ExtraICState extra_ic_state); | 
| 29   static Handle<Code> ComputePolymorphic(Code::Kind kind, MapHandleList* maps, | 27   static Handle<Code> ComputePolymorphic(Code::Kind kind, MapHandleList* maps, | 
| 30                                          CodeHandleList* handlers, | 28                                          CodeHandleList* handlers, | 
| 31                                          int number_of_valid_maps, | 29                                          int number_of_valid_maps, | 
| 32                                          Handle<Name> name, | 30                                          Handle<Name> name, | 
| 33                                          ExtraICState extra_ic_state); | 31                                          ExtraICState extra_ic_state); | 
| 34 | 32 | 
| 35   // Keyed | 33   // Keyed | 
| 36   static Handle<Code> ComputeKeyedLoadMonomorphicHandler( | 34   static Handle<Code> ComputeKeyedLoadMonomorphicHandler( | 
| 37       Handle<Map> receiver_map); | 35       Handle<Map> receiver_map); | 
| 38   static Handle<Code> ComputeKeyedLoadMonomorphic(Handle<Map> receiver_map); |  | 
| 39 | 36 | 
| 40   static Handle<Code> ComputeKeyedStoreMonomorphic( | 37   static Handle<Code> ComputeKeyedStoreMonomorphic( | 
| 41       Handle<Map> receiver_map, LanguageMode language_mode, | 38       Handle<Map> receiver_map, LanguageMode language_mode, | 
| 42       KeyedAccessStoreMode store_mode); | 39       KeyedAccessStoreMode store_mode); | 
| 43   static Handle<Code> ComputeKeyedLoadPolymorphic(MapHandleList* receiver_maps); | 40   static Handle<Code> ComputeKeyedLoadPolymorphic(MapHandleList* receiver_maps); | 
| 44   static Handle<Code> ComputeKeyedStorePolymorphic( | 41   static Handle<Code> ComputeKeyedStorePolymorphic( | 
| 45       MapHandleList* receiver_maps, KeyedAccessStoreMode store_mode, | 42       MapHandleList* receiver_maps, KeyedAccessStoreMode store_mode, | 
| 46       LanguageMode language_mode); | 43       LanguageMode language_mode); | 
| 47 | 44 | 
| 48   // Compare nil | 45   // Compare nil | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 62                      CacheHolderFlag cache_holder = kCacheOnReceiver) | 59                      CacheHolderFlag cache_holder = kCacheOnReceiver) | 
| 63       : PropertyAccessCompiler(isolate, kind, cache_holder), | 60       : PropertyAccessCompiler(isolate, kind, cache_holder), | 
| 64         extra_ic_state_(extra_ic_state) {} | 61         extra_ic_state_(extra_ic_state) {} | 
| 65 | 62 | 
| 66   static Handle<Code> Find(Handle<Name> name, Handle<Map> stub_holder_map, | 63   static Handle<Code> Find(Handle<Name> name, Handle<Map> stub_holder_map, | 
| 67                            Code::Kind kind, | 64                            Code::Kind kind, | 
| 68                            ExtraICState extra_ic_state = kNoExtraICState, | 65                            ExtraICState extra_ic_state = kNoExtraICState, | 
| 69                            CacheHolderFlag cache_holder = kCacheOnReceiver); | 66                            CacheHolderFlag cache_holder = kCacheOnReceiver); | 
| 70 | 67 | 
| 71   Handle<Code> CompileLoadInitialize(Code::Flags flags); | 68   Handle<Code> CompileLoadInitialize(Code::Flags flags); | 
| 72   Handle<Code> CompileLoadPreMonomorphic(Code::Flags flags); |  | 
| 73   Handle<Code> CompileLoadMegamorphic(Code::Flags flags); |  | 
| 74   Handle<Code> CompileStoreInitialize(Code::Flags flags); | 69   Handle<Code> CompileStoreInitialize(Code::Flags flags); | 
| 75   Handle<Code> CompileStorePreMonomorphic(Code::Flags flags); | 70   Handle<Code> CompileStorePreMonomorphic(Code::Flags flags); | 
| 76   Handle<Code> CompileStoreGeneric(Code::Flags flags); | 71   Handle<Code> CompileStoreGeneric(Code::Flags flags); | 
| 77   Handle<Code> CompileStoreMegamorphic(Code::Flags flags); | 72   Handle<Code> CompileStoreMegamorphic(Code::Flags flags); | 
| 78 | 73 | 
| 79   Handle<Code> CompileMonomorphic(Handle<Map> map, Handle<Code> handler, | 74   Handle<Code> CompileMonomorphic(Handle<Map> map, Handle<Code> handler, | 
| 80                                   Handle<Name> name, IcCheckType check); | 75                                   Handle<Name> name, IcCheckType check); | 
| 81   Handle<Code> CompilePolymorphic(MapHandleList* maps, CodeHandleList* handlers, | 76   Handle<Code> CompilePolymorphic(MapHandleList* maps, CodeHandleList* handlers, | 
| 82                                   Handle<Name> name, Code::StubType type, | 77                                   Handle<Name> name, Code::StubType type, | 
| 83                                   IcCheckType check); | 78                                   IcCheckType check); | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 115   } | 110   } | 
| 116 | 111 | 
| 117   const ExtraICState extra_ic_state_; | 112   const ExtraICState extra_ic_state_; | 
| 118 }; | 113 }; | 
| 119 | 114 | 
| 120 | 115 | 
| 121 } | 116 } | 
| 122 }  // namespace v8::internal | 117 }  // namespace v8::internal | 
| 123 | 118 | 
| 124 #endif  // V8_IC_IC_COMPILER_H_ | 119 #endif  // V8_IC_IC_COMPILER_H_ | 
| OLD | NEW | 
|---|