[pypy-svn] r47310 - in pypy/dist/pypy/rlib: . test
fijal at codespeak.net
fijal at codespeak.net
Mon Oct 8 20:45:51 CEST 2007
Author: fijal
Date: Mon Oct 8 20:45:51 2007
New Revision: 47310
Modified:
pypy/dist/pypy/rlib/libffi.py
pypy/dist/pypy/rlib/test/test_libffi.py
Log:
Move slightly into rpython direction. Need help though
Modified: pypy/dist/pypy/rlib/libffi.py
==============================================================================
--- pypy/dist/pypy/rlib/libffi.py (original)
+++ pypy/dist/pypy/rlib/libffi.py Mon Oct 8 20:45:51 2007
@@ -4,6 +4,7 @@
from pypy.rpython.tool import rffi_platform
from pypy.rpython.lltypesystem import lltype, rffi
+from pypy.rlib.unroll import unrolling_iterable
includes = ['dlfcn.h', 'ffi.h']
@@ -73,9 +74,6 @@
rffi.LONG : ffi_type_slong,
lltype.Void : ffi_type_void,
# some shortcuts
- None : ffi_type_void,
- float : ffi_type_double,
- int : ffi_type_sint,
}
def external(name, args, result):
@@ -137,7 +135,8 @@
TP = rffi.CFixedArray(FFI_TYPE_P, argnum)
self.ll_argtypes = lltype.malloc(TP, flavor='raw')
self.argtypes = argtypes
- for i, argtype in enumerate(argtypes):
+ for i in unrolling_iterable(range(len(argtypes))):
+ argtype = argtypes[i]
self.ll_argtypes[i] = TYPE_MAP[argtype]
TP = rffi.CFixedArray(rffi.VOIDP, argnum)
self.ll_args = lltype.malloc(TP, flavor='raw')
@@ -191,3 +190,4 @@
def getpointer(self, name, argtypes, restype):
return FuncPtr(dlsym(self.lib, name), argtypes, restype)
+ getpointer._annspecialcase_ = 'specialize:arg(2, 3)'
Modified: pypy/dist/pypy/rlib/test/test_libffi.py
==============================================================================
--- pypy/dist/pypy/rlib/test/test_libffi.py (original)
+++ pypy/dist/pypy/rlib/test/test_libffi.py Mon Oct 8 20:45:51 2007
@@ -5,7 +5,7 @@
from pypy.rpython.test.test_llinterp import interpret
from pypy.rlib.libffi import CDLL, dlopen
from pypy.rpython.lltypesystem.ll2ctypes import ALLOCATED
-from pypy.rpython.lltypesystem import rffi
+from pypy.rpython.lltypesystem import rffi, lltype
import os, sys
import py
@@ -34,8 +34,8 @@
def test_library_get_func(self):
lib = self.get_libc()
- ptr = lib.getpointer('time', [], None)
- py.test.raises(KeyError, lib.getpointer, 'xxxxxxxxxxxxxxx', [], None)
+ ptr = lib.getpointer('time', [], lltype.Void)
+ py.test.raises(KeyError, lib.getpointer, 'xxxxxxxxxxxxxxx', [], lltype.Void)
del lib
def test_library_func_call(self):
@@ -54,3 +54,12 @@
pow = libm.getpointer('pow', [rffi.DOUBLE, rffi.DOUBLE], rffi.DOUBLE)
assert pow.call((2.0, 2.0)) == 4.0
assert pow.call((3.0, 3.0)) == 27.0
+
+ def test_compile(self):
+ py.test.skip("in-progress")
+ def f(x, y):
+ libm = CDLL('libm.so')
+ c_pow = libm.getpointer('pow', (rffi.DOUBLE, rffi.DOUBLE), rffi.DOUBLE)
+ return c_pow.call((x, y))
+
+ interpret(f, [2.0, 4.0])
More information about the Pypy-commit
mailing list