[pypy-svn] r26177 - in pypy/dist/pypy: objspace/cpy objspace/cpy/test translator/c/test translator/goal
arigo at codespeak.net
arigo at codespeak.net
Sun Apr 23 12:18:34 CEST 2006
Author: arigo
Date: Sun Apr 23 12:18:32 2006
New Revision: 26177
Added:
pypy/dist/pypy/objspace/cpy/test/test_compile.py (contents, props changed)
Modified:
pypy/dist/pypy/objspace/cpy/capi.py
pypy/dist/pypy/objspace/cpy/objspace.py
pypy/dist/pypy/objspace/cpy/test/test_objspace.py
pypy/dist/pypy/translator/c/test/test_genc.py
pypy/dist/pypy/translator/goal/targetdemomodule.py
Log:
Copied the current targetdemomodule as tests.
A more efficient version of CPyObjSpace.call_function().
Modified: pypy/dist/pypy/objspace/cpy/capi.py
==============================================================================
--- pypy/dist/pypy/objspace/cpy/capi.py (original)
+++ pypy/dist/pypy/objspace/cpy/capi.py Sun Apr 23 12:18:32 2006
@@ -62,6 +62,10 @@
PyObject_Call.argtypes = [W_Object, W_Object, W_Object]
PyObject_Call.restype = W_Object
+PyObject_CallFunctionObjArgs = pythonapi.PyObject_CallFunctionObjArgs
+PyObject_CallFunctionObjArgs.restype = W_Object
+#PyObject_CallFunctionObjArgs.argtypes = [W_Object, ..., final NULL]
+
PyObject_RichCompare = pythonapi.PyObject_RichCompare
PyObject_RichCompare.argtypes = [W_Object, W_Object, c_int]
PyObject_RichCompare.restype = W_Object
Modified: pypy/dist/pypy/objspace/cpy/objspace.py
==============================================================================
--- pypy/dist/pypy/objspace/cpy/objspace.py (original)
+++ pypy/dist/pypy/objspace/cpy/objspace.py Sun Apr 23 12:18:32 2006
@@ -53,8 +53,8 @@
int_w = staticmethod(PyInt_AsLong)
def call_function(self, w_callable, *args_w):
- w_args = self.newtuple(list(args_w)) # XXX not very efficient
- return PyObject_Call(w_callable, w_args, PyDict_New())
+ args_w += (None,)
+ return PyObject_CallFunctionObjArgs(w_callable, *args_w)
def _freeze_(self):
return True
Added: pypy/dist/pypy/objspace/cpy/test/test_compile.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/objspace/cpy/test/test_compile.py Sun Apr 23 12:18:32 2006
@@ -0,0 +1,18 @@
+from pypy.translator.c.test.test_genc import compile
+from pypy.translator.goal.ann_override import PyPyAnnotatorPolicy
+from pypy.objspace.cpy.objspace import CPyObjSpace
+import pypy.rpython.rctypes.implementation
+
+
+def test_demo():
+ from pypy.module._demo import demo
+ space = CPyObjSpace()
+
+ def entry_point(n, w_callable):
+ return demo.measuretime(space, n, w_callable)
+
+ fn = compile(entry_point, [int, CPyObjSpace.W_Object],
+ annotatorpolicy = PyPyAnnotatorPolicy())
+
+ res = fn(10, long)
+ assert isinstance(res, int)
Modified: pypy/dist/pypy/objspace/cpy/test/test_objspace.py
==============================================================================
--- pypy/dist/pypy/objspace/cpy/test/test_objspace.py (original)
+++ pypy/dist/pypy/objspace/cpy/test/test_objspace.py Sun Apr 23 12:18:32 2006
@@ -8,3 +8,10 @@
space.setitem(d,wk1,wone)
wback = space.getitem(d,wk1)
assert space.eq_w(wback,wone)
+
+def test_demo():
+ from pypy.module._demo import demo
+ space = CPyObjSpace()
+ w_time = demo.measuretime(space, 10, CPyObjSpace.W_Object(int))
+ assert isinstance(w_time, CPyObjSpace.W_Object)
+ assert isinstance(w_time.value, int)
Modified: pypy/dist/pypy/translator/c/test/test_genc.py
==============================================================================
--- pypy/dist/pypy/translator/c/test/test_genc.py (original)
+++ pypy/dist/pypy/translator/c/test/test_genc.py Sun Apr 23 12:18:32 2006
@@ -30,9 +30,10 @@
libraries = db.gcpolicy.gc_libraries())
return m
-def compile(fn, argtypes, view=False, gcpolicy=None, backendopt=True):
+def compile(fn, argtypes, view=False, gcpolicy=None, backendopt=True,
+ annotatorpolicy=None):
t = TranslationContext()
- a = t.buildannotator()
+ a = t.buildannotator(policy=annotatorpolicy)
a.build_types(fn, argtypes)
t.buildrtyper().specialize()
if backendopt:
Modified: pypy/dist/pypy/translator/goal/targetdemomodule.py
==============================================================================
--- pypy/dist/pypy/translator/goal/targetdemomodule.py (original)
+++ pypy/dist/pypy/translator/goal/targetdemomodule.py Sun Apr 23 12:18:32 2006
@@ -22,4 +22,4 @@
else:
N = int(sys.argv[1])
print 'Timing for %d iterations...' % N
- print entry_point(N, int), 'seconds'
+ print entry_point(N, space.W_Object(int)), 'seconds'
More information about the Pypy-commit
mailing list