| 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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 | 138 |
| 139 Handle<Code> CompileLoadGlobal(Handle<PropertyCell> cell, Handle<Name> name, | 139 Handle<Code> CompileLoadGlobal(Handle<PropertyCell> cell, Handle<Name> name, |
| 140 bool is_configurable); | 140 bool is_configurable); |
| 141 | 141 |
| 142 // Static interface | 142 // Static interface |
| 143 static Handle<Code> ComputeLoadNonexistent(Handle<Name> name, | 143 static Handle<Code> ComputeLoadNonexistent(Handle<Name> name, |
| 144 Handle<HeapType> type); | 144 Handle<HeapType> type); |
| 145 | 145 |
| 146 static void GenerateLoadViaGetter(MacroAssembler* masm, Handle<HeapType> type, | 146 static void GenerateLoadViaGetter(MacroAssembler* masm, Handle<HeapType> type, |
| 147 Register receiver, Register holder, | 147 Register receiver, Register holder, |
| 148 int accessor_index, int expected_arguments); | 148 int accessor_index, int expected_arguments, |
| 149 Register scratch); |
| 149 | 150 |
| 150 static void GenerateLoadViaGetterForDeopt(MacroAssembler* masm) { | 151 static void GenerateLoadViaGetterForDeopt(MacroAssembler* masm) { |
| 151 GenerateLoadViaGetter(masm, Handle<HeapType>::null(), no_reg, no_reg, -1, | 152 GenerateLoadViaGetter(masm, Handle<HeapType>::null(), no_reg, no_reg, -1, |
| 152 -1); | 153 -1, no_reg); |
| 153 } | 154 } |
| 154 | 155 |
| 155 static void GenerateLoadFunctionPrototype(MacroAssembler* masm, | 156 static void GenerateLoadFunctionPrototype(MacroAssembler* masm, |
| 156 Register receiver, | 157 Register receiver, |
| 157 Register scratch1, | 158 Register scratch1, |
| 158 Register scratch2, | 159 Register scratch2, |
| 159 Label* miss_label); | 160 Label* miss_label); |
| 160 | 161 |
| 161 // These constants describe the structure of the interceptor arguments on the | 162 // These constants describe the structure of the interceptor arguments on the |
| 162 // stack. The arguments are pushed by the (platform-specific) | 163 // stack. The arguments are pushed by the (platform-specific) |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 Handle<Code> CompileStoreCallback(Handle<JSObject> object, Handle<Name> name, | 226 Handle<Code> CompileStoreCallback(Handle<JSObject> object, Handle<Name> name, |
| 226 const CallOptimization& call_optimization); | 227 const CallOptimization& call_optimization); |
| 227 Handle<Code> CompileStoreViaSetter(Handle<JSObject> object, Handle<Name> name, | 228 Handle<Code> CompileStoreViaSetter(Handle<JSObject> object, Handle<Name> name, |
| 228 int accessor_index, | 229 int accessor_index, |
| 229 int expected_arguments); | 230 int expected_arguments); |
| 230 Handle<Code> CompileStoreInterceptor(Handle<Name> name); | 231 Handle<Code> CompileStoreInterceptor(Handle<Name> name); |
| 231 | 232 |
| 232 static void GenerateStoreViaSetter(MacroAssembler* masm, | 233 static void GenerateStoreViaSetter(MacroAssembler* masm, |
| 233 Handle<HeapType> type, Register receiver, | 234 Handle<HeapType> type, Register receiver, |
| 234 Register holder, int accessor_index, | 235 Register holder, int accessor_index, |
| 235 int expected_arguments); | 236 int expected_arguments, Register scratch); |
| 236 | 237 |
| 237 static void GenerateStoreViaSetterForDeopt(MacroAssembler* masm) { | 238 static void GenerateStoreViaSetterForDeopt(MacroAssembler* masm) { |
| 238 GenerateStoreViaSetter(masm, Handle<HeapType>::null(), no_reg, no_reg, -1, | 239 GenerateStoreViaSetter(masm, Handle<HeapType>::null(), no_reg, no_reg, -1, |
| 239 -1); | 240 -1, no_reg); |
| 240 } | 241 } |
| 241 | 242 |
| 242 static void GenerateSlow(MacroAssembler* masm); | 243 static void GenerateSlow(MacroAssembler* masm); |
| 243 | 244 |
| 244 protected: | 245 protected: |
| 245 virtual Register FrontendHeader(Register object_reg, Handle<Name> name, | 246 virtual Register FrontendHeader(Register object_reg, Handle<Name> name, |
| 246 Label* miss); | 247 Label* miss); |
| 247 | 248 |
| 248 virtual void FrontendFooter(Handle<Name> name, Label* miss); | 249 virtual void FrontendFooter(Handle<Name> name, Label* miss); |
| 249 void GenerateRestoreName(Label* label, Handle<Name> name); | 250 void GenerateRestoreName(Label* label, Handle<Name> name); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 | 288 |
| 288 void CompileElementHandlers(MapHandleList* receiver_maps, | 289 void CompileElementHandlers(MapHandleList* receiver_maps, |
| 289 CodeHandleList* handlers); | 290 CodeHandleList* handlers); |
| 290 | 291 |
| 291 static void GenerateStoreSlow(MacroAssembler* masm); | 292 static void GenerateStoreSlow(MacroAssembler* masm); |
| 292 }; | 293 }; |
| 293 } | 294 } |
| 294 } // namespace v8::internal | 295 } // namespace v8::internal |
| 295 | 296 |
| 296 #endif // V8_IC_HANDLER_COMPILER_H_ | 297 #endif // V8_IC_HANDLER_COMPILER_H_ |
| OLD | NEW |