Mercurial > hg > truffle
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. |