[pypy-svn] r65065 - in pypy/branch/pyjitpl5/pypy/jit/metainterp: . test
antocuni at codespeak.net
antocuni at codespeak.net
Tue May 5 17:41:09 CEST 2009
Author: antocuni
Date: Tue May 5 17:41:08 2009
New Revision: 65065
Modified:
pypy/branch/pyjitpl5/pypy/jit/metainterp/codewriter.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py
Log:
I don't feel like fighting with oonewcustomdict right now. Write a failing
test, and a dummy implementation of it in codewriter, so that it doesn't crash
at least during code generation
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/codewriter.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/codewriter.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/codewriter.py Tue May 5 17:41:08 2009
@@ -707,6 +707,10 @@
self.emit(self.var_position(op.args[1]))
self.register_var(op.result)
+ def serialize_op_oonewcustomdict(self, op):
+ self.emit('not_implemented')
+ self.register_var(op.result)
+
def serialize_op_instanceof(self, op):
v, c_TYPE = op.args
TYPE = c_TYPE.value
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py Tue May 5 17:41:08 2009
@@ -715,6 +715,10 @@
return self.metainterp.finishframe_exception(self.exception_box,
self.exc_value_box)
+ @arguments()
+ def opimpl_not_implemented(self):
+ raise NotImplementedError
+
# ------------------------------
def setup_call(self, argboxes):
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py Tue May 5 17:41:08 2009
@@ -573,6 +573,28 @@
res = self.interp_operations(fn, [1])
assert not res
+ def test_r_dict(self):
+ from pypy.rlib.objectmodel import r_dict
+ class FooError(Exception):
+ pass
+ def myeq(n, m):
+ return n == m
+ def myhash(n):
+ if n < 0:
+ raise FooError
+ return -n
+ def f(n):
+ d = r_dict(myeq, myhash)
+ for i in range(10):
+ d[i] = i*i
+ try:
+ return d[n]
+ except FooError:
+ return 99
+ res = self.interp_operations(f, [5])
+ assert res == f(5)
+
+
class TestOOtype(BasicTests, OOJitMixin):
def test_oohash(self):
@@ -627,3 +649,6 @@
x = lltype.malloc(TP)
expected = lltype.cast_opaque_ptr(llmemory.GCREF, x)
assert self.interp_operations(f, [x]) == expected
+
+ def test_r_dict(self):
+ py.test.skip('in-progress')
More information about the Pypy-commit
mailing list