28#if IMPORTER || EXPORTER
34using System.Reflection;
35using System.Reflection.Emit;
41 sealed partial class RuntimeManagedJavaType
47 sealed class CloneJavaMethod : RuntimeJavaMethod
54 internal CloneJavaMethod(RuntimeManagedJavaType declaringType) :
62 internal override void EmitCall(CodeEmitter ilgen)
64 ilgen.Emit(OpCodes.Dup);
65 ilgen.Emit(OpCodes.Isinst, DeclaringType.Context.
JavaBase.TypeOfJavaLangCloneable.TypeAsBaseType);
66 var label1 = ilgen.DefineLabel();
67 ilgen.EmitBrtrue(label1);
68 var label2 = ilgen.DefineLabel();
69 ilgen.EmitBrfalse(label2);
70 ilgen.EmitThrow(
"java.lang.CloneNotSupportedException");
71 ilgen.MarkLabel(label2);
72 ilgen.EmitThrow(
"java.lang.NullPointerException");
73 ilgen.MarkLabel(label1);
74 ilgen.Emit(OpCodes.Call, DeclaringType.Context.
Types.
Object.GetMethod(
"MemberwiseClone", BindingFlags.Instance | BindingFlags.NonPublic,
null,
Type.EmptyTypes,
null));
77 internal override void EmitCallvirt(CodeEmitter ilgen)
IKVM.Reflection.Type Type
Types Types
Gets the Types associated with this instance of the runtime.
CoreClasses JavaBase
Gets the CoreClasses associated with this instance of the runtime.
MemberFlags
Describes various options applied to a member.