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_HYDROGEN_H_ | 5 #ifndef V8_HYDROGEN_H_ |
6 #define V8_HYDROGEN_H_ | 6 #define V8_HYDROGEN_H_ |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 Isolate* isolate() const { return isolate_; } | 308 Isolate* isolate() const { return isolate_; } |
309 Zone* zone() const { return zone_; } | 309 Zone* zone() const { return zone_; } |
310 CompilationInfo* info() const { return info_; } | 310 CompilationInfo* info() const { return info_; } |
311 | 311 |
312 const ZoneList<HBasicBlock*>* blocks() const { return &blocks_; } | 312 const ZoneList<HBasicBlock*>* blocks() const { return &blocks_; } |
313 const ZoneList<HPhi*>* phi_list() const { return phi_list_; } | 313 const ZoneList<HPhi*>* phi_list() const { return phi_list_; } |
314 HBasicBlock* entry_block() const { return entry_block_; } | 314 HBasicBlock* entry_block() const { return entry_block_; } |
315 HEnvironment* start_environment() const { return start_environment_; } | 315 HEnvironment* start_environment() const { return start_environment_; } |
316 | 316 |
317 void FinalizeUniqueness(); | 317 void FinalizeUniqueness(); |
318 bool ProcessArgumentsObject(); | |
319 void OrderBlocks(); | 318 void OrderBlocks(); |
320 void AssignDominators(); | 319 void AssignDominators(); |
321 void RestoreActualValues(); | 320 void RestoreActualValues(); |
322 | 321 |
323 // Returns false if there are phi-uses of the arguments-object | 322 // Returns false if there are phi-uses of the arguments-object |
324 // which are not supported by the optimizing compiler. | 323 // which are not supported by the optimizing compiler. |
325 bool CheckArgumentsPhiUses(); | 324 bool CheckArgumentsPhiUses(); |
326 | 325 |
327 // Returns false if there are phi-uses of an uninitialized const | 326 // Returns false if there are phi-uses of an uninitialized const |
328 // which are not supported by the optimizing compiler. | 327 // which are not supported by the optimizing compiler. |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 HConstant* ReinsertConstantIfNecessary(HConstant* constant); | 471 HConstant* ReinsertConstantIfNecessary(HConstant* constant); |
473 HConstant* GetConstant(SetOncePointer<HConstant>* pointer, | 472 HConstant* GetConstant(SetOncePointer<HConstant>* pointer, |
474 int32_t integer_value); | 473 int32_t integer_value); |
475 | 474 |
476 template<class Phase> | 475 template<class Phase> |
477 void Run() { | 476 void Run() { |
478 Phase phase(this); | 477 Phase phase(this); |
479 phase.Run(); | 478 phase.Run(); |
480 } | 479 } |
481 | 480 |
482 void EliminateRedundantBoundsChecksUsingInductionVariables(); | |
483 | |
484 Isolate* isolate_; | 481 Isolate* isolate_; |
485 int next_block_id_; | 482 int next_block_id_; |
486 HBasicBlock* entry_block_; | 483 HBasicBlock* entry_block_; |
487 HEnvironment* start_environment_; | 484 HEnvironment* start_environment_; |
488 ZoneList<HBasicBlock*> blocks_; | 485 ZoneList<HBasicBlock*> blocks_; |
489 ZoneList<HValue*> values_; | 486 ZoneList<HValue*> values_; |
490 ZoneList<HPhi*>* phi_list_; | 487 ZoneList<HPhi*>* phi_list_; |
491 ZoneList<HInstruction*>* uint32_instructions_; | 488 ZoneList<HInstruction*>* uint32_instructions_; |
492 SetOncePointer<HConstant> constant_undefined_; | 489 SetOncePointer<HConstant> constant_undefined_; |
493 SetOncePointer<HConstant> constant_0_; | 490 SetOncePointer<HConstant> constant_0_; |
(...skipping 1703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2197 | 2194 |
2198 void VisitDelete(UnaryOperation* expr); | 2195 void VisitDelete(UnaryOperation* expr); |
2199 void VisitVoid(UnaryOperation* expr); | 2196 void VisitVoid(UnaryOperation* expr); |
2200 void VisitTypeof(UnaryOperation* expr); | 2197 void VisitTypeof(UnaryOperation* expr); |
2201 void VisitNot(UnaryOperation* expr); | 2198 void VisitNot(UnaryOperation* expr); |
2202 | 2199 |
2203 void VisitComma(BinaryOperation* expr); | 2200 void VisitComma(BinaryOperation* expr); |
2204 void VisitLogicalExpression(BinaryOperation* expr); | 2201 void VisitLogicalExpression(BinaryOperation* expr); |
2205 void VisitArithmeticExpression(BinaryOperation* expr); | 2202 void VisitArithmeticExpression(BinaryOperation* expr); |
2206 | 2203 |
2207 bool PreProcessOsrEntry(IterationStatement* statement); | |
2208 void VisitLoopBody(IterationStatement* stmt, | 2204 void VisitLoopBody(IterationStatement* stmt, |
2209 HBasicBlock* loop_entry); | 2205 HBasicBlock* loop_entry); |
2210 | 2206 |
2211 // Create a back edge in the flow graph. body_exit is the predecessor | 2207 // Create a back edge in the flow graph. body_exit is the predecessor |
2212 // block and loop_entry is the successor block. loop_successor is the | 2208 // block and loop_entry is the successor block. loop_successor is the |
2213 // block where control flow exits the loop normally (e.g., via failure of | 2209 // block where control flow exits the loop normally (e.g., via failure of |
2214 // the condition) and break_block is the block where control flow breaks | 2210 // the condition) and break_block is the block where control flow breaks |
2215 // from the loop. All blocks except loop_entry can be NULL. The return | 2211 // from the loop. All blocks except loop_entry can be NULL. The return |
2216 // value is the new successor block which is the join of loop_successor | 2212 // value is the new successor block which is the join of loop_successor |
2217 // and break_block, or NULL. | 2213 // and break_block, or NULL. |
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2909 } | 2905 } |
2910 | 2906 |
2911 private: | 2907 private: |
2912 HGraphBuilder* builder_; | 2908 HGraphBuilder* builder_; |
2913 }; | 2909 }; |
2914 | 2910 |
2915 | 2911 |
2916 } } // namespace v8::internal | 2912 } } // namespace v8::internal |
2917 | 2913 |
2918 #endif // V8_HYDROGEN_H_ | 2914 #endif // V8_HYDROGEN_H_ |
OLD | NEW |