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] Process nested scopes DWARF informations
[simgrid.git]
/
src
/
mc
/
mc_global.c
diff --git
a/src/mc/mc_global.c
b/src/mc/mc_global.c
index
12208e4
..
c63ea21
100644
(file)
--- a/
src/mc/mc_global.c
+++ b/
src/mc/mc_global.c
@@
-155,6
+155,14
@@
const char* colors[13];
/************************** Free functions *************************/
/************************** Free functions *************************/
+void mc_frame_free(dw_frame_t frame){
+ xbt_free(frame->name);
+ mc_dwarf_location_list_clear(&(frame->frame_base));
+ xbt_dynar_free(&(frame->variables));
+ xbt_dynar_free(&(frame->scopes));
+ xbt_free(frame);
+}
+
void dw_type_free(dw_type_t t){
xbt_free(t->name);
xbt_free(t->dw_type_id);
void dw_type_free(dw_type_t t){
xbt_free(t->name);
xbt_free(t->dw_type_id);
@@
-163,10
+171,6
@@
void dw_type_free(dw_type_t t){
xbt_free(t);
}
xbt_free(t);
}
-static void dw_type_free_voidp(void *t){
- dw_type_free((dw_type_t) * (void **) t);
-}
-
void dw_variable_free(dw_variable_t v){
if(v){
xbt_free(v->name);
void dw_variable_free(dw_variable_t v){
if(v){
xbt_free(v->name);
@@
-184,18
+188,20
@@
void dw_variable_free_voidp(void *t){
// ***** object_info
// ***** object_info
+
+
mc_object_info_t MC_new_object_info(void) {
mc_object_info_t res = xbt_new0(s_mc_object_info_t, 1);
mc_object_info_t MC_new_object_info(void) {
mc_object_info_t res = xbt_new0(s_mc_object_info_t, 1);
- res->subprograms = xbt_d
ynar_new(sizeof(dw_frame_t), NULL
);
+ res->subprograms = xbt_d
ict_new_homogeneous((void (*)(void*))mc_frame_free
);
res->global_variables = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
res->global_variables = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
- res->types = xbt_dict_new_homogeneous(
NULL
);
+ res->types = xbt_dict_new_homogeneous(
(void (*)(void*))dw_type_free
);
res->full_types_by_name = xbt_dict_new_homogeneous(NULL);
return res;
}
void MC_free_object_info(mc_object_info_t* info) {
xbt_free(&(*info)->file_name);
res->full_types_by_name = xbt_dict_new_homogeneous(NULL);
return res;
}
void MC_free_object_info(mc_object_info_t* info) {
xbt_free(&(*info)->file_name);
- xbt_d
ynar
_free(&(*info)->subprograms);
+ xbt_d
ict
_free(&(*info)->subprograms);
xbt_dynar_free(&(*info)->global_variables);
xbt_dict_free(&(*info)->types);
xbt_dict_free(&(*info)->full_types_by_name);
xbt_dynar_free(&(*info)->global_variables);
xbt_dict_free(&(*info)->types);
xbt_dict_free(&(*info)->full_types_by_name);
@@
-229,8
+235,9
@@
static void MC_make_functions_index(mc_object_info_t info) {
// Populate the array:
dw_frame_t frame = NULL;
// Populate the array:
dw_frame_t frame = NULL;
- unsigned cursor = 0;
- xbt_dynar_foreach(info->subprograms, cursor, frame) {
+ xbt_dict_cursor_t cursor;
+ char* key;
+ xbt_dict_foreach(info->subprograms, cursor, key, frame) {
if(frame->low_pc==NULL)
continue;
s_mc_function_index_item_t entry;
if(frame->low_pc==NULL)
continue;
s_mc_function_index_item_t entry;
@@
-298,9
+305,10
@@
static void MC_post_process_variables(mc_object_info_t info) {
}
static void MC_post_process_functions(mc_object_info_t info) {
}
static void MC_post_process_functions(mc_object_info_t info) {
- unsigned cursor = 0;
+ xbt_dict_cursor_t cursor;
+ char* key;
dw_frame_t function = NULL;
dw_frame_t function = NULL;
- xbt_d
ynar_foreach(info->subprograms, cursor
, function) {
+ xbt_d
ict_foreach(info->subprograms, cursor, key
, function) {
unsigned cursor2 = 0;
dw_variable_t variable = NULL;
xbt_dynar_foreach(function->variables, cursor2, variable) {
unsigned cursor2 = 0;
dw_variable_t variable = NULL;
xbt_dynar_foreach(function->variables, cursor2, variable) {
@@
-601,13
+609,13
@@
void MC_ignore_global_variable(const char *name){
}
static void MC_ignore_local_variable_in_object(const char *var_name, const char *frame_name, mc_object_info_t info) {
}
static void MC_ignore_local_variable_in_object(const char *var_name, const char *frame_name, mc_object_info_t info) {
-
unsigned
cursor2;
+
xbt_dict_cursor_t
cursor2;
dw_frame_t frame;
int start, end;
int cursor = 0;
dw_variable_t current_var;
dw_frame_t frame;
int start, end;
int cursor = 0;
dw_variable_t current_var;
-
- xbt_d
ynar_foreach(info->subprograms, cursor2
, frame) {
+ char* key;
+ xbt_d
ict_foreach(info->subprograms, cursor2, key
, frame) {
if(frame_name && strcmp(frame_name, frame->name))
continue;
if(frame_name && strcmp(frame_name, frame->name))
continue;