changeset 3859f5d4f2c6 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=3859f5d4f2c6
description:
        ruby: remove some unused things in slicc
        This patch removes the parts of slicc that were required for multi-chip
        protocols. Going ahead, it seems multi-chip protocols would be 
implemented
        by playing with the network itself.

diffstat:

 src/mem/slicc/ast/CheckStopSlotsStatementAST.py |   74 -----------
 src/mem/slicc/ast/ChipComponentAccessAST.py     |  161 ------------------------
 src/mem/slicc/ast/FuncCallExprAST.py            |    8 +-
 src/mem/slicc/ast/ObjDeclAST.py                 |    6 +-
 src/mem/slicc/ast/__init__.py                   |    2 -
 src/mem/slicc/parser.py                         |   27 ----
 src/mem/slicc/symbols/Func.py                   |    2 +-
 src/mem/slicc/symbols/StateMachine.py           |    5 +-
 8 files changed, 5 insertions(+), 280 deletions(-)

diffs (truncated from 379 to 300 lines):

diff -r 92aad0e984ff -r 3859f5d4f2c6 
src/mem/slicc/ast/CheckStopSlotsStatementAST.py
--- a/src/mem/slicc/ast/CheckStopSlotsStatementAST.py   Tue Oct 02 14:35:42 
2012 -0500
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-# Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
-# Copyright (c) 2009 The Hewlett-Packard Development Company
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from slicc.ast.StatementAST import StatementAST
-
-class CheckStopSlotsStatementAST(StatementAST):
-    def __init__(self, slicc, variable, condStr, bankStr):
-        super(StatementAST, self).__init__(slicc)
-        self.variable = variable
-        self.condStr = condStr
-        self.bankStr = bankStr
-
-    def __repr__(self):
-        return "[CheckStopSlotsStatementAst: %r]" % self.variable
-
-    def generate(self, code, return_type):
-        # Make sure the variable is valid
-        self.variable.var
-
-    def findResources(self, resources):
-        var = self.variable.var
-        assert var not in self.resources
-
-        check_code = self.slicc.codeFormatter()
-        if self.condStr == "((*in_msg_ptr)).m_isOnChipSearch":
-            check_code('''
-const Response9Msg* in_msg_ptr =
-    dynamic_cast<const 
Response9Msg*>(((*(m_chip_ptr.m_L2Cache_responseToL2Cache9_vec[m_version]))).peek());
-assert(in_msg_ptr != NULL);
-''')
-
-        vcode = self.variable.inline()
-        bank = self.bankStr
-        cond = self.condStr
-
-        check_code('''
-if ($cond) {
-    auto pos = m_chip_ptr.m_DNUCAmover_ptr->getBankPos($bank)
-
-    if (!$vcode.isDisableSPossible(pos)) {
-        return TransitionResult_ResourceStall;
-    }
-} else {
-    if (!$vcode.isDisableFPossible(pos)) {
-        return TransitionResult_ResourceStall;
-    }
-}
-''')
-
-        resources[var] = str(check_code)
diff -r 92aad0e984ff -r 3859f5d4f2c6 src/mem/slicc/ast/ChipComponentAccessAST.py
--- a/src/mem/slicc/ast/ChipComponentAccessAST.py       Tue Oct 02 14:35:42 
2012 -0500
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-# Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
-# Copyright (c) 2009 The Hewlett-Packard Development Company
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met: redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer;
-# redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution;
-# neither the name of the copyright holders nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import re
-
-from slicc.ast.ExprAST import ExprAST
-from slicc.symbols import Type
-
-class ChipComponentAccessAST(ExprAST):
-    def __init__(self, slicc, machine, mach_version, component):
-        super(ChipComponentAccessAST, self).__init__(slicc)
-        self.mach_var = machine
-        self.comp_var = component
-        self.mach_ver_expr = mach_version
-
-    def __repr__(self):
-        return "[ChipAccessExpr: %r]" % self.expr_vec
-
-    def generate(self, code):
-        void_type = self.symtab.find("void", Type)
-
-        mname = self.mach_var.name
-        cname = self.comp_var.name
-        var = self.symtab.machine_components[mname][cname]
-
-        vcode = str(var.code)
-
-        if self.chip_ver_expr is not None:
-            # replace self.chip with specified chip
-            gcode = "g_system.getChip(%s)" % self.chip_ver_expr.inline()
-            vcode = re.sub("m_chip", gcode, vcode)
-
-        # replace default "m_version" with the version we really want
-        gcode = "(%s)" % self.mach_ver_expr.inline()
-        vcode = re.sub("m_version", gcode, vcode)
-
-        return_type, gcode = self.generate_access(var)
-        code("($vcode)$gcode")
-        return return_type
-
-class ChipMethodAccessAST(ChipComponentAccessAST):
-    def __init__(self, slicc, chip_version, machine, mach_version, component,
-                 proc_name, expr_vec):
-        s = super(ChipMethodAccessAST, self)
-        s.__init__(slicc, machine, mach_version, component)
-
-        self.chip_ver_expr = chip_version
-        self.expr_vec = expr_vec
-        self.proc_name = proc_name
-
-    def generate_access(self, var):
-        # generate code
-        paramTypes = []
-        gcode = []
-        for expr in self.expr_vec:
-            t,c = expr.generate()
-            paramTypes.append(t)
-            gcode.append(c)
-
-        methodId = var.type.methodId(self.proc_name, paramTypes)
-
-        # Verify that this is a method of the object
-        if not var.type.methodExist(methodId):
-            self.error("%s: Type '%s' does not have a method '%s'" % \
-                       ("Invalid method call", var.type, methodId))
-
-        expected_size = len(var.type.methodParamType(methodId))
-        if len(self.expr_vec) != expected_size:
-            # Right number of parameters
-            self.error("Wrong number of parameters for function name: " +\
-                       "'%s', expected: %d, actual: %d",
-                       self.proc_name, expected_size, len(self.expr_vec))
-
-        for expr,expected,actual in zip(self.expr_vec,
-                                        var.type.methodParamType(methodId),
-                                        paramTypes):
-            # Check the types of the parameter
-            if actual != expected:
-                expr.error("Type mismatch: expected: %s actual: %s",
-                           expected, actual)
-
-        # method call
-        code = ".%s(%s)" % (self.proc_name, ', '.join(gcode))
-
-        # Return the return type of the method
-        return var.type.methodReturnType(methodId), code
-
-class LocalChipMethodAST(ChipMethodAccessAST):
-    # method call from local chip
-    def __init__(self, slicc, machine, mach_version, component, proc_name,
-                 expr_vec):
-        s = super(LocalChipMethodAST, self)
-        s.__init__(slicc, None, machine, mach_version, component, proc_name,
-                  expr_vec)
-
-class SpecifiedChipMethodAST(ChipMethodAccessAST):
-    # method call from specified chip
-    def __init__(self, slicc, chip_version, machine, mach_version, component,
-                 proc_name, expr_vec):
-        s = super(SpecifiedChipMethodAST, self)
-        s.__init__(slicc, chip_version, machine, mach_version, component,
-                   proc_name, expr_vec)
-
-class ChipMemberAccessAST(ChipComponentAccessAST):
-    # member access from specified chip
-    def __init__(self, chip_version, machine, mach_version, component,
-                 field_name):
-        s = super(ChipMemberAccessAST, self)
-        s.__init__(slicc, machine, mach_version, component)
-
-        self.chip_ver_expr = chip_version
-        self.field_name = field_name
-
-    def generate_access(self, var):
-        # Verify that this is a valid field name for this type
-        if not var.type.dataMemberExist(self.field_name):
-            self.error("Invalid object field: " +\
-                       "Type '%s' does not have data member %s",
-                       var.type, self.field_name)
-
-        code += ").m_%s" % self.field_name
-
-        return var.type.dataMemberType(self.field_name), code
-
-class LocalChipMemberAST(ChipMemberAccessAST):
-    # member access from local chip
-    def __init__(self, slicc, machine, mach_version, component, field_name):
-        s = super(LocalChipMemberAST, self)
-        s.__init__(slicc, None, machine, mach_version, component,  field_name)
-
-class SpecifiedChipMemberAST(ChipMemberAccessAST):
-    # member access from specified chip
-    def __init__(self, chip_version, machine, mach_version, component,
-                 field_name):
-        s = super(SpecifiedChipMemberAST, self)
-        s.__init__(slicc, chip_version, machine, mach_version, component,
-                   field_name)
diff -r 92aad0e984ff -r 3859f5d4f2c6 src/mem/slicc/ast/FuncCallExprAST.py
--- a/src/mem/slicc/ast/FuncCallExprAST.py      Tue Oct 02 14:35:42 2012 -0500
+++ b/src/mem/slicc/ast/FuncCallExprAST.py      Tue Oct 02 14:35:43 2012 -0500
@@ -206,12 +206,8 @@
 
         else:
             # Normal function
-
-            # if the func is internal to the chip but not the machine
-            # then it can only be accessed through the chip pointer
-            internal = ""
             if "external" not in func and not func.isInternalMachineFunc:
-                internal = "m_chip_ptr->"
+                self.error("Invalid function")
 
             params = ""
             first_param = True
@@ -225,7 +221,7 @@
                     params += str(param_code);
 
             fix = code.nofix()
-            code('(${internal}${{func.c_ident}}($params))')
+            code('(${{func.c_ident}}($params))')
             code.fix(fix)
 
         return func.return_type
diff -r 92aad0e984ff -r 3859f5d4f2c6 src/mem/slicc/ast/ObjDeclAST.py
--- a/src/mem/slicc/ast/ObjDeclAST.py   Tue Oct 02 14:35:42 2012 -0500
+++ b/src/mem/slicc/ast/ObjDeclAST.py   Tue Oct 02 14:35:43 2012 -0500
@@ -41,8 +41,6 @@
     def generate(self):
         machineComponentSym = False
 
-        self["chip_object"] = "yes"
-
         if "hack" in self:
             warning("'hack=' is now deprecated")
 
@@ -70,9 +68,7 @@
 
         # FIXME : should all use accessors here to avoid public member
         # variables
-        if self.ident == "id":
-            c_code = "m_chip_ptr.getID()"
-        elif self.ident == "version":
+        if self.ident == "version":
             c_code = "m_version"
         elif self.ident == "machineID":
             c_code = "m_machineID"
diff -r 92aad0e984ff -r 3859f5d4f2c6 src/mem/slicc/ast/__init__.py
--- a/src/mem/slicc/ast/__init__.py     Tue Oct 02 14:35:42 2012 -0500
+++ b/src/mem/slicc/ast/__init__.py     Tue Oct 02 14:35:43 2012 -0500
@@ -30,8 +30,6 @@
 from slicc.ast.ActionDeclAST import *
 from slicc.ast.AssignStatementAST import *
 from slicc.ast.CheckAllocateStatementAST import *
-from slicc.ast.CheckStopSlotsStatementAST import *
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to