| 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 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 680 ASSERT(!finished_); | 680 ASSERT(!finished_); |
| 681 builder_->current_block()->Goto(merge_block_); | 681 builder_->current_block()->Goto(merge_block_); |
| 682 failure_block_->FinishExitWithDeoptimization(HDeoptimize::kUseAll); | 682 failure_block_->FinishExitWithDeoptimization(HDeoptimize::kUseAll); |
| 683 failure_block_->SetJoinId(id_); | 683 failure_block_->SetJoinId(id_); |
| 684 builder_->set_current_block(merge_block_); | 684 builder_->set_current_block(merge_block_); |
| 685 merge_block_->SetJoinId(id_); | 685 merge_block_->SetJoinId(id_); |
| 686 finished_ = true; | 686 finished_ = true; |
| 687 } | 687 } |
| 688 | 688 |
| 689 | 689 |
| 690 HConstant* HGraph::GetInvalidContext() { |
| 691 return GetConstantInt32(&constant_invalid_context_, 0xFFFFC0C7); |
| 692 } |
| 693 |
| 694 |
| 690 HGraphBuilder::IfBuilder::IfBuilder(HGraphBuilder* builder, BailoutId id) | 695 HGraphBuilder::IfBuilder::IfBuilder(HGraphBuilder* builder, BailoutId id) |
| 691 : builder_(builder), | 696 : builder_(builder), |
| 692 finished_(false), | 697 finished_(false), |
| 693 id_(id) { | 698 id_(id) { |
| 694 HEnvironment* env = builder->environment(); | 699 HEnvironment* env = builder->environment(); |
| 695 first_true_block_ = builder->CreateBasicBlock(env->Copy()); | 700 first_true_block_ = builder->CreateBasicBlock(env->Copy()); |
| 696 last_true_block_ = NULL; | 701 last_true_block_ = NULL; |
| 697 first_false_block_ = builder->CreateBasicBlock(env->Copy()); | 702 first_false_block_ = builder->CreateBasicBlock(env->Copy()); |
| 698 } | 703 } |
| 699 | 704 |
| (...skipping 3300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4000 | 4005 |
| 4001 // This method is recursive, so if its stack frame is large it could | 4006 // This method is recursive, so if its stack frame is large it could |
| 4002 // cause a stack overflow. | 4007 // cause a stack overflow. |
| 4003 // To keep the individual stack frames small we do the actual work inside | 4008 // To keep the individual stack frames small we do the actual work inside |
| 4004 // SetupInformativeDefinitionsInBlock(); | 4009 // SetupInformativeDefinitionsInBlock(); |
| 4005 void HGraph::SetupInformativeDefinitionsRecursively(HBasicBlock* block) { | 4010 void HGraph::SetupInformativeDefinitionsRecursively(HBasicBlock* block) { |
| 4006 SetupInformativeDefinitionsInBlock(block); | 4011 SetupInformativeDefinitionsInBlock(block); |
| 4007 for (int i = 0; i < block->dominated_blocks()->length(); ++i) { | 4012 for (int i = 0; i < block->dominated_blocks()->length(); ++i) { |
| 4008 SetupInformativeDefinitionsRecursively(block->dominated_blocks()->at(i)); | 4013 SetupInformativeDefinitionsRecursively(block->dominated_blocks()->at(i)); |
| 4009 } | 4014 } |
| 4015 |
| 4016 for (HInstruction* i = block->first(); i != NULL; i = i->next()) { |
| 4017 if (i->IsBoundsCheck()) { |
| 4018 HBoundsCheck* check = HBoundsCheck::cast(i); |
| 4019 check->ApplyIndexChange(); |
| 4020 } |
| 4021 } |
| 4010 } | 4022 } |
| 4011 | 4023 |
| 4012 | 4024 |
| 4013 void HGraph::SetupInformativeDefinitions() { | 4025 void HGraph::SetupInformativeDefinitions() { |
| 4014 HPhase phase("H_Setup informative definitions", this); | 4026 HPhase phase("H_Setup informative definitions", this); |
| 4015 SetupInformativeDefinitionsRecursively(entry_block()); | 4027 SetupInformativeDefinitionsRecursively(entry_block()); |
| 4016 } | 4028 } |
| 4017 | 4029 |
| 4018 | 4030 |
| 4019 // We try to "factor up" HBoundsCheck instructions towards the root of the | 4031 // We try to "factor up" HBoundsCheck instructions towards the root of the |
| (...skipping 6917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10937 } | 10949 } |
| 10938 } | 10950 } |
| 10939 | 10951 |
| 10940 #ifdef DEBUG | 10952 #ifdef DEBUG |
| 10941 if (graph_ != NULL) graph_->Verify(false); // No full verify. | 10953 if (graph_ != NULL) graph_->Verify(false); // No full verify. |
| 10942 if (allocator_ != NULL) allocator_->Verify(); | 10954 if (allocator_ != NULL) allocator_->Verify(); |
| 10943 #endif | 10955 #endif |
| 10944 } | 10956 } |
| 10945 | 10957 |
| 10946 } } // namespace v8::internal | 10958 } } // namespace v8::internal |
| OLD | NEW |