Author: Armin Rigo <[email protected]>
Branch: optresult-unroll
Changeset: r79477:2db9160f97b7
Date: 2015-09-06 14:19 +0200
http://bitbucket.org/pypy/pypy/changeset/2db9160f97b7/
Log: in-progress
diff --git a/rpython/jit/backend/arm/helper/assembler.py
b/rpython/jit/backend/arm/helper/assembler.py
--- a/rpython/jit/backend/arm/helper/assembler.py
+++ b/rpython/jit/backend/arm/helper/assembler.py
@@ -2,7 +2,7 @@
from rpython.jit.backend.arm import conditions as c
from rpython.jit.backend.arm import registers as r
from rpython.jit.backend.arm.codebuilder import InstrBuilder
-from rpython.jit.metainterp.history import ConstInt, BoxInt, FLOAT
+from rpython.jit.metainterp.history import FLOAT
from rpython.rlib.rarithmetic import r_uint, r_longlong, intmask
from rpython.jit.metainterp.resoperation import rop
diff --git a/rpython/jit/backend/arm/helper/regalloc.py
b/rpython/jit/backend/arm/helper/regalloc.py
--- a/rpython/jit/backend/arm/helper/regalloc.py
+++ b/rpython/jit/backend/arm/helper/regalloc.py
@@ -1,14 +1,13 @@
from rpython.jit.backend.arm import conditions as c
from rpython.jit.backend.arm import registers as r
-from rpython.jit.metainterp.history import ConstInt, BoxInt, Box, FLOAT
-from rpython.jit.metainterp.history import ConstInt
+from rpython.jit.metainterp.history import Const, FLOAT
from rpython.rlib.objectmodel import we_are_translated
VMEM_imm_size=0x3FC
default_imm_size=0xFF
def check_imm_arg(arg, size=default_imm_size, allow_zero=True):
- assert not isinstance(arg, ConstInt)
+ assert not isinstance(arg, Const)
if not we_are_translated():
if not isinstance(arg, int):
import pdb; pdb.set_trace()
@@ -20,7 +19,7 @@
return i <= size and lower_bound
def check_imm_box(arg, size=0xFF, allow_zero=True):
- if isinstance(arg, ConstInt):
+ if isinstance(arg, Const):
return check_imm_arg(arg.getint(), size, allow_zero)
return False
@@ -96,7 +95,7 @@
arg2 = self.rm.make_sure_var_in_reg(a1, selected_reg=r.r1)
assert arg1 == r.r0
assert arg2 == r.r1
- if isinstance(a0, Box) and self.stays_alive(a0):
+ if not isinstance(a0, Const) and self.stays_alive(a0):
self.force_spill_var(a0)
self.possibly_free_vars_for_op(op)
self.free_temp_vars()
@@ -135,7 +134,6 @@
def f(self, op, guard_op, fcond):
assert fcond is not None
a0 = op.getarg(0)
- assert isinstance(a0, Box)
reg = self.make_sure_var_in_reg(a0)
self.possibly_free_vars_for_op(op)
if guard_op is None:
diff --git a/rpython/jit/backend/arm/regalloc.py
b/rpython/jit/backend/arm/regalloc.py
--- a/rpython/jit/backend/arm/regalloc.py
+++ b/rpython/jit/backend/arm/regalloc.py
@@ -2,7 +2,7 @@
from rpython.rlib import rgc
from rpython.rlib.debug import debug_print, debug_start, debug_stop
from rpython.jit.backend.llsupport.regalloc import FrameManager, \
- RegisterManager, TempBox, compute_vars_longevity, BaseRegalloc, \
+ RegisterManager, TempVar, compute_vars_longevity, BaseRegalloc, \
get_scale
from rpython.jit.backend.arm import registers as r
from rpython.jit.backend.arm import locations
@@ -43,21 +43,21 @@
# that it is a LABEL that was not compiled yet.
TargetToken._ll_loop_code = 0
-class TempInt(TempBox):
+class TempInt(TempVar):
type = INT
def __repr__(self):
return "<TempInt at %s>" % (id(self),)
-class TempPtr(TempBox):
+class TempPtr(TempVar):
type = REF
def __repr__(self):
return "<TempPtr at %s>" % (id(self),)
-class TempFloat(TempBox):
+class TempFloat(TempVar):
type = FLOAT
def __repr__(self):
@@ -725,7 +725,7 @@
prepare_op_guard_nonnull_class = prepare_op_guard_class
def _prepare_guard_class(self, op, fcond):
- assert isinstance(op.getarg(0), Box)
+ assert not isinstance(op.getarg(0), Const)
boxes = op.getarglist()
x = self.make_sure_var_in_reg(boxes[0], boxes)
@@ -1100,7 +1100,7 @@
def prepare_op_call_malloc_nursery_varsize_frame(self, op, fcond):
size_box = op.getarg(0)
- assert isinstance(size_box, BoxInt) # we cannot have a const here!
+ assert not isinstance(size_box, ConstInt) # we cannot have a const
here!
# sizeloc must be in a register, but we can free it now
# (we take care explicitly of conflicts with r0 or r1)
sizeloc = self.rm.make_sure_var_in_reg(size_box)
@@ -1134,7 +1134,7 @@
# the result will be in r0
self.rm.force_allocate_reg(op.result, selected_reg=r.r0)
# we need r1 as a temporary
- tmp_box = TempBox()
+ tmp_box = TempVar()
self.rm.force_allocate_reg(tmp_box, selected_reg=r.r1)
gcmap = self.get_gcmap([r.r0, r.r1]) # allocate the gcmap *before*
self.rm.possibly_free_var(tmp_box)
diff --git a/rpython/jit/backend/arm/test/test_runner.py
b/rpython/jit/backend/arm/test/test_runner.py
--- a/rpython/jit/backend/arm/test/test_runner.py
+++ b/rpython/jit/backend/arm/test/test_runner.py
@@ -2,9 +2,9 @@
from rpython.jit.backend.detect_cpu import getcpuclass
from rpython.jit.backend.test.runner_test import LLtypeBackendTest,\
boxfloat, constfloat
-from rpython.jit.metainterp.history import (BasicFailDescr, BasicFinalDescr,
- BoxInt)
-from rpython.jit.metainterp.resoperation import ResOperation, rop
+from rpython.jit.metainterp.history import BasicFailDescr, BasicFinalDescr
+from rpython.jit.metainterp.resoperation import (ResOperation, rop,
+ InputArgInt)
from rpython.jit.tool.oparser import parse
from rpython.rtyper.lltypesystem import lltype, llmemory
from rpython.rtyper import rclass
@@ -52,30 +52,29 @@
def test_result_is_spilled(self):
cpu = self.cpu
- inp = [BoxInt(i) for i in range(1, 15)]
- out = [BoxInt(i) for i in range(1, 15)]
+ inp = [InputArgInt(i) for i in range(1, 15)]
looptoken = JitCellToken()
targettoken = TargetToken()
operations = [
ResOperation(rop.LABEL, inp, None, descr=targettoken),
- ResOperation(rop.INT_ADD, [inp[0], inp[1]], out[0]),
- ResOperation(rop.INT_ADD, [inp[2], inp[3]], out[1]),
- ResOperation(rop.INT_ADD, [inp[4], inp[5]], out[2]),
- ResOperation(rop.INT_ADD, [inp[6], inp[7]], out[3]),
- ResOperation(rop.INT_ADD, [inp[8], inp[9]], out[4]),
- ResOperation(rop.INT_ADD, [inp[10], inp[11]], out[5]),
- ResOperation(rop.INT_ADD, [inp[12], inp[13]], out[6]),
- ResOperation(rop.INT_ADD, [inp[0], inp[1]], out[7]),
- ResOperation(rop.INT_ADD, [inp[2], inp[3]], out[8]),
- ResOperation(rop.INT_ADD, [inp[4], inp[5]], out[9]),
- ResOperation(rop.INT_ADD, [inp[6], inp[7]], out[10]),
- ResOperation(rop.INT_ADD, [inp[8], inp[9]], out[11]),
- ResOperation(rop.INT_ADD, [inp[10], inp[11]], out[12]),
- ResOperation(rop.INT_ADD, [inp[12], inp[13]], out[13]),
- ResOperation(rop.GUARD_FALSE, [inp[1]], None,
descr=BasicFailDescr(1)),
- ResOperation(rop.FINISH, [inp[1]], None, descr=BasicFinalDescr(1)),
+ ResOperation(rop.INT_ADD, [inp[0], inp[1]]),
+ ResOperation(rop.INT_ADD, [inp[2], inp[3]]),
+ ResOperation(rop.INT_ADD, [inp[4], inp[5]]),
+ ResOperation(rop.INT_ADD, [inp[6], inp[7]]),
+ ResOperation(rop.INT_ADD, [inp[8], inp[9]]),
+ ResOperation(rop.INT_ADD, [inp[10], inp[11]]),
+ ResOperation(rop.INT_ADD, [inp[12], inp[13]]),
+ ResOperation(rop.INT_ADD, [inp[0], inp[1]]),
+ ResOperation(rop.INT_ADD, [inp[2], inp[3]]),
+ ResOperation(rop.INT_ADD, [inp[4], inp[5]]),
+ ResOperation(rop.INT_ADD, [inp[6], inp[7]]),
+ ResOperation(rop.INT_ADD, [inp[8], inp[9]]),
+ ResOperation(rop.INT_ADD, [inp[10], inp[11]]),
+ ResOperation(rop.INT_ADD, [inp[12], inp[13]]),
+ ResOperation(rop.GUARD_FALSE, [inp[1]], descr=BasicFailDescr(1)),
+ ResOperation(rop.FINISH, [inp[1]], descr=BasicFinalDescr(1)),
]
- operations[-2].setfailargs(out)
+ operations[-2].setfailargs(operations[1:15])
cpu.compile_loop(inp, operations, looptoken)
args = [i for i in range(1, 15)]
deadframe = self.cpu.execute_token(looptoken, *args)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit