[pypy-svn] r31839 - in pypy/dist/pypy/jit/codegen/i386: . test
pedronis at codespeak.net
pedronis at codespeak.net
Wed Aug 30 15:15:51 CEST 2006
Author: pedronis
Date: Wed Aug 30 15:15:50 2006
New Revision: 31839
Modified:
pypy/dist/pypy/jit/codegen/i386/ri386genop.py
pypy/dist/pypy/jit/codegen/i386/test/test_interp_ts.py
Log:
use decorators (and the new specialize decorator factory) in codegen/i386/ri386genop and tests.
Modified: pypy/dist/pypy/jit/codegen/i386/ri386genop.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/i386/ri386genop.py (original)
+++ pypy/dist/pypy/jit/codegen/i386/ri386genop.py Wed Aug 30 15:15:50 2006
@@ -1,3 +1,4 @@
+from pypy.rpython.objectmodel import specialize
from pypy.rpython.lltypesystem import lltype, llmemory
from pypy.jit.codegen.i386.ri386 import *
from pypy.jit.codegen.model import AbstractRGenOp, CodeGenBlock, CodeGenLink
@@ -67,6 +68,7 @@
def operand(self, block):
return imm(self.value)
+ @specialize.arg(1)
def revealconst(self, T):
if isinstance(T, lltype.Ptr):
return lltype.cast_int_to_ptr(T, self.value)
@@ -74,7 +76,6 @@
return llmemory.cast_int_to_adr(self.value)
else:
return lltype.cast_primitive(T, self.value)
- revealconst._annspecialcase_ = 'specialize:arg(1)'
def __repr__(self):
return "const=%s" % (imm(self.value).assembler(),)
@@ -95,6 +96,7 @@
def operand(self, block):
return imm(llmemory.cast_adr_to_int(self.addr))
+ @specialize.arg(1)
def revealconst(self, T):
if T is llmemory.Address:
return self.addr
@@ -102,7 +104,6 @@
return llmemory.cast_adr_to_ptr(self.addr, T)
else:
assert 0, "XXX not implemented"
- revealconst._annspecialcase_ = 'specialize:arg(1)'
def __repr__(self):
return "const=%r" % (self.addr,)
@@ -122,10 +123,10 @@
self.stackdepth += 1
return res
+ @specialize.arg(1)
def genop(self, opname, args_gv, gv_RESTYPE=None):
genmethod = getattr(self, 'op_' + opname)
return genmethod(args_gv, gv_RESTYPE)
- genop._annspecialcase_ = 'specialize:arg(1)'
def genop_getfield(self, offset, gv_ptr):
return self.emit_getfield(gv_ptr, offset)
@@ -449,6 +450,8 @@
def newblock(self):
return Block(self, self.open_mc())
+ @staticmethod
+ @specialize.genconst(0)
def genconst(llvalue):
T = lltype.typeOf(llvalue)
if isinstance(T, lltype.Primitive):
@@ -459,42 +462,40 @@
return AddrConst(llmemory.cast_ptr_to_adr(llvalue))
else:
assert 0, "XXX not implemented"
- genconst._annspecialcase_ = 'specialize:genconst(0)'
- genconst = staticmethod(genconst)
+ @staticmethod
+ @specialize.memo()
def fieldToken(T, name):
return llmemory.offsetof(T, name)
- fieldToken._annspecialcase_ = 'specialize:memo'
- fieldToken = staticmethod(fieldToken)
+ @staticmethod
+ @specialize.memo()
def allocToken(T):
return llmemory.sizeof(T)
- allocToken._annspecialcase_ = 'specialize:memo'
- allocToken = staticmethod(allocToken)
-
+
+ @staticmethod
+ @specialize.memo()
def arrayToken(A):
return (llmemory.ArrayLengthOffset(A),
llmemory.ArrayItemsOffset(A),
llmemory.ItemOffset(A.OF))
- arrayToken._annspecialcase_ = 'specialize:memo'
- arrayToken = staticmethod(arrayToken)
+ @staticmethod
+ @specialize.memo()
def constTYPE(T):
if T is lltype.Void:
return RI386GenOp.gv_Void
else:
return RI386GenOp.gv_IntWord # XXX for now
- constTYPE._annspecialcase_ = 'specialize:memo'
- constTYPE = staticmethod(constTYPE)
constPrebuiltGlobal = genconst
+ @staticmethod
+ @specialize.memo()
def constFieldName(T, name):
return IntConst(llmemory.offsetof(T, name))
- constFieldName._annspecialcase_ = 'specialize:memo'
- constFieldName = staticmethod(constFieldName)
-
+
def gencallableconst(self, name, block, gv_FUNCTYPE):
prologue = self.newblock()
#prologue.mc.BREAKPOINT()
Modified: pypy/dist/pypy/jit/codegen/i386/test/test_interp_ts.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/i386/test/test_interp_ts.py (original)
+++ pypy/dist/pypy/jit/codegen/i386/test/test_interp_ts.py Wed Aug 30 15:15:50 2006
@@ -1,4 +1,5 @@
import os
+from pypy.rpython.objectmodel import specialize
from pypy.annotation import model as annmodel
from pypy.jit.timeshifter.test import test_timeshift
from pypy.jit.codegen.i386.ri386genop import RI386GenOp, IntConst
@@ -12,25 +13,25 @@
class RGenOp(RI386GenOp):
from pypy.jit.codegen.i386.codebuf import LLTypeMachineCodeBlock as MachineCodeBlock
+ @staticmethod
+ @specialize.memo()
def fieldToken(T, name):
return list(T._names).index(name)
- fieldToken._annspecialcase_ = 'specialize:memo'
- fieldToken = staticmethod(fieldToken)
+ @staticmethod
+ @specialize.memo()
def arrayToken(A):
return 0, 1, 1
- arrayToken._annspecialcase_ = 'specialize:memo'
- arrayToken = staticmethod(arrayToken)
+ @staticmethod
+ @specialize.memo()
def allocToken(T):
return len(T._names)
- allocToken._annspecialcase_ = 'specialize:memo'
- allocToken = staticmethod(allocToken)
+ @staticmethod
+ @specialize.memo()
def constFieldName(T, name):
return IntConst(list(T._names).index(name))
- constFieldName._annspecialcase_ = 'specialize:memo'
- constFieldName = staticmethod(constFieldName)
def timeshift(self, ll_function, values, opt_consts=[], *args, **kwds):
values = self.timeshift_cached(ll_function, values, *args, **kwds)
More information about the Pypy-commit
mailing list