| 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 |