[pypy-commit] pypy default: Simplification in genc: merge gen_source_standalone() into gen_source()
amauryfa
noreply at buildbot.pypy.org
Thu Jul 21 00:38:08 CEST 2011
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch:
Changeset: r45787:e4eef33f1a65
Date: 2011-07-20 22:15 +0200
http://bitbucket.org/pypy/pypy/changeset/e4eef33f1a65/
Log: Simplification in genc: merge gen_source_standalone() into
gen_source()
diff --git a/pypy/translator/c/genc.py b/pypy/translator/c/genc.py
--- a/pypy/translator/c/genc.py
+++ b/pypy/translator/c/genc.py
@@ -251,12 +251,8 @@
CBuilder.have___thread = self.translator.platform.check___thread()
if not self.standalone:
assert not self.config.translation.instrument
- self.eci, cfile, extra = gen_source(db, modulename, targetdir,
- self.eci,
- defines = defines,
- split=self.split)
else:
- pfname = db.get(pf)
+ defines['PYPY_STANDALONE'] = db.get(pf)
if self.config.translation.instrument:
defines['INSTRUMENT'] = 1
if CBuilder.have___thread:
@@ -266,11 +262,9 @@
defines['PYPY_MAIN_FUNCTION'] = "pypy_main_startup"
self.eci = self.eci.merge(ExternalCompilationInfo(
export_symbols=["pypy_main_startup"]))
- self.eci, cfile, extra = gen_source_standalone(db, modulename,
- targetdir,
- self.eci,
- entrypointname = pfname,
- defines = defines)
+ self.eci, cfile, extra = gen_source(db, modulename, targetdir,
+ self.eci, defines=defines,
+ split=self.split)
self.c_source_filename = py.path.local(cfile)
self.extrafiles = self.eventually_copy(extra)
self.gen_makefile(targetdir, exe_name=exe_name)
@@ -435,6 +429,7 @@
class CStandaloneBuilder(CBuilder):
standalone = True
+ split = True
executable_name = None
shared_library_name = None
@@ -948,63 +943,8 @@
return eci.merge(ExternalCompilationInfo(separate_module_files=files))
-def gen_source_standalone(database, modulename, targetdir, eci,
- entrypointname, defines={}):
- assert database.standalone
- if isinstance(targetdir, str):
- targetdir = py.path.local(targetdir)
-
- filename = targetdir.join(modulename + '.c')
- f = filename.open('w')
- incfilename = targetdir.join('common_header.h')
- fi = incfilename.open('w')
-
- #
- # Header
- #
- print >> f, '#include "common_header.h"'
- print >> f
- commondefs(defines)
- defines['PYPY_STANDALONE'] = entrypointname
- for key, value in defines.items():
- print >> fi, '#define %s %s' % (key, value)
-
- eci.write_c_header(fi)
- print >> fi, '#include "src/g_prerequisite.h"'
-
- fi.close()
-
- preimplementationlines = list(
- pre_include_code_lines(database, database.translator.rtyper))
-
- #
- # 1) All declarations
- # 2) Implementation of functions and global structures and arrays
- #
- sg = SourceGenerator(database, preimplementationlines)
- sg.set_strategy(targetdir)
- database.prepare_inline_helpers()
- sg.gen_readable_parts_of_source(f)
-
- # 3) start-up code
- print >> f
- gen_startupcode(f, database)
-
- f.close()
-
- if 'INSTRUMENT' in defines:
- fi = incfilename.open('a')
- n = database.instrument_ncounter
- print >>fi, "#define INSTRUMENT_NCOUNTER %d" % n
- fi.close()
-
- eci = add_extra_files(eci)
- eci = eci.convert_sources_to_files(being_main=True)
- files, eci = eci.get_module_files()
- return eci, filename, sg.getextrafiles() + list(files)
-
-def gen_source(database, modulename, targetdir, eci, defines={}, split=False):
- assert not database.standalone
+def gen_source(database, modulename, targetdir,
+ eci, defines={}, split=False):
if isinstance(targetdir, str):
targetdir = py.path.local(targetdir)
@@ -1046,6 +986,12 @@
gen_startupcode(f, database)
f.close()
+ if 'INSTRUMENT' in defines:
+ fi = incfilename.open('a')
+ n = database.instrument_ncounter
+ print >>fi, "#define INSTRUMENT_NCOUNTER %d" % n
+ fi.close()
+
eci = add_extra_files(eci)
eci = eci.convert_sources_to_files(being_main=True)
files, eci = eci.get_module_files()
diff --git a/pypy/translator/c/test/test_genc.py b/pypy/translator/c/test/test_genc.py
--- a/pypy/translator/c/test/test_genc.py
+++ b/pypy/translator/c/test/test_genc.py
@@ -4,7 +4,6 @@
from pypy.translator.translator import TranslationContext
from pypy.translator.c.database import LowLevelDatabase
from pypy.translator.c import genc
-from pypy.translator.c.genc import gen_source
from pypy.translator.c.gc import NoneGcPolicy
from pypy.objspace.flow.model import Constant, Variable, SpaceOperation
from pypy.objspace.flow.model import Block, Link, FunctionGraph
More information about the pypy-commit
mailing list