[pypy-svn] r17333 - pypy/dist/pypy/interpreter/astcompiler
pedronis at codespeak.net
pedronis at codespeak.net
Wed Sep 7 18:08:31 CEST 2005
Author: pedronis
Date: Wed Sep 7 18:08:26 2005
New Revision: 17333
Modified:
pypy/dist/pypy/interpreter/astcompiler/misc.py
pypy/dist/pypy/interpreter/astcompiler/pyassem.py
pypy/dist/pypy/interpreter/astcompiler/pycodegen.py
Log:
killed some other SomeObject sources
Modified: pypy/dist/pypy/interpreter/astcompiler/misc.py
==============================================================================
--- pypy/dist/pypy/interpreter/astcompiler/misc.py (original)
+++ pypy/dist/pypy/interpreter/astcompiler/misc.py Wed Sep 7 18:08:26 2005
@@ -11,18 +11,20 @@
return elts
class Set:
+ _annspecialcase_ = "specialize:ctr_location" # polymorphic
+
def __init__(self):
self.elts = {}
def __len__(self):
return len(self.elts)
def __contains__(self, elt):
- return self.elts.has_key(elt)
+ return elt in self.elts
def add(self, elt):
self.elts[elt] = elt
def elements(self):
return self.elts.keys()
def has_elt(self, elt):
- return self.elts.has_key(elt)
+ return elt in self.elts
def remove(self, elt):
del self.elts[elt]
def copy(self):
@@ -31,6 +33,8 @@
return c
class Stack:
+ _annspecialcase_ = "specialize:ctr_location" # polymorphic
+
def __init__(self):
self.stack = []
self.pop = self.stack.pop
Modified: pypy/dist/pypy/interpreter/astcompiler/pyassem.py
==============================================================================
--- pypy/dist/pypy/interpreter/astcompiler/pyassem.py (original)
+++ pypy/dist/pypy/interpreter/astcompiler/pyassem.py Wed Sep 7 18:08:26 2005
@@ -420,7 +420,7 @@
class PyFlowGraph(FlowGraph):
- def __init__(self, space, name, filename, args=(), optimized=0, klass=None):
+ def __init__(self, space, name, filename, args=(), optimized=0, klass=0):
FlowGraph.__init__(self, space)
self.name = name
self.filename = filename
@@ -556,7 +556,7 @@
insts.append(inst)
pc = pc + 1
elif inst.op != "SET_LINENO":
- if self.hasjrel.has_elt(inst.op):
+ if inst.op in self.hasjrel:
assert isinstance(inst, InstrBlock)
# relative jump - no extended arg
block = inst.block
@@ -564,7 +564,7 @@
forward_refs.append( (block, inst, pc) )
insts.append(inst)
pc = pc + 3
- elif self.hasjabs.has_elt(inst.op):
+ elif inst.op in self.hasjabs:
# absolute jump - can be extended if backward
assert isinstance(inst, InstrBlock)
arg = inst.block
@@ -602,19 +602,19 @@
for block, inst, pc in forward_refs:
opname = inst.op
abspos = begin[block]
- if self.hasjrel.has_elt(opname):
+ if opname in self.hasjrel:
offset = abspos - pc - 3
inst.intval = offset
else:
inst.intval = abspos
self.stage = FLAT
- hasjrel = misc.Set()
+ hasjrel = {}
for i in dis.hasjrel:
- hasjrel.add(dis.opname[i])
- hasjabs = misc.Set()
+ hasjrel[dis.opname[i]] = True
+ hasjabs = {}
for i in dis.hasjabs:
- hasjabs.add(dis.opname[i])
+ hasjabs[dis.opname[i]] = True
def convertArgs(self):
"""Convert arguments from symbolic to concrete form"""
@@ -699,7 +699,7 @@
def _convert_NAME(self, inst):
assert isinstance(inst, InstrName)
arg = inst.name
- if self.klass is None:
+ if not self.klass:
self._lookupName(arg, self.varnames)
index = self._lookupName(arg, self.names)
return InstrInt(inst.op, index)
Modified: pypy/dist/pypy/interpreter/astcompiler/pycodegen.py
==============================================================================
--- pypy/dist/pypy/interpreter/astcompiler/pycodegen.py (original)
+++ pypy/dist/pypy/interpreter/astcompiler/pycodegen.py Wed Sep 7 18:08:26 2005
@@ -919,7 +919,7 @@
self.set_lineno(node)
self.delName(node.name)
else:
- print "oops", node.flags
+ assert False, "visitAssName unexpected flags: %s" % node.flags
def visitAssAttr(self, node):
node.expr.accept( self )
@@ -928,8 +928,7 @@
elif node.flags == 'OP_DELETE':
self.emitop('DELETE_ATTR', self.mangle(node.attrname))
else:
- print "warning: unexpected flags:", node.flags
- print node
+ assert False, "visitAssAttr unexpected flags: %s" % node.flags
def _visitAssSequence(self, node, op='UNPACK_SEQUENCE'):
if findOp(node) != 'OP_DELETE':
@@ -1031,7 +1030,7 @@
# slice and subscript stuff
- def visitSlice(self, node, aug_flag=None):
+ def visitSlice(self, node, aug_flag=0):
# aug_flag is used by visitAugSlice
node.expr.accept( self )
slice = 0
@@ -1058,7 +1057,7 @@
print "weird slice", node.flags
raise
- def visitSubscript(self, node, aug_flag=None):
+ def visitSubscript(self, node, aug_flag=0):
node.expr.accept( self )
for sub in node.subs:
sub.accept( self )
@@ -1386,14 +1385,22 @@
class OpFinder(ast.ASTVisitor):
def __init__(self):
self.op = None
+
def visitAssName(self, node):
if self.op is None:
self.op = node.flags
elif self.op != node.flags:
raise ValueError, "mixed ops in stmt"
- visitAssAttr = visitAssName
- visitSubscript = visitAssName
-
+ def visitAssAttr(self, node):
+ if self.op is None:
+ self.op = node.flags
+ elif self.op != node.flags:
+ raise ValueError, "mixed ops in stmt"
+ def visitSubscript(self, node):
+ if self.op is None:
+ self.op = node.flags
+ elif self.op != node.flags:
+ raise ValueError, "mixed ops in stmt"
class AugLoadVisitor(ast.ASTVisitor):
More information about the Pypy-commit
mailing list