Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/ikvm-fork.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjfrijters <jfrijters>2014-11-19 10:24:41 +0300
committerjfrijters <jfrijters>2014-11-19 10:24:41 +0300
commit93a96bbd27b3f9565d21cef79f718759b861f7dd (patch)
tree8fe8844e6fb753203187fb99e2d58040a966d2c3
parentb5a87ffc9f2e32e00a5c6ac5a50bc84e8cda6c1a (diff)
Added support for div.un and rem.un opcodes.
-rw-r--r--ikvmc/remapper.cs40
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))]