Lines Matching refs:self

57     def __init__(self, symtab, ident, location, pairs, config_parameters):
58 super(StateMachine, self).__init__(symtab, ident, location, pairs)
59 self.table = None
63 # the members in self.objects form the entire set of data members.
64 self.config_parameters = config_parameters
66 self.prefetchers = []
71 "(*m_%s_ptr)" % param.ident, {}, self)
74 "m_%s" % param.ident, {}, self)
76 self.symtab.registerSym(param.ident, var)
79 self.prefetchers.append(var)
81 self.states = OrderedDict()
82 self.events = OrderedDict()
83 self.actions = OrderedDict()
84 self.request_types = OrderedDict()
85 self.transitions = []
86 self.in_ports = []
87 self.functions = []
92 self.objects = []
93 self.TBEType = None
94 self.EntryType = None
95 self.debug_flags = set()
96 self.debug_flags.add('RubyGenerated')
97 self.debug_flags.add('RubySlicc')
99 def __repr__(self):
100 return "[StateMachine: %s]" % self.ident
102 def addState(self, state):
103 assert self.table is None
104 self.states[state.ident] = state
106 def addEvent(self, event):
107 assert self.table is None
108 self.events[event.ident] = event
110 def addAction(self, action):
111 assert self.table is None
114 for other in self.actions.itervalues():
124 self.actions[action.ident] = action
126 def addDebugFlag(self, flag):
127 self.debug_flags.add(flag)
129 def addRequestType(self, request_type):
130 assert self.table is None
131 self.request_types[request_type.ident] = request_type
133 def addTransition(self, trans):
134 assert self.table is None
135 self.transitions.append(trans)
137 def addInPort(self, var):
138 self.in_ports.append(var)
140 def addFunc(self, func):
142 self.symtab.registerSym(str(func), func)
143 self.functions.append(func)
145 def addObject(self, obj):
146 self.symtab.registerSym(str(obj), obj)
147 self.objects.append(obj)
149 def addType(self, type):
152 if type_ident == "%s_TBE" %self.ident:
153 if self.TBEType != None:
154 self.error("Multiple Transaction Buffer types in a " \
156 self.TBEType = type
162 if self.EntryType != None:
163 self.error("Multiple AbstractCacheEntry types in a " \
165 self.EntryType = type
168 def buildTable(self):
169 assert self.table is None
173 for trans in self.transitions:
189 for action in self.actions.itervalues():
195 self.table = table
198 def getBufferMaps(self, ident):
202 for port in self.in_ports:
212 def writeCodeFiles(self, path, includes):
213 self.printControllerPython(path)
214 self.printControllerHH(path)
215 self.printControllerCC(path, includes)
216 self.printCSwitch(path)
217 self.printCWakeup(path, includes)
219 def printControllerPython(self, path):
220 code = self.symtab.codeFormatter()
221 ident = self.ident
224 c_ident = "%s_Controller" % self.ident
236 for param in self.config_parameters:
247 self.error("Unknown c++ to python class conversion for c++ " \
255 def printControllerHH(self, path):
257 code = self.symtab.codeFormatter()
258 ident = self.ident
259 c_ident = "%s_Controller" % self.ident
265 * Created by slicc definition of Module "${{self.short}}"
284 for var in self.objects:
328 for param in self.config_parameters:
338 if self.EntryType != None:
340 ${{self.EntryType.c_ident}}* m_cache_entry_ptr,
342 if self.TBEType != None:
344 ${{self.TBEType.c_ident}}* m_tbe_ptr,
355 if self.TBEType != None:
357 ${{self.TBEType.c_ident}}*& m_tbe_ptr,
359 if self.EntryType != None:
361 ${{self.EntryType.c_ident}}*& m_cache_entry_ptr,
378 for func in self.functions:
383 if self.EntryType != None:
387 void set_cache_entry(${{self.EntryType.c_ident}}*& m_cache_entry_ptr, AbstractCacheEntry* m_new_cache_entry);
388 void unset_cache_entry(${{self.EntryType.c_ident}}*& m_cache_entry_ptr);
391 if self.TBEType != None:
395 void set_tbe(${{self.TBEType.c_ident}}*& m_tbe_ptr, ${ident}_TBE* m_new_tbe);
396 void unset_tbe(${{self.TBEType.c_ident}}*& m_tbe_ptr);
404 if self.TBEType != None and self.EntryType != None:
405 for action in self.actions.itervalues():
407 code('void ${{action.ident}}(${{self.TBEType.c_ident}}*& '
408 'm_tbe_ptr, ${{self.EntryType.c_ident}}*& '
410 elif self.TBEType != None:
411 for action in self.actions.itervalues():
413 code('void ${{action.ident}}(${{self.TBEType.c_ident}}*& '
415 elif self.EntryType != None:
416 for action in self.actions.itervalues():
418 code('void ${{action.ident}}(${{self.EntryType.c_ident}}*& '
421 for action in self.actions.itervalues():
430 for var in self.objects:
439 def printControllerCC(self, path, includes):
442 code = self.symtab.codeFormatter()
443 ident = self.ident
444 c_ident = "%s_Controller" % self.ident
450 * Created by slicc definition of Module "${{self.short}}"
466 for f in self.debug_flags:
487 for var in self.objects:
492 num_in_ports = len(self.in_ports)
531 for param in self.config_parameters:
565 MachineType machine_type = string_to_MachineType("${{self.ident}}");
576 for var in self.config_parameters:
612 for var in self.objects:
640 for prefetcher in self.prefetchers:
644 for port in self.in_ports:
650 for trans in self.transitions:
659 state = "%s_State_%s" % (self.ident, trans.state.ident)
660 event = "%s_Event_%s" % (self.ident, trans.event.ident)
671 for port in self.in_ports:
676 for port in self.in_ports:
681 for param in self.config_parameters:
687 for param in self.config_parameters:
884 if self.EntryType != None:
889 $c_ident::set_cache_entry(${{self.EntryType.c_ident}}*& m_cache_entry_ptr, AbstractCacheEntry* m_new_cache_entry)
891 m_cache_entry_ptr = (${{self.EntryType.c_ident}}*)m_new_cache_entry;
895 $c_ident::unset_cache_entry(${{self.EntryType.c_ident}}*& m_cache_entry_ptr)
901 if self.TBEType != None:
906 $c_ident::set_tbe(${{self.TBEType.c_ident}}*& m_tbe_ptr, ${{self.TBEType.c_ident}}* m_new_tbe)
912 $c_ident::unset_tbe(${{self.TBEType.c_ident}}*& m_tbe_ptr)
928 for param in self.config_parameters:
939 if self.TBEType != None and self.EntryType != None:
940 for action in self.actions.itervalues():
947 $c_ident::${{action.ident}}(${{self.TBEType.c_ident}}*& m_tbe_ptr, ${{self.EntryType.c_ident}}*& m_cache_entry_ptr, Addr addr)
960 elif self.TBEType != None:
961 for action in self.actions.itervalues():
968 $c_ident::${{action.ident}}(${{self.TBEType.c_ident}}*& m_tbe_ptr, Addr addr)
975 elif self.EntryType != None:
976 for action in self.actions.itervalues():
983 $c_ident::${{action.ident}}(${{self.EntryType.c_ident}}*& m_cache_entry_ptr, Addr addr)
991 for action in self.actions.itervalues():
1005 for func in self.functions:
1015 for var in self.objects:
1021 for var in self.config_parameters:
1034 def printCWakeup(self, path, includes):
1037 code = self.symtab.codeFormatter()
1038 ident = self.ident
1041 if len(self.request_types) == 0:
1046 // ${ident}: ${{self.short}}
1057 for f in self.debug_flags:
1079 port_to_buf_map, in_msg_bufs, msg_bufs = self.getBufferMaps(ident)
1109 for port in self.in_ports:
1157 code.write(path, "%s_Wakeup.cc" % self.ident)
1159 def printCSwitch(self, path):
1162 code = self.symtab.codeFormatter()
1163 ident = self.ident
1167 // ${ident}: ${{self.short}}
1189 if self.EntryType != None:
1191 ${{self.EntryType.c_ident}}* m_cache_entry_ptr,
1193 if self.TBEType != None:
1195 ${{self.TBEType.c_ident}}* m_tbe_ptr,
1203 if self.TBEType != None and self.EntryType != None:
1205 elif self.TBEType != None:
1207 elif self.EntryType != None:
1221 if self.TBEType != None and self.EntryType != None:
1223 elif self.TBEType != None:
1225 elif self.EntryType != None:
1230 port_to_buf_map, in_msg_bufs, msg_bufs = self.getBufferMaps(ident)
1248 if self.TBEType != None and self.EntryType != None:
1251 elif self.TBEType != None:
1254 elif self.EntryType != None:
1291 if self.TBEType != None:
1293 ${{self.TBEType.c_ident}}*& m_tbe_ptr,
1295 if self.EntryType != None:
1297 ${{self.EntryType.c_ident}}*& m_cache_entry_ptr,
1308 for trans in self.transitions:
1310 (self.ident, trans.state.ident, self.ident, trans.event.ident)
1312 case = self.symtab.codeFormatter()
1346 ''' % (self.ident, request_type.ident)
1369 if self.TBEType != None and self.EntryType != None:
1372 elif self.TBEType != None:
1375 elif self.EntryType != None:
1410 code.write(path, "%s_Transitions.cc" % self.ident)
1416 def frameRef(self, click_href, click_target, over_href, over_num, text):
1417 code = self.symtab.codeFormatter(fix_newlines=False)
1426 def writeHTMLFiles(self, path):
1428 self.printHTMLTransitions(path, None)
1431 for state in self.states.itervalues():
1432 self.printHTMLTransitions(path, state)
1435 for action in self.actions.itervalues():
1436 name = "%s_action_%s.html" % (self.ident, action.ident)
1441 for state in self.states.itervalues():
1442 name = "%s_State_%s.html" % (self.ident, state.ident)
1447 for event in self.events.itervalues():
1448 name = "%s_Event_%s.html" % (self.ident, event.ident)
1452 def printHTMLTransitions(self, path, active_state):
1453 code = self.symtab.codeFormatter()
1459 <H1 align="center">${{html.formatShorthand(self.short)}}:
1462 for i,machine in enumerate(self.symtab.getAllType(StateMachine)):
1468 if machine == self:
1482 for event in self.events.itervalues():
1483 href = "%s_Event_%s.html" % (self.ident, event.ident)
1484 ref = self.frameRef(href, "Status", href, "1", event.short)
1489 for state in self.states.itervalues():
1496 click = "%s_table_%s.html" % (self.ident, state.ident)
1497 over = "%s_State_%s.html" % (self.ident, state.ident)
1499 ref = self.frameRef(click, "Table", over, "1", state.short)
1506 for event in self.events.itervalues():
1507 trans = self.table.get((state,event), None)
1543 href = "%s_action_%s.html" % (self.ident, action.ident)
1544 ref = self.frameRef(href, "Status", href, "1",
1550 click = "%s_table_%s.html" % (self.ident, next.ident)
1551 over = "%s_State_%s.html" % (self.ident, next.ident)
1552 ref = self.frameRef(click, "Table", over, "1", next.short)
1562 click = "%s_table_%s.html" % (self.ident, state.ident)
1563 over = "%s_State_%s.html" % (self.ident, state.ident)
1564 ref = self.frameRef(click, "Table", over, "1", state.short)
1575 for event in self.events.itervalues():
1576 href = "%s_Event_%s.html" % (self.ident, event.ident)
1577 ref = self.frameRef(href, "Status", href, "1", event.short)
1587 name = "%s_table_%s.html" % (self.ident, active_state.ident)
1589 name = "%s_table.html" % self.ident