[pypy-commit] pypy inline-dict-ops: fix various tests

alex_gaynor noreply at buildbot.pypy.org
Fri Oct 21 01:28:30 CEST 2011


Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch: inline-dict-ops
Changeset: r48287:43a10843f902
Date: 2011-10-20 19:28 -0400
http://bitbucket.org/pypy/pypy/changeset/43a10843f902/

Log:	fix various tests

diff --git a/pypy/jit/backend/llsupport/gc.py b/pypy/jit/backend/llsupport/gc.py
--- a/pypy/jit/backend/llsupport/gc.py
+++ b/pypy/jit/backend/llsupport/gc.py
@@ -107,6 +107,8 @@
         def malloc_array(basesize, itemsize, ofs_length, num_elem):
             size = basesize + itemsize * num_elem
             res = self.funcptr_for_new(size)
+            if not res:
+                return res
             rffi.cast(rffi.CArrayPtr(lltype.Signed), res)[ofs_length/WORD] = num_elem
             return res
         self.malloc_array = malloc_array
diff --git a/pypy/jit/backend/x86/assembler.py b/pypy/jit/backend/x86/assembler.py
--- a/pypy/jit/backend/x86/assembler.py
+++ b/pypy/jit/backend/x86/assembler.py
@@ -1506,7 +1506,6 @@
 
     def genop_newstr(self, op, arglocs, result_loc):
         assert result_loc is eax
-        assert self.malloc_str_func_addr
         self.call(self.malloc_str_func_addr, arglocs, eax)
         self.propagate_memoryerror_if_eax_is_null()
 
diff --git a/pypy/jit/backend/x86/test/test_runner.py b/pypy/jit/backend/x86/test/test_runner.py
--- a/pypy/jit/backend/x86/test/test_runner.py
+++ b/pypy/jit/backend/x86/test/test_runner.py
@@ -72,19 +72,13 @@
 
         allocs = [None]
         all = []
+        orig_new = self.cpu.gc_ll_descr.funcptr_for_new
         def f(size):
             allocs.insert(0, size)
-            buf = ctypes.create_string_buffer(size)
-            all.append(buf)
-            return ctypes.cast(buf, ctypes.c_void_p).value
-        func = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int)(f)
-        addr = ctypes.cast(func, ctypes.c_void_p).value
-        # ctypes produces an unsigned value. We need it to be signed for, eg,
-        # relative addressing to work properly.
-        addr = rffi.cast(lltype.Signed, addr)
+            return orig_new(size)
 
         self.cpu.assembler.setup_once()
-        self.cpu.assembler.malloc_func_addr = addr
+        self.cpu.gc_ll_descr.funcptr_for_new = f
         ofs = symbolic.get_field_token(rstr.STR, 'chars', False)[0]
 
         res = self.execute_operation(rop.NEWSTR, [ConstInt(7)], 'ref')


More information about the pypy-commit mailing list