Revision: 10071
Author:   yang...@chromium.org
Date:     Fri Nov 25 06:26:54 2011
Log:      Shorten FP register pops where possible.

Review URL: http://codereview.chromium.org/8699004
http://code.google.com/p/v8/source/detail?r=10071

Modified:
 /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc
 /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc
 /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc

=======================================
--- /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Fri Nov 25 05:15:31 2011 +++ /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Fri Nov 25 06:26:54 2011
@@ -3756,8 +3756,7 @@
       __ cmp(Operand(input_reg), Immediate(kTooBigExponent));
       __ j(less, &convert, Label::kNear);
       // Pop FPU stack before deoptimizing.
-      __ ffree(0);
-      __ fincstp();
+      __ fstp(0);
       DeoptimizeIf(no_condition, instr->environment());

       // Reserve space for 64 bit answer.
=======================================
--- /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc Fri Nov 11 05:48:14 2011 +++ /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc Fri Nov 25 06:26:54 2011
@@ -540,8 +540,7 @@
 void MacroAssembler::FCmp() {
   if (CpuFeatures::IsSupported(CMOV)) {
     fucomip();
-    ffree(0);
-    fincstp();
+    fstp(0);
   } else {
     fucompp();
     push(eax);
=======================================
--- /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Thu Nov 24 07:17:04 2011 +++ /branches/bleeding_edge/src/ia32/stub-cache-ia32.cc Fri Nov 25 06:26:54 2011
@@ -3392,8 +3392,7 @@
   // If we fail allocation of the HeapNumber, we still have a value on
   // top of the FPU stack. Remove it.
   __ bind(&failed_allocation);
-  __ ffree();
-  __ fincstp();
+  __ fstp(0);
   // Fall through to slow case.

   // Slow case: Jump to runtime.
@@ -3710,8 +3709,7 @@
// A value was pushed on the floating point stack before the allocation, if
   // the allocation fails it needs to be removed.
   if (!CpuFeatures::IsSupported(SSE2)) {
-    __ ffree();
-    __ fincstp();
+    __ fstp(0);
   }
   Handle<Code> slow_ic =
       masm->isolate()->builtins()->KeyedLoadIC_Slow();

--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev

Reply via email to