[pypy-svn] r60162 - in pypy/branch/oo-jit/pypy: rpython/lltypesystem rpython/ootypesystem translator/cli translator/js translator/jvm
arigo at codespeak.net
arigo at codespeak.net
Wed Nov 26 17:49:09 CET 2008
Author: arigo
Date: Wed Nov 26 17:49:07 2008
New Revision: 60162
Modified:
pypy/branch/oo-jit/pypy/rpython/lltypesystem/lloperation.py
pypy/branch/oo-jit/pypy/rpython/ootypesystem/ooopimpl.py
pypy/branch/oo-jit/pypy/rpython/ootypesystem/rclass.py
pypy/branch/oo-jit/pypy/rpython/ootypesystem/rootype.py
pypy/branch/oo-jit/pypy/translator/cli/opcodes.py
pypy/branch/oo-jit/pypy/translator/js/opcodes.py
pypy/branch/oo-jit/pypy/translator/jvm/cmpopcodes.py
Log:
Add a new operation 'ooisnot', a single-operation implementation
for rtype_ne.
Modified: pypy/branch/oo-jit/pypy/rpython/lltypesystem/lloperation.py
==============================================================================
--- pypy/branch/oo-jit/pypy/rpython/lltypesystem/lloperation.py (original)
+++ pypy/branch/oo-jit/pypy/rpython/lltypesystem/lloperation.py Wed Nov 26 17:49:07 2008
@@ -476,6 +476,7 @@
'oononnull': LLOp(oo=True, canfold=True),
'ooisnull': LLOp(oo=True, canfold=True),
'oois': LLOp(oo=True, canfold=True),
+ 'ooisnot': LLOp(oo=True, canfold=True),
'instanceof': LLOp(oo=True, canfold=True),
'classof': LLOp(oo=True, canfold=True),
'subclassof': LLOp(oo=True, canfold=True),
Modified: pypy/branch/oo-jit/pypy/rpython/ootypesystem/ooopimpl.py
==============================================================================
--- pypy/branch/oo-jit/pypy/rpython/ootypesystem/ooopimpl.py (original)
+++ pypy/branch/oo-jit/pypy/rpython/ootypesystem/ooopimpl.py Wed Nov 26 17:49:07 2008
@@ -40,6 +40,9 @@
else:
assert False, "oois on something silly"
+def op_ooisnot(obj1, obj2):
+ return not op_oois(obj1, obj2)
+
def op_instanceof(inst, INST):
return ootype.instanceof(inst, INST)
Modified: pypy/branch/oo-jit/pypy/rpython/ootypesystem/rclass.py
==============================================================================
--- pypy/branch/oo-jit/pypy/rpython/ootypesystem/rclass.py (original)
+++ pypy/branch/oo-jit/pypy/rpython/ootypesystem/rclass.py Wed Nov 26 17:49:07 2008
@@ -531,9 +531,9 @@
rtype_eq = rtype_is_
- def rtype_ne(rpair, hop):
- v = rpair.rtype_eq(hop)
- return hop.genop("bool_not", [v], resulttype=ootype.Bool)
+ def rtype_ne((r_ins1, r_ins2), hop):
+ vlist = hop.inputargs(r_ins1, r_ins2)
+ return hop.genop('ooisnot', vlist, resulttype=ootype.Bool)
def ll_inst_hash(ins):
Modified: pypy/branch/oo-jit/pypy/rpython/ootypesystem/rootype.py
==============================================================================
--- pypy/branch/oo-jit/pypy/rpython/ootypesystem/rootype.py (original)
+++ pypy/branch/oo-jit/pypy/rpython/ootypesystem/rootype.py Wed Nov 26 17:49:07 2008
@@ -101,9 +101,9 @@
rtype_eq = rtype_is_
- def rtype_ne(rpair, hop):
- v = rpair.rtype_eq(hop)
- return hop.genop("bool_not", [v], resulttype=ootype.Bool)
+ def rtype_ne((r_ins1, r_ins2), hop):
+ vlist = hop.inputargs(r_ins1, r_ins2)
+ return hop.genop('ooisnot', vlist, resulttype=ootype.Bool)
class __extend__(pairtype(OOObjectRepr, OOObjectRepr)):
@@ -113,9 +113,9 @@
rtype_eq = rtype_is_
- def rtype_ne(rpair, hop):
- v = rpair.rtype_eq(hop)
- return hop.genop("bool_not", [v], resulttype=ootype.Bool)
+ def rtype_ne((r_ins1, r_ins2), hop):
+ vlist = hop.inputargs(r_ins1, r_ins2)
+ return hop.genop('ooisnot', vlist, resulttype=ootype.Bool)
class OOBoundMethRepr(Repr):
def __init__(self, ootype, name):
Modified: pypy/branch/oo-jit/pypy/translator/cli/opcodes.py
==============================================================================
--- pypy/branch/oo-jit/pypy/translator/cli/opcodes.py (original)
+++ pypy/branch/oo-jit/pypy/translator/cli/opcodes.py Wed Nov 26 17:49:07 2008
@@ -252,6 +252,7 @@
'ullong_rshift': [PushAllArgs, 'conv.i4', 'shr'],
'oois': 'ceq',
+ 'ooisnot': _not('ceq'),
}
opcodes = misc_ops.copy()
Modified: pypy/branch/oo-jit/pypy/translator/js/opcodes.py
==============================================================================
--- pypy/branch/oo-jit/pypy/translator/js/opcodes.py (original)
+++ pypy/branch/oo-jit/pypy/translator/js/opcodes.py Wed Nov 26 17:49:07 2008
@@ -138,6 +138,7 @@
'ooparse_int' : [PushAllArgs,_CastFun("parseInt",2)],
'ooparse_float' : [PushAllArgs,_CastFun("parseFloat",1)],
'oois' : '===',
+ 'ooisnot' : '!==',
'cast_bool_to_int': CopyName,
'cast_bool_to_uint': CopyName,
'cast_bool_to_float': CopyName,
Modified: pypy/branch/oo-jit/pypy/translator/jvm/cmpopcodes.py
==============================================================================
--- pypy/branch/oo-jit/pypy/translator/jvm/cmpopcodes.py (original)
+++ pypy/branch/oo-jit/pypy/translator/jvm/cmpopcodes.py Wed Nov 26 17:49:07 2008
@@ -1,6 +1,6 @@
from pypy.translator.jvm.typesystem import \
IFLT, IFLE, IFEQ, IFNE, IFGT, IFGE, \
- IFNULL, IFNONNULL, IF_ACMPEQ, GOTO, ICONST, \
+ IFNULL, IFNONNULL, IF_ACMPEQ, IF_ACMPNE, GOTO, ICONST, \
DCONST_0, DCMPG, LCONST_0, LCMP, \
IF_ICMPLT, IF_ICMPLE, IF_ICMPEQ, IF_ICMPNE, IF_ICMPGT, IF_ICMPGE, \
PYPYUINTCMP, PYPYULONGCMP
@@ -54,6 +54,7 @@
'oononnull': [IFNONNULL],
'ooisnull': [IFNULL],
'oois': [IF_ACMPEQ],
+ 'ooisnot': [IF_ACMPNE],
'unichar_eq': [IF_ICMPEQ],
'unichar_ne': [IF_ICMPNE],
More information about the Pypy-commit
mailing list