comparison src/share/vm/code/compiledIC.cpp @ 14212:22ae97935e05

8028107: Kitchensink crashed with EAV Summary: check the state of caller and callee nmethods and skip call site patching if any of them is not alive Reviewed-by: jrose, twisti
author kvn
date Fri, 06 Dec 2013 12:11:51 -0800
parents 891687731b59
children 02f27ecb4f3a 78bbf4d43a14
comparison
equal deleted inserted replaced
14211:a2a3f08b96fa 14212:22ae97935e05
416 bool static_bound, 416 bool static_bound,
417 CompiledICInfo& info, 417 CompiledICInfo& info,
418 TRAPS) { 418 TRAPS) {
419 nmethod* method_code = method->code(); 419 nmethod* method_code = method->code();
420 address entry = NULL; 420 address entry = NULL;
421 if (method_code != NULL) { 421 if (method_code != NULL && method_code->is_in_use()) {
422 // Call to compiled code 422 // Call to compiled code
423 if (static_bound || is_optimized) { 423 if (static_bound || is_optimized) {
424 entry = method_code->verified_entry_point(); 424 entry = method_code->verified_entry_point();
425 } else { 425 } else {
426 entry = method_code->entry_point(); 426 entry = method_code->entry_point();
543 // Compute settings for a CompiledStaticCall. Since we might have to set 543 // Compute settings for a CompiledStaticCall. Since we might have to set
544 // the stub when calling to the interpreter, we need to return arguments. 544 // the stub when calling to the interpreter, we need to return arguments.
545 void CompiledStaticCall::compute_entry(methodHandle m, StaticCallInfo& info) { 545 void CompiledStaticCall::compute_entry(methodHandle m, StaticCallInfo& info) {
546 nmethod* m_code = m->code(); 546 nmethod* m_code = m->code();
547 info._callee = m; 547 info._callee = m;
548 if (m_code != NULL) { 548 if (m_code != NULL && m_code->is_in_use()) {
549 info._to_interpreter = false; 549 info._to_interpreter = false;
550 info._entry = m_code->verified_entry_point(); 550 info._entry = m_code->verified_entry_point();
551 } else { 551 } else {
552 // Callee is interpreted code. In any case entering the interpreter 552 // Callee is interpreted code. In any case entering the interpreter
553 // puts a converter-frame on the stack to save arguments. 553 // puts a converter-frame on the stack to save arguments.