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/arch/dalvik/register.c | |
parent | 6bde4016160057a22234d4ed698903dca52ce162 (diff) |
Shared all Dalvik operands between all their users.
Diffstat (limited to 'src/arch/dalvik/register.c')
-rw-r--r-- | src/arch/dalvik/register.c | 82 |
1 files changed, 73 insertions, 9 deletions
diff --git a/src/arch/dalvik/register.c b/src/arch/dalvik/register.c index d112a86..d455eb2 100644 --- a/src/arch/dalvik/register.c +++ b/src/arch/dalvik/register.c @@ -62,6 +62,12 @@ static void g_dalvik_register_class_init(GDalvikRegisterClass *); /* Initialise une instance de registre Dalvik. */ static void g_dalvik_register_init(GDalvikRegister *); +/* Supprime toutes les références externes. */ +static void g_dalvik_register_dispose(GDalvikRegister *); + +/* Procède à la libération totale de la mémoire. */ +static void g_dalvik_register_finalize(GDalvikRegister *); + /* Initialise un nouvel objet partagé avec des informations. */ static bool g_dalvik_register_do_init(GDalvikRegister *, const uint16_t *); @@ -110,8 +116,14 @@ G_DEFINE_TYPE(GDalvikRegister, g_dalvik_register, G_TYPE_ARCH_REGISTER); static void g_dalvik_register_class_init(GDalvikRegisterClass *klass) { + GObjectClass *object; /* Autre version de la classe */ GArchRegisterClass *register_class; /* Classe de haut niveau */ + object = G_OBJECT_CLASS(klass); + + object->dispose = (GObjectFinalizeFunc/* ! */)g_dalvik_register_dispose; + object->finalize = (GObjectFinalizeFunc)g_dalvik_register_finalize; + register_class = G_ARCH_REGISTER_CLASS(klass); register_class->init = (init_shared_fc)g_dalvik_register_do_init; @@ -144,6 +156,44 @@ static void g_dalvik_register_init(GDalvikRegister *reg) /****************************************************************************** * * +* Paramètres : reg = instance d'objet GLib à traiter. * +* * +* Description : Supprime toutes les références externes. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_dalvik_register_dispose(GDalvikRegister *reg) +{ + G_OBJECT_CLASS(g_dalvik_register_parent_class)->dispose(G_OBJECT(reg)); + +} + + +/****************************************************************************** +* * +* Paramètres : reg = instance d'objet GLib à traiter. * +* * +* Description : Procède à la libération totale de la mémoire. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void g_dalvik_register_finalize(GDalvikRegister *reg) +{ + G_OBJECT_CLASS(g_dalvik_register_parent_class)->finalize(G_OBJECT(reg)); + +} + + +/****************************************************************************** +* * * Paramètres : index = indice du registre correspondant. * * * * Description : Crée une réprésentation de registre Dalvik. * @@ -160,10 +210,6 @@ GDalvikRegister *g_dalvik_register_new(uint16_t index) result = G_DALVIK_REGISTER(g_share_manager_get(_dalvik_register_manager, &index)); - //result = g_object_new(G_TYPE_DALVIK_REGISTER, NULL); - - //result->index = index; - return result; } @@ -198,7 +244,7 @@ static bool g_dalvik_register_do_init(GDalvikRegister *reg, const uint16_t *inde * * * Description : Indique l'objet partagé correspond à une description donnée. * * * -* Retour : true si les détails centraux sont partagés, false sinon. * +* Retour : TRUE si les détails centraux sont partagés, FALSE sinon. * * * * Remarques : - * * * @@ -206,7 +252,7 @@ static bool g_dalvik_register_do_init(GDalvikRegister *reg, const uint16_t *inde static gboolean g_dalvik_register_compare_info(const GDalvikRegister *reg, const uint16_t *index) { - bool result; /* Bilan à retourner */ + gboolean result; /* Bilan à retourner */ result = (reg->index == *index); @@ -355,18 +401,36 @@ bool init_dalvik_register_sharing(void) * * * Paramètres : - * * * -* Description : Supprime les mécanismes de partage des registres Dalvik. * +* Description : Imprime des statistiques quant aux partages dans l'archi. * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ - -void exit_dalvik_register_sharing(void) +#ifdef DEBUG_DUMP_STATS +void dump_dalvik_register_share_stats(void) { + g_share_manager_dump_stats(_dalvik_register_manager); +} +#endif +/****************************************************************************** +* * +* Paramètres : - * +* * +* Description : Supprime les mécanismes de partage des registres Dalvik. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void exit_dalvik_register_sharing(void) +{ + g_object_unref(G_OBJECT(_dalvik_register_manager)); } |