| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #if V8_TARGET_ARCH_X87 | 7 #if V8_TARGET_ARCH_X87 |
| 8 | 8 |
| 9 #include "src/x87/lithium-codegen-x87.h" | 9 #include "src/x87/lithium-codegen-x87.h" |
| 10 #include "src/ic.h" | 10 #include "src/ic.h" |
| (...skipping 2386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2397 // Don't base result on EFLAGS when a NaN is involved. Instead | 2397 // Don't base result on EFLAGS when a NaN is involved. Instead |
| 2398 // jump to the false block. | 2398 // jump to the false block. |
| 2399 __ j(parity_even, instr->FalseLabel(chunk_)); | 2399 __ j(parity_even, instr->FalseLabel(chunk_)); |
| 2400 } else { | 2400 } else { |
| 2401 if (right->IsConstantOperand()) { | 2401 if (right->IsConstantOperand()) { |
| 2402 __ cmp(ToOperand(left), | 2402 __ cmp(ToOperand(left), |
| 2403 ToImmediate(right, instr->hydrogen()->representation())); | 2403 ToImmediate(right, instr->hydrogen()->representation())); |
| 2404 } else if (left->IsConstantOperand()) { | 2404 } else if (left->IsConstantOperand()) { |
| 2405 __ cmp(ToOperand(right), | 2405 __ cmp(ToOperand(right), |
| 2406 ToImmediate(left, instr->hydrogen()->representation())); | 2406 ToImmediate(left, instr->hydrogen()->representation())); |
| 2407 // We transposed the operands. Reverse the condition. | 2407 // We commuted the operands, so commute the condition. |
| 2408 cc = ReverseCondition(cc); | 2408 cc = CommuteCondition(cc); |
| 2409 } else { | 2409 } else { |
| 2410 __ cmp(ToRegister(left), ToOperand(right)); | 2410 __ cmp(ToRegister(left), ToOperand(right)); |
| 2411 } | 2411 } |
| 2412 } | 2412 } |
| 2413 EmitBranch(instr, cc); | 2413 EmitBranch(instr, cc); |
| 2414 } | 2414 } |
| 2415 } | 2415 } |
| 2416 | 2416 |
| 2417 | 2417 |
| 2418 void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) { | 2418 void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) { |
| (...skipping 1548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3967 CallCode(ic, RelocInfo::CODE_TARGET, instr); | 3967 CallCode(ic, RelocInfo::CODE_TARGET, instr); |
| 3968 } | 3968 } |
| 3969 | 3969 |
| 3970 | 3970 |
| 3971 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { | 3971 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
| 3972 Condition cc = instr->hydrogen()->allow_equality() ? above : above_equal; | 3972 Condition cc = instr->hydrogen()->allow_equality() ? above : above_equal; |
| 3973 if (instr->index()->IsConstantOperand()) { | 3973 if (instr->index()->IsConstantOperand()) { |
| 3974 __ cmp(ToOperand(instr->length()), | 3974 __ cmp(ToOperand(instr->length()), |
| 3975 ToImmediate(LConstantOperand::cast(instr->index()), | 3975 ToImmediate(LConstantOperand::cast(instr->index()), |
| 3976 instr->hydrogen()->length()->representation())); | 3976 instr->hydrogen()->length()->representation())); |
| 3977 cc = ReverseCondition(cc); | 3977 cc = CommuteCondition(cc); |
| 3978 } else if (instr->length()->IsConstantOperand()) { | 3978 } else if (instr->length()->IsConstantOperand()) { |
| 3979 __ cmp(ToOperand(instr->index()), | 3979 __ cmp(ToOperand(instr->index()), |
| 3980 ToImmediate(LConstantOperand::cast(instr->length()), | 3980 ToImmediate(LConstantOperand::cast(instr->length()), |
| 3981 instr->hydrogen()->index()->representation())); | 3981 instr->hydrogen()->index()->representation())); |
| 3982 } else { | 3982 } else { |
| 3983 __ cmp(ToRegister(instr->index()), ToOperand(instr->length())); | 3983 __ cmp(ToRegister(instr->index()), ToOperand(instr->length())); |
| 3984 } | 3984 } |
| 3985 if (FLAG_debug_code && instr->hydrogen()->skip_check()) { | 3985 if (FLAG_debug_code && instr->hydrogen()->skip_check()) { |
| 3986 Label done; | 3986 Label done; |
| 3987 __ j(NegateCondition(cc), &done, Label::kNear); | 3987 __ j(NegateCondition(cc), &done, Label::kNear); |
| (...skipping 1690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5678 __ bind(deferred->exit()); | 5678 __ bind(deferred->exit()); |
| 5679 __ bind(&done); | 5679 __ bind(&done); |
| 5680 } | 5680 } |
| 5681 | 5681 |
| 5682 | 5682 |
| 5683 #undef __ | 5683 #undef __ |
| 5684 | 5684 |
| 5685 } } // namespace v8::internal | 5685 } } // namespace v8::internal |
| 5686 | 5686 |
| 5687 #endif // V8_TARGET_ARCH_X87 | 5687 #endif // V8_TARGET_ARCH_X87 |
| OLD | NEW |