diff options
author | jfrijters <jfrijters> | 2014-11-19 10:24:41 +0300 |
---|---|---|
committer | jfrijters <jfrijters> | 2014-11-19 10:24:41 +0300 |
commit | 93a96bbd27b3f9565d21cef79f718759b861f7dd (patch) | |
tree | 8fe8844e6fb753203187fb99e2d58040a966d2c3 | |
parent | b5a87ffc9f2e32e00a5c6ac5a50bc84e8cda6c1a (diff) |
Added support for div.un and rem.un opcodes.
-rw-r--r-- | ikvmc/remapper.cs | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/ikvmc/remapper.cs b/ikvmc/remapper.cs index ff12e8ca..6da6a3fa 100644 --- a/ikvmc/remapper.cs +++ b/ikvmc/remapper.cs @@ -829,9 +829,7 @@ namespace IKVM.Internal.MapXml internal override void Generate(CodeGenContext context, CodeEmitter ilgen) { - FieldWrapper fw = StaticCompiler.GetClassForMapXml(context.ClassLoader, Class).GetFieldWrapper(Name, Sig); - fw.Link(); - ilgen.Emit(OpCodes.Ldflda, fw.GetField()); + ilgen.Emit(OpCodes.Ldflda, StaticCompiler.GetFieldForMapXml(context.ClassLoader, Class, Name, Sig).GetField()); } } @@ -847,10 +845,8 @@ namespace IKVM.Internal.MapXml internal override void Generate(CodeGenContext context, CodeEmitter ilgen) { - FieldWrapper fw = StaticCompiler.GetClassForMapXml(context.ClassLoader, Class).GetFieldWrapper(Name, Sig); - fw.Link(); // we don't use fw.EmitGet because we don't want automatic unboxing and whatever - ilgen.Emit(OpCodes.Ldfld, fw.GetField()); + ilgen.Emit(OpCodes.Ldfld, StaticCompiler.GetFieldForMapXml(context.ClassLoader, Class, Name, Sig).GetField()); } } @@ -874,10 +870,8 @@ namespace IKVM.Internal.MapXml } else { - FieldWrapper fw = StaticCompiler.GetClassForMapXml(context.ClassLoader, Class).GetFieldWrapper(Name, Sig); - fw.Link(); // we don't use fw.EmitGet because we don't want automatic unboxing and whatever - ilgen.Emit(OpCodes.Ldsfld, fw.GetField()); + ilgen.Emit(OpCodes.Ldsfld, StaticCompiler.GetFieldForMapXml(context.ClassLoader, Class, Name, Sig).GetField()); } } } @@ -894,10 +888,8 @@ namespace IKVM.Internal.MapXml internal override void Generate(CodeGenContext context, CodeEmitter ilgen) { - FieldWrapper fw = StaticCompiler.GetClassForMapXml(context.ClassLoader, Class).GetFieldWrapper(Name, Sig); - fw.Link(); // we don't use fw.EmitSet because we don't want automatic unboxing and whatever - ilgen.Emit(OpCodes.Stfld, fw.GetField()); + ilgen.Emit(OpCodes.Stfld, StaticCompiler.GetFieldForMapXml(context.ClassLoader, Class, Name, Sig).GetField()); } } @@ -913,10 +905,8 @@ namespace IKVM.Internal.MapXml internal override void Generate(CodeGenContext context, CodeEmitter ilgen) { - FieldWrapper fw = StaticCompiler.GetClassForMapXml(context.ClassLoader, Class).GetFieldWrapper(Name, Sig); - fw.Link(); // we don't use fw.EmitSet because we don't want automatic unboxing and whatever - ilgen.Emit(OpCodes.Stsfld, fw.GetField()); + ilgen.Emit(OpCodes.Stsfld, StaticCompiler.GetFieldForMapXml(context.ClassLoader, Class, Name, Sig).GetField()); } } @@ -1061,6 +1051,24 @@ namespace IKVM.Internal.MapXml } } + [XmlType("div_un")] + public sealed class Div_Un : Simple + { + public Div_Un() + : base(OpCodes.Div_Un) + { + } + } + + [XmlType("rem_un")] + public sealed class Rem_Un : Simple + { + public Rem_Un() + : base(OpCodes.Rem_Un) + { + } + } + [XmlType("and")] public sealed class And : Simple { @@ -1459,6 +1467,8 @@ namespace IKVM.Internal.MapXml [XmlElement(typeof(Add))] [XmlElement(typeof(Sub))] [XmlElement(typeof(Mul))] + [XmlElement(typeof(Div_Un))] + [XmlElement(typeof(Rem_Un))] [XmlElement(typeof(And))] [XmlElement(typeof(Or))] [XmlElement(typeof(Xor))] |