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 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 | 214 |
215 static void GenerateStoreViaSetter(MacroAssembler* masm, | 215 static void GenerateStoreViaSetter(MacroAssembler* masm, |
216 Handle<HeapType> type, Register receiver, | 216 Handle<HeapType> type, Register receiver, |
217 Handle<JSFunction> setter); | 217 Handle<JSFunction> setter); |
218 | 218 |
219 static void GenerateStoreViaSetterForDeopt(MacroAssembler* masm) { | 219 static void GenerateStoreViaSetterForDeopt(MacroAssembler* masm) { |
220 GenerateStoreViaSetter(masm, Handle<HeapType>::null(), no_reg, | 220 GenerateStoreViaSetter(masm, Handle<HeapType>::null(), no_reg, |
221 Handle<JSFunction>()); | 221 Handle<JSFunction>()); |
222 } | 222 } |
223 | 223 |
| 224 static void GenerateSlow(MacroAssembler* masm); |
| 225 |
224 protected: | 226 protected: |
225 virtual Register FrontendHeader(Register object_reg, Handle<Name> name, | 227 virtual Register FrontendHeader(Register object_reg, Handle<Name> name, |
226 Label* miss); | 228 Label* miss); |
227 | 229 |
228 virtual void FrontendFooter(Handle<Name> name, Label* miss); | 230 virtual void FrontendFooter(Handle<Name> name, Label* miss); |
229 void GenerateRestoreName(Label* label, Handle<Name> name); | 231 void GenerateRestoreName(Label* label, Handle<Name> name); |
230 | 232 |
231 private: | 233 private: |
232 void GenerateStoreTransition(Handle<Map> transition, Handle<Name> name, | 234 void GenerateStoreTransition(Handle<Map> transition, Handle<Name> name, |
233 Register receiver_reg, Register name_reg, | 235 Register receiver_reg, Register name_reg, |
(...skipping 26 matching lines...) Expand all Loading... |
260 : PropertyHandlerCompiler(isolate, Code::KEYED_LOAD_IC, | 262 : PropertyHandlerCompiler(isolate, Code::KEYED_LOAD_IC, |
261 Handle<HeapType>::null(), | 263 Handle<HeapType>::null(), |
262 Handle<JSObject>::null(), kCacheOnReceiver) {} | 264 Handle<JSObject>::null(), kCacheOnReceiver) {} |
263 | 265 |
264 virtual ~ElementHandlerCompiler() {} | 266 virtual ~ElementHandlerCompiler() {} |
265 | 267 |
266 void CompileElementHandlers(MapHandleList* receiver_maps, | 268 void CompileElementHandlers(MapHandleList* receiver_maps, |
267 CodeHandleList* handlers); | 269 CodeHandleList* handlers); |
268 | 270 |
269 static void GenerateLoadDictionaryElement(MacroAssembler* masm); | 271 static void GenerateLoadDictionaryElement(MacroAssembler* masm); |
270 static void GenerateStoreDictionaryElement(MacroAssembler* masm); | 272 static void GenerateStoreSlow(MacroAssembler* masm); |
271 }; | 273 }; |
272 } | 274 } |
273 } // namespace v8::internal | 275 } // namespace v8::internal |
274 | 276 |
275 #endif // V8_IC_HANDLER_COMPILER_H_ | 277 #endif // V8_IC_HANDLER_COMPILER_H_ |
OLD | NEW |