< prev index next >

src/hotspot/share/oops/constantPool.cpp

Print this page

        

*** 767,780 **** } void ConstantPool::throw_resolution_error(const constantPoolHandle& this_cp, int which, TRAPS) { Symbol* message = NULL; Symbol* error = SystemDictionary::find_resolution_error(this_cp, which, &message); ! assert(error != NULL && message != NULL, "checking"); CLEAR_PENDING_EXCEPTION; ResourceMark rm; THROW_MSG(error, message->as_C_string()); } // If resolution for Class, Dynamic constant, MethodHandle or MethodType fails, save the // exception in the resolution error table, so that the same exception is thrown again. void ConstantPool::save_and_throw_exception(const constantPoolHandle& this_cp, int which, --- 767,784 ---- } void ConstantPool::throw_resolution_error(const constantPoolHandle& this_cp, int which, TRAPS) { Symbol* message = NULL; Symbol* error = SystemDictionary::find_resolution_error(this_cp, which, &message); ! assert(error != NULL, "checking"); CLEAR_PENDING_EXCEPTION; + if (message != NULL) { ResourceMark rm; THROW_MSG(error, message->as_C_string()); + } else { + THROW(error); + } } // If resolution for Class, Dynamic constant, MethodHandle or MethodType fails, save the // exception in the resolution error table, so that the same exception is thrown again. void ConstantPool::save_and_throw_exception(const constantPoolHandle& this_cp, int which,
< prev index next >