You're right. I'm just a little paranoid. Sorry!

Gabe

Korey Sewell wrote:
> 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
>>
>>     
>
>
>
>   

_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to