src/share/vm/opto/bytecodeInfo.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot-comp Cdiff src/share/vm/opto/bytecodeInfo.cpp

src/share/vm/opto/bytecodeInfo.cpp

Print this page
rev 5403 : 8012941: JSR 292: too deep inlining might crash compiler because of stack overflow
Reviewed-by: ?

*** 448,462 **** //------------------------------pass_initial_checks---------------------------- bool pass_initial_checks(ciMethod* caller_method, int caller_bci, ciMethod* callee_method) { ciInstanceKlass *callee_holder = callee_method ? callee_method->holder() : NULL; // Check if a callee_method was suggested ! if( callee_method == NULL ) return false; // Check if klass of callee_method is loaded ! if( !callee_holder->is_loaded() ) return false; ! if( !callee_holder->is_initialized() ) return false; ! if( !UseInterpreter || CompileTheWorld /* running Xcomp or CTW */ ) { // Checks that constant pool's call site has been visited // stricter than callee_holder->is_initialized() ciBytecodeStream iter(caller_method); iter.force_bci(caller_bci); Bytecodes::Code call_bc = iter.cur_bc(); --- 448,462 ---- //------------------------------pass_initial_checks---------------------------- bool pass_initial_checks(ciMethod* caller_method, int caller_bci, ciMethod* callee_method) { ciInstanceKlass *callee_holder = callee_method ? callee_method->holder() : NULL; // Check if a callee_method was suggested ! if (callee_method == NULL) return false; // Check if klass of callee_method is loaded ! if (!callee_holder->is_loaded()) return false; ! if (!callee_holder->is_initialized()) return false; ! if (!UseInterpreter || CompileTheWorld /* running Xcomp or CTW */) { // Checks that constant pool's call site has been visited // stricter than callee_holder->is_initialized() ciBytecodeStream iter(caller_method); iter.force_bci(caller_bci); Bytecodes::Code call_bc = iter.cur_bc();
*** 465,483 **** int index = iter.get_index_u2_cpcache(); if (!caller_method->is_klass_loaded(index, true)) { return false; } // Try to do constant pool resolution if running Xcomp ! if( !caller_method->check_call(index, call_bc == Bytecodes::_invokestatic) ) { return false; } } } // We will attempt to see if a class/field/etc got properly loaded. If it // did not, it may attempt to throw an exception during our probing. Catch // and ignore such exceptions and do not attempt to compile the method. ! if( callee_method->should_exclude() ) return false; return true; } //------------------------------check_can_parse-------------------------------- --- 465,484 ---- int index = iter.get_index_u2_cpcache(); if (!caller_method->is_klass_loaded(index, true)) { return false; } // Try to do constant pool resolution if running Xcomp ! if (!caller_method->check_call(index, call_bc == Bytecodes::_invokestatic)) { return false; } } } // We will attempt to see if a class/field/etc got properly loaded. If it // did not, it may attempt to throw an exception during our probing. Catch // and ignore such exceptions and do not attempt to compile the method. ! if (callee_method->should_exclude() && ! !callee_method->should_inline()) return false; return true; } //------------------------------check_can_parse--------------------------------
src/share/vm/opto/bytecodeInfo.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File