hotspot/src/share/vm/code/nmethod.cpp
Print this page
*** 63,72 ****
--- 63,77 ----
bool nmethod::is_compiled_by_c2() const {
if (compiler() == NULL || method() == NULL) return false; // can happen during debug printing
if (is_native_method()) return false;
return compiler()->is_c2();
}
+ bool nmethod::is_compiled_by_shark() const {
+ if (is_native_method()) return false;
+ assert(compiler() != NULL, "must be");
+ return compiler()->is_shark();
+ }
//---------------------------------------------------------------------------------
// NMethod statistics
*** 1403,1412 ****
--- 1408,1421 ----
if (is_speculatively_disconnected()) {
CodeCache::remove_saved_code(this);
}
+ #ifdef SHARK
+ ((SharkCompiler *) compiler())->free_compiled_method(instructions_begin());
+ #endif // SHARK
+
((CodeBlob*)(this))->flush();
CodeCache::free(this);
}
*** 1800,1816 ****
--- 1809,1827 ----
}
// Method that knows how to preserve outgoing arguments at call. This method must be
// called with a frame corresponding to a Java invoke
void nmethod::preserve_callee_argument_oops(frame fr, const RegisterMap *reg_map, OopClosure* f) {
+ #ifndef SHARK
if (!method()->is_native()) {
SimpleScopeDesc ssd(this, fr.pc());
Bytecode_invoke* call = Bytecode_invoke_at(ssd.method(), ssd.bci());
bool has_receiver = call->has_receiver();
symbolOop signature = call->signature();
fr.oops_compiled_arguments_do(signature, has_receiver, reg_map, f);
}
+ #endif // !SHARK
}
oop nmethod::embeddedOop_at(u_char* p) {
RelocIterator iter(this, p, p + oopSize);
*** 2311,2320 ****
--- 2322,2333 ----
if (is_compiled_by_c1()) {
tty->print("(c1) ");
} else if (is_compiled_by_c2()) {
tty->print("(c2) ");
+ } else if (is_compiled_by_shark()) {
+ tty->print("(shark) ");
} else {
tty->print("(nm) ");
}
print_on(tty, "nmethod");