Author: Ronan Lamy <[email protected]>
Branch: annotator
Changeset: r68429:29bcc678802c
Date: 2013-08-20 19:48 +0200
http://bitbucket.org/pypy/pypy/changeset/29bcc678802c/
Log: Kill obsolete Stats thing in bookkeeper.py
diff --git a/rpython/annotator/annrpython.py b/rpython/annotator/annrpython.py
--- a/rpython/annotator/annrpython.py
+++ b/rpython/annotator/annrpython.py
@@ -613,7 +613,6 @@
# XXX "contains" clash with SomeObject method
def consider_op_contains(self, seq, elem):
- self.bookkeeper.count("contains", seq)
return seq.op_contains(elem)
def consider_op_newtuple(self, *args):
diff --git a/rpython/annotator/binaryop.py b/rpython/annotator/binaryop.py
--- a/rpython/annotator/binaryop.py
+++ b/rpython/annotator/binaryop.py
@@ -78,46 +78,39 @@
if obj1.is_immutable_constant() and obj2.is_immutable_constant():
return immutablevalue(obj1.const < obj2.const)
else:
- getbookkeeper().count("non_int_comp", obj1, obj2)
return s_Bool
def le((obj1, obj2)):
if obj1.is_immutable_constant() and obj2.is_immutable_constant():
return immutablevalue(obj1.const <= obj2.const)
else:
- getbookkeeper().count("non_int_comp", obj1, obj2)
return s_Bool
def eq((obj1, obj2)):
if obj1.is_immutable_constant() and obj2.is_immutable_constant():
return immutablevalue(obj1.const == obj2.const)
else:
- getbookkeeper().count("non_int_eq", obj1, obj2)
return s_Bool
def ne((obj1, obj2)):
if obj1.is_immutable_constant() and obj2.is_immutable_constant():
return immutablevalue(obj1.const != obj2.const)
else:
- getbookkeeper().count("non_int_eq", obj1, obj2)
return s_Bool
def gt((obj1, obj2)):
if obj1.is_immutable_constant() and obj2.is_immutable_constant():
return immutablevalue(obj1.const > obj2.const)
else:
- getbookkeeper().count("non_int_comp", obj1, obj2)
return s_Bool
def ge((obj1, obj2)):
if obj1.is_immutable_constant() and obj2.is_immutable_constant():
return immutablevalue(obj1.const >= obj2.const)
else:
- getbookkeeper().count("non_int_comp", obj1, obj2)
return s_Bool
def cmp((obj1, obj2)):
- getbookkeeper().count("cmp", obj1, obj2)
if obj1.is_immutable_constant() and obj2.is_immutable_constant():
return immutablevalue(cmp(obj1.const, obj2.const))
else:
@@ -163,11 +156,9 @@
return r
def divmod((obj1, obj2)):
- getbookkeeper().count("divmod", obj1, obj2)
return SomeTuple([pair(obj1, obj2).div(), pair(obj1, obj2).mod()])
def coerce((obj1, obj2)):
- getbookkeeper().count("coerce", obj1, obj2)
return pair(obj1, obj2).union() # reasonable enough
# approximation of an annotation intersection, the result should be the
annotation obj or
@@ -472,7 +463,6 @@
SomeUnicodeString))):
raise AnnotatorError(
"string formatting mixing strings and unicode not
supported")
- getbookkeeper().count('strformat', s_string, s_tuple)
no_nul = s_string.no_nul
for s_item in s_tuple.items:
if isinstance(s_item, SomeFloat):
@@ -490,7 +480,6 @@
pairtype(SomeUnicodeString, SomeObject)):
def mod((s_string, args)):
- getbookkeeper().count('strformat', s_string, args)
return s_string.__class__()
class __extend__(pairtype(SomeFloat, SomeFloat)):
@@ -592,19 +581,16 @@
return [KeyError]
def getitem((dic1, obj2)):
- getbookkeeper().count("dict_getitem", dic1)
dic1.dictdef.generalize_key(obj2)
return dic1.dictdef.read_value()
getitem.can_only_throw = _can_only_throw
def setitem((dic1, obj2), s_value):
- getbookkeeper().count("dict_setitem", dic1)
dic1.dictdef.generalize_key(obj2)
dic1.dictdef.generalize_value(s_value)
setitem.can_only_throw = _can_only_throw
def delitem((dic1, obj2)):
- getbookkeeper().count("dict_delitem", dic1)
dic1.dictdef.generalize_key(obj2)
delitem.can_only_throw = _can_only_throw
@@ -618,7 +604,6 @@
except IndexError:
return s_ImpossibleValue
else:
- getbookkeeper().count("tuple_random_getitem", tup1)
return unionof(*tup1.items)
getitem.can_only_throw = [IndexError]
@@ -629,74 +614,63 @@
return lst1.listdef.offspring()
def getitem((lst1, int2)):
- getbookkeeper().count("list_getitem", int2)
return lst1.listdef.read_item()
getitem.can_only_throw = []
getitem_key = getitem
def getitem_idx((lst1, int2)):
- getbookkeeper().count("list_getitem", int2)
return lst1.listdef.read_item()
getitem_idx.can_only_throw = [IndexError]
getitem_idx_key = getitem_idx
def setitem((lst1, int2), s_value):
- getbookkeeper().count("list_setitem", int2)
lst1.listdef.mutate()
lst1.listdef.generalize(s_value)
setitem.can_only_throw = [IndexError]
def delitem((lst1, int2)):
- getbookkeeper().count("list_delitem", int2)
lst1.listdef.resize()
delitem.can_only_throw = [IndexError]
class __extend__(pairtype(SomeString, SomeInteger)):
def getitem((str1, int2)):
- getbookkeeper().count("str_getitem", int2)
return SomeChar(no_nul=str1.no_nul)
getitem.can_only_throw = []
getitem_key = getitem
def getitem_idx((str1, int2)):
- getbookkeeper().count("str_getitem", int2)
return SomeChar(no_nul=str1.no_nul)
getitem_idx.can_only_throw = [IndexError]
getitem_idx_key = getitem_idx
def mul((str1, int2)): # xxx do we want to support this
- getbookkeeper().count("str_mul", str1, int2)
return SomeString(no_nul=str1.no_nul)
class __extend__(pairtype(SomeUnicodeString, SomeInteger)):
def getitem((str1, int2)):
- getbookkeeper().count("str_getitem", int2)
return SomeUnicodeCodePoint()
getitem.can_only_throw = []
getitem_key = getitem
def getitem_idx((str1, int2)):
- getbookkeeper().count("str_getitem", int2)
return SomeUnicodeCodePoint()
getitem_idx.can_only_throw = [IndexError]
getitem_idx_key = getitem_idx
def mul((str1, int2)): # xxx do we want to support this
- getbookkeeper().count("str_mul", str1, int2)
return SomeUnicodeString()
class __extend__(pairtype(SomeInteger, SomeString),
pairtype(SomeInteger, SomeUnicodeString)):
def mul((int1, str2)): # xxx do we want to support this
- getbookkeeper().count("str_mul", str2, int1)
return str2.basestringclass()
class __extend__(pairtype(SomeUnicodeCodePoint, SomeUnicodeString),
diff --git a/rpython/annotator/bookkeeper.py b/rpython/annotator/bookkeeper.py
--- a/rpython/annotator/bookkeeper.py
+++ b/rpython/annotator/bookkeeper.py
@@ -25,112 +25,6 @@
from rpython.rtyper import extregistry
-class Stats(object):
-
- def __init__(self, bookkeeper):
- self.bookkeeper = bookkeeper
- self.classify = {}
-
- def count(self, category, *args):
- for_category = self.classify.setdefault(category, {})
- classifier = getattr(self, 'consider_%s' % category,
self.consider_generic)
- outcome = classifier(*args)
- for_category[self.bookkeeper.position_key] = outcome
-
- def indexrepr(self, idx):
- if idx.is_constant():
- if idx.const is None:
- return ''
- if isinstance(idx, SomeInteger):
- if idx.const >=0:
- return 'pos-constant'
- else:
- return 'Neg-constant'
- return idx.const
- else:
- if isinstance(idx, SomeInteger):
- if idx.nonneg:
- return "non-neg"
- else:
- return "MAYBE-NEG"
- else:
- return self.typerepr(idx)
-
- def steprepr(self, stp):
- if stp.is_constant():
- if stp.const in (1, None):
- return 'step=1'
- else:
- return 'step=%s?' % stp.const
- else:
- return 'non-const-step %s' % self.typerepr(stp)
-
- def consider_generic(self, *args):
- return tuple([self.typerepr(x) for x in args])
-
- def consider_list_list_eq(self, obj1, obj2):
- return obj1, obj2
-
- def consider_contains(self, seq):
- return seq
-
- def consider_non_int_eq(self, obj1, obj2):
- if obj1.knowntype == obj2.knowntype == list:
- self.count("list_list_eq", obj1, obj2)
- return self.typerepr(obj1), self.typerepr(obj2)
-
- def consider_non_int_comp(self, obj1, obj2):
- return self.typerepr(obj1), self.typerepr(obj2)
-
- def typerepr(self, obj):
- if isinstance(obj, SomeInstance):
- return obj.classdef.name
- else:
- return obj.knowntype.__name__
-
- def consider_tuple_random_getitem(self, tup):
- return tuple([self.typerepr(x) for x in tup.items])
-
- def consider_list_index(self):
- return '!'
-
- def consider_list_getitem(self, idx):
- return self.indexrepr(idx)
-
- def consider_list_setitem(self, idx):
- return self.indexrepr(idx)
-
- def consider_list_delitem(self, idx):
- return self.indexrepr(idx)
-
- def consider_str_join(self, s):
- if s.is_constant():
- return repr(s.const)
- else:
- return "NON-CONSTANT"
-
- def consider_str_getitem(self, idx):
- return self.indexrepr(idx)
-
- def consider_strformat(self, str, args):
- if str.is_constant():
- s = repr(str.const)
- else:
- s = "?!!!!!!"
- if isinstance(args, SomeTuple):
- return (s, tuple([self.typerepr(x) for x in args.items]))
- else:
- return (s, self.typerepr(args))
-
- def consider_dict_getitem(self, dic):
- return dic
-
- def consider_dict_setitem(self, dic):
- return dic
-
- def consider_dict_delitem(self, dic):
- return dic
-
class Bookkeeper(object):
"""The log of choices that have been made while analysing the operations.
It ensures that the same 'choice objects' will be returned if we ask
@@ -165,13 +59,8 @@
self.needs_generic_instantiate = {}
- self.stats = Stats(self)
-
delayed_imports()
- def count(self, category, *args):
- self.stats.count(category, *args)
-
def enter(self, position_key):
"""Start of an operation.
The operation is uniquely identified by the given key."""
diff --git a/rpython/annotator/unaryop.py b/rpython/annotator/unaryop.py
--- a/rpython/annotator/unaryop.py
+++ b/rpython/annotator/unaryop.py
@@ -84,23 +84,18 @@
raise AnnotatorError("cannot use hash() in RPython")
def str(self):
- getbookkeeper().count('str', self)
return SomeString()
def unicode(self):
- getbookkeeper().count('unicode', self)
return SomeUnicodeString()
def repr(self):
- getbookkeeper().count('repr', self)
return SomeString()
def hex(self):
- getbookkeeper().count('hex', self)
return SomeString()
def oct(self):
- getbookkeeper().count('oct', self)
return SomeString()
def id(self):
@@ -237,7 +232,6 @@
return immutablevalue(len(self.items))
def iter(self):
- getbookkeeper().count("tuple_iter", self)
return SomeIterator(self)
iter.can_only_throw = []
@@ -281,7 +275,6 @@
method_pop.can_only_throw = [IndexError]
def method_index(self, s_value):
- getbookkeeper().count("list_index")
self.listdef.generalize(s_value)
return SomeInteger(nonneg=True)
@@ -472,7 +465,6 @@
def method_join(self, s_list):
if s_None.contains(s_list):
return SomeImpossibleValue()
- getbookkeeper().count("str_join", self)
s_item = s_list.listdef.read_item()
if s_None.contains(s_item):
if isinstance(self, SomeUnicodeString):
@@ -489,7 +481,6 @@
return self.basecharclass()
def method_split(self, patt, max=-1):
- getbookkeeper().count("str_split", self, patt)
if max == -1 and patt.is_constant() and patt.const == "\0":
no_nul = True
else:
@@ -498,7 +489,6 @@
return getbookkeeper().newlist(s_item)
def method_rsplit(self, patt, max=-1):
- getbookkeeper().count("str_rsplit", self, patt)
s_item = self.basestringclass(no_nul=self.no_nul)
return getbookkeeper().newlist(s_item)
@@ -709,8 +699,6 @@
if self.s_self is not None:
return self.analyser(self.s_self, *args)
else:
- if self.methodname:
- getbookkeeper().count(self.methodname.replace('.', '_'), *args)
return self.analyser(*args)
simple_call.can_only_throw = _can_only_throw
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit