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.

Reply via email to