[pypy-commit] pypy optresult: fragile fragile
fijal
noreply at buildbot.pypy.org
Wed Jun 3 14:12:21 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77817:be2d3c2e4d27
Date: 2015-06-03 14:12 +0200
http://bitbucket.org/pypy/pypy/changeset/be2d3c2e4d27/
Log: fragile fragile
diff --git a/rpython/jit/metainterp/optimizeopt/info.py b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -241,9 +241,9 @@
class RawStructPtrInfo(AbstractRawPtrInfo):
def __init__(self):
pass
-
- def _force_elements(self, op, optforce, descr):
- xxx
+
+ def is_virtual(self):
+ return False
class RawSlicePtrInfo(AbstractRawPtrInfo):
def __init__(self, offset, parent):
@@ -260,7 +260,7 @@
self.parent.setitem_raw(self.offset+offset, itemsize, descr, itemop)
def _force_elements(self, op, optforce, descr):
- xxx
+ raise Exception("implement me")
def visitor_walk_recursive(self, op, visitor, optimizer):
source_op = optimizer.get_box_replacement(op.getarg(0))
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -768,7 +768,7 @@
op.setdescr(descr)
assert isinstance(descr, compile.ResumeGuardDescr)
assert isinstance(op, GuardResOp)
- modifier = resume.ResumeDataVirtualAdder(descr, op,
+ modifier = resume.ResumeDataVirtualAdder(self, descr, op,
self.resumedata_memo)
try:
newboxes = modifier.finish(self, pendingfields)
@@ -777,12 +777,7 @@
raise resume.TagOverflow
except resume.TagOverflow:
raise compile.giveup()
- _newboxes = []
- for box in newboxes:
- if box is not None:
- box = self.get_box_replacement(box)
- _newboxes.append(box)
- descr.store_final_boxes(op, _newboxes, self.metainterp_sd)
+ descr.store_final_boxes(op, newboxes, self.metainterp_sd)
#
if op.getopnum() == rop.GUARD_VALUE:
if op.getarg(0).type == 'i':
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -223,10 +223,10 @@
is_virtual = False
if box.type == 'r':
info = optimizer.getptrinfo(box)
- is_virtual = (info and info.is_virtual())
+ is_virtual = (info is not None and info.is_virtual())
if box.type == 'i':
info = optimizer.getrawptrinfo(box, create=False)
- is_virtual = (info and info.is_virtual())
+ is_virtual = (info is not None and info.is_virtual())
if is_virtual:
tagged = tag(v, TAGVIRTUAL)
v += 1
@@ -286,7 +286,8 @@
class ResumeDataVirtualAdder(VirtualVisitor):
- def __init__(self, storage, snapshot_storage, memo):
+ def __init__(self, optimizer, storage, snapshot_storage, memo):
+ self.optimizer = optimizer
self.storage = storage
self.snapshot_storage = snapshot_storage
self.memo = memo
@@ -343,9 +344,14 @@
else:
return VStrSliceInfo()
- def register_virtual_fields(self, virtualbox, fieldboxes):
+ def register_virtual_fields(self, virtualbox, _fieldboxes):
tagged = self.liveboxes_from_env.get(virtualbox, UNASSIGNEDVIRTUAL)
self.liveboxes[virtualbox] = tagged
+ fieldboxes = []
+ for box in _fieldboxes:
+ if box is not None:
+ box = self.optimizer.get_box_replacement(box)
+ fieldboxes.append(box)
self.vfieldboxes[virtualbox] = fieldboxes
self._register_boxes(fieldboxes)
More information about the pypy-commit
mailing list