[pypy-svn] r35505 - in pypy/branch/jit-real-world/pypy/jit/codegen/i386: . test

arigo at codespeak.net arigo at codespeak.net
Fri Dec 8 19:08:53 CET 2006


Author: arigo
Date: Fri Dec  8 19:08:51 2006
New Revision: 35505

Modified:
   pypy/branch/jit-real-world/pypy/jit/codegen/i386/codebuf_posix.py
   pypy/branch/jit-real-world/pypy/jit/codegen/i386/test/test_auto_encoding.py
   pypy/branch/jit-real-world/pypy/jit/codegen/i386/viewcode.py
Log:
(pedronis, arigo)

Some changes to ease debugging at the back-end level.
We learned soon after, though, that when something goes
wrong it's likely to be not in the back-end anyway...


Modified: pypy/branch/jit-real-world/pypy/jit/codegen/i386/codebuf_posix.py
==============================================================================
--- pypy/branch/jit-real-world/pypy/jit/codegen/i386/codebuf_posix.py	(original)
+++ pypy/branch/jit-real-world/pypy/jit/codegen/i386/codebuf_posix.py	Fri Dec  8 19:08:51 2006
@@ -1,7 +1,7 @@
 import pypy.rpython.rctypes.implementation  # register rctypes types
 from pypy.rpython.rctypes.tool import ctypes_platform
 from pypy.rpython.rctypes.tool.libc import libc
-from ctypes import POINTER, c_char, c_int
+from ctypes import POINTER, c_char, c_int, cast, c_void_p
 
 class CConfig:
     _includes_ = ("sys/types.h", "sys/mman.h")
@@ -34,12 +34,17 @@
 munmap_.restype = c_int
 munmap_.includes = ("sys/mman.h",)
 
+class Hint:
+    pos = -0x4fff0000   # for reproducible results
+hint = Hint()
+
 def alloc(map_size):
     flags = MAP_PRIVATE | MAP_ANONYMOUS
     prot = PROT_EXEC | PROT_READ | PROT_WRITE
-    res = mmap_(PTR(), map_size, prot, flags, -1, 0)
+    res = mmap_(cast(c_void_p(hint.pos), PTR), map_size, prot, flags, -1, 0)
     if not res:
         raise MemoryError
+    hint.pos += map_size
     return res
 
 free = munmap_

Modified: pypy/branch/jit-real-world/pypy/jit/codegen/i386/test/test_auto_encoding.py
==============================================================================
--- pypy/branch/jit-real-world/pypy/jit/codegen/i386/test/test_auto_encoding.py	(original)
+++ pypy/branch/jit-real-world/pypy/jit/codegen/i386/test/test_auto_encoding.py	Fri Dec  8 19:08:51 2006
@@ -61,7 +61,10 @@
     return map(i386.imm16, v)
 
 def imm32_tests():
-    v = [0x80000000,0x7FFFFFFF] + [random.randrange(0,65536)<<16 | random.randrange(0,65536) for i in range(COUNT1)]
+    v = ([0x80000000, 0x7FFFFFFF, 128, 256, -129, -255] +
+         [random.randrange(0,65536)<<16 |
+             random.randrange(0,65536) for i in range(COUNT1)] +
+         [random.randrange(128, 256) for i in range(COUNT1)])
     return map(i386.imm32, filter(lambda x: x<-128 or x>=128, v))
 
 def pick1(memSIB, cache=[]):

Modified: pypy/branch/jit-real-world/pypy/jit/codegen/i386/viewcode.py
==============================================================================
--- pypy/branch/jit-real-world/pypy/jit/codegen/i386/viewcode.py	(original)
+++ pypy/branch/jit-real-world/pypy/jit/codegen/i386/viewcode.py	Fri Dec  8 19:08:51 2006
@@ -41,6 +41,7 @@
     symbollister = 'nm %s'
     re_symbolentry = re.compile(r'([0-9a-fA-F]+)\s\w\s(.*)')
     #
+    print 'loading symbols from %s...' % (filename,)
     symbols = {}
     g = os.popen(symbollister % filename, "r")
     for line in g:
@@ -52,6 +53,7 @@
                 name = '\xb7' + name[7:]
             symbols[addr] = name
     g.close()
+    print '%d symbols found' % (len(symbols),)
     return symbols
 
 re_addr = re.compile(r'[\s,$]0x([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+)')
@@ -186,12 +188,12 @@
         # split blocks at labeltargets
         # XXX slooooow!
         t = self.labeltargets
-        print t
+        #print t
         for r in self.ranges:
-            print r.addr, r.addr + len(r.data)
+            #print r.addr, r.addr + len(r.data)
             for i in range(r.addr + 1, r.addr + len(r.data)):
                 if i in t:
-                    print i
+                    #print i
                     ofs = i - r.addr
                     self.ranges.append(CodeRange(self, i, r.data[ofs:]))
                     r.data = r.data[:ofs]



More information about the Pypy-commit mailing list