[pypy-svn] r68876 - in pypy/branch/logging2/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Sat Oct 31 11:12:56 CET 2009
Author: arigo
Date: Sat Oct 31 11:12:56 2009
New Revision: 68876
Modified:
pypy/branch/logging2/pypy/jit/metainterp/optimizeopt.py
pypy/branch/logging2/pypy/jit/metainterp/pyjitpl.py
pypy/branch/logging2/pypy/jit/metainterp/resume.py
pypy/branch/logging2/pypy/jit/metainterp/simple_optimize.py
pypy/branch/logging2/pypy/jit/metainterp/test/test_resume.py
Log:
Convert dump_storage() to debug_start/stop/prints.
Modified: pypy/branch/logging2/pypy/jit/metainterp/optimizeopt.py
==============================================================================
--- pypy/branch/logging2/pypy/jit/metainterp/optimizeopt.py (original)
+++ pypy/branch/logging2/pypy/jit/metainterp/optimizeopt.py Sat Oct 31 11:12:56 2009
@@ -518,8 +518,7 @@
def store_final_boxes_in_guard(self, op):
descr = op.descr
assert isinstance(descr, compile.ResumeGuardDescr)
- modifier = resume.ResumeDataVirtualAdder(descr, self.resumedata_memo,
- self.metainterp_sd.globaldata.storedebug)
+ modifier = resume.ResumeDataVirtualAdder(descr, self.resumedata_memo)
newboxes = modifier.finish(self.values)
if len(newboxes) > self.metainterp_sd.options.failargs_limit:
raise compile.GiveUp
Modified: pypy/branch/logging2/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/logging2/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/logging2/pypy/jit/metainterp/pyjitpl.py Sat Oct 31 11:12:56 2009
@@ -1027,7 +1027,6 @@
self.profiler.start()
self.profiler.initialized = True
self.globaldata.initialized = True
- self.globaldata.storedebug = os.environ.get('PYPYJITRESUMELOG')
def _setup_class_sizes(self):
class_sizes = {}
Modified: pypy/branch/logging2/pypy/jit/metainterp/resume.py
==============================================================================
--- pypy/branch/logging2/pypy/jit/metainterp/resume.py (original)
+++ pypy/branch/logging2/pypy/jit/metainterp/resume.py Sat Oct 31 11:12:56 2009
@@ -4,6 +4,8 @@
from pypy.rpython.lltypesystem import rffi
from pypy.rlib import rarithmetic
from pypy.rlib.objectmodel import we_are_translated
+from pypy.rlib.debug import have_debug_prints
+from pypy.rlib.debug import debug_start, debug_stop, debug_print
# Logic to encode the chain of frames and the state of the boxes at a
# guard operation, and to decode it again. This is a bit advanced,
@@ -177,10 +179,9 @@
class ResumeDataVirtualAdder(object):
- def __init__(self, storage, memo, debug_storage=None):
+ def __init__(self, storage, memo):
self.storage = storage
self.memo = memo
- self.debug_storage = debug_storage
#self.virtuals = []
#self.vfieldboxes = []
@@ -256,8 +257,8 @@
self._number_virtuals(liveboxes)
storage.rd_consts = self.memo.consts
- if self.debug_storage:
- dump_storage(self.debug_storage, storage, liveboxes)
+ if have_debug_prints():
+ dump_storage(storage, liveboxes)
return liveboxes[:]
def _number_virtuals(self, liveboxes):
@@ -307,6 +308,13 @@
self.fielddescrs[i],
box, fieldbox)
+ def debug_prints(self):
+ assert len(self.fielddescrs) == len(self.fieldnums)
+ for i in range(len(self.fielddescrs)):
+ debug_print("\t\t",
+ str(self.fielddescrs[i]),
+ str(untag(self.fieldnums[i])))
+
class VirtualInfo(AbstractVirtualStructInfo):
def __init__(self, known_class, fielddescrs):
AbstractVirtualStructInfo.__init__(self, fielddescrs)
@@ -316,11 +324,9 @@
return metainterp.execute_and_record(rop.NEW_WITH_VTABLE,
None, self.known_class)
- def repr_rpython(self):
- return 'VirtualInfo("%s", %s, %s)' % (
- self.known_class,
- ['"%s"' % (fd,) for fd in self.fielddescrs],
- [untag(i) for i in self.fieldnums])
+ def debug_prints(self):
+ debug_print("\tvirtualinfo", self.known_class.repr_rpython())
+ AbstractVirtualStructInfo.debug_prints(self)
class VStructInfo(AbstractVirtualStructInfo):
def __init__(self, typedescr, fielddescrs):
@@ -330,11 +336,9 @@
def allocate(self, metainterp):
return metainterp.execute_and_record(rop.NEW, self.typedescr)
- def repr_rpython(self):
- return 'VStructInfo("%s", %s, %s)' % (
- self.typedescr,
- ['"%s"' % (fd,) for fd in self.fielddescrs],
- [untag(i) for i in self.fieldnums])
+ def debug_prints(self):
+ debug_print("\tvstructinfo", self.typedescr.repr_rpython())
+ AbstractVirtualStructInfo.debug_prints(self)
class VArrayInfo(AbstractVirtualInfo):
def __init__(self, arraydescr):
@@ -354,10 +358,10 @@
self.arraydescr,
box, ConstInt(i), itembox)
- def repr_rpython(self):
- return 'VArrayInfo("%s", %s)' % (
- self.arraydescr,
- [untag(i) for i in self.fieldnums])
+ def debug_prints(self):
+ debug_print("\tvarrayinfo", self.arraydescr)
+ for i in self.fieldnums:
+ debug_print("\t\t", str(untag(i)))
def rebuild_from_resumedata(metainterp, newboxes, storage, expects_virtualizables):
@@ -423,38 +427,31 @@
# ____________________________________________________________
-def dump_storage(logname, storage, liveboxes):
+def dump_storage(storage, liveboxes):
"For profiling only."
- import os
- from pypy.rlib import objectmodel
- assert logname is not None # annotator hack
- fd = os.open(logname, os.O_WRONLY | os.O_APPEND | os.O_CREAT, 0666)
- os.write(fd, 'Log(%d, [\n' % objectmodel.compute_unique_id(storage))
+ from pypy.rlib.objectmodel import compute_unique_id
+ debug_start("jit-resume")
+ debug_print('Log storage', compute_unique_id(storage))
frameinfo = storage.rd_frame_info_list
- while True:
- os.write(fd, '\t("%s", %d, %d) at %xd,\n' % (
- frameinfo.jitcode, frameinfo.pc, frameinfo.exception_target,
- objectmodel.compute_unique_id(frameinfo)))
+ while frameinfo is not None:
+ try:
+ jitcodename = frameinfo.jitcode.name
+ except AttributeError:
+ jitcodename = str(compute_unique_id(frameinfo.jitcode))
+ debug_print('\tjitcode/pc', jitcodename,
+ frameinfo.pc, frameinfo.exception_target,
+ 'at', compute_unique_id(frameinfo))
frameinfo = frameinfo.prev
- if frameinfo is None:
- break
- os.write(fd, '\t],\n\t[\n')
numb = storage.rd_numb
- while True:
- os.write(fd, '\t\t%s at %xd,\n' % ([untag(i) for i in numb.nums],
- objectmodel.compute_unique_id(numb)))
+ while numb is not None:
+ debug_print('\tnumb', str([untag(i) for i in numb.nums]),
+ 'at', compute_unique_id(numb))
numb = numb.prev
- if numb is None:
- break
- os.write(fd, '\t], [\n')
for const in storage.rd_consts:
- os.write(fd, '\t"%s",\n' % (const.repr_rpython(),))
- os.write(fd, '\t], [\n')
+ debug_print('\tconst', const.repr_rpython())
for box in liveboxes:
- os.write(fd, '\t"%s",\n' % (box.repr_rpython(),))
- os.write(fd, '\t], [\n')
+ debug_print('\tbox', box.repr_rpython())
if storage.rd_virtuals is not None:
for virtual in storage.rd_virtuals:
- os.write(fd, '\t%s,\n' % (virtual.repr_rpython(),))
- os.write(fd, '\t])\n')
- os.close(fd)
+ virtual.debug_prints()
+ debug_stop("jit-resume")
Modified: pypy/branch/logging2/pypy/jit/metainterp/simple_optimize.py
==============================================================================
--- pypy/branch/logging2/pypy/jit/metainterp/simple_optimize.py (original)
+++ pypy/branch/logging2/pypy/jit/metainterp/simple_optimize.py Sat Oct 31 11:12:56 2009
@@ -22,8 +22,7 @@
if op.is_guard():
descr = op.descr
assert isinstance(descr, compile.ResumeGuardDescr)
- modifier = resume.ResumeDataVirtualAdder(descr, memo,
- metainterp_sd.globaldata.storedebug)
+ modifier = resume.ResumeDataVirtualAdder(descr, memo)
newboxes = modifier.finish(EMPTY_VALUES)
descr.store_final_boxes(op, newboxes)
newoperations.append(op)
Modified: pypy/branch/logging2/pypy/jit/metainterp/test/test_resume.py
==============================================================================
--- pypy/branch/logging2/pypy/jit/metainterp/test/test_resume.py (original)
+++ pypy/branch/logging2/pypy/jit/metainterp/test/test_resume.py Sat Oct 31 11:12:56 2009
@@ -8,7 +8,9 @@
from pypy.jit.metainterp import executor
class Storage:
- pass
+ rd_frame_info_list = None
+ rd_numb = None
+ rd_consts = []
def test_tag():
assert tag(3, 1) == rffi.r_short(3<<2|1)
@@ -591,6 +593,7 @@
snapshot = Snapshot(snapshot, [ConstInt(2), ConstInt(3)])
snapshot = Snapshot(snapshot, [b1, b2, b3])
storage.rd_snapshot = snapshot
+ storage.rd_frame_info_list = None
return storage
def test_virtual_adder_int_constants():
@@ -761,6 +764,7 @@
[b4s, c1s]) # new fields
liveboxes = []
modifier._number_virtuals(liveboxes)
+ dump_storage(storage, liveboxes)
storage.rd_consts = memo.consts[:]
storage.rd_numb = None
# resume
@@ -807,6 +811,7 @@
[c1s, b4s]) # new fields
liveboxes = []
modifier._number_virtuals(liveboxes)
+ dump_storage(storage, liveboxes)
storage.rd_consts = memo.consts[:]
storage.rd_numb = None
b4t = BoxPtr()
More information about the Pypy-commit
mailing list