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/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
6 | 6 |
7 #include "src/arm/macro-assembler-arm.h" | 7 #include "src/arm/macro-assembler-arm.h" |
8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 __ cmp(cp, kScratchReg); | 186 __ cmp(cp, kScratchReg); |
187 __ Assert(eq, kWrongFunctionContext); | 187 __ Assert(eq, kWrongFunctionContext); |
188 } | 188 } |
189 __ ldr(ip, FieldMemOperand(func, JSFunction::kCodeEntryOffset)); | 189 __ ldr(ip, FieldMemOperand(func, JSFunction::kCodeEntryOffset)); |
190 __ Call(ip); | 190 __ Call(ip); |
191 AddSafepointAndDeopt(instr); | 191 AddSafepointAndDeopt(instr); |
192 DCHECK_EQ(LeaveCC, i.OutputSBit()); | 192 DCHECK_EQ(LeaveCC, i.OutputSBit()); |
193 break; | 193 break; |
194 } | 194 } |
195 case kArchJmp: | 195 case kArchJmp: |
196 __ b(code_->GetLabel(i.InputBlock(0))); | 196 __ b(code_->GetLabel(i.InputRpo(0))); |
197 DCHECK_EQ(LeaveCC, i.OutputSBit()); | 197 DCHECK_EQ(LeaveCC, i.OutputSBit()); |
198 break; | 198 break; |
199 case kArchNop: | 199 case kArchNop: |
200 // don't emit code for nops. | 200 // don't emit code for nops. |
201 DCHECK_EQ(LeaveCC, i.OutputSBit()); | 201 DCHECK_EQ(LeaveCC, i.OutputSBit()); |
202 break; | 202 break; |
203 case kArchRet: | 203 case kArchRet: |
204 AssembleReturn(); | 204 AssembleReturn(); |
205 DCHECK_EQ(LeaveCC, i.OutputSBit()); | 205 DCHECK_EQ(LeaveCC, i.OutputSBit()); |
206 break; | 206 break; |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
478 | 478 |
479 | 479 |
480 // Assembles branches after an instruction. | 480 // Assembles branches after an instruction. |
481 void CodeGenerator::AssembleArchBranch(Instruction* instr, | 481 void CodeGenerator::AssembleArchBranch(Instruction* instr, |
482 FlagsCondition condition) { | 482 FlagsCondition condition) { |
483 ArmOperandConverter i(this, instr); | 483 ArmOperandConverter i(this, instr); |
484 Label done; | 484 Label done; |
485 | 485 |
486 // Emit a branch. The true and false targets are always the last two inputs | 486 // Emit a branch. The true and false targets are always the last two inputs |
487 // to the instruction. | 487 // to the instruction. |
488 BasicBlock* tblock = i.InputBlock(instr->InputCount() - 2); | 488 BasicBlock::RpoNumber tblock = |
489 BasicBlock* fblock = i.InputBlock(instr->InputCount() - 1); | 489 i.InputRpo(static_cast<int>(instr->InputCount()) - 2); |
| 490 BasicBlock::RpoNumber fblock = |
| 491 i.InputRpo(static_cast<int>(instr->InputCount()) - 1); |
490 bool fallthru = IsNextInAssemblyOrder(fblock); | 492 bool fallthru = IsNextInAssemblyOrder(fblock); |
491 Label* tlabel = code()->GetLabel(tblock); | 493 Label* tlabel = code()->GetLabel(tblock); |
492 Label* flabel = fallthru ? &done : code()->GetLabel(fblock); | 494 Label* flabel = fallthru ? &done : code()->GetLabel(fblock); |
493 switch (condition) { | 495 switch (condition) { |
494 case kUnorderedEqual: | 496 case kUnorderedEqual: |
495 __ b(vs, flabel); | 497 __ b(vs, flabel); |
496 // Fall through. | 498 // Fall through. |
497 case kEqual: | 499 case kEqual: |
498 __ b(eq, tlabel); | 500 __ b(eq, tlabel); |
499 break; | 501 break; |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
919 } | 921 } |
920 } | 922 } |
921 MarkLazyDeoptSite(); | 923 MarkLazyDeoptSite(); |
922 } | 924 } |
923 | 925 |
924 #undef __ | 926 #undef __ |
925 | 927 |
926 } // namespace compiler | 928 } // namespace compiler |
927 } // namespace internal | 929 } // namespace internal |
928 } // namespace v8 | 930 } // namespace v8 |
OLD | NEW |