Smaller instruction to test negative number on ia32

BUG=
R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/23361030

Patch from Weiliang Lin <weiliang.lin2@gmail.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16335 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
jkummerow@chromium.org 2013-08-26 16:48:23 +00:00
parent e146b6e148
commit b071f9884d
2 changed files with 9 additions and 9 deletions

View File

@ -606,7 +606,7 @@ int DisassemblerIA32::D1D3C1Instruction(byte* data) {
}
ASSERT_NE(NULL, mnem);
AppendToBuffer("%s %s,", mnem, NameOfCPURegister(rm));
if (imm8 > 0) {
if (imm8 >= 0) {
AppendToBuffer("%d", imm8);
} else {
AppendToBuffer("cl");

View File

@ -1787,8 +1787,8 @@ void LCodeGen::DoShiftI(LShiftI* instr) {
case Token::ROR:
__ ror_cl(ToRegister(left));
if (instr->can_deopt()) {
__ test(ToRegister(left), Immediate(0x80000000));
DeoptimizeIf(not_zero, instr->environment());
__ test(ToRegister(left), ToRegister(left));
DeoptimizeIf(sign, instr->environment());
}
break;
case Token::SAR:
@ -1797,8 +1797,8 @@ void LCodeGen::DoShiftI(LShiftI* instr) {
case Token::SHR:
__ shr_cl(ToRegister(left));
if (instr->can_deopt()) {
__ test(ToRegister(left), Immediate(0x80000000));
DeoptimizeIf(not_zero, instr->environment());
__ test(ToRegister(left), ToRegister(left));
DeoptimizeIf(sign, instr->environment());
}
break;
case Token::SHL:
@ -1814,8 +1814,8 @@ void LCodeGen::DoShiftI(LShiftI* instr) {
switch (instr->op()) {
case Token::ROR:
if (shift_count == 0 && instr->can_deopt()) {
__ test(ToRegister(left), Immediate(0x80000000));
DeoptimizeIf(not_zero, instr->environment());
__ test(ToRegister(left), ToRegister(left));
DeoptimizeIf(sign, instr->environment());
} else {
__ ror(ToRegister(left), shift_count);
}
@ -1827,8 +1827,8 @@ void LCodeGen::DoShiftI(LShiftI* instr) {
break;
case Token::SHR:
if (shift_count == 0 && instr->can_deopt()) {
__ test(ToRegister(left), Immediate(0x80000000));
DeoptimizeIf(not_zero, instr->environment());
__ test(ToRegister(left), ToRegister(left));
DeoptimizeIf(sign, instr->environment());
} else {
__ shr(ToRegister(left), shift_count);
}