[pypy-svn] r35923 - in pypy/dist/pypy/jit/codegen/llvm: . test

ericvrp at codespeak.net ericvrp at codespeak.net
Wed Dec 20 21:46:47 CET 2006


Author: ericvrp
Date: Wed Dec 20 21:46:45 2006
New Revision: 35923

Modified:
   pypy/dist/pypy/jit/codegen/llvm/rgenop.py
   pypy/dist/pypy/jit/codegen/llvm/test/test_genc_ts.py
Log:
jit/codegen/llvm
    - dump info in the logfile just before an assert
    - fixed typo in log command
    - gave IntConst it's own operand methods because for a reason don't understand
      the const.value changes type???
    - 10 more genc_ts tests passing


Modified: pypy/dist/pypy/jit/codegen/llvm/rgenop.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/llvm/rgenop.py	(original)
+++ pypy/dist/pypy/jit/codegen/llvm/rgenop.py	Wed Dec 20 21:46:45 2006
@@ -96,8 +96,8 @@
 class GenericConst(GenConst):
     #type = 'generic'
 
-    def __init__(self, value):
-        self.value = value
+    #def __init__(self, value):
+    #    self.value = value
 
     def operand(self):
         return '%s %s' % (self.type, self.value)
@@ -118,6 +118,9 @@
 class BoolConst(GenericConst):
     type = 'bool'
 
+    def __init__(self, value):
+        self.value = bool(value)
+
 
 class CharConst(GenericConst):
     type = 'ubyte'
@@ -126,24 +129,44 @@
         if type(value) is str:
             self.value = ord(value)
         else:
+            assert type(value) is int
             self.value = value
 
 
 class UniCharConst(GenericConst):
     type = 'int'
 
+    def __init__(self, value):
+        self.value = unicode(value)
+
 
 class IntConst(GenericConst):
     type = 'int'
 
+    def __init__(self, value):
+        self.value = int(value)
+
+    #XXX why does typeof value change in test_genc_ts.py -k test_degenerated_before_return(_2)?
+    def operand(self):
+        return '%s %d' % (self.type, int(self.value))
+
+    def operand2(self):
+        return str(int(self.value))
+
 
 class UIntConst(GenericConst):
     type = 'uint'
 
+    def __init__(self, value):
+        self.value = int(value)
+
 
 class FloatConst(GenericConst):
     type = 'float'
 
+    def __init__(self, value):
+        self.value = float(value)
+
 
 class AddrConst(GenConst):
     type = 'int*'
@@ -166,7 +189,9 @@
         elif T is lltype.Signed:
             return llmemory.cast_adr_to_int(self.addr)
         else:
-            assert 0, "XXX not implemented"
+            msg = 'XXX not implemented'
+            logger.dump(msg)
+            assert 0, msg
 
 
 class Block(GenLabel):
@@ -195,7 +220,10 @@
         # check the types for debugging
         sourcevartypes = [var.type for var in sourcevars]
         targetvartypes = [var.type for var in self.inputargs]
-        assert sourcevartypes == targetvartypes
+        if sourcevartypes != targetvartypes:
+            logger.dump('sourcevartypes(%s) != targetvartypes(%s)' % (
+                sourcevartypes, targetvartypes))
+            assert sourcevartypes == targetvartypes
 
         # Check if the source block jumps to 'self' from multiple
         # positions: in this case we need an intermediate block...
@@ -560,7 +588,7 @@
     def op_float_is_true(self, gv_x):   return self._is_true(gv_x, '0.0')
 
     def genop_getfield(self, (offset, fieldsize), gv_ptr):
-        log('%s Builder.genop_getfield ([%d]%d) %s' % (
+        log('%s Builder.genop_getfield (%d,%d) %s' % (
             self.block.label, offset, fieldsize, gv_ptr.operand()))
         if fieldsize == WORD:
             t = 'int'
@@ -568,7 +596,9 @@
             if fieldsize == 1:
                 t = 'ubyte'
             else:
-                assert fieldsize == 2
+                if fieldsize != 2:
+                    logger.dump('fieldsize != [124]')
+                    assert fieldsize == 2
                 t = 'short'
         gv_ptr_var = self._as_var(gv_ptr)
         gv_p = Var(t + '*')
@@ -580,7 +610,7 @@
         return gv_result
 
     def genop_setfield(self, (offset, fieldsize), gv_ptr, gv_value):
-        log('%s Builder.senop_setfield %s,([%d]%d) %s=%s' % (
+        log('%s Builder.senop_setfield (%d,%d) %s=%s' % (
             self.block.label, offset, fieldsize, gv_ptr.operand(), gv_value.operand()))
         #if fieldsize == WORD:
         #    gv_result = Var('int')
@@ -589,7 +619,7 @@
         #       gv_result = Var('ubyte')
         #    else:
         #       assert fieldsize == 2
-        #        gv_result = Var('short')
+        #       gv_result = Var('short')
         gv_ptr_var = self._as_var(gv_ptr)
         gv_p = Var(gv_value.type+'*')
         self.asm.append(' %s=getelementptr %s,int %s' % (
@@ -597,8 +627,8 @@
         self.asm.append(' store %s,%s' % (
             gv_value.operand2(), gv_p.operand()))
 
-    def XXXgenop_getsubstruct(self, (offset, fieldsize), gv_ptr):
-        log('%s Builder.genop_getsubstruct [%d]%d,%s' % (
+    def genop_getsubstruct(self, (offset, fieldsize), gv_ptr):
+        log('%s Builder.genop_getsubstruct (%d,%d) %s' % (
             self.block.label, offset, fieldsize, gv_ptr.operand()))
         gv_ptr_var = self._as_var(gv_ptr)
         gv_sub = Var(gv_ptr.type)
@@ -834,7 +864,9 @@
             #    self.keepalive_gc_refs.append(lltype.cast_opaque_ptr(llmemory.GCREF, llvalue))
             return AddrConst(lladdr)
         else:
-            assert 0, "XXX not implemented"
+            msg = 'XXX not implemented'
+            logger.dump(msg)
+            assert 0, msg
 
     # attached later constPrebuiltGlobal = global_rgenop.genconst
 
@@ -914,10 +946,11 @@
         elif isinstance(T, lltype.Ptr):
             return llmemory.GCREF
         else:
-            assert 0, "XXX not implemented"
+            msg = 'XXX not implemented'
+            logger.dump(msg)
+            assert 0, msg
 
 
 global_rgenop = RLLVMGenOp()
 RLLVMGenOp.constPrebuiltGlobal = global_rgenop.genconst
 
-

Modified: pypy/dist/pypy/jit/codegen/llvm/test/test_genc_ts.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/llvm/test/test_genc_ts.py	(original)
+++ pypy/dist/pypy/jit/codegen/llvm/test/test_genc_ts.py	Wed Dec 20 21:46:45 2006
@@ -51,27 +51,27 @@
         test_simple_struct = skip
         test_simple_array = skip
         test_setarrayitem  = skip
+        test_degenerated_before_return = skip
+        test_degenerated_before_return_2 = skip
+        test_degenerated_via_substructure = skip
+        test_red_virtual_container = skip
+        test_red_propagate = skip
+        test_red_subcontainer = skip
+        test_red_subcontainer_cast = skip
+        test_merge_structures = skip
+        test_simple_meth = skip
+        test_simple_red_meth = skip
 
     #failing...
     if skip_failing:
-        test_degenerated_before_return = skip
-        test_degenerated_before_return_2 = skip
         test_degenerated_at_return = skip
-        test_degenerated_via_substructure = skip
         test_degenerate_with_voids = skip
-        test_red_virtual_container = skip
         test_red_array = skip
         test_red_struct_array = skip
         test_red_varsized_struct = skip
         test_array_of_voids = skip
-        test_red_propagate = skip
-        test_red_subcontainer = skip
-        test_red_subcontainer_cast = skip
-        test_merge_structures = skip
         test_green_with_side_effects = skip
         test_recursive_with_red_termination_condition = skip
-        test_simple_meth = skip
-        test_simple_red_meth = skip
         test_compile_time_const_tuple = skip
         test_residual_red_call = skip
         test_residual_red_call_with_exc = skip



More information about the Pypy-commit mailing list