src/share/vm/opto/bytecodeInfo.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/bytecodeInfo.cpp	Wed Dec  2 17:37:51 2009
--- new/src/share/vm/opto/bytecodeInfo.cpp	Wed Dec  2 17:37:51 2009

*** 320,339 **** --- 320,342 ---- 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(); + // An invokedynamic instruction does not have a klass. + if (call_bc != Bytecodes::_invokedynamic) { int index = iter.get_index_int(); ! if( !caller_method->is_klass_loaded(index, true) ) { ! if (!caller_method->is_klass_loaded(index, true)) { return false; } // Try to do constant pool resolution if running Xcomp Bytecodes::Code call_bc = iter.cur_bc(); 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;

src/share/vm/opto/bytecodeInfo.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File