[pypy-svn] r63651 - in pypy/branch/pyjitpl5-simplify/pypy/jit: backend/llgraph backend/test backend/x86 metainterp metainterp/test

fijal at codespeak.net fijal at codespeak.net
Sun Apr 5 02:43:23 CEST 2009


Author: fijal
Date: Sun Apr  5 02:43:22 2009
New Revision: 63651

Modified:
   pypy/branch/pyjitpl5-simplify/pypy/jit/backend/llgraph/llimpl.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/backend/test/runner.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86/regalloc.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/codewriter.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/executor.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/resoperation.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_basic.py
Log:
support cast on codewriter level


Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/backend/llgraph/llimpl.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/backend/llgraph/llimpl.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/backend/llgraph/llimpl.py	Sun Apr  5 02:43:22 2009
@@ -115,7 +115,6 @@
     'strgetitem'      : (('ptr', 'int'), 'int'),
     'strsetitem'      : (('ptr', 'int', 'int'), None),
     'cast_ptr_to_int' : (('ptr',), 'int'),
-    'cast_unichar_to_int' : (('int',), 'int'),
     'cast_int_to_ptr' : (('int',), 'ptr'),
     #'getitem'         : (('void', 'ptr', 'int'), 'int'),
     #'setitem'         : (('void', 'ptr', 'int', 'int'), None),

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/backend/test/runner.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/backend/test/runner.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/backend/test/runner.py	Sun Apr  5 02:43:22 2009
@@ -74,11 +74,7 @@
                                      [BoxPtr(x)],  'int').value
         res2 = self.execute_operation(rop.CAST_INT_TO_PTR,
                                       [BoxInt(res)], 'ptr').value
-        assert res2 == x
-        x = execute(self.cpu, rop.CAST_UNICHAR_TO_INT, [BoxInt(1234)])
-        assert x.value == 1234
-        assert self.execute_operation(rop.CAST_UNICHAR_TO_INT,
-                                      [BoxInt(1234)], 'int').value == 1234
+        assert res2 == x        
 
     def test_uint_xor(self):
         x = execute(self.cpu, rop.UINT_XOR, [BoxInt(100), ConstInt(4)])

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86/regalloc.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86/regalloc.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86/regalloc.py	Sun Apr  5 02:43:22 2009
@@ -949,10 +949,6 @@
 
     consider_cast_int_to_ptr = _same_as
     consider_cast_ptr_to_int = _same_as
-    consider_cast_unichar_to_int = _same_as
-
-    xxx_consider_cast_int_to_char = _same_as
-    xxx_consider_cast_int_to_ptr  = _same_as
 
     def consider_int_is_true(self, op, ignored):
         argloc = self.force_allocate_reg(op.args[0], [])

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/codewriter.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/codewriter.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/codewriter.py	Sun Apr  5 02:43:22 2009
@@ -510,6 +510,8 @@
     serialize_op_cast_bool_to_int = serialize_op_same_as
     serialize_op_cast_int_to_uint = serialize_op_same_as
     serialize_op_cast_uint_to_int = serialize_op_same_as
+    serialize_op_cast_unichar_to_int = serialize_op_same_as
+    serialize_op_cast_int_to_unichar = serialize_op_same_as
     serialize_op_resume_point = serialize_op_same_as
 
     _defl = default_serialize_op

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/executor.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/executor.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/executor.py	Sun Apr  5 02:43:22 2009
@@ -88,9 +88,6 @@
 def do_uint_ge(cpu, args, descr=None):
     return ConstInt(r_uint(args[0].getint()) >= r_uint(args[1].getint()))
 
-def do_cast_unichar_to_int(cpu, args, descr=None):
-    return args[0].clonebox()
-
 # ----------
 
 def do_int_is_true(cpu, args, descr=None):

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py	Sun Apr  5 02:43:22 2009
@@ -255,7 +255,6 @@
 
     for _opimpl in ['int_is_true', 'int_neg', 'int_invert', 'bool_not',
                     'uint_is_true', 'cast_ptr_to_int', 'cast_int_to_ptr',
-                    'cast_unichar_to_int',
                     ]:
         exec py.code.Source('''
             @arguments("box")

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/resoperation.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/resoperation.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/resoperation.py	Sun Apr  5 02:43:22 2009
@@ -105,8 +105,7 @@
     #
     CAST_INT_TO_PTR        = 21
     CAST_PTR_TO_INT        = 22
-    CAST_UNICHAR_TO_INT    = 23
-    UINT_XOR               = 24
+    UINT_XOR               = 29
     INT_ADD                = 30
     INT_SUB                = 31
     INT_MUL                = 32

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_basic.py	Sun Apr  5 02:43:22 2009
@@ -176,6 +176,21 @@
         res = self.interp_operations(f, [42])
         assert res == ord("?")
 
+    def test_unicode(self):
+        def f(n):
+            bytecode = u'adlfkj' + unichr(n)
+            if n < len(bytecode):
+                return bytecode[n]
+            else:
+                return u"?"
+        res = self.interp_operations(f, [1])
+        assert res == ord(u"d") # XXX should be "d"
+        res = self.interp_operations(f, [6])
+        assert res == 6
+        res = self.interp_operations(f, [42])
+        assert res == ord(u"?")
+        
+
     def test_residual_call(self):
         def externfn(x, y):
             return x * y



More information about the Pypy-commit mailing list