[pypy-svn] r20417 - pypy/branch/somepbc-refactoring/pypy/translator/goal
arigo at codespeak.net
arigo at codespeak.net
Wed Nov 30 11:18:01 CET 2005
Author: arigo
Date: Wed Nov 30 11:18:00 2005
New Revision: 20417
Modified:
pypy/branch/somepbc-refactoring/pypy/translator/goal/driver.py
pypy/branch/somepbc-refactoring/pypy/translator/goal/query.py
Log:
Fixed obvious stuff until targetnopstandalone works again.
Modified: pypy/branch/somepbc-refactoring/pypy/translator/goal/driver.py
==============================================================================
--- pypy/branch/somepbc-refactoring/pypy/translator/goal/driver.py (original)
+++ pypy/branch/somepbc-refactoring/pypy/translator/goal/driver.py Wed Nov 30 11:18:00 2005
@@ -137,7 +137,8 @@
self.log.info('with policy: %s.%s' % (policy.__class__.__module__, policy.__class__.__name__))
annmodel.DEBUG = self.options.debug
- annotator = translator.annotate(self.inputtypes, policy=policy)
+ annotator = translator.buildannotator(policy=policy)
+ annotator.build_types(self.entry_point, self.inputtypes)
self.sanity_check_annotation()
annotator.simplify()
#
@@ -155,7 +156,7 @@
self.log.info("No lost method defs")
so = query.qoutput(query.polluted_qgen(translator))
- tot = len(translator.flowgraphs)
+ tot = len(translator.graphs)
percent = int(tot and (100.0*so / tot) or 0)
if percent == 0:
pr = self.log.info
@@ -167,14 +168,16 @@
def task_rtype(self):
opt = self.options
- self.translator.specialize(dont_simplify_again=True,
- crash_on_first_typeerror=not opt.insist)
+ rtyper = self.translator.buildrtyper()
+ rtyper.specialize(dont_simplify_again=True,
+ crash_on_first_typeerror=not opt.insist)
#
task_rtype = taskdef(task_rtype, ['annotate'], "RTyping")
def task_backendopt(self):
+ from pypy.translator.backendopt.all import backend_optimizations
opt = self.options
- self.translator.backend_optimizations(ssa_form=opt.backend != 'llvm')
+ backend_optimizations(self.translator, ssa_form=opt.backend != 'llvm')
#
task_backendopt = taskdef(task_backendopt,
['rtype'], "Back-end optimisations")
@@ -194,9 +197,13 @@
from pypy.translator.c import gc
gcpolicy = gc.NoneGcPolicy
- cbuilder = translator.cbuilder(standalone=standalone,
- gcpolicy=gcpolicy,
- thread_enabled = getattr(opt, 'thread', False))
+ if standalone:
+ from pypy.translator.c.genc import CStandaloneBuilder as CBuilder
+ else:
+ from pypy.translator.c.genc import CExtModuleBuilder as CBuilder
+ cbuilder = CBuilder(self.translator, self.entry_point,
+ gcpolicy = gcpolicy,
+ thread_enabled = getattr(opt, 'thread', False))
cbuilder.stackless = opt.stackless
database = cbuilder.build_database()
self.log.info("database for generating C source was created")
Modified: pypy/branch/somepbc-refactoring/pypy/translator/goal/query.py
==============================================================================
--- pypy/branch/somepbc-refactoring/pypy/translator/goal/query.py (original)
+++ pypy/branch/somepbc-refactoring/pypy/translator/goal/query.py Wed Nov 30 11:18:00 2005
@@ -515,16 +515,16 @@
s = annotator.binding(v, extquery=True)
if s and s.__class__ == annmodel.SomeObject and s.knowntype != type:
raise Found
- for f,g in translator.flowgraphs.iteritems():
+ for g in translator.graphs:
try:
flowmodel.traverse(visit, g)
except Found:
- line = "%s: %s" % (prettyfunc(f), graph_sig(translator, g))
+ line = "%s: %s" % (g, graph_sig(translator, g))
yield line
def check_exceptblocks_qgen(translator):
annotator = translator.annotator
- for graph in translator.flowgraphs.itervalues():
+ for graph in translator.graphs:
et, ev = graph.exceptblock.inputargs
s_et = annotator.binding(et, extquery=True)
s_ev = annotator.binding(ev, extquery=True)
@@ -539,19 +539,15 @@
yield "%s exceptblock is not completely sane" % graph.name
def check_methods_qgen(translator):
- from pypy.annotation.classdef import ClassDef
+ from pypy.annotation.description import FunctionDesc, MethodDesc
def ismeth(s_val):
if not isinstance(s_val, annmodel.SomePBC):
return False
- s_pbc = s_val
- c = 0
- for f, clsdef in s_pbc.prebuiltinstances.iteritems():
- if callable(f) and isinstance(clsdef, ClassDef):
- c += 1
- return c == len(s_pbc.prebuiltinstances)
- usercls = translator.annotator.getuserclasses()
+ return s_val.getKind() is MethodDesc
+ bk = translator.annotator.bookkeeper
+ classdefs = bk.classdefs
withmeths = []
- for clsdef in usercls.itervalues():
+ for clsdef in classdefs:
meths = []
for attr in clsdef.attrs.values():
if ismeth(attr.s_value):
@@ -559,22 +555,27 @@
if meths:
withmeths.append((clsdef, meths))
for clsdef, meths in withmeths:
- cls = clsdef.cls
n = 0
subclasses = []
- for clsdef1 in usercls.itervalues():
- if issubclass(clsdef1.cls, cls):
+ for clsdef1 in classdefs:
+ if clsdef1.issubclass(clsdef):
subclasses.append(clsdef1)
for meth in meths:
name = meth.name
- funcs = dict.fromkeys(meth.s_value.prebuiltinstances.iterkeys())
+ funcs = dict.fromkeys([desc.funcdesc
+ for desc in meth.s_value.descriptions])
for subcls in subclasses:
- f = subcls.cls.__dict__.get(name)
- if hasattr(f, 'im_self') and f.im_self is None:
- f = f.im_func
- if f:
- if f not in funcs:
- yield "lost method: %s %s %s %s" % (name, subcls.cls, cls, subcls.attrs.keys() )
+ if not subcls.find_source_for(name):
+ continue
+ c = subcls.read_attribute(name)
+ if isinstance(c, Constant):
+ if not isinstance(c.value, (types.FunctionType,
+ types.MethodType)):
+ continue
+ c = bk.getdesc(c.value)
+ if isinstance(c, FunctionDesc):
+ if c not in funcs:
+ yield "lost method: %s %s %s %s" % (name, subcls.name, clsdef.name, subcls.attrs.keys() )
def qoutput(queryg, write=None):
if write is None:
More information about the Pypy-commit
mailing list