• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
PropertyICCompiler(Isolate * isolate)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