[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