Title: [94500] trunk/Source/_javascript_Core
Revision
94500
Author
[email protected]
Date
2011-09-03 22:43:47 -0700 (Sat, 03 Sep 2011)

Log Message

ThunkGenerators does not convert positive double zero into integer zero
https://bugs.webkit.org/show_bug.cgi?id=67553

Reviewed by Gavin Barraclough.

This is an 0.5% speed-up on V8 and neutral elsewhere.

* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::returnDouble):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (94499 => 94500)


--- trunk/Source/_javascript_Core/ChangeLog	2011-09-04 02:58:46 UTC (rev 94499)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-09-04 05:43:47 UTC (rev 94500)
@@ -1,3 +1,15 @@
+2011-09-03  Filip Pizlo  <[email protected]>
+
+        ThunkGenerators does not convert positive double zero into integer zero
+        https://bugs.webkit.org/show_bug.cgi?id=67553
+
+        Reviewed by Gavin Barraclough.
+        
+        This is an 0.5% speed-up on V8 and neutral elsewhere.
+
+        * jit/SpecializedThunkJIT.h:
+        (JSC::SpecializedThunkJIT::returnDouble):
+
 2011-09-03  Kevin Ollivier  <[email protected]>
 
         [wx] Unreviewed build fix. Add wtf/dtoa directory to build.

Modified: trunk/Source/_javascript_Core/jit/SpecializedThunkJIT.h (94499 => 94500)


--- trunk/Source/_javascript_Core/jit/SpecializedThunkJIT.h	2011-09-04 02:58:46 UTC (rev 94499)
+++ trunk/Source/_javascript_Core/jit/SpecializedThunkJIT.h	2011-09-04 05:43:47 UTC (rev 94500)
@@ -95,11 +95,22 @@
         {
 #if USE(JSVALUE64)
             moveDoubleToPtr(src, regT0);
+            Jump zero = branchTestPtr(Zero, regT0);
             subPtr(tagTypeNumberRegister, regT0);
+            Jump done = jump();
+            zero.link(this);
+            move(tagTypeNumberRegister, regT0);
+            done.link(this);
 #else
             storeDouble(src, Address(stackPointerRegister, -(int)sizeof(double)));
             loadPtr(Address(stackPointerRegister, OBJECT_OFFSETOF(JSValue, u.asBits.tag) - sizeof(double)), regT1);
             loadPtr(Address(stackPointerRegister, OBJECT_OFFSETOF(JSValue, u.asBits.payload) - sizeof(double)), regT0);
+            Jump lowNonZero = branchTestPtr(NonZero, regT1);
+            Jump highNonZero = branchTestPtr(NonZero, regT0);
+            move(TrustedImm32(0), regT0);
+            move(TrustedImm32(Int32Tag), regT1);
+            lowNonZero.link(this);
+            highNonZero.link(this);
 #endif
             loadPtr(payloadFor(RegisterFile::CallerFrame, callFrameRegister), callFrameRegister);
             ret();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to