Yea, I dont think anything special happened with this merge. I just had some things committed in my tree, pulled some changes (which created two heads), then merged those together.
On Wed, May 13, 2009 at 9:40 AM, nathan binkert <[email protected]> wrote: > Isn't this a normal merge? > > 2009/5/12 Gabe Black <[email protected]>: >> I know you said there was some mercurial weirdness that happened, but >> what's going on for x86 here? Is this a mistake and should it be >> addressed somehow? I don't want to pull if something will get >> erased/regressed/etc. >> >> Gabe >> >> Korey Sewell wrote: >>> changeset 783bacbf839d in /z/repo/m5 >>> details: http://repo.m5sim.org/m5?cmd=changeset;node=783bacbf839d >>> description: >>> merge code >>> >>> diffstat: >>> >>> 12 files changed, 711 insertions(+), 667 deletions(-) >>> SConstruct | 2 >>> src/SConscript | 371 +++++++++++---------- >>> src/arch/x86/faults.cc | 10 >>> src/arch/x86/miscregfile.cc | 114 ++++-- >>> src/arch/x86/miscregfile.hh | 2 >>> src/arch/x86/miscregs.hh | 7 >>> src/arch/x86/predecoder.cc | 78 ---- >>> src/arch/x86/predecoder.hh | 5 >>> src/arch/x86/process.cc | 36 +- >>> src/arch/x86/tlb.cc | 749 >>> +++++++++++++++++++++---------------------- >>> src/arch/x86/tlb.hh | 2 >>> src/sim/SConscript | 2 >>> >>> diffs (truncated from 1875 to 300 lines): >>> >>> diff -r 7e5c7412ac89 -r 783bacbf839d SConstruct >>> --- a/SConstruct Tue May 05 02:39:05 2009 -0400 >>> +++ b/SConstruct Tue May 05 02:44:21 2009 -0400 >>> @@ -394,7 +394,7 @@ >>> if main['GCC']: >>> main.Append(CCFLAGS='-pipe') >>> main.Append(CCFLAGS='-fno-strict-aliasing') >>> - main.Append(CCFLAGS=Split('-Wall -Wno-sign-compare -Werror -Wundef')) >>> + main.Append(CCFLAGS=['-Wall', '-Wno-sign-compare', '-Wundef']) >>> main.Append(CXXFLAGS='-Wno-deprecated') >>> elif main['ICC']: >>> pass #Fix me... add warning flags once we clean up icc warnings >>> diff -r 7e5c7412ac89 -r 783bacbf839d src/SConscript >>> --- a/src/SConscript Tue May 05 02:39:05 2009 -0400 >>> +++ b/src/SConscript Tue May 05 02:44:21 2009 -0400 >>> @@ -29,6 +29,7 @@ >>> # Authors: Nathan Binkert >>> >>> import array >>> +import bisect >>> import imp >>> import marshal >>> import os >>> @@ -50,122 +51,144 @@ >>> >>> build_env = dict([(opt, env[opt]) for opt in export_vars]) >>> >>> -def sort_list(_list): >>> - """return a sorted copy of '_list'""" >>> - if isinstance(_list, list): >>> - _list = _list[:] >>> - else: >>> - _list = list(_list) >>> - _list.sort() >>> - return _list >>> +######################################################################## >>> +# Code for adding source files of various types >>> +# >>> +class SourceMeta(type): >>> + def __init__(cls, name, bases, dict): >>> + super(SourceMeta, cls).__init__(name, bases, dict) >>> + cls.all = [] >>> + >>> + def get(cls, **kwargs): >>> + for src in cls.all: >>> + for attr,value in kwargs.iteritems(): >>> + if getattr(src, attr) != value: >>> + break >>> + else: >>> + yield src >>> >>> -class PySourceFile(object): >>> +class SourceFile(object): >>> + __metaclass__ = SourceMeta >>> + def __init__(self, source): >>> + tnode = source >>> + if not isinstance(source, SCons.Node.FS.File): >>> + tnode = File(source) >>> + >>> + self.tnode = tnode >>> + self.snode = tnode.srcnode() >>> + self.filename = str(tnode) >>> + self.dirname = dirname(self.filename) >>> + self.basename = basename(self.filename) >>> + index = self.basename.rfind('.') >>> + if index <= 0: >>> + # dot files aren't extensions >>> + self.extname = self.basename, None >>> + else: >>> + self.extname = self.basename[:index], self.basename[index+1:] >>> + >>> + for base in type(self).__mro__: >>> + if issubclass(base, SourceFile): >>> + bisect.insort_right(base.all, self) >>> + >>> + def __lt__(self, other): return self.filename < other.filename >>> + def __le__(self, other): return self.filename <= other.filename >>> + def __gt__(self, other): return self.filename > other.filename >>> + def __ge__(self, other): return self.filename >= other.filename >>> + def __eq__(self, other): return self.filename == other.filename >>> + def __ne__(self, other): return self.filename != other.filename >>> + >>> +class Source(SourceFile): >>> + '''Add a c/c++ source file to the build''' >>> + def __init__(self, source, Werror=True, swig=False, bin_only=False, >>> + skip_lib=False): >>> + super(Source, self).__init__(source) >>> + >>> + self.Werror = Werror >>> + self.swig = swig >>> + self.bin_only = bin_only >>> + self.skip_lib = bin_only or skip_lib >>> + >>> +class PySource(SourceFile): >>> + '''Add a python source file to the named package''' >>> invalid_sym_char = re.compile('[^A-z0-9_]') >>> - def __init__(self, package, tnode): >>> - snode = tnode.srcnode() >>> - filename = str(tnode) >>> - pyname = basename(filename) >>> - assert pyname.endswith('.py') >>> - name = pyname[:-3] >>> + modules = {} >>> + tnodes = {} >>> + symnames = {} >>> + >>> + def __init__(self, package, source): >>> + super(PySource, self).__init__(source) >>> + >>> + modname,ext = self.extname >>> + assert ext == 'py' >>> + >>> if package: >>> path = package.split('.') >>> else: >>> path = [] >>> >>> modpath = path[:] >>> - if name != '__init__': >>> - modpath += [name] >>> + if modname != '__init__': >>> + modpath += [ modname ] >>> modpath = '.'.join(modpath) >>> >>> - arcpath = path + [ pyname ] >>> - arcname = joinpath(*arcpath) >>> + arcpath = path + [ self.basename ] >>> + debugname = self.snode.abspath >>> + if not exists(debugname): >>> + debugname = self.tnode.abspath >>> >>> - debugname = snode.abspath >>> - if not exists(debugname): >>> - debugname = tnode.abspath >>> + self.package = package >>> + self.modname = modname >>> + self.modpath = modpath >>> + self.arcname = joinpath(*arcpath) >>> + self.debugname = debugname >>> + self.compiled = File(self.filename + 'c') >>> + self.assembly = File(self.filename + '.s') >>> + self.symname = "PyEMB_" + PySource.invalid_sym_char.sub('_', >>> modpath) >>> >>> - self.tnode = tnode >>> - self.snode = snode >>> - self.pyname = pyname >>> - self.package = package >>> - self.modpath = modpath >>> - self.arcname = arcname >>> - self.debugname = debugname >>> - self.compiled = File(filename + 'c') >>> - self.assembly = File(filename + '.s') >>> - self.symname = "PyEMB_" + self.invalid_sym_char.sub('_', modpath) >>> - >>> + PySource.modules[modpath] = self >>> + PySource.tnodes[self.tnode] = self >>> + PySource.symnames[self.symname] = self >>> >>> -######################################################################## >>> -# Code for adding source files of various types >>> -# >>> -cc_lib_sources = [] >>> -def Source(source): >>> - '''Add a source file to the libm5 build''' >>> - if not isinstance(source, SCons.Node.FS.File): >>> - source = File(source) >>> - >>> - cc_lib_sources.append(source) >>> - >>> -cc_bin_sources = [] >>> -def BinSource(source): >>> - '''Add a source file to the m5 binary build''' >>> - if not isinstance(source, SCons.Node.FS.File): >>> - source = File(source) >>> - >>> - cc_bin_sources.append(source) >>> - >>> -py_sources = [] >>> -def PySource(package, source): >>> - '''Add a python source file to the named package''' >>> - if not isinstance(source, SCons.Node.FS.File): >>> - source = File(source) >>> - >>> - source = PySourceFile(package, source) >>> - py_sources.append(source) >>> - >>> -sim_objects_fixed = False >>> -sim_object_modfiles = set() >>> -def SimObject(source): >>> +class SimObject(PySource): >>> '''Add a SimObject python file as a python source object and add >>> it to a list of sim object modules''' >>> >>> - if sim_objects_fixed: >>> - raise AttributeError, "Too late to call SimObject now." >>> + fixed = False >>> + modnames = [] >>> >>> - if not isinstance(source, SCons.Node.FS.File): >>> - source = File(source) >>> + def __init__(self, source): >>> + super(SimObject, self).__init__('m5.objects', source) >>> + if self.fixed: >>> + raise AttributeError, "Too late to call SimObject now." >>> >>> - PySource('m5.objects', source) >>> - modfile = basename(str(source)) >>> - assert modfile.endswith('.py') >>> - modname = modfile[:-3] >>> - sim_object_modfiles.add(modname) >>> + bisect.insort_right(SimObject.modnames, self.modname) >>> >>> -swig_sources = [] >>> -def SwigSource(package, source): >>> +class SwigSource(SourceFile): >>> '''Add a swig file to build''' >>> - if not isinstance(source, SCons.Node.FS.File): >>> - source = File(source) >>> - val = source,package >>> - swig_sources.append(val) >>> + >>> + def __init__(self, package, source): >>> + super(SwigSource, self).__init__(source) >>> + >>> + modname,ext = self.extname >>> + assert ext == 'i' >>> + >>> + self.module = modname >>> + cc_file = joinpath(self.dirname, modname + '_wrap.cc') >>> + py_file = joinpath(self.dirname, modname + '.py') >>> + >>> + self.cc_source = Source(cc_file, swig=True) >>> + self.py_source = PySource(package, py_file) >>> >>> unit_tests = [] >>> def UnitTest(target, sources): >>> if not isinstance(sources, (list, tuple)): >>> sources = [ sources ] >>> - >>> - srcs = [] >>> - for source in sources: >>> - if not isinstance(source, SCons.Node.FS.File): >>> - source = File(source) >>> - srcs.append(source) >>> - >>> - unit_tests.append((target, srcs)) >>> + >>> + sources = [ Source(src, skip_lib=True) for src in sources ] >>> + unit_tests.append((target, sources)) >>> >>> # Children should have access >>> Export('Source') >>> -Export('BinSource') >>> Export('PySource') >>> Export('SimObject') >>> Export('SwigSource') >>> @@ -276,7 +299,8 @@ >>> if fullname.startswith('m5.internal'): >>> return None >>> >>> - if fullname in self.modules and exists(self.modules[fullname]): >>> + source = self.modules.get(fullname, None) >>> + if source is not None and exists(source.snode.abspath): >>> return self >>> >>> return None >>> @@ -295,34 +319,28 @@ >>> mod.__dict__['buildEnv'] = build_env >>> return mod >>> >>> - srcfile = self.modules[fullname] >>> - if basename(srcfile) == '__init__.py': >>> - mod.__path__ = fullname.split('.') >>> - mod.__file__ = srcfile >>> + source = self.modules[fullname] >>> + if source.modname == '__init__': >>> + mod.__path__ = source.modpath >>> + mod.__file__ = source.snode.abspath >>> >>> - exec file(srcfile, 'r') in mod.__dict__ >>> + exec file(source.snode.abspath, 'r') in mod.__dict__ >>> >>> return mod >>> >>> -py_modules = {} >>> -for source in py_sources: >>> - py_modules[source.modpath] = source.snode.abspath >>> - >>> # install the python importer so we can grab stuff from the source >>> # tree itself. We can't have SimObjects added after this point or >>> # else we won't know about them for the rest of the stuff. >>> -sim_objects_fixed = True >>> -importer = DictImporter(py_modules) >>> +SimObject.fixed = True >>> +importer = DictImporter(PySource.modules) >>> sys.meta_path[0:0] = [ importer ] >>> >>> import m5 >>> >>> # import all sim objects so we can populate the all_objects list >>> _______________________________________________ >>> m5-dev mailing list >>> [email protected] >>> http://m5sim.org/mailman/listinfo/m5-dev >>> >> >> _______________________________________________ >> m5-dev mailing list >> [email protected] >> http://m5sim.org/mailman/listinfo/m5-dev >> >> > _______________________________________________ > m5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/m5-dev > -- - Korey _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
