[pypy-commit] pypy default: reorganize rstruct a bit, to be friendlier to the JIT

alex_gaynor noreply at buildbot.pypy.org
Tue Mar 6 01:02:59 CET 2012


Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch: 
Changeset: r53241:dd12179efc3c
Date: 2012-03-05 19:02 -0500
http://bitbucket.org/pypy/pypy/changeset/dd12179efc3c/

Log:	reorganize rstruct a bit, to be friendlier to the JIT

diff --git a/pypy/rlib/rstruct/nativefmttable.py b/pypy/rlib/rstruct/nativefmttable.py
--- a/pypy/rlib/rstruct/nativefmttable.py
+++ b/pypy/rlib/rstruct/nativefmttable.py
@@ -27,10 +27,13 @@
 float_buf = lltype.malloc(rffi.FLOATP.TO, 1, flavor='raw', immortal=True)
 
 @jit.dont_look_inside
+def double_to_ccharp(doubleval):
+    double_buf[0] = doubleval
+    return rffi.cast(rffi.CCHARP, double_buf)
+
 def pack_double(fmtiter):
     doubleval = fmtiter.accept_float_arg()
-    double_buf[0] = doubleval
-    p = rffi.cast(rffi.CCHARP, double_buf)
+    p = double_to_ccharp(doubleval)
     fmtiter.result.append_charpsize(p, rffi.sizeof(rffi.DOUBLE))
 
 @specialize.argtype(0)
@@ -43,11 +46,14 @@
     fmtiter.appendobj(doubleval)
 
 @jit.dont_look_inside
+def float_to_ccharp(floatval):
+    float_buf[0] = floatval
+    return rffi.cast(rffi.CCHARP, float_buf)
+
 def pack_float(fmtiter):
     doubleval = fmtiter.accept_float_arg()
     floatval = r_singlefloat(doubleval)
-    float_buf[0] = floatval
-    p = rffi.cast(rffi.CCHARP, float_buf)
+    p = float_to_ccharp(floatval)
     fmtiter.result.append_charpsize(p, rffi.sizeof(rffi.FLOAT))
 
 @specialize.argtype(0)


More information about the pypy-commit mailing list