A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
[mc] Make type_is an integer instead of a string and use std:: containers
[simgrid.git]
/
src
/
mc
/
mc_compare.cpp
diff --git
a/src/mc/mc_compare.cpp
b/src/mc/mc_compare.cpp
index
284cc51
..
abeb22d
100644
(file)
--- a/
src/mc/mc_compare.cpp
+++ b/
src/mc/mc_compare.cpp
@@
-108,8
+108,7
@@
static int compare_areas_with_type(struct mc_compare_state& state,
{
mc_process_t process = &mc_model_checker->process();
- unsigned int cursor = 0;
- mc_type_t member, subtype, subsubtype;
+ mc_type_t subtype, subsubtype;
int elm_size, i, res;
top:
@@
-211,7
+210,7
@@
static int compare_areas_with_type(struct mc_compare_state& state,
else if (region1->contain(simgrid::mc::remote(addr_pointed1))) {
if (!region2->contain(simgrid::mc::remote(addr_pointed2)))
return 1;
- if (
type->dw_type_id.empty()
)
+ if (
!type->type_id
)
return (addr_pointed1 != addr_pointed2);
else {
return compare_areas_with_type(state, process_index,
@@
-232,18
+231,18
@@
static int compare_areas_with_type(struct mc_compare_state& state,
}
case DW_TAG_structure_type:
case DW_TAG_class_type:
-
xbt_dynar_foreach(type->members, cursor, member
) {
+
for(simgrid::mc::Type& member : type->members
) {
void *member1 =
- mc_member_resolve(real_area1, type, member, snapshot1, process_index);
+ mc_member_resolve(real_area1, type,
&
member, snapshot1, process_index);
void *member2 =
- mc_member_resolve(real_area2, type, member, snapshot2, process_index);
+ mc_member_resolve(real_area2, type,
&
member, snapshot2, process_index);
mc_mem_region_t subregion1 = mc_get_region_hinted(member1, snapshot1, process_index, region1);
mc_mem_region_t subregion2 = mc_get_region_hinted(member2, snapshot2, process_index, region2);
res =
compare_areas_with_type(state, process_index,
member1, snapshot1, subregion1,
member2, snapshot2, subregion2,
- member
->
subtype, pointer_level);
+ member
.
subtype, pointer_level);
if (res == 1)
return res;
}
@@
-295,32
+294,28
@@
static int compare_global_variables(mc_object_info_t object_info,
struct mc_compare_state state;
- xbt_dynar_t variables;
- int res;
- unsigned int cursor = 0;
- dw_variable_t current_var;
+ std::vector<simgrid::mc::Variable>& variables = object_info->global_variables;
- variables = object_info->global_variables;
-
- xbt_dynar_foreach(variables, cursor, current_var) {
+ for (simgrid::mc::Variable& current_var : variables) {
// If the variable is not in this object, skip it:
// We do not expect to find a pointer to something which is not reachable
// by the global variables.
- if ((char *) current_var
->
address < (char *) object_info->start_rw
- || (char *) current_var
->
address > (char *) object_info->end_rw)
+ if ((char *) current_var
.
address < (char *) object_info->start_rw
+ || (char *) current_var
.
address > (char *) object_info->end_rw)
continue;
- mc_type_t bvariable_type = current_var
->
type;
- res =
+ mc_type_t bvariable_type = current_var
.
type;
+
int
res =
compare_areas_with_type(state, process_index,
- (char *) current_var
->
address, snapshot1, r1,
- (char *) current_var
->
address, snapshot2, r2,
+ (char *) current_var
.
address, snapshot1, r1,
+ (char *) current_var
.
address, snapshot2, r2,
bvariable_type, 0);
if (res == 1) {
XBT_TRACE3(mc, global_diff, -1, -1, current_var->name);
XBT_VERB("Global variable %s (%p) is different between snapshots",
- current_var->name, (char *) current_var->address);
+ current_var.name.c_str(),
+ (char *) current_var.address);
return 1;
}
@@
-353,9
+348,12
@@
static int compare_local_variables(int process_index,
|| current_var1->ip != current_var2->ip) {
// TODO, fix current_varX->subprogram->name to include name if DW_TAG_inlined_subprogram
XBT_VERB
- ("Different name of variable (%s - %s) or frame (%s - %s) or ip (%lu - %lu)",
- current_var1->name.c_str(), current_var2->name.c_str(),
- current_var1->subprogram->name, current_var2->subprogram->name,
+ ("Different name of variable (%s - %s) "
+ "or frame (%s - %s) or ip (%lu - %lu)",
+ current_var1->name.c_str(),
+ current_var2->name.c_str(),
+ current_var1->subprogram->name.c_str(),
+ current_var2->subprogram->name.c_str(),
current_var1->ip, current_var2->ip);
return 1;
}
@@
-372,9
+370,12
@@
static int compare_local_variables(int process_index,
// TODO, fix current_varX->subprogram->name to include name if DW_TAG_inlined_subprogram
XBT_TRACE3(mc, local_diff, -1, -1, current_var1->name);
XBT_VERB
- ("Local variable %s (%p - %p) in frame %s is different between snapshots",
- current_var1->name.c_str(), current_var1->address, current_var2->address,
- current_var1->subprogram->name);
+ ("Local variable %s (%p - %p) in frame %s "
+ "is different between snapshots",
+ current_var1->name.c_str(),
+ current_var1->address,
+ current_var2->address,
+ current_var1->subprogram->name.c_str());
return res;
}
cursor++;