OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_CRANKSHAFT_IA32_LITHIUM_CODEGEN_IA32_H_ | 5 #ifndef V8_CRANKSHAFT_IA32_LITHIUM_CODEGEN_IA32_H_ |
6 #define V8_CRANKSHAFT_IA32_LITHIUM_CODEGEN_IA32_H_ | 6 #define V8_CRANKSHAFT_IA32_LITHIUM_CODEGEN_IA32_H_ |
7 | 7 |
8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" |
9 #include "src/base/logging.h" | 9 #include "src/base/logging.h" |
10 #include "src/crankshaft/ia32/lithium-gap-resolver-ia32.h" | 10 #include "src/crankshaft/ia32/lithium-gap-resolver-ia32.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 class LGapNode; | 22 class LGapNode; |
23 class SafepointGenerator; | 23 class SafepointGenerator; |
24 | 24 |
25 class LCodeGen: public LCodeGenBase { | 25 class LCodeGen: public LCodeGenBase { |
26 public: | 26 public: |
27 LCodeGen(LChunk* chunk, MacroAssembler* assembler, CompilationInfo* info) | 27 LCodeGen(LChunk* chunk, MacroAssembler* assembler, CompilationInfo* info) |
28 : LCodeGenBase(chunk, assembler, info), | 28 : LCodeGenBase(chunk, assembler, info), |
29 jump_table_(4, info->zone()), | 29 jump_table_(4, info->zone()), |
30 scope_(info->scope()), | 30 scope_(info->scope()), |
31 deferred_(8, info->zone()), | 31 deferred_(8, info->zone()), |
32 dynamic_frame_alignment_(false), | |
33 support_aligned_spilled_doubles_(false), | |
34 frame_is_built_(false), | 32 frame_is_built_(false), |
35 safepoints_(info->zone()), | 33 safepoints_(info->zone()), |
36 resolver_(this), | 34 resolver_(this), |
37 expected_safepoint_kind_(Safepoint::kSimple) { | 35 expected_safepoint_kind_(Safepoint::kSimple) { |
38 PopulateDeoptimizationLiteralsWithInlinedFunctions(); | 36 PopulateDeoptimizationLiteralsWithInlinedFunctions(); |
39 } | 37 } |
40 | 38 |
41 int LookupDestination(int block_id) const { | 39 int LookupDestination(int block_id) const { |
42 return chunk()->LookupDestination(block_id); | 40 return chunk()->LookupDestination(block_id); |
43 } | 41 } |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 void DoLoadKeyedFixedArray(LLoadKeyed* instr); | 291 void DoLoadKeyedFixedArray(LLoadKeyed* instr); |
294 void DoStoreKeyedExternalArray(LStoreKeyed* instr); | 292 void DoStoreKeyedExternalArray(LStoreKeyed* instr); |
295 void DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr); | 293 void DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr); |
296 void DoStoreKeyedFixedArray(LStoreKeyed* instr); | 294 void DoStoreKeyedFixedArray(LStoreKeyed* instr); |
297 | 295 |
298 template <class T> | 296 template <class T> |
299 void EmitVectorLoadICRegisters(T* instr); | 297 void EmitVectorLoadICRegisters(T* instr); |
300 template <class T> | 298 template <class T> |
301 void EmitVectorStoreICRegisters(T* instr); | 299 void EmitVectorStoreICRegisters(T* instr); |
302 | 300 |
303 void EmitReturn(LReturn* instr, bool dynamic_frame_alignment); | 301 void EmitReturn(LReturn* instr); |
304 | 302 |
305 // Emits code for pushing either a tagged constant, a (non-double) | 303 // Emits code for pushing either a tagged constant, a (non-double) |
306 // register, or a stack slot operand. | 304 // register, or a stack slot operand. |
307 void EmitPushTaggedOperand(LOperand* operand); | 305 void EmitPushTaggedOperand(LOperand* operand); |
308 | 306 |
309 friend class LGapResolver; | 307 friend class LGapResolver; |
310 | 308 |
311 #ifdef _MSC_VER | 309 #ifdef _MSC_VER |
312 // On windows, you may not access the stack more than one page below | 310 // On windows, you may not access the stack more than one page below |
313 // the most recently mapped page. To make the allocated area randomly | 311 // the most recently mapped page. To make the allocated area randomly |
314 // accessible, we write an arbitrary value to each page in range | 312 // accessible, we write an arbitrary value to each page in range |
315 // esp + offset - page_size .. esp in turn. | 313 // esp + offset - page_size .. esp in turn. |
316 void MakeSureStackPagesMapped(int offset); | 314 void MakeSureStackPagesMapped(int offset); |
317 #endif | 315 #endif |
318 | 316 |
319 ZoneList<Deoptimizer::JumpTableEntry> jump_table_; | 317 ZoneList<Deoptimizer::JumpTableEntry> jump_table_; |
320 Scope* const scope_; | 318 Scope* const scope_; |
321 ZoneList<LDeferredCode*> deferred_; | 319 ZoneList<LDeferredCode*> deferred_; |
322 bool dynamic_frame_alignment_; | |
323 bool support_aligned_spilled_doubles_; | |
324 bool frame_is_built_; | 320 bool frame_is_built_; |
325 | 321 |
326 // Builder that keeps track of safepoints in the code. The table | 322 // Builder that keeps track of safepoints in the code. The table |
327 // itself is emitted at the end of the generated code. | 323 // itself is emitted at the end of the generated code. |
328 SafepointTableBuilder safepoints_; | 324 SafepointTableBuilder safepoints_; |
329 | 325 |
330 // Compiler from a set of parallel moves to a sequential list of moves. | 326 // Compiler from a set of parallel moves to a sequential list of moves. |
331 LGapResolver resolver_; | 327 LGapResolver resolver_; |
332 | 328 |
333 Safepoint::Kind expected_safepoint_kind_; | 329 Safepoint::Kind expected_safepoint_kind_; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 Label exit_; | 384 Label exit_; |
389 Label* external_exit_; | 385 Label* external_exit_; |
390 Label done_; | 386 Label done_; |
391 int instruction_index_; | 387 int instruction_index_; |
392 }; | 388 }; |
393 | 389 |
394 } // namespace internal | 390 } // namespace internal |
395 } // namespace v8 | 391 } // namespace v8 |
396 | 392 |
397 #endif // V8_CRANKSHAFT_IA32_LITHIUM_CODEGEN_IA32_H_ | 393 #endif // V8_CRANKSHAFT_IA32_LITHIUM_CODEGEN_IA32_H_ |
OLD | NEW |