Untitled
By: a guest | Feb 9th, 2010 | Syntax:
None | Size: 1.61 KB | Hits: 15 | Expires: Never
diff --git a/mono/mini/method-to-ir.c b/mono/mini/method-to-ir.c
index 81fee96..df6a0a3 100644
--- a/mono/mini/method-to-ir.c
+++ b/mono/mini/method-to-ir.c
-3139,7 +3138,11 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
/* klass */
args [1] = klass_inst;
- return mono_emit_jit_icall (cfg, mono_object_castclass, args);
+ g_print ("cast in %s.%s.%s\n", cfg->method->klass->name_space, cfg->method->klass->name, cfg->method->name);
+
+ src = mono_emit_jit_icall (cfg, mono_object_castclass, args);
+
+ goto end;
} else {
/* Simple case, handled by the code below */
}
-3174,6 +3177,7 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
}
}
+ end:
MONO_START_BB (cfg, is_null_bb);
reset_cast_details (cfg);
-3197,8 +3201,7 @@ handle_isinst (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context_us
if (context_used) {
klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
- // FIXME: This doesn't work yet (mcs/tests/gtest-304.cs fails)
- if (TRUE || (klass->flags & TYPE_ATTRIBUTE_INTERFACE) || klass->rank || mono_class_is_nullable (klass) || klass->marshalbyref || (klass->flags & TYPE_ATTRIBUTE_SEALED) || mono_class_has_variant_generic_params (klass)) {
+ if ((klass->flags & TYPE_ATTRIBUTE_INTERFACE) || klass->rank || mono_class_is_nullable (klass) || klass->marshalbyref || (klass->flags & TYPE_ATTRIBUTE_SEALED) || mono_class_has_variant_generic_params (klass)) {
MonoInst *args [2];
/* Complex case, handle by an icall */