diff options
author | Nilay Vaish <nilay@cs.wisc.edu> | 2011-07-27 20:20:53 -0500 |
---|---|---|
committer | Nilay Vaish <nilay@cs.wisc.edu> | 2011-07-27 20:20:53 -0500 |
commit | b4152e250da1999d7e495d5501f029f5370e01ed (patch) | |
tree | 8bf2afa6f6ecdf8a266f4000c4fd6f217ed4a4cf | |
parent | 00ad4eb8ce997466e1d537b0f0a3911de7842b4c (diff) | |
download | gem5-b4152e250da1999d7e495d5501f029f5370e01ed.tar.xz |
SLICC: Put functions of a controller in its .cc file
Currently, functions associated with a controller go into separate files.
This patch puts all the functions in the controller's .cc file. This should
hopefully take away some time from compilation.
-rw-r--r-- | src/mem/slicc/ast/FuncDeclAST.py | 9 | ||||
-rw-r--r-- | src/mem/slicc/symbols/Func.py | 22 | ||||
-rw-r--r-- | src/mem/slicc/symbols/StateMachine.py | 6 |
3 files changed, 9 insertions, 28 deletions
diff --git a/src/mem/slicc/ast/FuncDeclAST.py b/src/mem/slicc/ast/FuncDeclAST.py index a87d61119..54b0f2c59 100644 --- a/src/mem/slicc/ast/FuncDeclAST.py +++ b/src/mem/slicc/ast/FuncDeclAST.py @@ -41,14 +41,7 @@ class FuncDeclAST(DeclAST): return "[FuncDecl: %s]" % self.ident def files(self, parent=None): - if "external" in self or self.statements is None: - return set() - - if parent: - ident = "%s_%s" % (parent, self.ident) - else: - ident = self.ident - return set(("%s.cc" % ident,)) + return set() def generate(self): types = [] diff --git a/src/mem/slicc/symbols/Func.py b/src/mem/slicc/symbols/Func.py index f0b92cdc9..771144efd 100644 --- a/src/mem/slicc/symbols/Func.py +++ b/src/mem/slicc/symbols/Func.py @@ -64,24 +64,15 @@ class Func(Symbol): ", ".join(self.param_strings)) def writeCodeFiles(self, path): + return + + def generateCode(self): '''This write a function of object Chip''' if "external" in self: - return + return "" code = self.symtab.codeFormatter() - # Header - code(''' -/** Auto generated C++ code started by $__file__:$__line__ */ - -#include "debug/RubySlicc.hh" -#include "mem/protocol/Types.hh" -''') - - if self.isInternalMachineFunc: - code('#include "mem/protocol/${{self.machineStr}}_Controller.hh"') - - code('using namespace std;') # Generate function header void_type = self.symtab.find("void", Type) return_type = self.return_type.c_ident @@ -104,9 +95,6 @@ ${klass}::${{self.c_ident}}($params) ${{self.body}} } ''') - if self.isInternalMachineFunc: - code.write(path, "%s_%s.cc" % (self.machineStr,self.c_ident)) - else: - code.write(path, "%s.cc" % self.c_ident) + return str(code) __all__ = [ "Func" ] diff --git a/src/mem/slicc/symbols/StateMachine.py b/src/mem/slicc/symbols/StateMachine.py index a3a95002d..42249ab7a 100644 --- a/src/mem/slicc/symbols/StateMachine.py +++ b/src/mem/slicc/symbols/StateMachine.py @@ -168,9 +168,6 @@ class StateMachine(Symbol): self.printProfileDumperCC(path) self.printProfileDumperHH(path) - for func in self.functions: - func.writeCodeFiles(path) - def printControllerPython(self, path): code = self.symtab.codeFormatter() ident = self.ident @@ -945,6 +942,9 @@ $c_ident::${{action.ident}}(const Address& addr) } ''') + for func in self.functions: + code(func.generateCode()) + code.write(path, "%s.cc" % c_ident) def printCWakeup(self, path): |