Mercurial > hg > truffle
comparison src/share/vm/oops/instanceKlass.cpp @ 1751:2528b5bd749c
6980262: Memory leak when exception is thrown in static initializer
Summary: Use resource memory instead of c-heap for the exception message
Reviewed-by: phh, jmasa
author | kamg |
---|---|
date | Fri, 27 Aug 2010 15:05:28 -0400 |
parents | 9d7a8ab3736b |
children | d5d065957597 |
comparison
equal
deleted
inserted
replaced
1750:c7004d700b49 | 1751:2528b5bd749c |
---|---|
380 DTRACE_CLASSINIT_PROBE_WAIT(erroneous, instanceKlass::cast(this_oop()), -1,wait); | 380 DTRACE_CLASSINIT_PROBE_WAIT(erroneous, instanceKlass::cast(this_oop()), -1,wait); |
381 ResourceMark rm(THREAD); | 381 ResourceMark rm(THREAD); |
382 const char* desc = "Could not initialize class "; | 382 const char* desc = "Could not initialize class "; |
383 const char* className = this_oop->external_name(); | 383 const char* className = this_oop->external_name(); |
384 size_t msglen = strlen(desc) + strlen(className) + 1; | 384 size_t msglen = strlen(desc) + strlen(className) + 1; |
385 char* message = NEW_C_HEAP_ARRAY(char, msglen); | 385 char* message = NEW_RESOURCE_ARRAY(char, msglen); |
386 if (NULL == message) { | 386 if (NULL == message) { |
387 // Out of memory: can't create detailed error message | 387 // Out of memory: can't create detailed error message |
388 THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), className); | 388 THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), className); |
389 } else { | 389 } else { |
390 jio_snprintf(message, msglen, "%s%s", desc, className); | 390 jio_snprintf(message, msglen, "%s%s", desc, className); |