| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| 11 // with the distribution. | 11 // with the distribution. |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 // Deferred code support. | 73 // Deferred code support. |
| 74 void DoDeferredNumberTagD(LNumberTagD* instr); | 74 void DoDeferredNumberTagD(LNumberTagD* instr); |
| 75 void DoDeferredNumberTagI(LNumberTagI* instr); | 75 void DoDeferredNumberTagI(LNumberTagI* instr); |
| 76 void DoDeferredTaggedToI(LTaggedToI* instr); | 76 void DoDeferredTaggedToI(LTaggedToI* instr); |
| 77 void DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr); | 77 void DoDeferredMathAbsTaggedHeapNumber(LUnaryMathOperation* instr); |
| 78 void DoDeferredStackCheck(LGoto* instr); | 78 void DoDeferredStackCheck(LGoto* instr); |
| 79 | 79 |
| 80 // Parallel move support. | 80 // Parallel move support. |
| 81 void DoParallelMove(LParallelMove* move); | 81 void DoParallelMove(LParallelMove* move); |
| 82 | 82 |
| 83 // Emit frame translation commands for an environment. |
| 84 void WriteTranslation(LEnvironment* environment, Translation* translation); |
| 85 |
| 83 // Declare methods that deal with the individual node types. | 86 // Declare methods that deal with the individual node types. |
| 84 #define DECLARE_DO(type) void Do##type(L##type* node); | 87 #define DECLARE_DO(type) void Do##type(L##type* node); |
| 85 LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) | 88 LITHIUM_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) |
| 86 #undef DECLARE_DO | 89 #undef DECLARE_DO |
| 87 | 90 |
| 88 private: | 91 private: |
| 89 enum Status { | 92 enum Status { |
| 90 UNUSED, | 93 UNUSED, |
| 91 GENERATING, | 94 GENERATING, |
| 92 DONE, | 95 DONE, |
| 93 ABORTED | 96 ABORTED |
| 94 }; | 97 }; |
| 95 | 98 |
| 96 bool is_unused() const { return status_ == UNUSED; } | 99 bool is_unused() const { return status_ == UNUSED; } |
| 97 bool is_generating() const { return status_ == GENERATING; } | 100 bool is_generating() const { return status_ == GENERATING; } |
| 98 bool is_done() const { return status_ == DONE; } | 101 bool is_done() const { return status_ == DONE; } |
| 99 bool is_aborted() const { return status_ == ABORTED; } | 102 bool is_aborted() const { return status_ == ABORTED; } |
| 100 | 103 |
| 101 LChunk* chunk() const { return chunk_; } | 104 LChunk* chunk() const { return chunk_; } |
| 102 Scope* scope() const { return scope_; } | 105 Scope* scope() const { return scope_; } |
| 103 HGraph* graph() const { return chunk_->graph(); } | 106 HGraph* graph() const { return chunk_->graph(); } |
| 104 MacroAssembler* masm() const { return masm_; } | 107 MacroAssembler* masm() const { return masm_; } |
| 105 | 108 |
| 109 Register scratch0() { return r9; } |
| 110 SwVfpRegister single_scratch0() { return s0; } |
| 111 SwVfpRegister single_scratch1() { return s1; } |
| 112 DwVfpRegister double_scratch0() { return d1; } |
| 113 |
| 106 int GetNextEmittedBlock(int block); | 114 int GetNextEmittedBlock(int block); |
| 107 LInstruction* GetNextInstruction(); | 115 LInstruction* GetNextInstruction(); |
| 108 | 116 |
| 109 void EmitClassOfTest(Label* if_true, | 117 void EmitClassOfTest(Label* if_true, |
| 110 Label* if_false, | 118 Label* if_false, |
| 111 Handle<String> class_name, | 119 Handle<String> class_name, |
| 112 Register input, | 120 Register input, |
| 113 Register temporary, | 121 Register temporary, |
| 114 Register temporary2); | 122 Register temporary2); |
| 115 | 123 |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 Scope* const scope_; | 238 Scope* const scope_; |
| 231 Status status_; | 239 Status status_; |
| 232 TranslationBuffer translations_; | 240 TranslationBuffer translations_; |
| 233 ZoneList<LDeferredCode*> deferred_; | 241 ZoneList<LDeferredCode*> deferred_; |
| 234 int osr_pc_offset_; | 242 int osr_pc_offset_; |
| 235 | 243 |
| 236 // Builder that keeps track of safepoints in the code. The table | 244 // Builder that keeps track of safepoints in the code. The table |
| 237 // itself is emitted at the end of the generated code. | 245 // itself is emitted at the end of the generated code. |
| 238 SafepointTableBuilder safepoints_; | 246 SafepointTableBuilder safepoints_; |
| 239 | 247 |
| 248 // Compiler from a set of parallel moves to a sequential list of moves. |
| 249 LGapResolver resolver_; |
| 250 |
| 240 friend class LDeferredCode; | 251 friend class LDeferredCode; |
| 241 friend class LEnvironment; | 252 friend class LEnvironment; |
| 242 friend class SafepointGenerator; | 253 friend class SafepointGenerator; |
| 243 DISALLOW_COPY_AND_ASSIGN(LCodeGen); | 254 DISALLOW_COPY_AND_ASSIGN(LCodeGen); |
| 244 }; | 255 }; |
| 245 | 256 |
| 246 | 257 |
| 247 class LDeferredCode: public ZoneObject { | 258 class LDeferredCode: public ZoneObject { |
| 248 public: | 259 public: |
| 249 explicit LDeferredCode(LCodeGen* codegen) | 260 explicit LDeferredCode(LCodeGen* codegen) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 265 private: | 276 private: |
| 266 LCodeGen* codegen_; | 277 LCodeGen* codegen_; |
| 267 Label entry_; | 278 Label entry_; |
| 268 Label exit_; | 279 Label exit_; |
| 269 Label* external_exit_; | 280 Label* external_exit_; |
| 270 }; | 281 }; |
| 271 | 282 |
| 272 } } // namespace v8::internal | 283 } } // namespace v8::internal |
| 273 | 284 |
| 274 #endif // V8_ARM_LITHIUM_CODEGEN_ARM_H_ | 285 #endif // V8_ARM_LITHIUM_CODEGEN_ARM_H_ |
| OLD | NEW |