[pypy-svn] r74085 - in pypy/branch/blackhole-improvement/pypy/jit: backend backend/llgraph metainterp
arigo at codespeak.net
arigo at codespeak.net
Mon Apr 26 18:44:23 CEST 2010
Author: arigo
Date: Mon Apr 26 18:44:22 2010
New Revision: 74085
Modified:
pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py
pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py
pypy/branch/blackhole-improvement/pypy/jit/backend/model.py
pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py
Log:
More getfield.
Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/llimpl.py Mon Apr 26 18:44:22 2010
@@ -1229,8 +1229,8 @@
ptr = lltype.cast_opaque_ptr(lltype.Ptr(STRUCT), struct)
return getattr(ptr, fieldname)
-def do_getfield_gc_int(struct, fieldnum, memocast):
- return cast_to_int(_getfield_gc(struct, fieldnum), memocast)
+def do_getfield_gc_int(struct, fieldnum):
+ return cast_to_int(_getfield_gc(struct, fieldnum))
def do_getfield_gc_float(struct, fieldnum):
return cast_to_float(_getfield_gc(struct, fieldnum))
@@ -1238,19 +1238,19 @@
def do_getfield_gc_ptr(struct, fieldnum):
return cast_to_ptr(_getfield_gc(struct, fieldnum))
-def _getfield_raw(struct, fieldnum, memocast):
+def _getfield_raw(struct, fieldnum):
STRUCT, fieldname = symbolic.TokenToField[fieldnum]
- ptr = cast_from_int(lltype.Ptr(STRUCT), struct, memocast)
+ ptr = cast_from_int(lltype.Ptr(STRUCT), struct)
return getattr(ptr, fieldname)
-def do_getfield_raw_int(struct, fieldnum, memocast):
- return cast_to_int(_getfield_raw(struct, fieldnum, memocast), memocast)
+def do_getfield_raw_int(struct, fieldnum):
+ return cast_to_int(_getfield_raw(struct, fieldnum))
-def do_getfield_raw_float(struct, fieldnum, memocast):
- return cast_to_float(_getfield_raw(struct, fieldnum, memocast))
+def do_getfield_raw_float(struct, fieldnum):
+ return cast_to_float(_getfield_raw(struct, fieldnum))
-def do_getfield_raw_ptr(struct, fieldnum, memocast):
- return cast_to_ptr(_getfield_raw(struct, fieldnum, memocast))
+def do_getfield_raw_ptr(struct, fieldnum):
+ return cast_to_ptr(_getfield_raw(struct, fieldnum))
def do_new(size):
TYPE = symbolic.Size2Type[size]
Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py Mon Apr 26 18:44:22 2010
@@ -371,39 +371,63 @@
else:
raise NotImplementedError
- def do_getfield_gc(self, structbox, fielddescr):
+## def do_getfield_gc(self, structbox, fielddescr):
+## assert isinstance(fielddescr, Descr)
+## struct = structbox.getref_base()
+## if fielddescr.typeinfo == REF:
+## return history.BoxPtr(llimpl.do_getfield_gc_ptr(struct,
+## fielddescr.ofs))
+## elif fielddescr.typeinfo == INT:
+## return history.BoxInt(llimpl.do_getfield_gc_int(struct,
+## fielddescr.ofs,
+## self.memo_cast))
+## elif fielddescr.typeinfo == FLOAT:
+## return history.BoxFloat(llimpl.do_getfield_gc_float(struct,
+## fielddescr.ofs))
+## else:
+## raise NotImplementedError
+
+ def bh_getfield_gc_i(self, struct, fielddescr):
assert isinstance(fielddescr, Descr)
- struct = structbox.getref_base()
- if fielddescr.typeinfo == REF:
- return history.BoxPtr(llimpl.do_getfield_gc_ptr(struct,
- fielddescr.ofs))
- elif fielddescr.typeinfo == INT:
- return history.BoxInt(llimpl.do_getfield_gc_int(struct,
- fielddescr.ofs,
- self.memo_cast))
- elif fielddescr.typeinfo == FLOAT:
- return history.BoxFloat(llimpl.do_getfield_gc_float(struct,
- fielddescr.ofs))
- else:
- raise NotImplementedError
+ return llimpl.do_getfield_gc_int(struct, fielddescr.ofs)
+ bh_getfield_gc_c = bh_getfield_gc_i
+ bh_getfield_gc_u = bh_getfield_gc_i
+ def bh_getfield_gc_r(self, struct, fielddescr):
+ assert isinstance(fielddescr, Descr)
+ return llimpl.do_getfield_gc_ptr(struct, fielddescr.ofs)
+ def bh_getfield_gc_f(self, struct, fielddescr):
+ assert isinstance(fielddescr, Descr)
+ return llimpl.do_getfield_gc_float(struct, fielddescr.ofs)
- def do_getfield_raw(self, structbox, fielddescr):
+## def do_getfield_raw(self, structbox, fielddescr):
+## assert isinstance(fielddescr, Descr)
+## struct = self.cast_int_to_adr(structbox.getint())
+## if fielddescr.typeinfo == REF:
+## return history.BoxPtr(llimpl.do_getfield_raw_ptr(struct,
+## fielddescr.ofs,
+## self.memo_cast))
+## elif fielddescr.typeinfo == INT:
+## return history.BoxInt(llimpl.do_getfield_raw_int(struct,
+## fielddescr.ofs,
+## self.memo_cast))
+## elif fielddescr.typeinfo == FLOAT:
+## return history.BoxFloat(llimpl.do_getfield_raw_float(struct,
+## fielddescr.ofs,
+## self.memo_cast))
+## else:
+## raise NotImplementedError
+
+ def bh_getfield_raw_i(self, struct, fielddescr):
assert isinstance(fielddescr, Descr)
- struct = self.cast_int_to_adr(structbox.getint())
- if fielddescr.typeinfo == REF:
- return history.BoxPtr(llimpl.do_getfield_raw_ptr(struct,
- fielddescr.ofs,
- self.memo_cast))
- elif fielddescr.typeinfo == INT:
- return history.BoxInt(llimpl.do_getfield_raw_int(struct,
- fielddescr.ofs,
- self.memo_cast))
- elif fielddescr.typeinfo == FLOAT:
- return history.BoxFloat(llimpl.do_getfield_raw_float(struct,
- fielddescr.ofs,
- self.memo_cast))
- else:
- raise NotImplementedError
+ return llimpl.do_getfield_raw_int(struct, fielddescr.ofs)
+ bh_getfield_raw_c = bh_getfield_raw_i
+ bh_getfield_raw_u = bh_getfield_raw_i
+ def bh_getfield_raw_r(self, struct, fielddescr):
+ assert isinstance(fielddescr, Descr)
+ return llimpl.do_getfield_raw_ptr(struct, fielddescr.ofs)
+ def bh_getfield_raw_f(self, struct, fielddescr):
+ assert isinstance(fielddescr, Descr)
+ return llimpl.do_getfield_raw_float(struct, fielddescr.ofs)
def do_new(self, size):
assert isinstance(size, Descr)
Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/model.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/model.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/model.py Mon Apr 26 18:44:22 2010
@@ -183,10 +183,32 @@
def do_getfield_gc(self, structbox, fielddescr):
raise NotImplementedError
-
+
+ def bh_getfield_gc_i(self, struct, fielddescr):
+ raise NotImplementedError
+ def bh_getfield_gc_c(self, struct, fielddescr):
+ raise NotImplementedError
+ def bh_getfield_gc_u(self, struct, fielddescr):
+ raise NotImplementedError
+ def bh_getfield_gc_r(self, struct, fielddescr):
+ raise NotImplementedError
+ def bh_getfield_gc_f(self, struct, fielddescr):
+ raise NotImplementedError
+
def do_getfield_raw(self, structbox, fielddescr):
raise NotImplementedError
+ def bh_getfield_raw_i(self, struct, fielddescr):
+ raise NotImplementedError
+ def bh_getfield_raw_c(self, struct, fielddescr):
+ raise NotImplementedError
+ def bh_getfield_raw_u(self, struct, fielddescr):
+ raise NotImplementedError
+ def bh_getfield_raw_r(self, struct, fielddescr):
+ raise NotImplementedError
+ def bh_getfield_raw_f(self, struct, fielddescr):
+ raise NotImplementedError
+
def do_new(self, sizedescr):
raise NotImplementedError
@@ -198,7 +220,7 @@
def bh_new_array(self, arraydescr, length):
raise NotImplementedError
-
+
def do_setarrayitem_gc(self, arraybox, indexbox, newvaluebox, arraydescr):
raise NotImplementedError
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py Mon Apr 26 18:44:22 2010
@@ -224,6 +224,10 @@
return a - b
@arguments("i", "i", returns="i")
+ def opimpl_int_mul(self, a, b):
+ return a * b
+
+ @arguments("i", "i", returns="i")
def opimpl_uint_floordiv(self, a, b):
c = llop.uint_floordiv(lltype.Unsigned, r_uint(a), r_uint(b))
return intmask(c)
@@ -351,3 +355,47 @@
@arguments("d", "r", "i", "r")
def opimpl_setarrayitem_gc_r(self, arraydescr, array, index, newvalue):
self.cpu.bh_setarrayitem_gc_r(arraydescr, array, index, newvalue)
+
+ @arguments("r", "d", returns="i")
+ def opimpl_getfield_gc_i(self, struct, fielddescr):
+ return self.cpu.bh_getfield_gc_i(struct, fielddescr)
+ @arguments("r", "d", returns="i")
+ def opimpl_getfield_gc_c(self, struct, fielddescr):
+ return self.cpu.bh_getfield_gc_c(struct, fielddescr)
+ @arguments("r", "d", returns="i")
+ def opimpl_getfield_gc_u(self, struct, fielddescr):
+ return self.cpu.bh_getfield_gc_u(struct, fielddescr)
+ @arguments("r", "d", returns="r")
+ def opimpl_getfield_gc_r(self, struct, fielddescr):
+ return self.cpu.bh_getfield_gc_r(struct, fielddescr)
+ @arguments("r", "d", returns="f")
+ def opimpl_getfield_gc_f(self, struct, fielddescr):
+ return self.cpu.bh_getfield_gc_f(struct, fielddescr)
+
+ opimpl_getfield_gc_i_pure = opimpl_getfield_gc_i
+ opimpl_getfield_gc_c_pure = opimpl_getfield_gc_c
+ opimpl_getfield_gc_u_pure = opimpl_getfield_gc_u
+ opimpl_getfield_gc_r_pure = opimpl_getfield_gc_r
+ opimpl_getfield_gc_f_pure = opimpl_getfield_gc_f
+
+ @arguments("r", "d", returns="i")
+ def opimpl_getfield_raw_i(self, struct, fielddescr):
+ return self.cpu.bh_getfield_raw_i(struct, fielddescr)
+ @arguments("r", "d", returns="i")
+ def opimpl_getfield_raw_c(self, struct, fielddescr):
+ return self.cpu.bh_getfield_raw_c(struct, fielddescr)
+ @arguments("r", "d", returns="i")
+ def opimpl_getfield_raw_u(self, struct, fielddescr):
+ return self.cpu.bh_getfield_raw_u(struct, fielddescr)
+ @arguments("r", "d", returns="r")
+ def opimpl_getfield_raw_r(self, struct, fielddescr):
+ return self.cpu.bh_getfield_raw_r(struct, fielddescr)
+ @arguments("r", "d", returns="f")
+ def opimpl_getfield_raw_f(self, struct, fielddescr):
+ return self.cpu.bh_getfield_raw_f(struct, fielddescr)
+
+ opimpl_getfield_raw_i_pure = opimpl_getfield_raw_i
+ opimpl_getfield_raw_c_pure = opimpl_getfield_raw_c
+ opimpl_getfield_raw_u_pure = opimpl_getfield_raw_u
+ opimpl_getfield_raw_r_pure = opimpl_getfield_raw_r
+ opimpl_getfield_raw_f_pure = opimpl_getfield_raw_f
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/warmspot.py Mon Apr 26 18:44:22 2010
@@ -145,6 +145,7 @@
def __init__(self, translator, policy=None, backendopt=True, CPUClass=None,
optimizer=None, **kwds):
+ import py; py.test.skip("XXX")
pyjitpl._warmrunnerdesc = self # this is a global for debugging only!
if policy is None:
policy = JitPolicy()
More information about the Pypy-commit
mailing list