Revision: 11255
Author:   [email protected]
Date:     Tue Apr 10 06:39:28 2012
Log:      Insert three missing FP register stack pop instructions.

We use fstp(0) already in other places. ffree does not pop the stack,
but only marks a FP register as empty.

BUG=v8:2065
Review URL: https://chromiumcodereview.appspot.com/9960066
http://code.google.com/p/v8/source/detail?r=11255

Modified:
 /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc

=======================================
--- /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Mon Mar 12 06:56:56 2012 +++ /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Tue Apr 10 06:39:28 2012
@@ -1734,7 +1734,7 @@
         __ fstp_d(FieldOperand(eax, HeapNumber::kValueOffset));
         __ ret(0);
         __ bind(&after_alloc_failure);
-        __ ffree();
+        __ fstp(0);  // Pop FPU stack before calling runtime.
         __ jmp(&call_runtime);
       }

@@ -1957,7 +1957,7 @@
         __ fstp_d(FieldOperand(eax, HeapNumber::kValueOffset));
         __ ret(0);
         __ bind(&after_alloc_failure);
-        __ ffree();
+        __ fstp(0);  // Pop FPU stack before calling runtime.
         __ jmp(&call_runtime);
       }

@@ -2161,8 +2161,8 @@
         __ fstp_d(FieldOperand(eax, HeapNumber::kValueOffset));
         __ ret(0);
         __ bind(&after_alloc_failure);
-          __ ffree();
-          __ jmp(&call_runtime);
+        __ fstp(0);  // Pop FPU stack before calling runtime.
+        __ jmp(&call_runtime);
       }
         __ bind(&not_floats);
         break;

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to