| 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_HANDLER_COMPILER_H_ |    5 #ifndef V8_IC_HANDLER_COMPILER_H_ | 
|    6 #define V8_IC_HANDLER_COMPILER_H_ |    6 #define V8_IC_HANDLER_COMPILER_H_ | 
|    7  |    7  | 
|    8 #include "src/ic/access-compiler.h" |    8 #include "src/ic/access-compiler.h" | 
|    9 #include "src/ic/ic-state.h" |    9 #include "src/ic/ic-state.h" | 
|   10  |   10  | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
|   23  protected: |   23  protected: | 
|   24   PropertyHandlerCompiler(Isolate* isolate, Code::Kind kind, |   24   PropertyHandlerCompiler(Isolate* isolate, Code::Kind kind, | 
|   25                           Handle<HeapType> type, Handle<JSObject> holder, |   25                           Handle<HeapType> type, Handle<JSObject> holder, | 
|   26                           CacheHolderFlag cache_holder) |   26                           CacheHolderFlag cache_holder) | 
|   27       : PropertyAccessCompiler(isolate, kind, cache_holder), |   27       : PropertyAccessCompiler(isolate, kind, cache_holder), | 
|   28         type_(type), |   28         type_(type), | 
|   29         holder_(holder) {} |   29         holder_(holder) {} | 
|   30  |   30  | 
|   31   virtual ~PropertyHandlerCompiler() {} |   31   virtual ~PropertyHandlerCompiler() {} | 
|   32  |   32  | 
 |   33   // TODO(mvstanton): the frontend header in FLAG_vector_ic case needs to | 
 |   34   // save the vector and slot registers on the stack, and the footer would | 
 |   35   // pop them before calling the miss helper. Also, these regs need to be popped | 
 |   36   // before any returns. P'rhaps the popping can be done at the end of the | 
 |   37   // footer, eh? (idea from Toon). | 
|   33   virtual Register FrontendHeader(Register object_reg, Handle<Name> name, |   38   virtual Register FrontendHeader(Register object_reg, Handle<Name> name, | 
|   34                                   Label* miss) { |   39                                   Label* miss) { | 
|   35     UNREACHABLE(); |   40     UNREACHABLE(); | 
|   36     return receiver(); |   41     return receiver(); | 
|   37   } |   42   } | 
|   38  |   43  | 
|   39   virtual void FrontendFooter(Handle<Name> name, Label* miss) { UNREACHABLE(); } |   44   virtual void FrontendFooter(Handle<Name> name, Label* miss) { UNREACHABLE(); } | 
|   40  |   45  | 
|   41   Register Frontend(Register object_reg, Handle<Name> name); |   46   Register Frontend(Register object_reg, Handle<Name> name); | 
|   42   void NonexistentFrontendHeader(Handle<Name> name, Label* miss, |   47   void NonexistentFrontendHeader(Handle<Name> name, Label* miss, | 
|   43                                  Register scratch1, Register scratch2); |   48                                  Register scratch1, Register scratch2); | 
|   44  |   49  | 
 |   50   // When FLAG_vector_ics is true, handlers that have the possibility of missing | 
 |   51   // will need to save and pass these to miss handlers. | 
 |   52   void PushVectorAndSlot(); | 
 |   53   void PushVectorAndSlot(Register vector, Register slot); | 
 |   54   void PopVectorAndSlot(); | 
 |   55   void PopVectorAndSlot(Register vector, Register slot); | 
 |   56  | 
 |   57   void DiscardVectorAndSlot(); | 
 |   58  | 
|   45   // TODO(verwaest): Make non-static. |   59   // TODO(verwaest): Make non-static. | 
|   46   static void GenerateFastApiCall(MacroAssembler* masm, |   60   static void GenerateFastApiCall(MacroAssembler* masm, | 
|   47                                   const CallOptimization& optimization, |   61                                   const CallOptimization& optimization, | 
|   48                                   Handle<Map> receiver_map, Register receiver, |   62                                   Handle<Map> receiver_map, Register receiver, | 
|   49                                   Register scratch, bool is_store, int argc, |   63                                   Register scratch, bool is_store, int argc, | 
|   50                                   Register* values); |   64                                   Register* values); | 
|   51  |   65  | 
|   52   // Helper function used to check that the dictionary doesn't contain |   66   // Helper function used to check that the dictionary doesn't contain | 
|   53   // the property. This function may return false negatives, so miss_label |   67   // the property. This function may return false negatives, so miss_label | 
|   54   // must always call a backup property check that is complete. |   68   // must always call a backup property check that is complete. | 
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  265  |  279  | 
|  266   void CompileElementHandlers(MapHandleList* receiver_maps, |  280   void CompileElementHandlers(MapHandleList* receiver_maps, | 
|  267                               CodeHandleList* handlers); |  281                               CodeHandleList* handlers); | 
|  268  |  282  | 
|  269   static void GenerateStoreSlow(MacroAssembler* masm); |  283   static void GenerateStoreSlow(MacroAssembler* masm); | 
|  270 }; |  284 }; | 
|  271 } |  285 } | 
|  272 }  // namespace v8::internal |  286 }  // namespace v8::internal | 
|  273  |  287  | 
|  274 #endif  // V8_IC_HANDLER_COMPILER_H_ |  288 #endif  // V8_IC_HANDLER_COMPILER_H_ | 
| OLD | NEW |