[pypy-commit] pypy dynamic-specialized-tuple: Start trying to get this test to pass under x86, now it segfaults.

alex_gaynor noreply at buildbot.pypy.org
Fri Mar 30 04:46:06 CEST 2012


Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch: dynamic-specialized-tuple
Changeset: r54089:1bbdd65e9f7e
Date: 2012-03-29 22:45 -0400
http://bitbucket.org/pypy/pypy/changeset/1bbdd65e9f7e/

Log:	Start trying to get this test to pass under x86, now it segfaults.

diff --git a/pypy/jit/backend/llsupport/llmodel.py b/pypy/jit/backend/llsupport/llmodel.py
--- a/pypy/jit/backend/llsupport/llmodel.py
+++ b/pypy/jit/backend/llsupport/llmodel.py
@@ -8,7 +8,7 @@
 from pypy.jit.backend.model import AbstractCPU
 from pypy.jit.backend.llsupport import symbolic
 from pypy.jit.backend.llsupport.symbolic import WORD, unroll_basic_sizes
-from pypy.jit.backend.llsupport.descr import (
+from pypy.jit.backend.llsupport.descr import (FLAG_POINTER,
     get_size_descr, get_field_descr, get_array_descr,
     get_call_descr, get_interiorfield_descr, get_dynamic_interiorfield_descr,
     FieldDescr, ArrayDescr, CallDescr, InteriorFieldDescr)
@@ -291,6 +291,9 @@
         return ffisupport.get_call_descr_dynamic(self, ffi_args, ffi_result,
                                                  extrainfo, ffi_flags)
 
+    def copy_and_change_descr_typeinfo_to_ptr(self, descr):
+        return ArrayDescr(descr.basesize, descr.itemsize, descr.lendescr, FLAG_POINTER)
+
     def get_overflow_error(self):
         ovf_vtable = self.cast_adr_to_int(self._ovf_error_vtable)
         ovf_inst = lltype.cast_opaque_ptr(llmemory.GCREF,
diff --git a/pypy/jit/metainterp/test/test_ajit.py b/pypy/jit/metainterp/test/test_ajit.py
--- a/pypy/jit/metainterp/test/test_ajit.py
+++ b/pypy/jit/metainterp/test/test_ajit.py
@@ -3806,6 +3806,17 @@
             res = self.interp_operations(f, [x])
             assert res == x or math.isnan(x) and math.isnan(res)
 
+    def test_untyped_storage(self):
+        class A(object):
+            def __init__(self, v):
+                self.v = v
+        def f(x):
+            storage = rerased_raw.UntypedStorage("io")
+            storage.setint(0, x)
+            storage.setinstance(1, A(x * 10))
+            return storage.getint(0) + storage.getinstance(1, A).v
+        res = self.interp_operations(f, [5])
+        assert res == 55
 
 class TestLLtype(BaseLLtypeTests, LLJitMixin):
     def test_tagged(self):
@@ -3933,14 +3944,3 @@
         self.interp_operations(f, [1, 2, 3])
         self.check_operations_history(call=1, guard_no_exception=0)
 
-    def test_untyped_storage(self):
-        class A(object):
-            def __init__(self, v):
-                self.v = v
-        def f(x):
-            storage = rerased_raw.UntypedStorage("io")
-            storage.setint(0, x)
-            storage.setinstance(1, A(x * 10))
-            return storage.getint(0) + storage.getinstance(1, A).v
-        res = self.interp_operations(f, [5])
-        assert res == 55
\ No newline at end of file


More information about the pypy-commit mailing list