diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2016-12-18 15:32:27 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2016-12-18 15:32:27 (GMT) |
commit | b0bcf250999b2242019f137e38f52390a86e71cd (patch) | |
tree | f3436a3ddbbd4773005ecb891630a815ed001341 /src/core | |
parent | 6bde4016160057a22234d4ed698903dca52ce162 (diff) |
Shared all Dalvik operands between all their users.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/processors.c | 54 | ||||
-rw-r--r-- | src/core/processors.h | 13 |
2 files changed, 66 insertions, 1 deletions
diff --git a/src/core/processors.c b/src/core/processors.c index 9c67a87..2b1e0ca 100644 --- a/src/core/processors.c +++ b/src/core/processors.c @@ -45,6 +45,9 @@ typedef struct _proc_t GType instance; /* Type à manipuler en interne */ init_arch_fc init; /* Phase d'intialisation */ +#ifdef DEBUG_DUMP_STATS + dump_arch_stats_fc dump; /* Affichage de statistiques */ +#endif exit_arch_fc exit; /* Phase de relâchement */ } proc_t; @@ -69,6 +72,7 @@ static proc_t *find_processor_by_key(const char *); * name = désignation humaine de l'architecture. * * instance = type GLib représentant le type à instancier. * * init = procédure d'initialisation de mécanismes internes.* +* dump = procédure d'affichage de statistiques. * * exit = procédure de suppression de mécanismes internes. * * * * Description : Enregistre un processeur pour une architecture donnée. * @@ -78,8 +82,11 @@ static proc_t *find_processor_by_key(const char *); * Remarques : - * * * ******************************************************************************/ - +#ifdef DEBUG_DUMP_STATS +bool register_processor_type(const char *key, const char *name, GType instance, init_arch_fc init, dump_arch_stats_fc dump, exit_arch_fc exit) +#else bool register_processor_type(const char *key, const char *name, GType instance, init_arch_fc init, exit_arch_fc exit) +#endif { bool result; /* Bilan à retourner */ proc_t *new; /* Nouvel élément à définir */ @@ -104,6 +111,9 @@ bool register_processor_type(const char *key, const char *name, GType instance, new->instance = instance; new->init = init; +#ifdef DEBUG_DUMP_STATS + new->dump = dump; +#endif new->exit = exit; } @@ -134,10 +144,18 @@ bool load_hard_coded_processors_definitions(void) result = true; result &= register_processor_type("armv7", "ARM v7", G_TYPE_ARMV7_PROCESSOR, +#ifdef DEBUG_DUMP_STATS + init_armv7_core, NULL, exit_armv7_core); +#else init_armv7_core, exit_armv7_core); +#endif result &= register_processor_type("dalvik", "Dalvik Virtual Machine", G_TYPE_DALVIK_PROCESSOR, +#ifdef DEBUG_DUMP_STATS + init_dalvik_core, dump_dalvik_share_stats, exit_dalvik_core); +#else init_dalvik_core, exit_dalvik_core); +#endif //result &= register_processor_type("jvm", "Java Virtual Machine", G_TYPE_JVM_PROCESSOR); @@ -278,3 +296,37 @@ GArchProcessor *get_arch_processor_for_type(const char *key) return result; } + + +/****************************************************************************** +* * +* Paramètres : proc = processeur associé à l'architecture à traiter. * +* * +* Description : Imprime des statistiques quant aux partages. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ +#ifdef DEBUG_DUMP_STATS +void display_share_stats(GArchProcessor *proc) +{ + GType type; /* Type de processeur */ + size_t i; /* Boucle de parcours */ + + type = G_OBJECT_TYPE(proc); + + G_LOCK(_pdef_access); + + for (i = 0; i < _processors_definitions_count; i++) + if (_processors_definitions[i].instance == type) + { + _processors_definitions[i].dump(); + break; + } + + G_UNLOCK(_pdef_access); + +} +#endif diff --git a/src/core/processors.h b/src/core/processors.h index 4f82dc3..6104c97 100644 --- a/src/core/processors.h +++ b/src/core/processors.h @@ -36,12 +36,21 @@ /* Mise en place de mécanismes internes */ typedef bool (* init_arch_fc) (void); +/* Affichage de statistiques */ +#ifdef DEBUG_DUMP_STATS +typedef void (* dump_arch_stats_fc) (void); +#endif + /* Suppression de mécanismes internes */ typedef void (* exit_arch_fc) (void); /* Enregistre un processeur pour une architecture donnée. */ +#ifdef DEBUG_DUMP_STATS +bool register_processor_type(const char *, const char *, GType, init_arch_fc, dump_arch_stats_fc, exit_arch_fc); +#else bool register_processor_type(const char *, const char *, GType, init_arch_fc, exit_arch_fc); +#endif /* Charge les définitions de processeurs "natifs". */ bool load_hard_coded_processors_definitions(void); @@ -55,6 +64,10 @@ const char *get_arch_processor_name(const char *); /* Fournit le processeur d'architecture correspondant à un type. */ GArchProcessor *get_arch_processor_for_type(const char *); +/* Imprime des statistiques quant aux partages. */ +#ifdef DEBUG_DUMP_STATS +void display_share_stats(GArchProcessor *); +#endif #endif /* _ANALYSIS_DB_COLLECTION_H */ |