|
|
@@ -508,11 +508,10 @@ find_method_in_class (MonoClass *klass, const char *name, const char *qname, con
|
|
|
{
|
|
|
int i;
|
|
|
|
|
|
-#if 0
|
|
|
- /* FIXME: This causes test failures in Mono.C5 */
|
|
|
-
|
|
|
/* Search directly in the metadata to avoid calling setup_methods () */
|
|
|
- if (klass->type_token && !klass->image->dynamic && !klass->methods && !klass->rank) {
|
|
|
+
|
|
|
+ /* FIXME: !from_class->generic_class condition causes test failures. */
|
|
|
+ if (klass->type_token && !klass->image->dynamic && !klass->methods && !klass->rank && klass == from_class && !from_class->generic_class) {
|
|
|
for (i = 0; i < klass->method.count; ++i) {
|
|
|
guint32 cols [MONO_METHOD_SIZE];
|
|
|
MonoMethod *method;
|
|
|
@@ -528,15 +527,10 @@ find_method_in_class (MonoClass *klass, const char *name, const char *qname, con
|
|
|
continue;
|
|
|
|
|
|
method = mono_get_method (klass->image, MONO_TOKEN_METHOD_DEF | (klass->method.first + i + 1), klass);
|
|
|
- if (method && (sig->call_convention != MONO_CALL_VARARG) && mono_metadata_signature_equal (sig, mono_method_signature (method))) {
|
|
|
- if (from_class->generic_class && from_class->generic_class->container_class == klass)
|
|
|
- return mono_class_inflate_generic_method_full (method, from_class, mono_class_get_context (from_class));
|
|
|
- else
|
|
|
- return method;
|
|
|
- }
|
|
|
+ if (method && (sig->call_convention != MONO_CALL_VARARG) && mono_metadata_signature_equal (sig, mono_method_signature (method)))
|
|
|
+ return method;
|
|
|
}
|
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
mono_class_setup_methods (klass);
|
|
|
for (i = 0; i < klass->method.count; ++i) {
|