| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 } | 348 } |
| 349 | 349 |
| 350 bool use_optimistic_licm() { | 350 bool use_optimistic_licm() { |
| 351 return use_optimistic_licm_; | 351 return use_optimistic_licm_; |
| 352 } | 352 } |
| 353 | 353 |
| 354 void set_use_optimistic_licm(bool value) { | 354 void set_use_optimistic_licm(bool value) { |
| 355 use_optimistic_licm_ = value; | 355 use_optimistic_licm_ = value; |
| 356 } | 356 } |
| 357 | 357 |
| 358 bool has_soft_deoptimize() { |
| 359 return has_soft_deoptimize_; |
| 360 } |
| 361 |
| 362 void set_has_soft_deoptimize(bool value) { |
| 363 has_soft_deoptimize_ = value; |
| 364 } |
| 365 |
| 358 void MarkRecursive() { | 366 void MarkRecursive() { |
| 359 is_recursive_ = true; | 367 is_recursive_ = true; |
| 360 } | 368 } |
| 361 | 369 |
| 362 bool is_recursive() const { | 370 bool is_recursive() const { |
| 363 return is_recursive_; | 371 return is_recursive_; |
| 364 } | 372 } |
| 365 | 373 |
| 366 void RecordUint32Instruction(HInstruction* instr) { | 374 void RecordUint32Instruction(HInstruction* instr) { |
| 367 if (uint32_instructions_ == NULL) { | 375 if (uint32_instructions_ == NULL) { |
| 368 uint32_instructions_ = new(zone()) ZoneList<HInstruction*>(4, zone()); | 376 uint32_instructions_ = new(zone()) ZoneList<HInstruction*>(4, zone()); |
| 369 } | 377 } |
| 370 uint32_instructions_->Add(instr, zone()); | 378 uint32_instructions_->Add(instr, zone()); |
| 371 } | 379 } |
| 372 | 380 |
| 373 private: | 381 private: |
| 374 HConstant* GetConstant(SetOncePointer<HConstant>* pointer, | 382 HConstant* GetConstant(SetOncePointer<HConstant>* pointer, |
| 375 Handle<Object> value); | 383 Handle<Object> value); |
| 376 HConstant* GetConstantInt32(SetOncePointer<HConstant>* pointer, | 384 HConstant* GetConstantInt32(SetOncePointer<HConstant>* pointer, |
| 377 int32_t integer_value); | 385 int32_t integer_value); |
| 378 | 386 |
| 379 void MarkAsDeoptimizingRecursively(HBasicBlock* block); | 387 void MarkAsDeoptimizingRecursively(HBasicBlock* block); |
| 388 void NullifyUnreachableInstructions(); |
| 380 void InsertTypeConversions(HInstruction* instr); | 389 void InsertTypeConversions(HInstruction* instr); |
| 381 void PropagateMinusZeroChecks(HValue* value, BitVector* visited); | 390 void PropagateMinusZeroChecks(HValue* value, BitVector* visited); |
| 382 void RecursivelyMarkPhiDeoptimizeOnUndefined(HPhi* phi); | 391 void RecursivelyMarkPhiDeoptimizeOnUndefined(HPhi* phi); |
| 383 void InsertRepresentationChangeForUse(HValue* value, | 392 void InsertRepresentationChangeForUse(HValue* value, |
| 384 HValue* use_value, | 393 HValue* use_value, |
| 385 int use_index, | 394 int use_index, |
| 386 Representation to); | 395 Representation to); |
| 387 void InsertRepresentationChangesForValue(HValue* value); | 396 void InsertRepresentationChangesForValue(HValue* value); |
| 388 void InferTypes(ZoneList<HValue*>* worklist); | 397 void InferTypes(ZoneList<HValue*>* worklist); |
| 389 void InitializeInferredTypes(int from_inclusive, int to_inclusive); | 398 void InitializeInferredTypes(int from_inclusive, int to_inclusive); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 407 SetOncePointer<HArgumentsObject> arguments_object_; | 416 SetOncePointer<HArgumentsObject> arguments_object_; |
| 408 | 417 |
| 409 SetOncePointer<HBasicBlock> osr_loop_entry_; | 418 SetOncePointer<HBasicBlock> osr_loop_entry_; |
| 410 SetOncePointer<ZoneList<HUnknownOSRValue*> > osr_values_; | 419 SetOncePointer<ZoneList<HUnknownOSRValue*> > osr_values_; |
| 411 | 420 |
| 412 CompilationInfo* info_; | 421 CompilationInfo* info_; |
| 413 Zone* zone_; | 422 Zone* zone_; |
| 414 | 423 |
| 415 bool is_recursive_; | 424 bool is_recursive_; |
| 416 bool use_optimistic_licm_; | 425 bool use_optimistic_licm_; |
| 426 bool has_soft_deoptimize_; |
| 417 int type_change_checksum_; | 427 int type_change_checksum_; |
| 418 | 428 |
| 419 DISALLOW_COPY_AND_ASSIGN(HGraph); | 429 DISALLOW_COPY_AND_ASSIGN(HGraph); |
| 420 }; | 430 }; |
| 421 | 431 |
| 422 | 432 |
| 423 Zone* HBasicBlock::zone() const { return graph_->zone(); } | 433 Zone* HBasicBlock::zone() const { return graph_->zone(); } |
| 424 | 434 |
| 425 | 435 |
| 426 // Type of stack frame an environment might refer to. | 436 // Type of stack frame an environment might refer to. |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 949 HOptimizedGraphBuilder(CompilationInfo* info, TypeFeedbackOracle* oracle); | 959 HOptimizedGraphBuilder(CompilationInfo* info, TypeFeedbackOracle* oracle); |
| 950 | 960 |
| 951 virtual bool BuildGraph(); | 961 virtual bool BuildGraph(); |
| 952 | 962 |
| 953 // Simple accessors. | 963 // Simple accessors. |
| 954 BreakAndContinueScope* break_scope() const { return break_scope_; } | 964 BreakAndContinueScope* break_scope() const { return break_scope_; } |
| 955 void set_break_scope(BreakAndContinueScope* head) { break_scope_ = head; } | 965 void set_break_scope(BreakAndContinueScope* head) { break_scope_ = head; } |
| 956 | 966 |
| 957 bool inline_bailout() { return inline_bailout_; } | 967 bool inline_bailout() { return inline_bailout_; } |
| 958 | 968 |
| 969 void AddSoftDeoptimize(); |
| 970 |
| 959 // Bailout environment manipulation. | 971 // Bailout environment manipulation. |
| 960 void Push(HValue* value) { environment()->Push(value); } | 972 void Push(HValue* value) { environment()->Push(value); } |
| 961 HValue* Pop() { return environment()->Pop(); } | 973 HValue* Pop() { return environment()->Pop(); } |
| 962 | 974 |
| 963 void Bailout(const char* reason); | 975 void Bailout(const char* reason); |
| 964 | 976 |
| 965 HBasicBlock* CreateJoin(HBasicBlock* first, | 977 HBasicBlock* CreateJoin(HBasicBlock* first, |
| 966 HBasicBlock* second, | 978 HBasicBlock* second, |
| 967 BailoutId join_id); | 979 BailoutId join_id); |
| 968 | 980 |
| (...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1555 const char* filename_; | 1567 const char* filename_; |
| 1556 HeapStringAllocator string_allocator_; | 1568 HeapStringAllocator string_allocator_; |
| 1557 StringStream trace_; | 1569 StringStream trace_; |
| 1558 int indent_; | 1570 int indent_; |
| 1559 }; | 1571 }; |
| 1560 | 1572 |
| 1561 | 1573 |
| 1562 } } // namespace v8::internal | 1574 } } // namespace v8::internal |
| 1563 | 1575 |
| 1564 #endif // V8_HYDROGEN_H_ | 1576 #endif // V8_HYDROGEN_H_ |
| OLD | NEW |