Revision: 16192
Author: [email protected]
Date: Wed Aug 14 08:50:23 2013
Log: Fix CmpHoleAndBranch on no-sse2
[email protected]
Review URL: https://chromiumcodereview.appspot.com/22810005
http://code.google.com/p/v8/source/detail?r=16192
Modified:
/branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Wed Aug 14
02:47:27 2013
+++ /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Wed Aug 14
08:50:23 2013
@@ -2236,7 +2236,11 @@
template<class InstrType>
void LCodeGen::EmitFalseBranch(InstrType instr, Condition cc) {
int false_block = instr->FalseDestination(chunk_);
- __ j(cc, chunk_->GetAssemblyLabel(false_block));
+ if (cc == no_condition) {
+ __ jmp(chunk_->GetAssemblyLabel(false_block));
+ } else {
+ __ j(cc, chunk_->GetAssemblyLabel(false_block));
+ }
}
@@ -2503,6 +2507,7 @@
CpuFeatureScope scope(masm(), SSE2);
XMMRegister input_reg = ToDoubleRegister(instr->object());
__ ucomisd(input_reg, input_reg);
+ EmitFalseBranch(instr, parity_odd);
} else {
// Put the value to the top of stack
X87Register src = ToX87Register(instr->object());
@@ -2510,9 +2515,13 @@
__ fld(0);
__ fld(0);
__ FCmp();
+ Label ok;
+ __ j(parity_even, &ok);
+ __ fstp(0);
+ EmitFalseBranch(instr, no_condition);
+ __ bind(&ok);
}
- EmitFalseBranch(instr, parity_odd);
__ sub(esp, Immediate(kDoubleSize));
if (use_sse2) {
@@ -2520,7 +2529,6 @@
XMMRegister input_reg = ToDoubleRegister(instr->object());
__ movdbl(MemOperand(esp, 0), input_reg);
} else {
- __ fld(0);
__ fstp_d(MemOperand(esp, 0));
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.