+2009-05-13 Zoltan Varga <vargaz@gmail.com>
+
+ * loader.c (mono_get_method_from_token): Avoid the expensive call to
+ mono_metadata_load_generic_params () for non-generic methods.
+
2009-05-12 Mark Probst <mark.probst@gmail.com>
* monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
result->token = token;
result->name = mono_metadata_string_heap (image, cols [3]);
+ if (!sig) /* already taken from the methodref */
+ sig = mono_metadata_blob_heap (image, cols [4]);
+ size = mono_metadata_decode_blob_size (sig, &sig);
+
container = klass->generic_container;
- generic_container = mono_metadata_load_generic_params (image, token, container);
+
+ /*
+ * load_generic_params does a binary search so only call it if the method
+ * is generic.
+ */
+ if (*sig & 0x10)
+ generic_container = mono_metadata_load_generic_params (image, token, container);
if (generic_container) {
result->is_generic = TRUE;
generic_container->owner.method = result;
container = generic_container;
}
-
- if (!sig) /* already taken from the methodref */
- sig = mono_metadata_blob_heap (image, cols [4]);
- size = mono_metadata_decode_blob_size (sig, &sig);
-
if (cols [1] & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) {
if (result->klass == mono_defaults.string_class && !strcmp (result->name, ".ctor"))
result->string_ctor = 1;