satisfy the tabnanny (thanks to MH for noticing the problem)

This commit is contained in:
Jeremy Hylton 2000-02-21 22:46:00 +00:00
parent 0dd7507e51
commit 772dd417f7
4 changed files with 196 additions and 196 deletions

View File

@ -11,25 +11,25 @@ def flatten(tup):
class Set:
def __init__(self):
self.elts = {}
self.elts = {}
def __len__(self):
return len(self.elts)
def add(self, elt):
self.elts[elt] = elt
self.elts[elt] = elt
def items(self):
return self.elts.keys()
return self.elts.keys()
def has_elt(self, elt):
return self.elts.has_key(elt)
return self.elts.has_key(elt)
def remove(self, elt):
del self.elts[elt]
class Stack:
def __init__(self):
self.stack = []
self.pop = self.stack.pop
self.stack = []
self.pop = self.stack.pop
def __len__(self):
return len(self.stack)
def push(self, elt):
self.stack.append(elt)
self.stack.append(elt)
def top(self):
return self.stack[-1]
return self.stack[-1]

View File

@ -60,7 +60,7 @@ class PyAssembler:
def __init__(self, args=(), name='?', filename='<?>',
docstring=None):
# XXX why is the default value for flags 3?
self.insts = []
self.insts = []
# used by makeCodeObject
self._getArgCount(args)
self.code = ''
@ -107,10 +107,10 @@ class PyAssembler:
self.flags = self.flags | CO_VARKEYWORDS
def getCurInst(self):
return len(self.insts)
return len(self.insts)
def getNextInst(self):
return len(self.insts) + 1
return len(self.insts) + 1
def dump(self, io=sys.stdout):
i = 0
@ -162,7 +162,7 @@ class PyAssembler:
# XXX danger! can't pass through here twice
if self.flags & CO_VARKEYWORDS:
self.argcount = self.argcount - 1
stacksize = findDepth(self.insts)
stacksize = findDepth(self.insts)
try:
co = new.code(self.argcount, nlocals, stacksize,
self.flags, lnotab.getCode(), self._getConsts(),
@ -193,9 +193,9 @@ class PyAssembler:
"""
l = []
for elt in self.consts:
# XXX might be clearer to just as isinstance(CodeGen)
if hasattr(elt, 'asConst'):
l.append(elt.asConst())
# XXX might be clearer to just as isinstance(CodeGen)
if hasattr(elt, 'asConst'):
l.append(elt.asConst())
else:
l.append(elt)
return tuple(l)
@ -286,14 +286,14 @@ class PyAssembler:
opnum = {}
for num in range(len(dis.opname)):
opnum[dis.opname[num]] = num
opnum[dis.opname[num]] = num
# this version of emit + arbitrary hooks might work, but it's damn
# messy.
def emit(self, *args):
self._emitDispatch(args[0], args[1:])
self.insts.append(args)
self.insts.append(args)
def _emitDispatch(self, type, args):
for func in self._emit_hooks.get(type, []):
@ -363,115 +363,115 @@ class StackRef:
count = 0
def __init__(self, id=None, val=None):
if id is None:
id = StackRef.count
StackRef.count = StackRef.count + 1
self.id = id
self.val = val
if id is None:
id = StackRef.count
StackRef.count = StackRef.count + 1
self.id = id
self.val = val
def __repr__(self):
if self.val:
return "StackRef(val=%d)" % self.val
else:
return "StackRef(id=%d)" % self.id
if self.val:
return "StackRef(val=%d)" % self.val
else:
return "StackRef(id=%d)" % self.id
def bind(self, inst):
self.val = inst
self.val = inst
def resolve(self):
if self.val is None:
print "UNRESOLVE REF", self
return 0
return self.val
return self.val
class StackDepthTracker:
# XXX need to keep track of stack depth on jumps
def findDepth(self, insts):
depth = 0
maxDepth = 0
for i in insts:
opname = i[0]
delta = self.effect.get(opname, 0)
if delta > 1:
depth = depth + delta
elif delta < 0:
if depth > maxDepth:
maxDepth = depth
depth = depth + delta
else:
if depth > maxDepth:
maxDepth = depth
# now check patterns
for pat, delta in self.patterns:
if opname[:len(pat)] == pat:
depth = depth + delta
break
# if we still haven't found a match
if delta == 0:
meth = getattr(self, opname)
depth = depth + meth(i[1])
if depth < 0:
depth = 0
return maxDepth
depth = 0
maxDepth = 0
for i in insts:
opname = i[0]
delta = self.effect.get(opname, 0)
if delta > 1:
depth = depth + delta
elif delta < 0:
if depth > maxDepth:
maxDepth = depth
depth = depth + delta
else:
if depth > maxDepth:
maxDepth = depth
# now check patterns
for pat, delta in self.patterns:
if opname[:len(pat)] == pat:
depth = depth + delta
break
# if we still haven't found a match
if delta == 0:
meth = getattr(self, opname)
depth = depth + meth(i[1])
if depth < 0:
depth = 0
return maxDepth
effect = {
'POP_TOP': -1,
'DUP_TOP': 1,
'SLICE+1': -1,
'SLICE+2': -1,
'SLICE+3': -2,
'STORE_SLICE+0': -1,
'STORE_SLICE+1': -2,
'STORE_SLICE+2': -2,
'STORE_SLICE+3': -3,
'DELETE_SLICE+0': -1,
'DELETE_SLICE+1': -2,
'DELETE_SLICE+2': -2,
'DELETE_SLICE+3': -3,
'STORE_SUBSCR': -3,
'DELETE_SUBSCR': -2,
# PRINT_EXPR?
'PRINT_ITEM': -1,
'LOAD_LOCALS': 1,
'RETURN_VALUE': -1,
'EXEC_STMT': -2,
'BUILD_CLASS': -2,
'STORE_NAME': -1,
'STORE_ATTR': -2,
'DELETE_ATTR': -1,
'STORE_GLOBAL': -1,
'BUILD_MAP': 1,
'COMPARE_OP': -1,
'STORE_FAST': -1,
}
'POP_TOP': -1,
'DUP_TOP': 1,
'SLICE+1': -1,
'SLICE+2': -1,
'SLICE+3': -2,
'STORE_SLICE+0': -1,
'STORE_SLICE+1': -2,
'STORE_SLICE+2': -2,
'STORE_SLICE+3': -3,
'DELETE_SLICE+0': -1,
'DELETE_SLICE+1': -2,
'DELETE_SLICE+2': -2,
'DELETE_SLICE+3': -3,
'STORE_SUBSCR': -3,
'DELETE_SUBSCR': -2,
# PRINT_EXPR?
'PRINT_ITEM': -1,
'LOAD_LOCALS': 1,
'RETURN_VALUE': -1,
'EXEC_STMT': -2,
'BUILD_CLASS': -2,
'STORE_NAME': -1,
'STORE_ATTR': -2,
'DELETE_ATTR': -1,
'STORE_GLOBAL': -1,
'BUILD_MAP': 1,
'COMPARE_OP': -1,
'STORE_FAST': -1,
}
# use pattern match
patterns = [
('BINARY_', -1),
('LOAD_', 1),
('IMPORT_', 1),
]
('BINARY_', -1),
('LOAD_', 1),
('IMPORT_', 1),
]
# special cases
#: UNPACK_TUPLE, UNPACK_LIST, BUILD_TUPLE,
# BUILD_LIST, CALL_FUNCTION, MAKE_FUNCTION, BUILD_SLICE
def UNPACK_TUPLE(self, count):
return count
return count
def UNPACK_LIST(self, count):
return count
return count
def BUILD_TUPLE(self, count):
return -count
return -count
def BUILD_LIST(self, count):
return -count
return -count
def CALL_FUNCTION(self, argc):
hi, lo = divmod(argc, 256)
return lo + hi * 2
hi, lo = divmod(argc, 256)
return lo + hi * 2
def MAKE_FUNCTION(self, argc):
return -argc
return -argc
def BUILD_SLICE(self, argc):
if argc == 2:
return -1
elif argc == 3:
return -2
if argc == 2:
return -1
elif argc == 3:
return -2
findDepth = StackDepthTracker().findDepth

View File

@ -11,25 +11,25 @@ def flatten(tup):
class Set:
def __init__(self):
self.elts = {}
self.elts = {}
def __len__(self):
return len(self.elts)
def add(self, elt):
self.elts[elt] = elt
self.elts[elt] = elt
def items(self):
return self.elts.keys()
return self.elts.keys()
def has_elt(self, elt):
return self.elts.has_key(elt)
return self.elts.has_key(elt)
def remove(self, elt):
del self.elts[elt]
class Stack:
def __init__(self):
self.stack = []
self.pop = self.stack.pop
self.stack = []
self.pop = self.stack.pop
def __len__(self):
return len(self.stack)
def push(self, elt):
self.stack.append(elt)
self.stack.append(elt)
def top(self):
return self.stack[-1]
return self.stack[-1]

View File

@ -60,7 +60,7 @@ class PyAssembler:
def __init__(self, args=(), name='?', filename='<?>',
docstring=None):
# XXX why is the default value for flags 3?
self.insts = []
self.insts = []
# used by makeCodeObject
self._getArgCount(args)
self.code = ''
@ -107,10 +107,10 @@ class PyAssembler:
self.flags = self.flags | CO_VARKEYWORDS
def getCurInst(self):
return len(self.insts)
return len(self.insts)
def getNextInst(self):
return len(self.insts) + 1
return len(self.insts) + 1
def dump(self, io=sys.stdout):
i = 0
@ -162,7 +162,7 @@ class PyAssembler:
# XXX danger! can't pass through here twice
if self.flags & CO_VARKEYWORDS:
self.argcount = self.argcount - 1
stacksize = findDepth(self.insts)
stacksize = findDepth(self.insts)
try:
co = new.code(self.argcount, nlocals, stacksize,
self.flags, lnotab.getCode(), self._getConsts(),
@ -193,9 +193,9 @@ class PyAssembler:
"""
l = []
for elt in self.consts:
# XXX might be clearer to just as isinstance(CodeGen)
if hasattr(elt, 'asConst'):
l.append(elt.asConst())
# XXX might be clearer to just as isinstance(CodeGen)
if hasattr(elt, 'asConst'):
l.append(elt.asConst())
else:
l.append(elt)
return tuple(l)
@ -286,14 +286,14 @@ class PyAssembler:
opnum = {}
for num in range(len(dis.opname)):
opnum[dis.opname[num]] = num
opnum[dis.opname[num]] = num
# this version of emit + arbitrary hooks might work, but it's damn
# messy.
def emit(self, *args):
self._emitDispatch(args[0], args[1:])
self.insts.append(args)
self.insts.append(args)
def _emitDispatch(self, type, args):
for func in self._emit_hooks.get(type, []):
@ -363,115 +363,115 @@ class StackRef:
count = 0
def __init__(self, id=None, val=None):
if id is None:
id = StackRef.count
StackRef.count = StackRef.count + 1
self.id = id
self.val = val
if id is None:
id = StackRef.count
StackRef.count = StackRef.count + 1
self.id = id
self.val = val
def __repr__(self):
if self.val:
return "StackRef(val=%d)" % self.val
else:
return "StackRef(id=%d)" % self.id
if self.val:
return "StackRef(val=%d)" % self.val
else:
return "StackRef(id=%d)" % self.id
def bind(self, inst):
self.val = inst
self.val = inst
def resolve(self):
if self.val is None:
print "UNRESOLVE REF", self
return 0
return self.val
return self.val
class StackDepthTracker:
# XXX need to keep track of stack depth on jumps
def findDepth(self, insts):
depth = 0
maxDepth = 0
for i in insts:
opname = i[0]
delta = self.effect.get(opname, 0)
if delta > 1:
depth = depth + delta
elif delta < 0:
if depth > maxDepth:
maxDepth = depth
depth = depth + delta
else:
if depth > maxDepth:
maxDepth = depth
# now check patterns
for pat, delta in self.patterns:
if opname[:len(pat)] == pat:
depth = depth + delta
break
# if we still haven't found a match
if delta == 0:
meth = getattr(self, opname)
depth = depth + meth(i[1])
if depth < 0:
depth = 0
return maxDepth
depth = 0
maxDepth = 0
for i in insts:
opname = i[0]
delta = self.effect.get(opname, 0)
if delta > 1:
depth = depth + delta
elif delta < 0:
if depth > maxDepth:
maxDepth = depth
depth = depth + delta
else:
if depth > maxDepth:
maxDepth = depth
# now check patterns
for pat, delta in self.patterns:
if opname[:len(pat)] == pat:
depth = depth + delta
break
# if we still haven't found a match
if delta == 0:
meth = getattr(self, opname)
depth = depth + meth(i[1])
if depth < 0:
depth = 0
return maxDepth
effect = {
'POP_TOP': -1,
'DUP_TOP': 1,
'SLICE+1': -1,
'SLICE+2': -1,
'SLICE+3': -2,
'STORE_SLICE+0': -1,
'STORE_SLICE+1': -2,
'STORE_SLICE+2': -2,
'STORE_SLICE+3': -3,
'DELETE_SLICE+0': -1,
'DELETE_SLICE+1': -2,
'DELETE_SLICE+2': -2,
'DELETE_SLICE+3': -3,
'STORE_SUBSCR': -3,
'DELETE_SUBSCR': -2,
# PRINT_EXPR?
'PRINT_ITEM': -1,
'LOAD_LOCALS': 1,
'RETURN_VALUE': -1,
'EXEC_STMT': -2,
'BUILD_CLASS': -2,
'STORE_NAME': -1,
'STORE_ATTR': -2,
'DELETE_ATTR': -1,
'STORE_GLOBAL': -1,
'BUILD_MAP': 1,
'COMPARE_OP': -1,
'STORE_FAST': -1,
}
'POP_TOP': -1,
'DUP_TOP': 1,
'SLICE+1': -1,
'SLICE+2': -1,
'SLICE+3': -2,
'STORE_SLICE+0': -1,
'STORE_SLICE+1': -2,
'STORE_SLICE+2': -2,
'STORE_SLICE+3': -3,
'DELETE_SLICE+0': -1,
'DELETE_SLICE+1': -2,
'DELETE_SLICE+2': -2,
'DELETE_SLICE+3': -3,
'STORE_SUBSCR': -3,
'DELETE_SUBSCR': -2,
# PRINT_EXPR?
'PRINT_ITEM': -1,
'LOAD_LOCALS': 1,
'RETURN_VALUE': -1,
'EXEC_STMT': -2,
'BUILD_CLASS': -2,
'STORE_NAME': -1,
'STORE_ATTR': -2,
'DELETE_ATTR': -1,
'STORE_GLOBAL': -1,
'BUILD_MAP': 1,
'COMPARE_OP': -1,
'STORE_FAST': -1,
}
# use pattern match
patterns = [
('BINARY_', -1),
('LOAD_', 1),
('IMPORT_', 1),
]
('BINARY_', -1),
('LOAD_', 1),
('IMPORT_', 1),
]
# special cases
#: UNPACK_TUPLE, UNPACK_LIST, BUILD_TUPLE,
# BUILD_LIST, CALL_FUNCTION, MAKE_FUNCTION, BUILD_SLICE
def UNPACK_TUPLE(self, count):
return count
return count
def UNPACK_LIST(self, count):
return count
return count
def BUILD_TUPLE(self, count):
return -count
return -count
def BUILD_LIST(self, count):
return -count
return -count
def CALL_FUNCTION(self, argc):
hi, lo = divmod(argc, 256)
return lo + hi * 2
hi, lo = divmod(argc, 256)
return lo + hi * 2
def MAKE_FUNCTION(self, argc):
return -argc
return -argc
def BUILD_SLICE(self, argc):
if argc == 2:
return -1
elif argc == 3:
return -2
if argc == 2:
return -1
elif argc == 3:
return -2
findDepth = StackDepthTracker().findDepth