提交 6758481d 编写于 作者: A anoll

8040085: dtrace/jsdt tests crash on solaris. found an unadvertised bad...

8040085: dtrace/jsdt tests crash on solaris. found an unadvertised bad scavengable oop in the code cache
Summary: Add CodeCache::add_scavenge_root_nmethod(this) to the dtrace-constructor of nmethod
Reviewed-by: roland, iveresov
上级 fb43258c
......@@ -771,7 +771,11 @@ nmethod::nmethod(
_hotness_counter = NMethodSweeper::hotness_counter_reset_val();
code_buffer->copy_values_to(this);
debug_only(verify_scavenge_root_oops());
if (ScavengeRootsInCode && detect_scavenge_root_oops()) {
CodeCache::add_scavenge_root_nmethod(this);
Universe::heap()->register_nmethod(this);
}
DEBUG_ONLY(verify_scavenge_root_oops();)
CodeCache::commit(this);
}
......
......@@ -2690,19 +2690,20 @@ JRT_ENTRY_NO_ASYNC(void, SharedRuntime::block_for_jni_critical(JavaThread* threa
JRT_END
#ifdef HAVE_DTRACE_H
// Create a dtrace nmethod for this method. The wrapper converts the
// java compiled calling convention to the native convention, makes a dummy call
// (actually nops for the size of the call instruction, which become a trap if
// probe is enabled). The returns to the caller. Since this all looks like a
// leaf no thread transition is needed.
/**
* Create a dtrace nmethod for this method. The wrapper converts the
* Java-compiled calling convention to the native convention, makes a dummy call
* (actually nops for the size of the call instruction, which become a trap if
* probe is enabled), and finally returns to the caller. Since this all looks like a
* leaf, no thread transition is needed.
*/
nmethod *AdapterHandlerLibrary::create_dtrace_nmethod(methodHandle method) {
ResourceMark rm;
nmethod* nm = NULL;
if (PrintCompilation) {
ttyLocker ttyl;
tty->print("--- n%s ");
tty->print("--- n ");
method->print_short_name(tty);
if (method->is_static()) {
tty->print(" (static)");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册