| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #include "src/compiler/register-allocator.h" | 5 #include "src/compiler/register-allocator.h" |
| 6 | 6 |
| 7 #include "src/compiler/linkage.h" | 7 #include "src/compiler/linkage.h" |
| 8 #include "src/hydrogen.h" | 8 #include "src/hydrogen.h" |
| 9 #include "src/string-stream.h" | 9 #include "src/string-stream.h" |
| 10 | 10 |
| (...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 812 UnallocatedOperand* input_copy = | 812 UnallocatedOperand* input_copy = |
| 813 cur_input->CopyUnconstrained(code_zone()); | 813 cur_input->CopyUnconstrained(code_zone()); |
| 814 bool is_tagged = HasTaggedValue(cur_input->virtual_register()); | 814 bool is_tagged = HasTaggedValue(cur_input->virtual_register()); |
| 815 AllocateFixed(cur_input, gap_index + 1, is_tagged); | 815 AllocateFixed(cur_input, gap_index + 1, is_tagged); |
| 816 AddConstraintsGapMove(gap_index, input_copy, cur_input); | 816 AddConstraintsGapMove(gap_index, input_copy, cur_input); |
| 817 } | 817 } |
| 818 } | 818 } |
| 819 | 819 |
| 820 // Handle "output same as input" for second instruction. | 820 // Handle "output same as input" for second instruction. |
| 821 for (size_t i = 0; i < second->OutputCount(); i++) { | 821 for (size_t i = 0; i < second->OutputCount(); i++) { |
| 822 InstructionOperand* output = second->Output(); | 822 InstructionOperand* output = second->OutputAt(i); |
| 823 if (!output->IsUnallocated()) continue; | 823 if (!output->IsUnallocated()) continue; |
| 824 UnallocatedOperand* second_output = UnallocatedOperand::cast(output); | 824 UnallocatedOperand* second_output = UnallocatedOperand::cast(output); |
| 825 if (second_output->HasSameAsInputPolicy()) { | 825 if (second_output->HasSameAsInputPolicy()) { |
| 826 ASSERT(second->OutputCount() == 1); // Only valid for one output. | 826 ASSERT(i == 0); // Only valid for first output. |
| 827 UnallocatedOperand* cur_input = | 827 UnallocatedOperand* cur_input = |
| 828 UnallocatedOperand::cast(second->InputAt(0)); | 828 UnallocatedOperand::cast(second->InputAt(0)); |
| 829 int output_vreg = second_output->virtual_register(); | 829 int output_vreg = second_output->virtual_register(); |
| 830 int input_vreg = cur_input->virtual_register(); | 830 int input_vreg = cur_input->virtual_register(); |
| 831 | 831 |
| 832 UnallocatedOperand* input_copy = | 832 UnallocatedOperand* input_copy = |
| 833 cur_input->CopyUnconstrained(code_zone()); | 833 cur_input->CopyUnconstrained(code_zone()); |
| 834 cur_input->set_virtual_register(second_output->virtual_register()); | 834 cur_input->set_virtual_register(second_output->virtual_register()); |
| 835 AddConstraintsGapMove(gap_index, input_copy, cur_input); | 835 AddConstraintsGapMove(gap_index, input_copy, cur_input); |
| 836 | 836 |
| (...skipping 1320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2157 allocator_zone_start_allocation_size_; | 2157 allocator_zone_start_allocation_size_; |
| 2158 isolate()->GetTStatistics()->SaveTiming(name(), base::TimeDelta(), size); | 2158 isolate()->GetTStatistics()->SaveTiming(name(), base::TimeDelta(), size); |
| 2159 } | 2159 } |
| 2160 #ifdef DEBUG | 2160 #ifdef DEBUG |
| 2161 if (allocator_ != NULL) allocator_->Verify(); | 2161 if (allocator_ != NULL) allocator_->Verify(); |
| 2162 #endif | 2162 #endif |
| 2163 } | 2163 } |
| 2164 } | 2164 } |
| 2165 } | 2165 } |
| 2166 } // namespace v8::internal::compiler | 2166 } // namespace v8::internal::compiler |
| OLD | NEW |