[pypy-svn] r57804 - in pypy/branch/oo-jit/pypy/translator/oosupport: . test_template

antocuni at codespeak.net antocuni at codespeak.net
Thu Sep 4 10:17:00 CEST 2008


Author: antocuni
Date: Thu Sep  4 10:16:55 2008
New Revision: 57804

Modified:
   pypy/branch/oo-jit/pypy/translator/oosupport/constant.py
   pypy/branch/oo-jit/pypy/translator/oosupport/test_template/constant.py
Log:
add support for pbc of type ootype.Object which contains a string



Modified: pypy/branch/oo-jit/pypy/translator/oosupport/constant.py
==============================================================================
--- pypy/branch/oo-jit/pypy/translator/oosupport/constant.py	(original)
+++ pypy/branch/oo-jit/pypy/translator/oosupport/constant.py	Thu Sep  4 10:16:55 2008
@@ -54,6 +54,12 @@
     if is_primitive(TYPE):
         return constgen.push_primitive_constant(gen, TYPE, value)
 
+    if TYPE is ootype.Object:
+        obj = value.obj
+        T2 = ootype.typeOf(obj)
+        if is_primitive(T2):
+            return constgen.push_primitive_constant(gen, T2, obj)
+
     const = constgen.record_const(value)
     if const.is_inline():
         const.push_inline(gen, TYPE)

Modified: pypy/branch/oo-jit/pypy/translator/oosupport/test_template/constant.py
==============================================================================
--- pypy/branch/oo-jit/pypy/translator/oosupport/test_template/constant.py	(original)
+++ pypy/branch/oo-jit/pypy/translator/oosupport/test_template/constant.py	Thu Sep  4 10:16:55 2008
@@ -1,3 +1,5 @@
+from pypy.rpython.ootypesystem import ootype
+
 # used in tests below
 class A:
     pass
@@ -143,3 +145,12 @@
             return mylist[x]
         res = self.interpret(fn, [0])
         assert self.class_name(res) == 'A'
+
+    def test_convert_string_to_object(self):
+        s = self.string_to_ll("hello world")
+        obj = ootype.cast_to_object(s)
+        def fn():
+            s1 = ootype.cast_from_object(ootype.String, obj)
+            return s1
+        res = self.interpret(fn, [], backendopt=False)
+        assert res == 'hello world'



More information about the Pypy-commit mailing list