[pypy-commit] pypy default: fix wrong import

2012-12-30 Thread bivab
Author: David Schneider 
Branch: 
Changeset: r59627:88b1caf1a529
Date: 2012-12-30 13:39 +0100
http://bitbucket.org/pypy/pypy/changeset/88b1caf1a529/

Log:fix wrong import

diff --git a/pypy/jit/backend/arm/test/test_gc_integration.py 
b/pypy/jit/backend/arm/test/test_gc_integration.py
--- a/pypy/jit/backend/arm/test/test_gc_integration.py
+++ b/pypy/jit/backend/arm/test/test_gc_integration.py
@@ -20,7 +20,7 @@
 from pypy.jit.backend.arm.test.test_regalloc import BaseTestRegalloc
 from pypy.jit.backend.arm.regalloc import ARMFrameManager, VFPRegisterManager
 from pypy.jit.codewriter.effectinfo import EffectInfo
-from pypy.jit.backend.arm.regalloc import Regalloc, ARMv7RegisterManager
+from pypy.jit.backend.arm.regalloc import Regalloc
 
 CPU = getcpuclass()
 
___
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy jit-usable_retrace_3: allow (discarded) null valued fields to be genralized

2012-12-30 Thread hakanardo
Author: Hakan Ardo 
Branch: jit-usable_retrace_3
Changeset: r59629:40db680deaef
Date: 2012-12-30 12:39 +0100
http://bitbucket.org/pypy/pypy/changeset/40db680deaef/

Log:allow (discarded) null valued fields to be genralized

diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py 
b/pypy/jit/metainterp/optimizeopt/virtualstate.py
--- a/pypy/jit/metainterp/optimizeopt/virtualstate.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py
@@ -30,6 +30,9 @@
 def make_guardable_generalization_of(self, other, value, optimizer):
 pass
 
+def make_guardable_generalization_of_null(self, value, optimizer):
+pass
+
 def generate_guards(self, other, box, cpu, extra_guards, renum):
 if self.generalization_of(other, renum, {}):
 return
@@ -44,7 +47,7 @@
 raise InvalidLoop('Generating guards for making the VirtualStates ' +
   'at hand match have not been implemented')
 
-def enum_forced_boxes(self, boxes, value, optimizer):
+def enum_forced_boxes(self, boxes, value, optimizer, doforce):
 raise NotImplementedError
 
 def enum(self, virtual_state):
@@ -132,16 +135,40 @@
 assert len(self.fielddescrs) == len(self.fieldstate)
 assert len(other.fielddescrs) == len(other.fieldstate)
 assert isinstance(value, virtualize.AbstractVirtualStructValue)
-if len(self.fielddescrs) != len(other.fielddescrs):
-raise InvalidLoop('Cant combine virtuals with different numbers of 
fields.')
-for i in range(len(self.fielddescrs)):
-if other.fielddescrs[i] is not self.fielddescrs[i]:
-raise InvalidLoop('Cant combine virtuals with different 
fields.')
-new_field_value = 
self.fieldstate[i].make_guardable_generalization_of(other.fieldstate[i],
-
value.getfield(self.fielddescrs[i], None),
-
optimizer)
+
+i = j = 0
+while i < len(self.fielddescrs) and j < len(other.fielddescrs):
+if other.fielddescrs[j] is self.fielddescrs[i]:
+new_field_value = 
self.fieldstate[i].make_guardable_generalization_of(other.fieldstate[j],
+   
value.getfield(self.fielddescrs[i], None), optimizer)
+if new_field_value:
+value.setfield(self.fielddescrs[i], new_field_value)
+i += 1
+j += 1
+elif self.fielddescrs[i].sort_key() < 
other.fielddescrs[j].sort_key():
+new_field_value = 
self.fieldstate[i].make_guardable_generalization_of_null(
+   
value.getfield(self.fielddescrs[i], None), optimizer)
+if new_field_value:
+value.setfield(self.fielddescrs[i], new_field_value)
+i += 1
+else:
+new_field_value = 
other.fieldstate[j].make_guardable_generalization_of_null(
+   
value.getfield(other.fielddescrs[j], None), optimizer)
+if new_field_value:
+value.setfield(other.fielddescrs[j], new_field_value)
+j += 1
+while i < len(self.fielddescrs):
+new_field_value = 
self.fieldstate[i].make_guardable_generalization_of_null(
+   
value.getfield(self.fielddescrs[i], None), optimizer)
 if new_field_value:
 value.setfield(self.fielddescrs[i], new_field_value)
+i += 1
+while j < len(other.fielddescrs):
+new_field_value = 
other.fieldstate[j].make_guardable_generalization_of_null(
+   
value.getfield(other.fielddescrs[j], None), optimizer)
+if new_field_value:
+value.setfield(other.fielddescrs[j], new_field_value)
+j += 1
 
 def kill_null_fields(self):
 assert len(self.fielddescrs) == len(self.fieldstate)
@@ -153,19 +180,18 @@
 def _generalization_of(self, other):
 raise NotImplementedError
 
-def enum_forced_boxes(self, boxes, value, optimizer):
+def enum_forced_boxes(self, boxes, value, optimizer, doforce):
 if not isinstance(value, virtualize.AbstractVirtualStructValue):
 raise BadVirtualState
 if not value.is_virtual():
 raise BadVirtualState
 for i in range(len(self.fielddescrs)):
-try:
-v = value._fields[self.fielddescrs[i]]
-except KeyError:
-raise BadVirtualState
+v = value.getfield(self.fielddescrs[i], None)
+if v is None:
+v = optimizer.new_const(self.fielddescrs[i])
 s = self.fieldstate[i]
 if s.position > self.po

[pypy-commit] pypy jit-usable_retrace_3: this case is better optimized now

2012-12-30 Thread hakanardo
Author: Hakan Ardo 
Branch: jit-usable_retrace_3
Changeset: r59630:323b6a4e4039
Date: 2012-12-30 15:27 +0100
http://bitbucket.org/pypy/pypy/changeset/323b6a4e4039/

Log:this case is better optimized now

diff --git a/pypy/jit/metainterp/test/test_virtual.py 
b/pypy/jit/metainterp/test/test_virtual.py
--- a/pypy/jit/metainterp/test/test_virtual.py
+++ b/pypy/jit/metainterp/test/test_virtual.py
@@ -902,7 +902,7 @@
 assert res == f(10)
 self.check_aborted_count(0)
 self.check_target_token_count(3)
-self.check_resops(int_mul=2)
+self.check_resops(int_mul=3, new_with_vtable=0)
 
 def test_nested_loops_bridge(self):
 class Int(object):
___
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy jit-usable_retrace_3: fix?

2012-12-30 Thread hakanardo
Author: Hakan Ardo 
Branch: jit-usable_retrace_3
Changeset: r59631:646719fca9fc
Date: 2012-12-30 15:59 +0100
http://bitbucket.org/pypy/pypy/changeset/646719fca9fc/

Log:fix?

diff --git a/pypy/jit/metainterp/test/support.py 
b/pypy/jit/metainterp/test/support.py
--- a/pypy/jit/metainterp/test/support.py
+++ b/pypy/jit/metainterp/test/support.py
@@ -180,7 +180,8 @@
 
 def check_target_token_count(self, count):
 tokens = get_stats().get_all_jitcell_tokens()
-n = sum ([len(t.target_tokens) for t in tokens])
+n = sum ([len(t.target_tokens) for t in tokens if t.target_tokens is 
not None])
+# XXX: is target_tokens == None a good idea?
 assert n == count
 
 def check_enter_count(self, count):
diff --git a/pypy/jit/metainterp/test/test_virtual.py 
b/pypy/jit/metainterp/test/test_virtual.py
--- a/pypy/jit/metainterp/test/test_virtual.py
+++ b/pypy/jit/metainterp/test/test_virtual.py
@@ -909,6 +909,7 @@
 def __init__(self, val):
 self.val = val
 myjitdriver = JitDriver(greens = ['pc'], reds = ['n', 'sa', 'i', 'j'])
+#   0123456
 bytecode = "iajb+JI"
 def f(n):
 pc = sa = 0
___
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy jit-usable_retrace_3: rpythonized

2012-12-30 Thread hakanardo
Author: Hakan Ardo 
Branch: jit-usable_retrace_3
Changeset: r59632:c10f50bbce17
Date: 2012-12-30 16:32 +0100
http://bitbucket.org/pypy/pypy/changeset/c10f50bbce17/

Log:rpythonized

diff --git a/pypy/jit/metainterp/compile.py b/pypy/jit/metainterp/compile.py
--- a/pypy/jit/metainterp/compile.py
+++ b/pypy/jit/metainterp/compile.py
@@ -217,7 +217,9 @@
 assert label.getopnum() == rop.LABEL
 target_token = label.getdescr()
 assert isinstance(target_token, TargetToken)
-target_token.exported_state.generalize_virtual_state = 
original_target_token.virtual_state
+exported_state = target_token.exported_state
+assert exported_state is not None
+exported_state.generalize_virtual_state = 
original_target_token.virtual_state
 
 loop.inputargs = inputargs[:]
 loop.resume_at_jump_descr = resume_at_jump_descr
@@ -238,8 +240,10 @@
 if target_token.short_preamble:
 metainterp_sd.logger_ops.log_short_preamble([], 
target_token.short_preamble)
 
+exported_state = original_target_token.exported_state
+assert exported_state is not None
 preamble.operations = [orignial_label] + \
-  [ResOperation(rop.JUMP, 
original_target_token.exported_state.jump_args,
+  [ResOperation(rop.JUMP, exported_state.jump_args,
 None, descr=loop_jitcell_token)]
 try:
 optimize_trace(metainterp_sd, preamble, 
jitdriver_sd.warmstate.enable_opts)
@@ -254,7 +258,9 @@
 if jumpop.getdescr() is not loop.operations[0].getdescr():
 assert loop_jitcell_token.target_tokens.pop() is 
loop.operations[0].getdescr()
 raise InvalidLoop
-preamble.operations = preamble.operations[1:-1]
+stop = len(preamble.operations) - 1
+assert stop >= 1 # There should always be atleast one label and one 
jump
+preamble.operations = preamble.operations[1:stop]
 
 usedboxes = {}
 newargs = [None] * jumpop.numargs()
diff --git a/pypy/jit/metainterp/optimizeopt/virtualstate.py 
b/pypy/jit/metainterp/optimizeopt/virtualstate.py
--- a/pypy/jit/metainterp/optimizeopt/virtualstate.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualstate.py
@@ -172,7 +172,9 @@
 
 def kill_null_fields(self):
 assert len(self.fielddescrs) == len(self.fieldstate)
-for i in reversed(range(len(self.fielddescrs))):
+i = len(self.fielddescrs)
+while i > 0:
+i -= 1
 if self.fieldstate[i].is_null():
 del self.fieldstate[i]
 del self.fielddescrs[i]
___
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] benchmarks default: add scimark benchmark

2012-12-30 Thread hakanardo
Author: Hakan Ardo 
Branch: 
Changeset: r192:04c696b62ec7
Date: 2012-12-30 18:49 +0100
http://bitbucket.org/pypy/benchmarks/changeset/04c696b62ec7/

Log:add scimark benchmark

diff --git a/benchmarks.py b/benchmarks.py
--- a/benchmarks.py
+++ b/benchmarks.py
@@ -185,3 +185,22 @@
 return RawResult([t[0]], [t[1]])
 
 BM_cpython_doc.benchmark_name = 'sphinx'
+
+_register_new_bm('scimark', 'scimark_SOR_small', globals(), 
+ extra_args=['--benchmark=SOR', '100', '3276', 'Array2D'])
+_register_new_bm('scimark', 'scimark_SOR_large', globals(), 
+ extra_args=['--benchmark=SOR', '1000', '25', 'Array2D'])
+_register_new_bm('scimark', 'scimark_SparseMatMult_small', globals(), 
+ extra_args=['--benchmark=SparseMatMult', '1000', '5', 
'26214'])
+_register_new_bm('scimark', 'scimark_SparseMatMult_large', globals(), 
+ extra_args=['--benchmark=SparseMatMult', '10', '100', 
'102'])
+_register_new_bm('scimark', 'scimark_MonteCarlo', globals(), 
+ extra_args=['--benchmark=MonteCarlo', '26843545'])
+_register_new_bm('scimark', 'scimark_LU_small', globals(), 
+ extra_args=['--benchmark=LU', '100', '409'])
+_register_new_bm('scimark', 'scimark_LU_large', globals(), 
+ extra_args=['--benchmark=LU', '1000', '1'])
+_register_new_bm('scimark', 'scimark_FFT_small', globals(), 
+ extra_args=['--benchmark=FFT', '1024', '3276'])
+_register_new_bm('scimark', 'scimark_FFT_large', globals(), 
+ extra_args=['--benchmark=FFT', '1048576', '1'])
diff --git a/own/scimark.py b/own/scimark.py
new file mode 100644
--- /dev/null
+++ b/own/scimark.py
@@ -0,0 +1,353 @@
+from array import array
+import math
+
+class Array2D(object):
+def __init__(self, w, h, data=None):
+self.width = w
+self.height = h
+self.data = array('d', [0]) * (w*h)
+if data is not None:
+self.setup(data)
+
+def _idx(self, x, y):
+if 0 <= x < self.width and 0 <= y < self.height:
+return y*self.width + x
+raise IndexError
+
+def __getitem__(self, (x, y)):
+return self.data[self._idx(x, y)]
+
+def __setitem__(self, (x, y), val):
+self.data[self._idx(x, y)] = val
+
+def __cmp__(self, other):
+return cmp(self.data, other.data)
+
+def setup(self, data):
+for y in xrange(self.height):
+for x in xrange(self.width):
+self[x, y] = data[y][x]
+return self
+
+def indexes(self):
+for y in xrange(self.height):
+for x in xrange(self.width):
+yield x, y
+
+def copy_data_from(self, other):
+self.data[:] = other.data[:]
+
+class Random(object):
+MDIG = 32
+ONE = 1
+m1 = (ONE << (MDIG-2)) + ((ONE << (MDIG-2) )-ONE)
+m2 = ONE << MDIG/2
+dm1  = 1.0 / float(m1);
+
+def __init__(self, seed):
+self.initialize(seed)
+self.left = 0.0
+self.right = 1.0
+self.width = 1.0
+self.haveRange = False
+
+def initialize(self, seed):
+
+self.seed = seed
+seed = abs(seed)
+jseed = min(seed, self.m1)
+if (jseed % 2 == 0):
+jseed -= 1
+k0 = 9069 % self.m2;
+k1 = 9069 / self.m2;
+j0 = jseed % self.m2;
+j1 = jseed / self.m2;
+self.m = array('d', [0]) * 17 
+for iloop in xrange(17):
+jseed = j0 * k0;
+j1 = (jseed / self.m2 + j0 * k1 + j1 * k0) % (self.m2 / 2);
+j0 = jseed % self.m2;
+self.m[iloop] = j0 + self.m2 * j1;
+self.i = 4;
+self.j = 16;
+
+def nextDouble(self):
+I, J, m = self.i, self.j, self.m
+k = m[I] - m[J];
+if (k < 0):
+k += self.m1;
+self.m[J] = k;
+
+if (I == 0):
+I = 16;
+else:
+I -= 1;
+self.i = I;
+
+if (J == 0):
+J = 16;
+else:
+J -= 1;
+self.j = J;
+
+if (self.haveRange):
+return  self.left +  self.dm1 * float(k) * self.width;
+else:
+return self.dm1 * float(k);
+
+def RandomMatrix(self, a):
+for x, y in a.indexes():
+a[x, y] = self.nextDouble()
+return a
+
+def RandomVector(self, n):
+return array('d', [self.nextDouble() for i in xrange(n)])
+
+
+class ArrayList(Array2D):
+def __init__(self, w, h, data=None):
+self.width = w
+self.height = h
+self.data = [array('d', [0]) * w for y in xrange(h)]
+if data is not None:
+self.setup(data)
+
+def __getitem__(self, idx):
+if isinstance(idx, tuple):
+return self.data[idx[1]][idx[0]]
+else:
+return self.data[idx]
+
+def __setitem__(self, idx, val):
+if isinstance(idx, tuple):
+self.data[idx[1]][idx[0]] = val
+

[pypy-commit] benchmarks default: skip the large flavour

2012-12-30 Thread hakanardo
Author: Hakan Ardo 
Branch: 
Changeset: r193:e1bb4421b855
Date: 2012-12-30 18:51 +0100
http://bitbucket.org/pypy/benchmarks/changeset/e1bb4421b855/

Log:skip the large flavour

diff --git a/benchmarks.py b/benchmarks.py
--- a/benchmarks.py
+++ b/benchmarks.py
@@ -186,21 +186,21 @@
 
 BM_cpython_doc.benchmark_name = 'sphinx'
 
-_register_new_bm('scimark', 'scimark_SOR_small', globals(), 
+_register_new_bm('scimark', 'scimark_SOR', globals(), 
  extra_args=['--benchmark=SOR', '100', '3276', 'Array2D'])
-_register_new_bm('scimark', 'scimark_SOR_large', globals(), 
- extra_args=['--benchmark=SOR', '1000', '25', 'Array2D'])
-_register_new_bm('scimark', 'scimark_SparseMatMult_small', globals(), 
+#_register_new_bm('scimark', 'scimark_SOR_large', globals(), 
+# extra_args=['--benchmark=SOR', '1000', '25', 'Array2D'])
+_register_new_bm('scimark', 'scimark_SparseMatMult', globals(), 
  extra_args=['--benchmark=SparseMatMult', '1000', '5', 
'26214'])
-_register_new_bm('scimark', 'scimark_SparseMatMult_large', globals(), 
- extra_args=['--benchmark=SparseMatMult', '10', '100', 
'102'])
+#_register_new_bm('scimark', 'scimark_SparseMatMult_large', globals(), 
+# extra_args=['--benchmark=SparseMatMult', '10', 
'100', '102'])
 _register_new_bm('scimark', 'scimark_MonteCarlo', globals(), 
  extra_args=['--benchmark=MonteCarlo', '26843545'])
-_register_new_bm('scimark', 'scimark_LU_small', globals(), 
+_register_new_bm('scimark', 'scimark_LU', globals(), 
  extra_args=['--benchmark=LU', '100', '409'])
-_register_new_bm('scimark', 'scimark_LU_large', globals(), 
- extra_args=['--benchmark=LU', '1000', '1'])
-_register_new_bm('scimark', 'scimark_FFT_small', globals(), 
+#_register_new_bm('scimark', 'scimark_LU_large', globals(), 
+# extra_args=['--benchmark=LU', '1000', '1'])
+_register_new_bm('scimark', 'scimark_FFT', globals(), 
  extra_args=['--benchmark=FFT', '1024', '3276'])
-_register_new_bm('scimark', 'scimark_FFT_large', globals(), 
- extra_args=['--benchmark=FFT', '1048576', '1'])
+#_register_new_bm('scimark', 'scimark_FFT_large', globals(), 
+# extra_args=['--benchmark=FFT', '1048576', '1'])
___
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit