[pypy-svn] pypy numpy-exp: Add jit driver
fijal
commits-noreply at bitbucket.org
Wed Feb 9 20:07:18 CET 2011
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: numpy-exp
Changeset: r41762:0a7324b724b5
Date: 2011-02-09 21:06 +0200
http://bitbucket.org/pypy/pypy/changeset/0a7324b724b5/
Log: Add jit driver
diff --git a/pypy/jit/tl/pypyjit.py b/pypy/jit/tl/pypyjit.py
--- a/pypy/jit/tl/pypyjit.py
+++ b/pypy/jit/tl/pypyjit.py
@@ -41,6 +41,7 @@
config.objspace.usemodules._sre = False
#
config.objspace.usemodules._ffi = True
+config.objspace.usemodules.micronumpy = True
#
set_pypy_opt_level(config, level='jit')
diff --git a/pypy/module/micronumpy/numarray.py b/pypy/module/micronumpy/numarray.py
--- a/pypy/module/micronumpy/numarray.py
+++ b/pypy/module/micronumpy/numarray.py
@@ -4,9 +4,15 @@
from pypy.interpreter.typedef import TypeDef
from pypy.interpreter.gateway import interp2app, NoneNotWrapped
from pypy.rpython.lltypesystem import lltype
+from pypy.rlib import jit
TP = lltype.GcArray(lltype.Float)
+numpy_driver = jit.JitDriver(greens = ['bytecode'],
+ reds = ['result', 'result_size', 'i',
+ 'valuestack', 'valuestackdepth',
+ 'input', 'input_pos'])
+
def compute(bytecode, input):
result_size = input[0].size
result = SingleDimArray(result_size)
@@ -16,7 +22,11 @@
valuestackdepth = 0
i = 0
while i < result_size:
- # merge point
+ numpy_driver.jit_merge_point(bytecode=bytecode, result=result,
+ result_size=result_size,
+ valuestackdepth=valuestackdepth,
+ valuestack=valuestack,
+ input=input, input_pos=input_pos, i=i)
if bytecode_pos == -1:
bytecode_pos = len(bytecode) - 1
input_pos = len(input) - 1
@@ -24,7 +34,11 @@
valuestack = [0.0] * len(input)
valuestackdepth = 0
i += 1
- # can_enter_jit
+ numpy_driver.can_enter_jit(bytecode=bytecode, result=result,
+ result_size=result_size,
+ valuestackdepth=valuestackdepth,
+ valuestack=valuestack,
+ input=input, input_pos=input_pos, i=i)
else:
opcode = bytecode[bytecode_pos]
if opcode == 'l':
diff --git a/pypy/rlib/jit.py b/pypy/rlib/jit.py
--- a/pypy/rlib/jit.py
+++ b/pypy/rlib/jit.py
@@ -271,7 +271,7 @@
# ____________________________________________________________
-class JitDriver:
+class JitDriver:
"""Base class to declare fine-grained user control on the JIT. So
far, there must be a singleton instance of JitDriver. This style
will allow us (later) to support a single RPython program with
More information about the Pypy-commit
mailing list