| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 } \ | 656 } \ |
| 657 return constant_##name##_.get(); \ | 657 return constant_##name##_.get(); \ |
| 658 } | 658 } |
| 659 | 659 |
| 660 | 660 |
| 661 DEFINE_GET_CONSTANT(True, true, HType::Boolean(), true) | 661 DEFINE_GET_CONSTANT(True, true, HType::Boolean(), true) |
| 662 DEFINE_GET_CONSTANT(False, false, HType::Boolean(), false) | 662 DEFINE_GET_CONSTANT(False, false, HType::Boolean(), false) |
| 663 DEFINE_GET_CONSTANT(Hole, the_hole, HType::Tagged(), false) | 663 DEFINE_GET_CONSTANT(Hole, the_hole, HType::Tagged(), false) |
| 664 DEFINE_GET_CONSTANT(Null, null, HType::Tagged(), false) | 664 DEFINE_GET_CONSTANT(Null, null, HType::Tagged(), false) |
| 665 | 665 |
| 666 HConstant* HGraph::GetConstantFreeSpaceMap() { |
| 667 if (!constant_free_space_map_.is_set()) { |
| 668 HConstant* constant = new(zone()) HConstant( |
| 669 isolate()->factory()->free_space_map(), |
| 670 UniqueValueId(isolate()->heap()->free_space_map()), |
| 671 Representation::None(), |
| 672 HType::Tagged(), |
| 673 false, |
| 674 true, |
| 675 false, |
| 676 false); |
| 677 constant->InsertAfter(GetConstantUndefined()); |
| 678 constant_free_space_map_.set(constant); |
| 679 } |
| 680 return constant_free_space_map_.get(); |
| 681 } |
| 682 |
| 666 | 683 |
| 667 #undef DEFINE_GET_CONSTANT | 684 #undef DEFINE_GET_CONSTANT |
| 668 | 685 |
| 669 | 686 |
| 670 HConstant* HGraph::GetInvalidContext() { | 687 HConstant* HGraph::GetInvalidContext() { |
| 671 return GetConstant(&constant_invalid_context_, 0xFFFFC0C7); | 688 return GetConstant(&constant_invalid_context_, 0xFFFFC0C7); |
| 672 } | 689 } |
| 673 | 690 |
| 674 | 691 |
| 675 bool HGraph::IsStandardConstant(HConstant* constant) { | 692 bool HGraph::IsStandardConstant(HConstant* constant) { |
| (...skipping 2757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3433 bool HGraph::Optimize(SmartArrayPointer<char>* bailout_reason) { | 3450 bool HGraph::Optimize(SmartArrayPointer<char>* bailout_reason) { |
| 3434 *bailout_reason = SmartArrayPointer<char>(); | 3451 *bailout_reason = SmartArrayPointer<char>(); |
| 3435 OrderBlocks(); | 3452 OrderBlocks(); |
| 3436 AssignDominators(); | 3453 AssignDominators(); |
| 3437 | 3454 |
| 3438 // We need to create a HConstant "zero" now so that GVN will fold every | 3455 // We need to create a HConstant "zero" now so that GVN will fold every |
| 3439 // zero-valued constant in the graph together. | 3456 // zero-valued constant in the graph together. |
| 3440 // The constant is needed to make idef-based bounds check work: the pass | 3457 // The constant is needed to make idef-based bounds check work: the pass |
| 3441 // evaluates relations with "zero" and that zero cannot be created after GVN. | 3458 // evaluates relations with "zero" and that zero cannot be created after GVN. |
| 3442 GetConstant0(); | 3459 GetConstant0(); |
| 3460 GetConstantFreeSpaceMap(); |
| 3443 | 3461 |
| 3444 #ifdef DEBUG | 3462 #ifdef DEBUG |
| 3445 // Do a full verify after building the graph and computing dominators. | 3463 // Do a full verify after building the graph and computing dominators. |
| 3446 Verify(true); | 3464 Verify(true); |
| 3447 #endif | 3465 #endif |
| 3448 | 3466 |
| 3449 if (FLAG_analyze_environment_liveness && maximum_environment_size() != 0) { | 3467 if (FLAG_analyze_environment_liveness && maximum_environment_size() != 0) { |
| 3450 Run<HEnvironmentLivenessAnalysisPhase>(); | 3468 Run<HEnvironmentLivenessAnalysisPhase>(); |
| 3451 } | 3469 } |
| 3452 | 3470 |
| (...skipping 7384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10837 if (ShouldProduceTraceOutput()) { | 10855 if (ShouldProduceTraceOutput()) { |
| 10838 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 10856 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
| 10839 } | 10857 } |
| 10840 | 10858 |
| 10841 #ifdef DEBUG | 10859 #ifdef DEBUG |
| 10842 graph_->Verify(false); // No full verify. | 10860 graph_->Verify(false); // No full verify. |
| 10843 #endif | 10861 #endif |
| 10844 } | 10862 } |
| 10845 | 10863 |
| 10846 } } // namespace v8::internal | 10864 } } // namespace v8::internal |
| OLD | NEW |