2006-02-01 Robert Schuster <robertschuster@fsfe.org>
* link.cc: (_Jv_Linker::find_field_helper): Added checks. (_Jv_Linker::find_field): Use exception swallowing class resolution and added early return. (_Jv_ThrowNoClassDefFoundErrorTrampoline): New function. (_Jv_Linker::link_symbol_table): Use exception swallowing class resolution, added ffi_closure installation routine, use _Jv_ThrowNoClassDefFoundError for missing static method. (_Jv_Linker::ensure_class_linked): Added string check which does not trigger class resolution. * java/lang/natClassLoader.cc: (_Jv_FindClassNoException): New method. * java/lang/Class.h: (_Jv_FindClassNoException): New method declaration. * include/jvm.h: (_Jv_FindClassNoException): New method declaration. (_Jv_FindClassFromSignatureNoException): New method declaration. * prims.cc: (_Jv_FindClassFromSignatureNoException): New method. * gcj/javaprims.h: (_Jv_equalsUtf8Classname): New method declaration. (_Jv_isPrimitiveOrDerived): Dito. * prims.cc: (_Jv_equalsUtf8Classnames): New method. (_Jv_isPrimitiveOrDerived): New method. * verify.cc: (ref_intersection::equals): Use new classname comparison method. (type::compatible): Use new classname comparison method. Added check whether LHS' type is java.lang.Object . (type::resolve): Added new optional debug message and simplified if-expression. (type::to_array): Added codepath that generates an array type without resolving the element type. From-SVN: r110474
This commit is contained in:
parent
168b93e9e3
commit
c1a9321f29
9 changed files with 491 additions and 46 deletions
|
@ -266,6 +266,30 @@ _Jv_CopyClassesToSystemLoader (gnu::gcj::runtime::SystemClassLoader *loader)
|
|||
system_class_list = SYSTEM_LOADER_INITIALIZED;
|
||||
}
|
||||
|
||||
// An internal variant of _Jv_FindClass which simply swallows a
|
||||
// NoClassDefFoundError or a ClassNotFoundException. This gives the
|
||||
// caller a chance to evaluate the situation and behave accordingly.
|
||||
jclass
|
||||
_Jv_FindClassNoException (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
|
||||
{
|
||||
jclass klass;
|
||||
|
||||
try
|
||||
{
|
||||
klass = _Jv_FindClass(name, loader);
|
||||
}
|
||||
catch ( java::lang::NoClassDefFoundError *ncdfe )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
catch ( java::lang::ClassNotFoundException *cnfe )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return klass;
|
||||
}
|
||||
|
||||
jclass
|
||||
_Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue