[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