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
rename AsRoute to BypassRoute, and move it to its own file
[simgrid.git]
/
src
/
mc
/
compare.cpp
diff --git
a/src/mc/compare.cpp
b/src/mc/compare.cpp
index
72e930b
..
e672746
100644
(file)
--- a/
src/mc/compare.cpp
+++ b/
src/mc/compare.cpp
@@
-1,10
+1,9
@@
-/* Copyright (c) 2008-2016. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2008-2016. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-/** \file
mc_compare.cpp Memory snapshooting and comparison
*/
+/** \file
compare.cpp Memory snapshooting and comparison
*/
#include <cinttypes>
#include <cinttypes>
@@
-94,10
+93,10
@@
struct HeapLocation {
static inline
HeapLocationPair makeHeapLocationPair(int block1, int fragment1, int block2, int fragment2)
{
static inline
HeapLocationPair makeHeapLocationPair(int block1, int fragment1, int block2, int fragment2)
{
- return simgrid::mc::HeapLocationPair
(
{
+ return simgrid::mc::HeapLocationPair
{
{
simgrid::mc::HeapLocation(block1, fragment1),
simgrid::mc::HeapLocation(block2, fragment2)
simgrid::mc::HeapLocation(block1, fragment1),
simgrid::mc::HeapLocation(block2, fragment2)
- }
)
;
+ }
}
;
}
struct HeapArea : public HeapLocation {
}
struct HeapArea : public HeapLocation {
@@
-1016,7
+1015,7
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
int new_size1 = -1, new_size2 = -1;
simgrid::mc::Type *new_type1 = nullptr, *new_type2 = nullptr;
int new_size1 = -1, new_size2 = -1;
simgrid::mc::Type *new_type1 = nullptr, *new_type2 = nullptr;
-
int match_pairs = 0
;
+
bool match_pairs = false
;
// This is the address of std_heap->heapinfo in the application process:
void* heapinfo_address = &((xbt_mheap_t) process->heap_address)->heapinfo;
// This is the address of std_heap->heapinfo in the application process:
void* heapinfo_address = &((xbt_mheap_t) process->heap_address)->heapinfo;
@@
-1028,9
+1027,10
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
malloc_info heapinfo_temp1, heapinfo_temp2;
malloc_info heapinfo_temp1, heapinfo_temp2;
+ simgrid::mc::HeapLocationPairs current;
if (previous == nullptr) {
if (previous == nullptr) {
- previous =
new HeapLocationPairs()
;
- match_pairs =
1
;
+ previous =
¤t
;
+ match_pairs =
true
;
}
// Get block number:
}
// Get block number:
@@
-1045,10
+1045,8
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
if (is_block_stack((int) block1) && is_block_stack((int) block2)) {
previous->insert(simgrid::mc::makeHeapLocationPair(
block1, -1, block2, -1));
if (is_block_stack((int) block1) && is_block_stack((int) block2)) {
previous->insert(simgrid::mc::makeHeapLocationPair(
block1, -1, block2, -1));
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return 0;
}
return 0;
}
@@
-1057,8
+1055,6
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
|| (block1 > (ssize_t) state.processStates[0].heapsize) || (block1 < 1)
|| ((char *) area2 < (char *) state.std_heap_copy.heapbase)
|| (block2 > (ssize_t) state.processStates[1].heapsize) || (block2 < 1)) {
|| (block1 > (ssize_t) state.processStates[0].heapsize) || (block1 < 1)
|| ((char *) area2 < (char *) state.std_heap_copy.heapbase)
|| (block2 > (ssize_t) state.processStates[1].heapsize) || (block2 < 1)) {
- if (match_pairs)
- delete previous;
return 1;
}
return 1;
}
@@
-1098,10
+1094,8
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
if ((heapinfo1->type == MMALLOC_TYPE_FREE || heapinfo1->type==MMALLOC_TYPE_HEAPINFO)
&& (heapinfo2->type == MMALLOC_TYPE_FREE || heapinfo2->type ==MMALLOC_TYPE_HEAPINFO)) {
/* Free block */
if ((heapinfo1->type == MMALLOC_TYPE_FREE || heapinfo1->type==MMALLOC_TYPE_HEAPINFO)
&& (heapinfo2->type == MMALLOC_TYPE_FREE || heapinfo2->type ==MMALLOC_TYPE_HEAPINFO)) {
/* Free block */
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return 0;
}
return 0;
}
@@
-1117,10
+1111,8
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
if (state.equals_to1_(block1, 0).valid
&& state.equals_to2_(block2, 0).valid
&& state.blocksEqual(block1, block2)) {
if (state.equals_to1_(block1, 0).valid
&& state.equals_to2_(block2, 0).valid
&& state.blocksEqual(block1, block2)) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return 0;
}
return 0;
}
@@
-1128,32
+1120,21
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
if (type_size != (ssize_t) heapinfo1->busy_block.busy_size
&& type_size != (ssize_t) heapinfo2->busy_block.busy_size
&& (type->name.empty() || type->name == "struct s_smx_context")) {
if (type_size != (ssize_t) heapinfo1->busy_block.busy_size
&& type_size != (ssize_t) heapinfo2->busy_block.busy_size
&& (type->name.empty() || type->name == "struct s_smx_context")) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return -1;
}
}
return -1;
}
}
- if (heapinfo1->busy_block.size != heapinfo2->busy_block.size) {
- if (match_pairs)
- delete previous;
+ if (heapinfo1->busy_block.size != heapinfo2->busy_block.size)
return 1;
return 1;
- }
-
- if (heapinfo1->busy_block.busy_size != heapinfo2->busy_block.busy_size) {
- if (match_pairs)
- delete previous;
+ if (heapinfo1->busy_block.busy_size != heapinfo2->busy_block.busy_size)
return 1;
return 1;
- }
if (!previous->insert(simgrid::mc::makeHeapLocationPair(
block1, -1, block2, -1)).second) {
if (!previous->insert(simgrid::mc::makeHeapLocationPair(
block1, -1, block2, -1)).second) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return 0;
}
return 0;
}
@@
-1167,10
+1148,8
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
state.types2_(block2, 0) = type;
if (size <= 0) {
state.types2_(block2, 0) = type;
if (size <= 0) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return 0;
}
return 0;
}
@@
-1201,19
+1180,15
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
if (type_size != -1) {
if (heapinfo1->busy_frag.frag_size[frag1] == -1
|| heapinfo2->busy_frag.frag_size[frag2] == -1) {
if (type_size != -1) {
if (heapinfo1->busy_frag.frag_size[frag1] == -1
|| heapinfo2->busy_frag.frag_size[frag2] == -1) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return -1;
}
// ?
if (type_size != heapinfo1->busy_frag.frag_size[frag1]
|| type_size != heapinfo2->busy_frag.frag_size[frag2]) {
return -1;
}
// ?
if (type_size != heapinfo1->busy_frag.frag_size[frag1]
|| type_size != heapinfo2->busy_frag.frag_size[frag2]) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return -1;
}
}
return -1;
}
}
@@
-1222,10
+1197,8
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
if (state.equals_to1_(block1, frag1).valid
&& state.equals_to2_(block2, frag2).valid) {
if (offset1==offset2 && state.fragmentsEqual(block1, frag1, block2, frag2)) {
if (state.equals_to1_(block1, frag1).valid
&& state.equals_to2_(block2, frag2).valid) {
if (offset1==offset2 && state.fragmentsEqual(block1, frag1, block2, frag2)) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return 0;
}
}
return 0;
}
}
@@
-1233,16
+1206,11
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
if (heapinfo1->busy_frag.frag_size[frag1] !=
heapinfo2->busy_frag.frag_size[frag2]) {
if (type_size == -1) {
if (heapinfo1->busy_frag.frag_size[frag1] !=
heapinfo2->busy_frag.frag_size[frag2]) {
if (type_size == -1) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return -1;
return -1;
- } else {
- if (match_pairs)
- delete previous;
+ } else
return 1;
return 1;
- }
}
// Size of the fragment:
}
// Size of the fragment:
@@
-1290,10
+1258,8
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
get_offset_type(real_addr_frag2, state.types2_(block2, frag2),
offset2, size, snapshot2, process_index);
} else {
get_offset_type(real_addr_frag2, state.types2_(block2, frag2),
offset2, size, snapshot2, process_index);
} else {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return -1;
}
return -1;
}
@@
-1310,10
+1276,8
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
new_size2 = type->byte_size;
} else {
new_size2 = type->byte_size;
} else {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return -1;
}
}
return -1;
}
}
@@
-1326,18
+1290,14
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
if (offset1 == 0 && offset2 == 0
&& !previous->insert(simgrid::mc::makeHeapLocationPair(
block1, frag1, block2, frag2)).second) {
if (offset1 == 0 && offset2 == 0
&& !previous->insert(simgrid::mc::makeHeapLocationPair(
block1, frag1, block2, frag2)).second) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return 0;
}
if (size <= 0) {
return 0;
}
if (size <= 0) {
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
return 0;
}
return 0;
}
@@
-1346,11
+1306,8
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
heapinfo1->busy_frag.ignore[frag1]))
check_ignore = heapinfo1->busy_frag.ignore[frag1];
heapinfo1->busy_frag.ignore[frag1]))
check_ignore = heapinfo1->busy_frag.ignore[frag1];
- } else {
- if (match_pairs)
- delete previous;
+ } else
return 1;
return 1;
- }
/* Start comparison */
/* Start comparison */
@@
-1364,17
+1321,11
@@
int compare_heap_area(simgrid::mc::StateComparator& state, int process_index,
compare_heap_area_without_type(state, process_index, area1, area2, snapshot1, snapshot2,
previous, size, check_ignore);
compare_heap_area_without_type(state, process_index, area1, area2, snapshot1, snapshot2,
previous, size, check_ignore);
- if (res_compare == 1) {
- if (match_pairs)
- delete previous;
+ if (res_compare == 1)
return res_compare;
return res_compare;
- }
- if (match_pairs)
{
+ if (match_pairs)
state.match_equals(previous);
state.match_equals(previous);
- delete previous;
- }
-
return 0;
}
return 0;
}