summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2015-09-18 13:27:47 -0500
committerNilay Vaish <nilay@cs.wisc.edu>2015-09-18 13:27:47 -0500
commit216529bf182f58830cfccad090f348e1b8730675 (patch)
tree33a2c3f5d76118591e9dd6b7ac377a51de670d07
parentb3eb0d1423f26e42985ed23b84f71c858a8dd24e (diff)
downloadgem5-216529bf182f58830cfccad090f348e1b8730675.tar.xz
ruby: slicc: derive DataMember class from Var instead of PairContainer
The DataMember class in Type.py was being derived from PairContainer. A separate Var object was also created for the DataMember. This meant some duplication of across the members of these two classes (Var and DataMember). This patch changes DataMember from Var instead. There is no obvious reason to derive from PairContainer which can only hold pairs, something that Var class already supports. The only thing that DataMember has over Var is init_code, which is being retained. This change would later on help in having pointers in DataMembers.
-rw-r--r--src/mem/slicc/symbols/Type.py19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/mem/slicc/symbols/Type.py b/src/mem/slicc/symbols/Type.py
index 2dc35784a..6234f4f7f 100644
--- a/src/mem/slicc/symbols/Type.py
+++ b/src/mem/slicc/symbols/Type.py
@@ -31,11 +31,11 @@ from slicc.util import PairContainer
from slicc.symbols.Symbol import Symbol
from slicc.symbols.Var import Var
-class DataMember(PairContainer):
- def __init__(self, ident, type, pairs, init_code):
- super(DataMember, self).__init__(pairs)
- self.ident = ident
- self.type = type
+class DataMember(Var):
+ def __init__(self, symtab, ident, location, type, code, pairs,
+ machine, init_code):
+ super(DataMember, self).__init__(symtab, ident, location, type,
+ code, pairs, machine)
self.init_code = init_code
class Enumeration(PairContainer):
@@ -126,12 +126,11 @@ class Type(Symbol):
if ident in self.data_members:
return False
- member = DataMember(ident, type, pairs, init_code)
- self.data_members[ident] = member
+ member = DataMember(self.symtab, ident, self.location, type,
+ "m_%s" % ident, pairs, None, init_code)
- var = Var(self.symtab, ident, self.location, type,
- "m_%s" % ident, {}, None)
- self.symtab.registerSym(ident, var)
+ self.data_members[ident] = member
+ self.symtab.registerSym(ident, member)
return True
def dataMemberType(self, ident):