dotgnu-pnet
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet] [patch #7806] Fixed a memory leak in the libjitjit block a


From: Patrick van Beem
Subject: [Dotgnu-pnet] [patch #7806] Fixed a memory leak in the libjitjit block administration
Date: Mon, 25 Jun 2012 06:09:56 +0000
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5

URL:
  <http://savannah.gnu.org/patch/?7806>

                 Summary: Fixed a memory leak in the libjitjit block
administration
                 Project: DotGNU Portable.NET
            Submitted by: pvbeem
            Submitted on: Mon 25 Jun 2012 06:09:55 AM GMT
                Category: None
                Priority: 5 - Normal
                  Status: None
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any

    _______________________________________________________

Details:

There was a memory leak in the libjit block administration for functions. The
deleted block chain was not buildup correctly. Therefore, blocks deleted
during optimization were never freed.

Changed this:

/* Block may not be deleted right when it was found useless from
   the control flow perspective as it might be referenced from
   elsewhere, for instance, from some jit_value_t */
static void
delete_block(jit_block_t block)
{
        jit_free(block->succs);
        block->succs = 0;
        jit_free(block->preds);
        block->preds = 0;
        jit_free(block->insns);
        block->insns = 0;

        block->next = block->func->builder->deleted_blocks;
        block->func->builder->deleted_blocks = block->next;
}

to:

        :
        :
        block->insns = 0;

        jit_block_t oldhead = block->func->builder->deleted_blocks;
        block->func->builder->deleted_blocks = block;
        block->next = oldhead;
        block->prev = NULL;
        if (oldhead)
        {
                oldhead->prev = block;
        }
}





    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/patch/?7806>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]