00001 #ifndef DATA_CONFLICT_TABLE_H_INCLUDED_
00002 #define DATA_CONFLICT_TABLE_H_INCLUDED_
00003
00004 #include<vector>
00005
00006 #include "segment_graph.h"
00007 #include "segment.h"
00008 #include "conflict_table.h"
00009
00010 #include "../internal_representation/path_instance_mapper.h"
00011 #include "data_conflict_ast_attributes.h"
00012
00013
00014 namespace risc {
00015
00016 namespace sg {
00017
00025 class DataConflictTable: public ConflictTable {
00026
00027 public:
00028
00032 DataConflictTable(
00033 SegmentGraph &graph,
00034 PathInstanceMapper &path_instance_mapper,
00035 bool debugging);
00036
00041 virtual void determine_conflict_table();
00042
00048 bool data_conflict_between(VertexDescriptor first, VertexDescriptor second,
00049 int row, int column, int inst_id_first, int inst_id_second);
00050
00057 void color_members_of_class(SgVariableSymbol *var_symbol,
00058 DataConflictAstAttributes::Status color);
00059
00066 void uncolor_members_of_class(SgVariableSymbol *var_symbol);
00067
00074 bool check_members_of_class(SgVariableSymbol *var_symbol,
00075 DataConflictAstAttributes::Status color);
00076
00083 SgVariableSymbol*
00084 get_mapped_variable(SgVariableSymbol *variable, int instance_id);
00085 };
00086
00087
00088 };
00089
00090 };
00091
00092 #endif
00093
00094