[pypy-commit] pypy optresult: various random rpython fixes
fijal
noreply at buildbot.pypy.org
Wed Jun 3 09:17:19 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult
Changeset: r77800:402518a1edbf
Date: 2015-06-02 19:17 +0200
http://bitbucket.org/pypy/pypy/changeset/402518a1edbf/
Log: various random rpython fixes
diff --git a/rpython/jit/metainterp/executor.py b/rpython/jit/metainterp/executor.py
--- a/rpython/jit/metainterp/executor.py
+++ b/rpython/jit/metainterp/executor.py
@@ -495,34 +495,44 @@
check_descr(descr)
if arity == -1:
func = get_execute_function(opnum, -1, True)
- return func(cpu, metainterp, argboxes, descr)
+ if func:
+ return func(cpu, metainterp, argboxes, descr)
if arity == 0:
func = get_execute_function(opnum, 0, True)
- return func(cpu, metainterp, descr)
+ if func:
+ return func(cpu, metainterp, descr)
if arity == 1:
func = get_execute_function(opnum, 1, True)
- return func(cpu, metainterp, argboxes[0], descr)
+ if func:
+ return func(cpu, metainterp, argboxes[0], descr)
if arity == 2:
func = get_execute_function(opnum, 2, True)
- return func(cpu, metainterp, argboxes[0], argboxes[1], descr)
+ if func:
+ return func(cpu, metainterp, argboxes[0], argboxes[1], descr)
if arity == 3:
func = get_execute_function(opnum, 3, True)
- return func(cpu, metainterp, argboxes[0], argboxes[1], argboxes[2],
- descr)
+ if func:
+ return func(cpu, metainterp, argboxes[0], argboxes[1],
+ argboxes[2], descr)
else:
assert descr is None
if arity == 1:
func = get_execute_function(opnum, 1, False)
- return func(cpu, metainterp, argboxes[0])
+ if func:
+ return func(cpu, metainterp, argboxes[0])
if arity == 2:
func = get_execute_function(opnum, 2, False)
- return func(cpu, metainterp, argboxes[0], argboxes[1])
+ if func:
+ return func(cpu, metainterp, argboxes[0], argboxes[1])
if arity == 3:
func = get_execute_function(opnum, 3, False)
- return func(cpu, metainterp, argboxes[0], argboxes[1], argboxes[2])
+ if func:
+ return func(cpu, metainterp, argboxes[0], argboxes[1],
+ argboxes[2])
if arity == 5: # copystrcontent, copyunicodecontent
func = get_execute_function(opnum, 5, False)
- return func(cpu, metainterp, argboxes[0], argboxes[1],
+ if func:
+ return func(cpu, metainterp, argboxes[0], argboxes[1],
argboxes[2], argboxes[3], argboxes[4])
raise NotImplementedError
diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -168,7 +168,7 @@
return ConstPtr(lltype.nullptr(llmemory.GCREF.TO))
elif lltype.typeOf(value) == lltype.Signed:
return ConstInt(value)
- elif type(value) is bool:
+ elif not we_are_translated() and type(value) is bool:
return ConstInt(int(value))
elif isinstance(value, float):
return ConstFloat(value)
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
@@ -41,7 +41,7 @@
def same_info(self, other):
return self is other
- def getstrlen(self, arg, opt, mode, create_ops=True):
+ def getstrlen(self, op, string_optimizer, mode, create_ops=True):
return None
@@ -218,12 +218,12 @@
count += 1
return count
- def setitem(self, index, item, cf=None, optheap=None):
+ def setitem(self, index, op, cf=None, optheap=None):
if self._items is None:
self._items = [None] * (index + 1)
if index >= len(self._items):
self._items = self._items + [None] * (index - len(self._items) + 1)
- self._items[index] = item
+ self._items[index] = op
if cf is not None:
assert not self.is_virtual()
cf.register_dirty_field(self)
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -430,7 +430,7 @@
if b.getint() == 0:
self.last_emitted_operation = REMOVED
return
- opnum = OpHelpers.call_for_type(op)
+ opnum = OpHelpers.call_for_type(op.type)
op = op.copy_and_change(opnum, args=op.getarglist()[1:])
self.emit_operation(op)
diff --git a/rpython/jit/metainterp/optimizeopt/vstring.py b/rpython/jit/metainterp/optimizeopt/vstring.py
--- a/rpython/jit/metainterp/optimizeopt/vstring.py
+++ b/rpython/jit/metainterp/optimizeopt/vstring.py
@@ -71,6 +71,7 @@
self.lenbound = intutils.ConstIntBound(self.length)
return self.lenbound
+ @specialize.arg(2)
def get_constant_string_spec(self, string_optimizer, mode):
return None # can't be constant
@@ -144,8 +145,8 @@
self._chars = [None] * length
StrPtrInfo.__init__(self, mode, is_virtual, length)
- def setitem(self, index, item, cf=None, optheap=None):
- self._chars[index] = item
+ def setitem(self, index, op, cf=None, optheap=None):
+ self._chars[index] = op
def setup_slice(self, longerlist, start, stop):
assert 0 <= start <= stop <= len(longerlist)
diff --git a/rpython/jit/metainterp/quasiimmut.py b/rpython/jit/metainterp/quasiimmut.py
--- a/rpython/jit/metainterp/quasiimmut.py
+++ b/rpython/jit/metainterp/quasiimmut.py
@@ -101,6 +101,11 @@
class QuasiImmutDescr(AbstractDescr):
+ # those fields are necessary for translation without quasi immutable
+ # fields
+ struct = None
+ fielddescr = None
+
def __init__(self, cpu, struct, fielddescr, mutatefielddescr):
self.cpu = cpu
self.struct = struct
@@ -110,7 +115,8 @@
self.constantfieldbox = self.get_current_constant_fieldvalue()
def get_parent_descr(self):
- return self.fielddescr.get_parent_descr()
+ if self.fielddescr is not None:
+ return self.fielddescr.get_parent_descr()
def get_current_constant_fieldvalue(self):
struct = self.struct
More information about the pypy-commit
mailing list