link.cc: Added variant of create_error_method that will not complain about unused...
2006-02-21 Robert Schuster <robertschuster@fsfe.org> * link.cc: Added variant of create_error_method that will not complain about unused parameter if compiled with USE_LIBFFI not being defined. (_Jv_Linker::find_field_helper): Fixed indentation. (_Jv_Linker::create_error_method): Fixed indentation. (_Jv_Linker::link_symbol_table): Fixed indentation. From-SVN: r111331
This commit is contained in:
parent
f5e605e540
commit
592fb5106a
|
@ -1,3 +1,12 @@
|
||||||
|
2006-02-21 Robert Schuster <robertschuster@fsfe.org>
|
||||||
|
|
||||||
|
* link.cc: Added variant of create_error_method that
|
||||||
|
will not complain about unused parameter if compiled with
|
||||||
|
USE_LIBFFI not being defined.
|
||||||
|
(_Jv_Linker::find_field_helper): Fixed indentation.
|
||||||
|
(_Jv_Linker::create_error_method): Fixed indentation.
|
||||||
|
(_Jv_Linker::link_symbol_table): Fixed indentation.
|
||||||
|
|
||||||
2006-02-16 Andrew Haley <aph@redhat.com>
|
2006-02-16 Andrew Haley <aph@redhat.com>
|
||||||
|
|
||||||
* stacktrace.cc (GetStackTraceElements): Call
|
* stacktrace.cc (GetStackTraceElements): Call
|
||||||
|
|
|
@ -142,10 +142,10 @@ _Jv_Linker::find_field_helper (jclass search, _Jv_Utf8Const *name,
|
||||||
// pass in the descriptor and check that way, because when
|
// pass in the descriptor and check that way, because when
|
||||||
// the field is already resolved there is no easy way to
|
// the field is already resolved there is no easy way to
|
||||||
// find its descriptor again.
|
// find its descriptor again.
|
||||||
if ( (field->isResolved () ?
|
if ((field->isResolved ()
|
||||||
_Jv_equalUtf8Classnames (type_name, field->type->name) :
|
? _Jv_equalUtf8Classnames (type_name, field->type->name)
|
||||||
_Jv_equalUtf8Classnames (
|
: _Jv_equalUtf8Classnames (type_name,
|
||||||
type_name, (_Jv_Utf8Const *) field->type)) )
|
(_Jv_Utf8Const *) field->type)))
|
||||||
{
|
{
|
||||||
*declarer = search;
|
*declarer = search;
|
||||||
return field;
|
return field;
|
||||||
|
@ -771,7 +771,7 @@ _Jv_ThrowNoClassDefFoundErrorTrampoline(ffi_cif *,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
throw new java::lang::NoClassDefFoundError(
|
throw new java::lang::NoClassDefFoundError(
|
||||||
_Jv_NewStringUtf8Const( (_Jv_Utf8Const *) data));
|
_Jv_NewStringUtf8Const((_Jv_Utf8Const *) data));
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
// A variant of the NoClassDefFoundError throwing method that can
|
// A variant of the NoClassDefFoundError throwing method that can
|
||||||
|
@ -947,7 +947,6 @@ _Jv_Linker::find_iindex (jclass *ifaces, jshort *offsets, jshort num)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_LIBFFI
|
#ifdef USE_LIBFFI
|
||||||
|
|
||||||
// We use a structure of this type to store the closure that
|
// We use a structure of this type to store the closure that
|
||||||
// represents a missing method.
|
// represents a missing method.
|
||||||
struct method_closure
|
struct method_closure
|
||||||
|
@ -960,12 +959,9 @@ struct method_closure
|
||||||
ffi_type *arg_types[1];
|
ffi_type *arg_types[1];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // USE_LIBFFI
|
|
||||||
|
|
||||||
void *
|
void *
|
||||||
_Jv_Linker::create_error_method (_Jv_Utf8Const *class_name)
|
_Jv_Linker::create_error_method (_Jv_Utf8Const *class_name)
|
||||||
{
|
{
|
||||||
#ifdef USE_LIBFFI
|
|
||||||
method_closure *closure
|
method_closure *closure
|
||||||
= (method_closure *) _Jv_AllocBytes(sizeof (method_closure));
|
= (method_closure *) _Jv_AllocBytes(sizeof (method_closure));
|
||||||
|
|
||||||
|
@ -974,9 +970,13 @@ _Jv_Linker::create_error_method (_Jv_Utf8Const *class_name)
|
||||||
// Initializes the cif and the closure. If that worked the closure
|
// Initializes the cif and the closure. If that worked the closure
|
||||||
// is returned and can be used as a function pointer in a class'
|
// is returned and can be used as a function pointer in a class'
|
||||||
// atable.
|
// atable.
|
||||||
if (ffi_prep_cif (&closure->cif, FFI_DEFAULT_ABI, 1, &ffi_type_void,
|
if ( ffi_prep_cif (&closure->cif,
|
||||||
closure->arg_types) == FFI_OK
|
FFI_DEFAULT_ABI,
|
||||||
&& ffi_prep_closure (&closure->closure, &closure->cif,
|
1,
|
||||||
|
&ffi_type_void,
|
||||||
|
closure->arg_types) == FFI_OK
|
||||||
|
&& ffi_prep_closure (&closure->closure,
|
||||||
|
&closure->cif,
|
||||||
_Jv_ThrowNoClassDefFoundErrorTrampoline,
|
_Jv_ThrowNoClassDefFoundErrorTrampoline,
|
||||||
class_name) == FFI_OK)
|
class_name) == FFI_OK)
|
||||||
return &closure->closure;
|
return &closure->closure;
|
||||||
|
@ -989,13 +989,17 @@ _Jv_Linker::create_error_method (_Jv_Utf8Const *class_name)
|
||||||
buffer->append (_Jv_NewStringUtf8Const(class_name));
|
buffer->append (_Jv_NewStringUtf8Const(class_name));
|
||||||
throw new java::lang::InternalError(buffer->toString());
|
throw new java::lang::InternalError(buffer->toString());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
|
void *
|
||||||
|
_Jv_Linker::create_error_method (_Jv_Utf8Const *)
|
||||||
|
{
|
||||||
// Codepath for platforms which do not support (or want) libffi.
|
// Codepath for platforms which do not support (or want) libffi.
|
||||||
// You have to accept that it is impossible to provide the name
|
// You have to accept that it is impossible to provide the name
|
||||||
// of the missing class then.
|
// of the missing class then.
|
||||||
return (void *) _Jv_ThrowNoClassDefFoundError;
|
return (void *) _Jv_ThrowNoClassDefFoundError;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif // USE_LIBFFI
|
||||||
|
|
||||||
// Functions for indirect dispatch (symbolic virtual binding) support.
|
// Functions for indirect dispatch (symbolic virtual binding) support.
|
||||||
|
|
||||||
|
@ -1213,7 +1217,7 @@ _Jv_Linker::link_symbol_table (jclass klass)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try fields only if the target class exists.
|
// Try fields only if the target class exists.
|
||||||
if ( target_class != NULL )
|
if (target_class != NULL)
|
||||||
{
|
{
|
||||||
wait_for_state(target_class, JV_STATE_PREPARED);
|
wait_for_state(target_class, JV_STATE_PREPARED);
|
||||||
jclass found_class;
|
jclass found_class;
|
||||||
|
|
Loading…
Reference in New Issue