summaryrefslogtreecommitdiff
path: root/src/arch/dalvik/register.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2016-12-18 15:32:27 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2016-12-18 15:32:27 (GMT)
commitb0bcf250999b2242019f137e38f52390a86e71cd (patch)
treef3436a3ddbbd4773005ecb891630a815ed001341 /src/arch/dalvik/register.c
parent6bde4016160057a22234d4ed698903dca52ce162 (diff)
Shared all Dalvik operands between all their users.
Diffstat (limited to 'src/arch/dalvik/register.c')
-rw-r--r--src/arch/dalvik/register.c82
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));
}