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
More verbose on cycle detection
[simgrid.git]
/
src
/
gras
/
DataDesc
/
ddt_exchange.c
diff --git
a/src/gras/DataDesc/ddt_exchange.c
b/src/gras/DataDesc/ddt_exchange.c
index
28e07a4
..
1c36892
100644
(file)
--- a/
src/gras/DataDesc/ddt_exchange.c
+++ b/
src/gras/DataDesc/ddt_exchange.c
@@
-110,7
+110,6
@@
gras_datadesc_memcpy_rec(gras_cbps_t state,
{
- xbt_ex_t e;
unsigned int cpt;
gras_datadesc_type_t sub_type; /* type on which we recurse */
int count = 0;
@@
-243,20
+242,12
@@
gras_datadesc_memcpy_rec(gras_cbps_t state,
}
o_ref = (char **) src;
- reference_is_to_cpy = 0;
- TRY {
- if (detect_cycle) {
- /* return ignored. Just checking whether it's known or not */
- n_ref = xbt_dict_get_ext(refs, (char *) o_ref, sizeof(char *));
- } else {
- reference_is_to_cpy = 1;
- }
- }
- CATCH(e) {
- if (e.category != not_found_error)
- RETHROW;
- reference_is_to_cpy = 1;
- xbt_ex_free(e);
+ reference_is_to_cpy = 1;
+ if (detect_cycle &&
+ (n_ref=xbt_dict_get_or_null_ext(refs, (char *) o_ref, sizeof(char *)))) {
+ /* already known, no need to copy it */
+ INFO0("Cycle detected");
+ reference_is_to_cpy = 0;
}
if (reference_is_to_cpy) {
@@
-421,7
+412,6
@@
gras_datadesc_send_rec(gras_socket_t sock,
char *data, int detect_cycle)
{
- xbt_ex_t e;
unsigned int cpt;
gras_datadesc_type_t sub_type; /* type on which we recurse */
@@
-539,19
+529,11
@@
gras_datadesc_send_rec(gras_socket_t sock,
break;
}
- reference_is_to_send = 0;
- TRY {
- if (detect_cycle)
- /* return ignored. Just checking whether it's known or not */
- xbt_dict_get_ext(refs, (char *) ref, sizeof(char *));
- else
- reference_is_to_send = 1;
- }
- CATCH(e) {
- if (e.category != not_found_error)
- RETHROW;
- reference_is_to_send = 1;
- xbt_ex_free(e);
+ reference_is_to_send = 1;
+ /* return ignored. Just checking whether it's known or not */
+ if (detect_cycle && xbt_dict_get_or_null_ext(refs, (char *) ref, sizeof(char *))) {
+ INFO0("Cycle detected");
+ reference_is_to_send = 0;
}
if (reference_is_to_send) {
@@
-679,7
+661,6
@@
gras_datadesc_recv_rec(gras_socket_t sock,
unsigned int cpt;
gras_datadesc_type_t sub_type;
- xbt_ex_t e;
VERB2("Recv a %s @%p", type->name, (void *) l_data);
xbt_assert(l_data);
@@
-800,21
+781,12
@@
gras_datadesc_recv_rec(gras_socket_t sock,
break;
}
- reference_is_to_recv = 0;
- TRY {
- if (detect_cycle) {
- l_ref =
- xbt_dict_get_ext(refs, (char *) r_ref,
- pointer_type->size[r_arch]);
- } else {
- reference_is_to_recv = 1;
- }
- }
- CATCH(e) {
- if (e.category != not_found_error)
- RETHROW;
- reference_is_to_recv = 1;
- xbt_ex_free(e);
+ reference_is_to_recv = 1;
+ if (detect_cycle && (l_ref =
+ xbt_dict_get_or_null_ext(refs, (char *) r_ref,
+ pointer_type->size[r_arch]))) {
+ reference_is_to_recv = 0;
+ INFO0("Cycle detected");
}
if (reference_is_to_recv) {