ruby: slicc: remove support for single machine, multiple types
authorTony Gutierrez <anthony.gutierrez@amd.com>
Mon, 20 Jul 2015 14:15:18 +0000 (09:15 -0500)
committerTony Gutierrez <anthony.gutierrez@amd.com>
Mon, 20 Jul 2015 14:15:18 +0000 (09:15 -0500)
This patch is imported from reviewboard patch 2550 by Nilay.
It was possible to specify multiple machine types with a single state machine.
This seems unnecessary and is being removed.

src/mem/protocol/MOESI_hammer-cache.sm
src/mem/slicc/ast/MachineAST.py
src/mem/slicc/parser.py

index f5a1d28c35fbd09703b6ca2a728fa3f40387d53e..d4e7d7e3ca7defcd6bb19fc6e8bf3c3410d5eeb8 100644 (file)
@@ -33,7 +33,7 @@
  *          Brad Beckmann
  */
 
-machine({L1Cache, L2Cache}, "AMD Hammer-like protocol")
+machine(L1Cache, "AMD Hammer-like protocol")
     : Sequencer * sequencer;
       CacheMemory * L1Icache;
       CacheMemory * L1Dcache;
index 5d14f768868af0bfe8d773c3ff7208a7ce3d00fe..4487b094ea17558f674a08f4619cd6cc59c2314f 100644 (file)
@@ -29,11 +29,10 @@ from slicc.ast.DeclAST import DeclAST
 from slicc.symbols import StateMachine, Type
 
 class MachineAST(DeclAST):
-    def __init__(self, slicc, idents, pairs_ast, config_parameters, decls):
+    def __init__(self, slicc, ident, pairs_ast, config_parameters, decls):
         super(MachineAST, self).__init__(slicc, pairs_ast)
 
-        self.ident = idents[0]
-        self.machine_types = idents
+        self.ident = ident
         self.pairs_ast = pairs_ast
         self.config_parameters = config_parameters
         self.decls = decls
@@ -71,19 +70,13 @@ class MachineAST(DeclAST):
         self.symtab.popFrame()
 
     def findMachines(self):
-        # Add to MachineType enumeration
-        for mtype in self.machine_types:
-            machine_type = self.symtab.find("MachineType", Type)
-            pairs = self.pairs_ast.pairs
+        mtype = self.ident
+        machine_type = self.symtab.find("MachineType", Type)
+        pairs = self.pairs_ast.pairs
 
-            if mtype == self.ident:
-                pairs["Primary"] = True
-            else:
-                pairs["Primary"] = False
-
-            if not machine_type.addEnum(mtype, pairs):
-                self.error("Duplicate machine name: %s:%s" % (
-                            machine_type, mtype))
+        pairs["Primary"] = True
+        if not machine_type.addEnum(mtype, pairs):
+            self.error("Duplicate machine name: %s:%s" % (machine_type, mtype))
 
         # Generate code for all the internal decls
         self.decls.findMachines()
index 49177345d1cc3cf782b145ff5eef5e0797d1bfd9..364bb92f7a1c0c93adf35a66875fccd217269826 100644 (file)
@@ -259,11 +259,11 @@ class SLICC(Grammar):
         p[0] = self.parse_file(filename)
 
     def p_decl__machine0(self, p):
-        "decl : MACHINE '(' idents ')' ':' obj_decls '{' decls '}'"
+        "decl : MACHINE '(' ident ')' ':' obj_decls '{' decls '}'"
         p[0] = ast.MachineAST(self, p[3], [], p[7], p[9])
 
     def p_decl__machine1(self, p):
-        "decl : MACHINE '(' idents pairs ')' ':' obj_decls '{' decls '}'"
+        "decl : MACHINE '(' ident pairs ')' ':' obj_decls '{' decls '}'"
         p[0] = ast.MachineAST(self, p[3], p[4], p[7], p[9])
 
     def p_decl__action(self, p):