Title: [159873] trunk/Source/_javascript_Core
Revision
159873
Author
[email protected]
Date
2013-11-29 09:25:55 -0800 (Fri, 29 Nov 2013)

Log Message

Use moveDoubleToInts in SpecializedThunkJIT::returnDouble for non-X86 JSVALUE32_64 ports.
https://bugs.webkit.org/show_bug.cgi?id=124936

Patch by Julien Brianceau <[email protected]> on 2013-11-29
Reviewed by Zoltan Herczeg.

The moveDoubleToInts implementations in ARM, MIPS and SH4 macro assemblers do not clobber
src FPRegister and are likely to be more efficient than the current generic implementation
using the stack.

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

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (159872 => 159873)


--- trunk/Source/_javascript_Core/ChangeLog	2013-11-29 14:32:53 UTC (rev 159872)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-11-29 17:25:55 UTC (rev 159873)
@@ -1,5 +1,19 @@
 2013-11-29  Julien Brianceau  <[email protected]>
 
+        Use moveDoubleToInts in SpecializedThunkJIT::returnDouble for non-X86 JSVALUE32_64 ports.
+        https://bugs.webkit.org/show_bug.cgi?id=124936
+
+        Reviewed by Zoltan Herczeg.
+
+        The moveDoubleToInts implementations in ARM, MIPS and SH4 macro assemblers do not clobber
+        src FPRegister and are likely to be more efficient than the current generic implementation
+        using the stack.
+
+        * jit/SpecializedThunkJIT.h:
+        (JSC::SpecializedThunkJIT::returnDouble):
+
+2013-11-29  Julien Brianceau  <[email protected]>
+
         Merge arm and sh4 paths in nativeForGenerator and privateCompileCTINativeCall functions.
         https://bugs.webkit.org/show_bug.cgi?id=124892
 

Modified: trunk/Source/_javascript_Core/jit/SpecializedThunkJIT.h (159872 => 159873)


--- trunk/Source/_javascript_Core/jit/SpecializedThunkJIT.h	2013-11-29 14:32:53 UTC (rev 159872)
+++ trunk/Source/_javascript_Core/jit/SpecializedThunkJIT.h	2013-11-29 17:25:55 UTC (rev 159873)
@@ -121,9 +121,14 @@
             move(tagTypeNumberRegister, regT0);
             done.link(this);
 #else
+#if !CPU(X86)
+            // The src register is not clobbered by moveDoubleToInts with ARM, MIPS and SH4 macro assemblers, so let's use it.
+            moveDoubleToInts(src, regT0, regT1);
+#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);
+#endif
             Jump lowNonZero = branchTestPtr(NonZero, regT1);
             Jump highNonZero = branchTestPtr(NonZero, regT0);
             move(TrustedImm32(0), regT0);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to