Home | History | Annotate | Download | only in ic
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef V8_IC_IC_COMPILER_H_
      6 #define V8_IC_IC_COMPILER_H_
      7 
      8 #include "src/ic/access-compiler.h"
      9 
     10 namespace v8 {
     11 namespace internal {
     12 
     13 
     14 class PropertyICCompiler : public PropertyAccessCompiler {
     15  public:
     16   // Keyed
     17   static Handle<Code> ComputeKeyedLoadMonomorphicHandler(
     18       Handle<Map> receiver_map, ExtraICState extra_ic_state);
     19 
     20   static Handle<Code> ComputeKeyedStoreMonomorphicHandler(
     21       Handle<Map> receiver_map, KeyedAccessStoreMode store_mode);
     22   static void ComputeKeyedStorePolymorphicHandlers(
     23       MapHandleList* receiver_maps, MapHandleList* transitioned_maps,
     24       CodeHandleList* handlers, KeyedAccessStoreMode store_mode);
     25 
     26   // Helpers
     27   // TODO(verwaest): Move all uses of these helpers to the PropertyICCompiler
     28   // and make the helpers private.
     29   static void GenerateRuntimeSetProperty(MacroAssembler* masm,
     30                                          LanguageMode language_mode);
     31 
     32 
     33  private:
     34   explicit PropertyICCompiler(Isolate* isolate)
     35       : PropertyAccessCompiler(isolate, Code::KEYED_STORE_IC,
     36                                kCacheOnReceiver) {}
     37 
     38   Handle<Code> CompileKeyedStoreMonomorphicHandler(
     39       Handle<Map> receiver_map, KeyedAccessStoreMode store_mode);
     40   void CompileKeyedStorePolymorphicHandlers(MapHandleList* receiver_maps,
     41                                             MapHandleList* transitioned_maps,
     42                                             CodeHandleList* handlers,
     43                                             KeyedAccessStoreMode store_mode);
     44 };
     45 
     46 
     47 }  // namespace internal
     48 }  // namespace v8
     49 
     50 #endif  // V8_IC_IC_COMPILER_H_
     51