SLICC: Pass arguments by reference
authorNilay Vaish <nilay@cs.wisc.edu>
Mon, 29 Aug 2011 11:34:40 +0000 (06:34 -0500)
committerNilay Vaish <nilay@cs.wisc.edu>
Mon, 29 Aug 2011 11:34:40 +0000 (06:34 -0500)
Arguments to functions were being passed by value. This patch
changes SLICC so that arguments are passed by reference.

src/mem/ruby/slicc_interface/AbstractController.hh
src/mem/slicc/ast/FormalParamAST.py

index f1dac39ad2bfd14f3fb597d41e9ef763dd0e9f99..1eefa4fba7d24e58f2c4bb3b3cd051fa8e5bfbc8 100644 (file)
@@ -63,8 +63,8 @@ class AbstractController : public SimObject, public Consumer
     virtual void blockOnQueue(Address, MessageBuffer*) = 0;
     virtual void unblock(Address) = 0;
     virtual void initNetworkPtr(Network* net_ptr) = 0;
-    virtual AccessPermission getAccessPermission(Address addr) = 0;
-    virtual DataBlock& getDataBlock(Address addr) = 0;
+    virtual AccessPermission getAccessPermission(const Address& addr) = 0;
+    virtual DataBlock& getDataBlock(const Address& addr) = 0;
 
     virtual void print(std::ostream & out) const = 0;
     virtual void printStats(std::ostream & out) const = 0;
index 783607f43ec848fc1df787cab8971649355ee3ab..e94f24ccbaab2ab70bf6989706b3aa031e1ebd66 100644 (file)
@@ -56,4 +56,4 @@ class FormalParamAST(AST):
 
             return type, "%s* %s" % (type.c_ident, param)
         else:
-            return type, "%s %s" % (type.c_ident, param)
+            return type, "const %s& %s" % (type.c_ident, param)