RFR (XXS): 8075288: malloc without free in VM_PopulateDumpSharedSpace::doit()

Kim Barrett kim.barrett at oracle.com
Thu Apr 9 21:43:09 UTC 2015


On Apr 9, 2015, at 1:25 PM, Jungwoo Ha <jwha at google.com> wrote:
> 
> Can someone sponsor this change?
> 
> https://bugs.openjdk.java.net/browse/JDK-8075288
> http://cr.openjdk.java.net/~jwha/8075288/webrev.00

I think the change is correct.  Good find!

However, it’s not clear to me why this is using malloc (and now free), rather than stack allocation.
The size is a declared variable at the allocation point, but it’s initialized from a constant with a
not big value (17) and never modified, so could be changed to be a constant.

That is, instead of
 
 592   char* saved_vtbl = (char*)os::malloc(vtbl_list_size * sizeof(void*), mtClass);
 593   memmove(saved_vtbl, vtbl_list, vtbl_list_size * sizeof(void*));

use

  void* saved_vtbl[vtbl_list_size];
  memmove(saved_vtbl, vtbl_list, ARRAY_SIZE(saved_vtbl));

Maybe the worry is that vtbl_list_size might not always be a small constant?

Probably this question of whether to use malloc/free here at all should be a separate CR.




More information about the hotspot-gc-dev mailing list