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>2007-05-24 13:23:02 +0400
committerjfrijters <jfrijters>2007-05-24 13:23:02 +0400
commit49fd637bdb4c4962bfacc4c0d18de39cb648bcca (patch)
treebc0f4892a12ec2783ea7b34fa55d8322654ab096 /openjdk/map.xml
parent1849dc0e151c6469f4e6d2995651e603098b3ce3 (diff)
First batch of OpenJDK integration code.
Diffstat (limited to 'openjdk/map.xml')
-rw-r--r--openjdk/map.xml1749
1 files changed, 1749 insertions, 0 deletions
diff --git a/openjdk/map.xml b/openjdk/map.xml
new file mode 100644
index 00000000..98ae4513
--- /dev/null
+++ b/openjdk/map.xml
@@ -0,0 +1,1749 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Jeroen Frijters
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jeroen Frijters
+ jeroen@frijters.net
+
+-->
+<root>
+ <assembly>
+ <class name="java.lang.Object" shadows="System.Object" modifiers="public">
+ <constructor sig="()V" modifiers="public" />
+ <method name="notifyAll" sig="()V" modifiers="public final">
+ <body>
+ <ldarg_0 />
+ <call type="System.Threading.Monitor" name="PulseAll" sig="(Ljava.lang.Object;)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="notify" sig="()V" modifiers="public final">
+ <body>
+ <ldarg_0 />
+ <call type="System.Threading.Monitor" name="Pulse" sig="(Ljava.lang.Object;)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="wait" sig="()V" modifiers="public final">
+ <throws class="java.lang.InterruptedException" />
+ <body>
+ <ldarg_0 />
+ <ldc_i4_0 />
+ <conv_i8 />
+ <ldc_i4_0 />
+ <call class="java.lang.VMThread" name="objectWait" sig="(Ljava.lang.Object;JI)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="wait" sig="(J)V" modifiers="public final">
+ <parameter name="timeout" />
+ <throws class="java.lang.InterruptedException" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <ldc_i4_0 />
+ <call class="java.lang.VMThread" name="objectWait" sig="(Ljava.lang.Object;JI)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="wait" sig="(JI)V" modifiers="public final">
+ <parameter name="timeout" />
+ <parameter name="nanos" />
+ <throws class="java.lang.InterruptedException" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <ldarg_2 />
+ <call class="java.lang.VMThread" name="objectWait" sig="(Ljava.lang.Object;JI)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="getClass" sig="()Ljava.lang.Class;" modifiers="public final">
+ <attribute type="IKVM.Attributes.SignatureAttribute" sig="(Ljava.lang.String;)V">
+ <parameter>()Ljava/lang/Class&lt;+Ljava/lang/Object;&gt;;</parameter>
+ </attribute>
+ <body>
+ <ldarg_0 />
+ <call class="ikvm.runtime.Util" name="getClassFromObject" sig="(Ljava.lang.Object;)Ljava.lang.Class;" />
+ <ret />
+ </body>
+ </method>
+ <method name="clone" sig="()Ljava.lang.Object;" modifiers="protected">
+ <throws class="java.lang.CloneNotSupportedException" />
+ <body>
+ <ldarg_0 />
+ <isinst class="java.lang.Cloneable" />
+ <brtrue name="ok" />
+ <newobj class="java.lang.CloneNotSupportedException" name="&lt;init&gt;" sig="()V" />
+ <throw />
+ <label name="ok" />
+ <ldarg_0 />
+ <call type="System.Object" name="MemberwiseClone" sig="()Ljava.lang.Object;" />
+ <ret />
+ </body>
+ <alternateBody>
+ <ldarg_0 />
+ <isinst type="System.Array" />
+ <dup />
+ <brfalse name="not_array" />
+ <call type="System.Array" name="Clone" sig="()Ljava.lang.Object;" />
+ <ret />
+ <label name="not_array" />
+ <pop />
+ <ldarg_0 />
+ <isinst class="java.lang.Cloneable" />
+ <brfalse name="not_cloneable" />
+ <!--
+ This means we're Cloneable, but not derived from java.lang.Object or java.lang.Throwable.
+ It also means that we must have been invoked thru reflection (or by code in the java.lang package),
+ so it is OK to use reflection to call Object.MemberwiseClone().
+ -->
+ <ldtoken type="System.Object" />
+ <call type="System.Type" name="GetTypeFromHandle" sig="(Lcli.System.RuntimeTypeHandle;)Lcli.System.Type;" />
+ <ldstr value="MemberwiseClone" />
+ <ldc_i4 value="36" />
+ <ldnull />
+ <ldsfld type="System.Type" name="EmptyTypes" sig="[Lcli.SystemType;" />
+ <ldnull />
+ <callvirt type="System.Type" name="GetMethod" sig="(Ljava.lang.String;Lcli.System.Reflection.BindingFlags;Lcli.System.Reflection.Binder;[Lcli.System.Type;[Lcli.System.Reflection.ParameterModifier;)Lcli.System.Reflection.MethodInfo;" />
+ <ldarg_0 />
+ <ldnull />
+ <callvirt type="System.Reflection.MethodInfo" name="Invoke" sig="(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;" />
+ <ret />
+ <label name="not_cloneable" />
+ <newobj class="java.lang.CloneNotSupportedException" name="&lt;init&gt;" sig="()V" />
+ <throw />
+ </alternateBody>
+ </method>
+ <method name="toStringImpl" sig="(Ljava.lang.Object;)Ljava.lang.String;" modifiers="private static">
+ <body>
+ <ldarg_0 />
+ <callvirt class="java.lang.Object" name="getClass" sig="()Ljava.lang.Class;" />
+ <call class="java.lang.Class" name="getName" sig="()Ljava.lang.String;" />
+ <ldstr value="@" />
+ <ldarg_0 />
+ <callvirt class="java.lang.Object" name="hashCode" sig="()I" />
+ <call class="java.lang.Integer" name="toHexString" sig="(I)Ljava.lang.String;" />
+ <call type="System.String" name="Concat" sig="(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;" />
+ <ret />
+ </body>
+ </method>
+ <method name="toString" sig="()Ljava.lang.String;" modifiers="public">
+ <override name="ToString" />
+ <body>
+ <ldarg_0 />
+ <call class="java.lang.Object" name="toStringImpl" sig="(Ljava.lang.Object;)Ljava.lang.String;" />
+ <ret />
+ </body>
+ <alternateBody>
+ <ldarg_0 />
+ <isinst type="System.Array" />
+ <brfalse name="skip" />
+ <ldarg_0 />
+ <call class="java.lang.Object" name="toStringImpl" sig="(Ljava.lang.Object;)Ljava.lang.String;" />
+ <br name="end" />
+ <label name="skip" />
+ <ldarg_0 />
+ <callvirt type="System.Object" name="ToString" sig="()Ljava.lang.String;" />
+ <label name="end" />
+ <ret />
+ </alternateBody>
+ <nonvirtualAlternateBody>
+ <ldarg_0 />
+ <call class="java.lang.Object" name="toStringImpl" sig="(Ljava.lang.Object;)Ljava.lang.String;" />
+ <ret />
+ </nonvirtualAlternateBody>
+ </method>
+ <method name="hashCode" sig="()I" modifiers="public">
+ <override name="GetHashCode" />
+ <nonvirtualAlternateBody>
+ <ldarg_0 />
+ <conditional framework="2.0">
+ <code>
+ <call type="System.Runtime.CompilerServices.RuntimeHelpers" name="GetHashCode" sig="(Ljava.lang.Object;)I" />
+ </code>
+ </conditional>
+ <conditional framework="1.1">
+ <code>
+ <!-- FXBUG RuntimeHelpers.GetHashCode is broken in multi AppDomain scenarios (on v1.x) -->
+ <call type="System.Object" name="GetHashCode" sig="()I" />
+ </code>
+ </conditional>
+ <ret />
+ </nonvirtualAlternateBody>
+ </method>
+ <method name="equals" sig="(Ljava.lang.Object;)Z" modifiers="public">
+ <parameter name="obj" />
+ <override name="Equals" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <ceq />
+ <ret />
+ </body>
+ <alternateBody>
+ <ldarg_0 />
+ <ldarg_1 />
+ <callvirt type="System.Object" name="Equals" sig="(Ljava.lang.Object;)Z" />
+ <ret />
+ </alternateBody>
+ <nonvirtualAlternateBody>
+ <ldarg_0 />
+ <ldarg_1 />
+ <ceq />
+ <ret />
+ </nonvirtualAlternateBody>
+ </method>
+ <method name="finalize" sig="()V" modifiers="protected">
+ <throws class="java.lang.Throwable" />
+ <!-- NOTE we don't override Finalize, because that would be bad for performance,
+ instead, the compiler contains a hack to lazily override Finalize when a class
+ overrides our finalize
+ TODO consider adding code to constructor (in debug builds) to detect that someone
+ has overriden our finalize from another .NET language (if no intermediate Java base class
+ has overriden finalize, the lazy override of Object.Finalize hasn't kicked in and finalize
+ will never be called)
+ -->
+ <body>
+ <ldarg_0 />
+ <call type="System.Object" name="Finalize" sig="()V" />
+ <ret />
+ </body>
+ <alternateBody>
+ <!-- if code in the java.lang package explicitly invokes finalize on a non java.lang.Object
+ derived object we just ignore it -->
+ <ret />
+ </alternateBody>
+ </method>
+ </class>
+ <class name="java.lang.String" shadows="System.String" modifiers="public final">
+ <implements class="java.io.Serializable" />
+ <implements class="java.lang.Comparable" />
+ <implements class="java.lang.CharSequence" />
+ <attribute type="IKVM.Attributes.SignatureAttribute" sig="(Ljava.lang.String;)V">
+ <parameter>Ljava/lang/Object;Ljava/io/Serializable;Ljava/lang/Comparable&lt;Ljava/lang/String;&gt;;Ljava/lang/CharSequence;</parameter>
+ </attribute>
+ <field name="serialVersionUID" sig="J" modifiers="private static final" constant="-6849794470754667710" />
+ <constructor sig="()V" modifiers="public">
+ <alternateBody>
+ <ldstr value="" />
+ <call type="System.String" name="Copy" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ <ret />
+ </alternateBody>
+ </constructor>
+ <constructor sig="([C)V" modifiers="public">
+ <parameter name="value" />
+ <alternateBody>
+ <!-- force a NullPointerException if the array is null -->
+ <ldarg_0 />
+ <ldlen />
+ <pop />
+ <ldarg_0 />
+ <newobj type="System.String" name=".ctor" sig="([C)V" />
+ <ret />
+ </alternateBody>
+ </constructor>
+ <constructor sig="([CII)V" modifiers="public">
+ <parameter name="value" />
+ <parameter name="offset" />
+ <parameter name="count" />
+ </constructor>
+ <!-- Package private constructor, that we redirect to static helper -->
+ <constructor sig="([CIIZ)V" modifiers="">
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([CIIZ)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="(Ljava.lang.String;)V" modifiers="public">
+ <parameter name="original" />
+ <redirect class="System.String, mscorlib" name="Copy" type="static" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="(Ljava.lang.StringBuffer;)V" modifiers="public">
+ <parameter name="buffer" />
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="(Ljava.lang.StringBuffer;)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="(Ljava.lang.StringBuilder;)V" modifiers="public">
+ <parameter name="builder" />
+ <alternateBody>
+ <ldarg_0 />
+ <ldfld class="java.lang.StringBuilder" name="value" sig="[C" />
+ <ldc_i4_0 />
+ <ldarg_0 />
+ <ldfld class="java.lang.StringBuilder" name="count" sig="I" />
+ <newobj type="System.String" name=".ctor" sig="([CII)V" />
+ <ret />
+ </alternateBody>
+ </constructor>
+ <constructor sig="([B)V" modifiers="public">
+ <parameter name="bytes" />
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([B)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="([BI)V" modifiers="public">
+ <parameter name="ascii" />
+ <parameter name="hibyte" />
+ <attribute type="System.ObsoleteAttribute" sig="()V" />
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BI)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="([BII)V" modifiers="public">
+ <parameter name="bytes" />
+ <parameter name="offset" />
+ <parameter name="length" />
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BII)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="([BIII)V" modifiers="public">
+ <parameter name="ascii" />
+ <parameter name="hibyte" />
+ <parameter name="offset" />
+ <parameter name="count" />
+ <attribute type="System.ObsoleteAttribute" sig="()V" />
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BIII)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="([BLjava.lang.String;)V" modifiers="public">
+ <parameter name="bytes" />
+ <parameter name="charsetName" />
+ <throws class="java.io.UnsupportedEncodingException" />
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BLjava.lang.String;)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="([BIILjava.lang.String;)V" modifiers="public">
+ <parameter name="bytes" />
+ <parameter name="offset" />
+ <parameter name="length" />
+ <parameter name="charsetName" />
+ <throws class="java.io.UnsupportedEncodingException" />
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BIILjava.lang.String;)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="([III)V" modifiers="public">
+ <parameter name="codePoints" />
+ <parameter name="offset" />
+ <parameter name="count" />
+ <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([III)Ljava.lang.String;" />
+ </constructor>
+ <constructor sig="([BIILjava.nio.charset.Charset;)V" modifiers="public">
+ <parameter name="bytes" />
+ <parameter name="offset" />
+ <parameter name="length" />
+ <parameter name="charset" />
+ <alternateBody>
+ <ldarg_3 />
+ <ldarg_0 />
+ <ldarg_1 />
+ <ldarg_2 />
+ <call class="java.nio.ByteBuffer" name="wrap" sig="([BII)Ljava.nio.ByteBuffer;" />
+ <callvirt class="java.nio.charset.Charset" name="decode" sig="(Ljava.nio.ByteBuffer;)Ljava.nio.CharBuffer;" />
+ <callvirt class="java.nio.CharBuffer" name="toString" sig="()Ljava.lang.String;" />
+ <ret />
+ </alternateBody>
+ </constructor>
+ <constructor sig="([BLjava.nio.charset.Charset;)V" modifiers="public">
+ <parameter name="bytes" />
+ <parameter name="charset" />
+ <alternateBody>
+ <ldarg_1 />
+ <ldarg_0 />
+ <call class="java.nio.ByteBuffer" name="wrap" sig="([B)Ljava.nio.ByteBuffer;" />
+ <callvirt class="java.nio.charset.Charset" name="decode" sig="(Ljava.nio.ByteBuffer;)Ljava.nio.CharBuffer;" />
+ <callvirt class="java.nio.CharBuffer" name="toString" sig="()Ljava.lang.String;" />
+ <ret />
+ </alternateBody>
+ </constructor>
+ <method name="hashCode" sig="()I" modifiers="public">
+ <redirect class="java.lang.StringHelper" name="hashCode" type="static" sig="(Lcli.System.String;)I" />
+ </method>
+ <!-- we have a toString here to make sure that it shows up as a declared method in reflection -->
+ <method name="toString" sig="()Ljava.lang.String;" modifiers="public" />
+ <!-- we have an equals here to make sure that it shows up as a declared method in reflection -->
+ <method name="equals" sig="(Ljava.lang.Object;)Z" modifiers="public">
+ <parameter name="anObject" />
+ </method>
+ <method name="valueOf" sig="(Z)Ljava.lang.String;" modifiers="public static">
+ <parameter name="b" />
+ <redirect class="java.lang.StringHelper" />
+ </method>
+ <method name="valueOf" sig="(I)Ljava.lang.String;" modifiers="public static">
+ <parameter name="i" />
+ <redirect class="java.lang.StringHelper" />
+ </method>
+ <method name="valueOf" sig="(J)Ljava.lang.String;" modifiers="public static">
+ <parameter name="l" />
+ <redirect class="java.lang.StringHelper" />
+ </method>
+ <method name="valueOf" sig="(C)Ljava.lang.String;" modifiers="public static">
+ <parameter name="c" />
+ <redirect class="java.lang.StringHelper" sig="(C)Lcli.System.String;" />
+ </method>
+ <method name="valueOf" sig="(F)Ljava.lang.String;" modifiers="public static">
+ <parameter name="f" />
+ <redirect class="java.lang.StringHelper" />
+ </method>
+ <method name="valueOf" sig="(D)Ljava.lang.String;" modifiers="public static">
+ <parameter name="d" />
+ <redirect class="java.lang.StringHelper" />
+ </method>
+ <method name="valueOf" sig="([C)Ljava.lang.String;" modifiers="public static">
+ <parameter name="data" />
+ <redirect class="java.lang.StringHelper" />
+ </method>
+ <method name="valueOf" sig="([CII)Ljava.lang.String;" modifiers="public static">
+ <parameter name="data" />
+ <parameter name="offset" />
+ <parameter name="count" />
+ <redirect class="java.lang.StringHelper" />
+ </method>
+ <method name="valueOf" sig="(Ljava.lang.Object;)Ljava.lang.String;" modifiers="public static">
+ <parameter name="obj" />
+ <redirect class="java.lang.StringHelper" />
+ </method>
+ <method name="substring" sig="(I)Ljava.lang.String;" modifiers="public">
+ <parameter name="beginIndex" />
+ <redirect name="Substring" />
+ </method>
+ <method name="length" sig="()I" modifiers="public">
+ <redirect name="get_Length" />
+ </method>
+ <method name="charAt" sig="(I)C" modifiers="public" nonullcheck="true">
+ <parameter name="index" />
+ <body>
+ <ldarg_1 />
+ <ldarg_0 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <bge_un name="throw" />
+ <ldarg_0 />
+ <ldarg_1 />
+ <callvirt type="System.String" name="get_Chars" sig="(I)C" />
+ <ret />
+ <label name="throw" />
+ <newobj class="java.lang.StringIndexOutOfBoundsException" name="&lt;init&gt;" sig="()V" />
+ <throw />
+ </body>
+ </method>
+ <method name="substring" sig="(II)Ljava.lang.String;" modifiers="public">
+ <parameter name="beginIndex" />
+ <parameter name="endIndex" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;II)Ljava.lang.String;" />
+ </method>
+ <method name="indexOf" sig="(I)I" modifiers="public">
+ <parameter name="ch" />
+ <body>
+ <ldarg_1 />
+ <ldc_i4 value="65535" />
+ <ble_un name="ok" />
+ <ldc_i4_m1 />
+ <ret />
+ <label name="ok" />
+ <ldarg_0 />
+ <ldarg_1 />
+ <call type="System.String" name="IndexOf" sig="(C)I" />
+ <ret />
+ </body>
+ </method>
+ <method name="indexOf" sig="(II)I" modifiers="public" nonullcheck="true">
+ <parameter name="ch" />
+ <parameter name="fromIndex" />
+ <body>
+ <!--
+ for (int i = fromIndex < 0 ? 0 : fromIndex; i < s.Length; i++)
+ {
+ if (this[i] == ch)
+ {
+ return i;
+ }
+ }
+ return -1;
+ -->
+ <ldarg_2 />
+ <stloc name="i" type="System.Int32" />
+ <ldc_i4_0 />
+ <ldloc name="i" />
+ <blt name="start_loop" />
+ <ldc_i4_0 />
+ <stloc name="i" type="System.Int32" />
+ <br name="start_loop" />
+ <label name="next" />
+ <ldarg_0 />
+ <ldloc name="i" />
+ <callvirt type="System.String" name="get_Chars" sig="(I)C" />
+ <ldarg_1 />
+ <beq name="ret_i" />
+ <ldloc name="i" />
+ <ldc_i4_1 />
+ <add />
+ <stloc name="i" type="System.Int32" />
+ <label name="start_loop" />
+ <ldloc name="i" />
+ <ldarg_0 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <blt name="next" />
+ <ldc_i4_m1 />
+ <ret />
+ <label name="ret_i" />
+ <ldloc name="i" />
+ <ret />
+ </body>
+ </method>
+ <method name="indexOf" sig="(Ljava.lang.String;)I" modifiers="public">
+ <parameter name="str" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)I" />
+ </method>
+ <method name="indexOf" sig="(Ljava.lang.String;I)I" modifiers="public">
+ <parameter name="str" />
+ <parameter name="fromIndex" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;I)I" />
+ </method>
+ <method name="lastIndexOf" sig="(I)I" modifiers="public">
+ <parameter name="ch" />
+ <body>
+ <ldarg_1 />
+ <ldc_i4 value="65535" />
+ <ble_un name="ok" />
+ <ldc_i4_m1 />
+ <ret />
+ <label name="ok" />
+ <ldarg_0 />
+ <ldarg_1 />
+ <call type="System.String" name="LastIndexOf" sig="(C)I" />
+ <ret />
+ </body>
+ </method>
+ <method name="lastIndexOf" sig="(II)I" modifiers="public">
+ <parameter name="ch" />
+ <parameter name="fromIndex" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;II)I" />
+ </method>
+ <method name="lastIndexOf" sig="(Ljava.lang.String;)I" modifiers="public">
+ <parameter name="str" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)I" />
+ </method>
+ <method name="lastIndexOf" sig="(Ljava.lang.String;I)I" modifiers="public">
+ <parameter name="str" />
+ <parameter name="fromIndex" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;I)I" />
+ </method>
+ <method name="toCharArray" sig="()[C" modifiers="public">
+ <redirect name="ToCharArray" />
+ </method>
+ <method name="getChars" sig="(II[CI)V" modifiers="public">
+ <parameter name="srcBegin" />
+ <parameter name="srcEnd" />
+ <parameter name="dst" />
+ <parameter name="dstBegin" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;II[CI)V" />
+ </method>
+ <method name="startsWith" sig="(Ljava.lang.String;)Z" modifiers="public" nonullcheck="true">
+ <parameter name="prefix" />
+ <body>
+ <!--
+ if (this.Length >= prefix.Length)
+ {
+ for (int i = 0; i < prefix.Length; i++)
+ {
+ if (this[i] != prefix[i])
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ -->
+ <ldarg_0 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <ldarg_1 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <blt name="ret_false" />
+ <ldc_i4_0 />
+ <stloc name="i" type="System.Int32" />
+ <br name="start_loop" />
+ <label name="next" />
+ <ldarg_0 />
+ <ldloc name="i" />
+ <callvirt type="System.String" name="get_Chars" sig="(I)C" />
+ <ldarg_1 />
+ <ldloc name="i" />
+ <callvirt type="System.String" name="get_Chars" sig="(I)C" />
+ <bne_un name="ret_false" />
+ <ldloc name="i" />
+ <ldc_i4_1 />
+ <add />
+ <stloc name="i" type="System.Int32" />
+ <label name="start_loop" />
+ <ldloc name="i" />
+ <ldarg_1 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <blt name="next" />
+ <ldc_i4_1 />
+ <ret />
+ <label name="ret_false" />
+ <ldc_i4_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="startsWith" sig="(Ljava.lang.String;I)Z" modifiers="public" nonullcheck="true">
+ <parameter name="prefix" />
+ <parameter name="toffset" />
+ <body>
+ <!--
+ if (toffset >= 0
+ && toffset <= this.Length
+ && this.Length - toffset >= prefix.Length)
+ {
+ for (int i = 0; i < prefix.Length; i++)
+ {
+ if (this[i + toffset] != prefix[i])
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ -->
+ <ldarg_0 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <ldarg_2 />
+ <blt_un name="ret_false" />
+ <ldarg_0 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <ldarg_2 />
+ <sub />
+ <ldarg_1 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <blt name="ret_false" />
+ <ldc_i4_0 />
+ <stloc name="i" type="System.Int32" />
+ <br name="start_loop" />
+ <label name="next" />
+ <ldarg_0 />
+ <ldloc name="i" />
+ <ldarg_2 />
+ <add />
+ <callvirt type="System.String" name="get_Chars" sig="(I)C" />
+ <ldarg_1 />
+ <ldloc name="i" />
+ <callvirt type="System.String" name="get_Chars" sig="(I)C" />
+ <bne_un name="ret_false" />
+ <ldloc name="i" />
+ <ldc_i4_1 />
+ <add />
+ <stloc name="i" type="System.Int32" />
+ <label name="start_loop" />
+ <ldloc name="i" />
+ <ldarg_1 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <blt name="next" />
+ <ldc_i4_1 />
+ <ret />
+ <label name="ret_false" />
+ <ldc_i4_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="endsWith" sig="(Ljava.lang.String;)Z" modifiers="public" nonullcheck="true">
+ <parameter name="suffix" />
+ <body>
+ <!--
+ int j = this.Length - suffix.Length;
+ if (j >= 0)
+ {
+ for (int i = 0; i < suffix.Length; i++)
+ {
+ if (this[j++] != suffix[i])
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ -->
+ <ldarg_0 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <ldarg_1 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <sub />
+ <stloc name="j" type="System.Int32" />
+ <ldloc name="j" />
+ <ldc_i4_0 />
+ <blt name="ret_false" />
+ <ldc_i4_0 />
+ <stloc name="i" type="System.Int32" />
+ <br name="start_loop" />
+ <label name="next" />
+ <ldarg_0 />
+ <ldloc name="j" />
+ <dup />
+ <ldc_i4_1 />
+ <add />
+ <stloc name="j" type="System.Int32" />
+ <callvirt type="System.String" name="get_Chars" sig="(I)C" />
+ <ldarg_1 />
+ <ldloc name="i" />
+ <callvirt type="System.String" name="get_Chars" sig="(I)C" />
+ <bne_un name="ret_false" />
+ <ldloc name="i" />
+ <ldc_i4_1 />
+ <add />
+ <stloc name="i" type="System.Int32" />
+ <label name="start_loop" />
+ <ldloc name="i" />
+ <ldarg_1 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <blt name="next" />
+ <ldc_i4_1 />
+ <ret />
+ <label name="ret_false" />
+ <ldc_i4_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="toUpperCase" sig="()Ljava.lang.String;" modifiers="public">
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ </method>
+ <method name="toUpperCase" sig="(Ljava.util.Locale;)Ljava.lang.String;" modifiers="public">
+ <parameter name="locale" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.util.Locale;)Ljava.lang.String;" />
+ </method>
+ <method name="toLowerCase" sig="()Ljava.lang.String;" modifiers="public">
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ </method>
+ <method name="toLowerCase" sig="(Ljava.util.Locale;)Ljava.lang.String;" modifiers="public">
+ <parameter name="locale" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.util.Locale;)Ljava.lang.String;" />
+ </method>
+ <method name="compareToIgnoreCase" sig="(Ljava.lang.String;)I" modifiers="public">
+ <parameter name="str" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)I" />
+ </method>
+ <method name="equalsIgnoreCase" sig="(Ljava.lang.String;)Z" modifiers="public">
+ <parameter name="anotherString" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)Z" />
+ </method>
+ <method name="intern" sig="()Ljava.lang.String;" modifiers="public">
+ <redirect type="static" name="Intern" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ </method>
+ <method name="compareTo" sig="(Ljava.lang.String;)I" modifiers="public">
+ <parameter name="anotherString" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)I" />
+ </method>
+ <method name="compareTo" sig="(Ljava.lang.Object;)I" modifiers="public">
+ <parameter name="o" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <castclass type="System.String" />
+ <call class="java.lang.StringHelper" name="compareTo" sig="(Ljava.lang.String;Ljava.lang.String;)I" />
+ <ret />
+ </body>
+ </method>
+ <method name="replace" sig="(CC)Ljava.lang.String;" modifiers="public">
+ <parameter name="oldChar" />
+ <parameter name="newChar" />
+ <redirect name="Replace" />
+ </method>
+ <method name="getBytes" sig="()[B" modifiers="public">
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;)[B" />
+ </method>
+ <method name="getBytes" sig="(Ljava.lang.String;)[B" modifiers="public">
+ <parameter name="charsetName" />
+ <throws class="java.io.UnsupportedEncodingException" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)[B" />
+ </method>
+ <method name="subSequence" sig="(II)Ljava.lang.CharSequence;" modifiers="public">
+ <parameter name="beginIndex" />
+ <parameter name="endIndex" />
+ <redirect class="java.lang.StringHelper" type="static" name="substring" sig="(Lcli.System.String;II)Ljava.lang.String;" />
+ </method>
+ <method name="trim" sig="()Ljava.lang.String;" modifiers="public">
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ </method>
+ <method name="regionMatches" sig="(ZILjava.lang.String;II)Z" modifiers="public">
+ <parameter name="ignoreCase" />
+ <parameter name="toffset" />
+ <parameter name="other" />
+ <parameter name="ooffset" />
+ <parameter name="len" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;ZILjava.lang.String;II)Z" />
+ </method>
+ <method name="regionMatches" sig="(ILjava.lang.String;II)Z" modifiers="public">
+ <parameter name="toffset" />
+ <parameter name="other" />
+ <parameter name="ooffset" />
+ <parameter name="len" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;ILjava.lang.String;II)Z" />
+ </method>
+ <method name="getBytes" sig="(II[BI)V" modifiers="public">
+ <parameter name="srcBegin" />
+ <parameter name="srcEnd" />
+ <parameter name="dst" />
+ <parameter name="dstBegin" />
+ <attribute type="System.ObsoleteAttribute" sig="()V" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;II[BI)V" />
+ </method>
+ <method name="concat" sig="(Ljava.lang.String;)Ljava.lang.String;" modifiers="public">
+ <parameter name="str" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;" />
+ </method>
+ <method name="contains" sig="(Ljava.lang.CharSequence;)Z" modifiers="public">
+ <parameter name="s" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.CharSequence;)Z" />
+ </method>
+ <method name="codePointAt" sig="(I)I" modifiers="public">
+ <parameter name="index" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;I)I" />
+ </method>
+ <method name="codePointBefore" sig="(I)I" modifiers="public">
+ <parameter name="index" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;I)I" />
+ </method>
+ <method name="codePointCount" sig="(II)I" modifiers="public">
+ <parameter name="beginIndex" />
+ <parameter name="endIndex" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;II)I" />
+ </method>
+ <method name="offsetByCodePoints" sig="(II)I" modifiers="public">
+ <parameter name="index" />
+ <parameter name="codePointOffset" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;II)I" />
+ </method>
+ <method name="contentEquals" sig="(Ljava.lang.CharSequence;)Z" modifiers="public">
+ <parameter name="cs" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.CharSequence;)Z" />
+ </method>
+ <method name="contentEquals" sig="(Ljava.lang.StringBuffer;)Z" modifiers="public">
+ <parameter name="sb" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <callvirt class="java.lang.StringBuffer" name="toString" sig="()Ljava.lang.String;" />
+ <callvirt type="System.String" name="Equals" sig="(Ljava.lang.String;)Z" />
+ <ret />
+ </body>
+ </method>
+ <method name="replace" sig="(Ljava.lang.CharSequence;Ljava.lang.CharSequence;)Ljava.lang.String;" modifiers="public">
+ <parameter name="target" />
+ <parameter name="replacement" />
+ <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.CharSequence;Ljava.lang.CharSequence;)Ljava.lang.String;" />
+ </method>
+ <method name="matches" sig="(Ljava.lang.String;)Z" modifiers="public">
+ <parameter name="regex" />
+ <body>
+ <ldarg_1 />
+ <ldarg_0 />
+ <call class="java.util.regex.Pattern" name="matches" sig="(Ljava.lang.String;Ljava.lang.CharSequence;)Z" />
+ <ret />
+ </body>
+ </method>
+ <method name="replaceAll" sig="(Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;" modifiers="public">
+ <parameter name="regex" />
+ <parameter name="replacement" />
+ <body>
+ <ldarg_1 />
+ <call class="java.util.regex.Pattern" name="compile" sig="(Ljava.lang.String;)Ljava.util.regex.Pattern;" />
+ <ldarg_0 />
+ <callvirt class="java.util.regex.Pattern" name="matcher" sig="(Ljava.lang.CharSequence;)Ljava.util.regex.Matcher;" />
+ <ldarg_2 />
+ <callvirt class="java.util.regex.Matcher" name="replaceAll" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ <ret />
+ </body>
+ </method>
+ <method name="replaceFirst" sig="(Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;" modifiers="public">
+ <parameter name="regex" />
+ <parameter name="replacement" />
+ <body>
+ <ldarg_1 />
+ <call class="java.util.regex.Pattern" name="compile" sig="(Ljava.lang.String;)Ljava.util.regex.Pattern;" />
+ <ldarg_0 />
+ <callvirt class="java.util.regex.Pattern" name="matcher" sig="(Ljava.lang.CharSequence;)Ljava.util.regex.Matcher;" />
+ <ldarg_2 />
+ <callvirt class="java.util.regex.Matcher" name="replaceFirst" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ <ret />
+ </body>
+ </method>
+ <method name="split" sig="(Ljava.lang.String;)[Ljava.lang.String;" modifiers="public">
+ <parameter name="regex" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <ldc_i4_0 />
+ <callvirt class="java.lang.String" name="split" sig="(Ljava.lang.String;I)[Ljava.lang.String;" />
+ <ret />
+ </body>
+ </method>
+ <method name="split" sig="(Ljava.lang.String;I)[Ljava.lang.String;" modifiers="public">
+ <parameter name="regex" />
+ <parameter name="limit" />
+ <body>
+ <ldarg_1 />
+ <call class="java.util.regex.Pattern" name="compile" sig="(Ljava.lang.String;)Ljava.util.regex.Pattern;" />
+ <ldarg_0 />
+ <ldarg_2 />
+ <callvirt class="java.util.regex.Pattern" name="split" sig="(Ljava.lang.CharSequence;I)[Ljava.lang.String;" />
+ <ret />
+ </body>
+ </method>
+ <method name="copyValueOf" sig="([C)Ljava.lang.String;" modifiers="public static">
+ <parameter name="data" />
+ <body>
+ <!-- force a NullPointerException if the array is null -->
+ <ldarg_0 />
+ <ldlen />
+ <pop />
+ <ldarg_0 />
+ <newobj type="System.String" name=".ctor" sig="([C)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="copyValueOf" sig="([CII)Ljava.lang.String;" modifiers="public static">
+ <parameter name="data" />
+ <parameter name="offset" />
+ <parameter name="count" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <ldarg_2 />
+ <newobj type="System.String" name=".ctor" sig="([CII)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="format" sig="(Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.String;" modifiers="public static">
+ <parameter name="format" />
+ <parameter name="args">
+ <attribute type="System.ParamArrayAttribute" sig="()V" />
+ </parameter>
+ <body>
+ <newobj class="java.util.Formatter" name="&lt;init&gt;" sig="()V" />
+ <ldarg_0 />
+ <ldarg_1 />
+ <callvirt class="java.util.Formatter" name="format" sig="(Ljava.lang.String;[Ljava.lang.Object;)Ljava.util.Formatter;" />
+ <callvirt class="java.util.Formatter" name="toString" sig="()Ljava.lang.String;" />
+ <ret />
+ </body>
+ </method>
+ <method name="format" sig="(Ljava.util.Locale;Ljava.lang.String;[Ljava.lang.Object;)Ljava.lang.String;" modifiers="public static">
+ <parameter name="l" />
+ <parameter name="format" />
+ <parameter name="args">
+ <attribute type="System.ParamArrayAttribute" sig="()V" />
+ </parameter>
+ <body>
+ <ldarg_0 />
+ <newobj class="java.util.Formatter" name="&lt;init&gt;" sig="(Ljava.util.Locale;)V" />
+ <ldarg_1 />
+ <ldarg_2 />
+ <callvirt class="java.util.Formatter" name="format" sig="(Ljava.lang.String;[Ljava.lang.Object;)Ljava.util.Formatter;" />
+ <callvirt class="java.util.Formatter" name="toString" sig="()Ljava.lang.String;" />
+ <ret />
+ </body>
+ </method>
+ <method name="isEmpty" sig="()Z" modifiers="public">
+ <body>
+ <ldarg_0 />
+ <callvirt type="System.String" name="get_Length" sig="()I" />
+ <ldc_i4_0 />
+ <ceq />
+ <ret />
+ </body>
+ </method>
+ <method name="getBytes" sig="(Ljava.nio.charset.Charset;)[B" modifiers="public">
+ <parameter name="charset" />
+ <body>
+ <ldarg_1 />
+ <ldarg_0 />
+ <callvirt class="java.nio.charset.Charset" name="encode" sig="(Ljava.lang.String;)Ljava.nio.ByteBuffer;" />
+ <callvirt class="java.nio.ByteBuffer" name="array" sig="()[B" />
+ <ret />
+ </body>
+ </method>
+ <field name="CASE_INSENSITIVE_ORDER" sig="Ljava.util.Comparator;" modifiers="public static final">
+ <attribute type="IKVM.Attributes.SignatureAttribute" sig="(Ljava.lang.String;)V">
+ <parameter>Ljava/util/Comparator&lt;Ljava/lang/String;&gt;;</parameter>
+ </attribute>
+ </field>
+ <!-- NOTE we're redirecting fields to static methods here!
+ NOTE only reading fields can be redirected
+ -->
+ <field name="count" sig="I" modifiers="">
+ <redirect class="java.lang.StringHelper" type="static" name="GetCountField" sig="(Lcli.System.String;)I" />
+ </field>
+ <!-- Making a new char array instead of directly accessing the contents of the string, probably isn't
+ as efficient as the coder of this construct wished for, but hey ;-) At least it works...
+ -->
+ <method name="zeroBasedStringValue" sig="(Ljava.lang.String;)[C" modifiers="static">
+ <body>
+ <ldarg_0 />
+ <call type="System.String" name="ToCharArray" sig="()[C" />
+ <ret />
+ </body>
+ </method>
+ <!-- NOTE value and offset aren't used anymore in Classpath's StringBuffer, so we should drop them -->
+ <field name="value" sig="[C" modifiers="">
+ <redirect class="java.lang.StringHelper" type="static" name="GetValueField" sig="(Lcli.System.String;)[C" />
+ </field>
+ <field name="offset" sig="I" modifiers="">
+ <redirect class="java.lang.StringHelper" type="static" name="GetOffsetField" sig="(Lcli.System.String;)I" />
+ </field>
+ <!-- TODO mark this method as BeforeFieldInit (and benchmark to see if that is faster) -->
+ <clinit>
+ <body>
+ <newobj class="java.lang.String$CaseInsensitiveComparator" name="&lt;init&gt;" sig="()V" />
+ <stsfld class="java.lang.String" name="CASE_INSENSITIVE_ORDER" sig="Ljava.util.Comparator;" />
+ <ret />
+ </body>
+ </clinit>
+ </class>
+ <class name="java.lang.Throwable" shadows="System.Exception" modifiers="public">
+ <implements class="java.io.Serializable" />
+ <field name="serialVersionUID" sig="J" modifiers="private static final" constant="-3042686055658047285" />
+ <field name="serialPersistentFields" sig="[Ljava.io.ObjectStreamField;" modifiers="private static final" />
+ <field name="suppressFillInStackTrace" sig="Z" modifiers="private static">
+ <attribute type="System.ThreadStaticAttribute" sig="()V" />
+ </field>
+ <clinit>
+ <body>
+ <call class="java.lang.ExceptionHelper" name="getPersistentFields" sig="()[Ljava.io.ObjectStreamField;" />
+ <stsfld class="java.lang.Throwable" name="serialPersistentFields" sig="[Ljava.io.ObjectStreamField;" />
+ <ret />
+ </body>
+ </clinit>
+ <method name="__&lt;suppressFillInStackTrace&gt;" sig="()V" modifiers="public static">
+ <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" />
+ <attribute type="System.ComponentModel.EditorBrowsableAttribute" sig="(Lcli.System.ComponentModel.EditorBrowsableState;)V">
+ <parameter>Never</parameter>
+ </attribute>
+ <body>
+ <ldc_i4_1 />
+ <stsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <ret />
+ </body>
+ </method>
+ <method name="__&lt;map&gt;" sig="(Ljava.lang.Throwable;Z)Ljava.lang.Throwable;" modifiers="public static">
+ <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" />
+ <attribute type="System.ComponentModel.EditorBrowsableAttribute" sig="(Lcli.System.ComponentModel.EditorBrowsableState;)V">
+ <parameter>Never</parameter>
+ </attribute>
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <call class="java.lang.ExceptionHelper" name="MapExceptionFast" sig="(Ljava.lang.Throwable;Z)Ljava.lang.Throwable;" />
+ <ret />
+ </body>
+ </method>
+ <method name="__&lt;map&gt;" sig="(Ljava.lang.Throwable;Lcli.System.Type;Z)Ljava.lang.Throwable;" modifiers="public static">
+ <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" />
+ <attribute type="System.ComponentModel.EditorBrowsableAttribute" sig="(Lcli.System.ComponentModel.EditorBrowsableState;)V">
+ <parameter>Never</parameter>
+ </attribute>
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <ldarg_2 />
+ <call class="java.lang.ExceptionHelper" name="MapException" sig="(Ljava.lang.Throwable;Lcli.System.Type;Z)Ljava.lang.Throwable;" />
+ <ret />
+ </body>
+ </method>
+ <method name="__&lt;unmap&gt;" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" modifiers="public static">
+ <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" />
+ <attribute type="System.ComponentModel.EditorBrowsableAttribute" sig="(Lcli.System.ComponentModel.EditorBrowsableState;)V">
+ <parameter>Never</parameter>
+ </attribute>
+ <body>
+ <ldarg_0 />
+ <call class="java.lang.ExceptionHelper" name="UnmapException" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" />
+ <ret />
+ </body>
+ </method>
+ <method name="readObject" sig="(Ljava.io.ObjectInputStream;)V" modifiers="private">
+ <throws class="java.io.IOException" />
+ <throws class="java.lang.ClassNotFoundException" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <call class="java.lang.ExceptionHelper" name="readObject" sig="(Ljava.lang.Throwable;Ljava.io.ObjectInputStream;)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="writeObject" sig="(Ljava.io.ObjectOutputStream;)V" modifiers="private">
+ <throws class="java.io.IOException" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <call class="java.lang.ExceptionHelper" name="writeObject" sig="(Ljava.lang.Throwable;Ljava.io.ObjectOutputStream;)V" />
+ <ret />
+ </body>
+ </method>
+ <constructor sig="()V" modifiers="public">
+ <body>
+ <ldarg_0 />
+ <call class="java.lang.ExceptionHelper" name="get_NullString" sig="()Ljava.lang.String;" />
+ <call type="System.Exception" name=".ctor" sig="(Ljava.lang.String;)V" />
+ <!-- Start fillInStackTrace call -->
+ <ldsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <ldc_i4_0 />
+ <stsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <brtrue name="skipFillInStackTrace" />
+ <ldarg_0 />
+ <callvirt class="java.lang.Throwable" name="fillInStackTrace" sig="()Ljava.lang.Throwable;" />
+ <pop />
+ <label name="skipFillInStackTrace" />
+ <!-- End fillInStackTrace call -->
+ <ret />
+ </body>
+ </constructor>
+ <constructor sig="(Ljava.lang.String;)V" modifiers="public">
+ <parameter name="message" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <call class="java.lang.ExceptionHelper" name="FilterMessage" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ <call type="System.Exception" name=".ctor" sig="(Ljava.lang.String;)V" />
+ <!-- Start fillInStackTrace call -->
+ <ldsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <ldc_i4_0 />
+ <stsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <brtrue name="skipFillInStackTrace" />
+ <ldarg_0 />
+ <callvirt class="java.lang.Throwable" name="fillInStackTrace" sig="()Ljava.lang.Throwable;" />
+ <pop />
+ <label name="skipFillInStackTrace" />
+ <!-- End fillInStackTrace call -->
+ <ret />
+ </body>
+ </constructor>
+ <constructor sig="(Ljava.lang.String;Ljava.lang.Throwable;)V" modifiers="public">
+ <parameter name="message" />
+ <parameter name="cause" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <call class="java.lang.ExceptionHelper" name="FilterMessage" sig="(Ljava.lang.String;)Ljava.lang.String;" />
+ <ldarg_2 />
+ <call type="System.Exception" name=".ctor" sig="(Ljava.lang.String;Ljava.lang.Throwable;)V" />
+ <!-- Start fillInStackTrace call -->
+ <ldsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <ldc_i4_0 />
+ <stsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <brtrue name="skipFillInStackTrace" />
+ <ldarg_0 />
+ <callvirt class="java.lang.Throwable" name="fillInStackTrace" sig="()Ljava.lang.Throwable;" />
+ <pop />
+ <label name="skipFillInStackTrace" />
+ <!-- End fillInStackTrace call -->
+ <ldarg_2 />
+ <brtrue name="skip" />
+ <ldarg_0 />
+ <ldarg_2 />
+ <call class="java.lang.ExceptionHelper" name="initCause" sig="(Ljava.lang.Throwable;Ljava.lang.Throwable;)Ljava.lang.Throwable;" />
+ <pop />
+ <label name="skip" />
+ <ret />
+ </body>
+ </constructor>
+ <constructor sig="(Ljava.lang.Throwable;)V" modifiers="public">
+ <parameter name="cause" />
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <call class="java.lang.ExceptionHelper" name="GetMessageFromCause" sig="(Ljava.lang.Throwable;)Ljava.lang.String;" />
+ <ldarg_1 />
+ <call type="System.Exception" name=".ctor" sig="(Ljava.lang.String;Ljava.lang.Throwable;)V" />
+ <!-- Start fillInStackTrace call -->
+ <ldsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <ldc_i4_0 />
+ <stsfld class="java.lang.Throwable" name="suppressFillInStackTrace" sig="Z" />
+ <brtrue name="skipFillInStackTrace" />
+ <ldarg_0 />
+ <callvirt class="java.lang.Throwable" name="fillInStackTrace" sig="()Ljava.lang.Throwable;" />
+ <pop />
+ <label name="skipFillInStackTrace" />
+ <!-- End fillInStackTrace call -->
+ <ldarg_1 />
+ <brtrue name="skip" />
+ <ldarg_0 />
+ <ldarg_1 />
+ <call class="java.lang.ExceptionHelper" name="initCause" sig="(Ljava.lang.Throwable;Ljava.lang.Throwable;)Ljava.lang.Throwable;" />
+ <pop />
+ <label name="skip" />
+ <ret />
+ </body>
+ </constructor>
+ <method type="virtual" name="printStackTrace" sig="()V" modifiers="public">
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)V" type="static" />
+ </method>
+ <method type="virtual" name="printStackTrace" sig="(Ljava.io.PrintStream;)V" modifiers="public">
+ <parameter name="s" />
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;Ljava.io.PrintStream;)V" type="static" />
+ </method>
+ <method type="virtual" name="printStackTrace" sig="(Ljava.io.PrintWriter;)V" modifiers="public">
+ <parameter name="s" />
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;Ljava.io.PrintWriter;)V" type="static" />
+ </method>
+ <method type="virtual" name="getMessage" sig="()Ljava.lang.String;" modifiers="public">
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.String;" type="static" />
+ </method>
+ <method type="virtual" name="getLocalizedMessage" sig="()Ljava.lang.String;" modifiers="public">
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.String;" type="static" />
+ </method>
+ <method type="virtual" name="fillInStackTrace" sig="()Ljava.lang.Throwable;" modifiers="public">
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" type="static" />
+ </method>
+ <method type="virtual" name="initCause" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" modifiers="public">
+ <parameter name="cause" />
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;Ljava.lang.Throwable;)Ljava.lang.Throwable;" type="static" />
+ </method>
+ <method type="virtual" name="getCause" sig="()Ljava.lang.Throwable;" modifiers="public">
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" type="static" />
+ </method>
+ <method type="virtual" name="getStackTrace" sig="()[Ljava.lang.StackTraceElement;" modifiers="public">
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)[Ljava.lang.StackTraceElement;" type="static" />
+ </method>
+ <method type="virtual" name="setStackTrace" sig="([Ljava.lang.StackTraceElement;)V" modifiers="public">
+ <parameter name="stackTrace" />
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;[Ljava.lang.StackTraceElement;)V" type="static" />
+ </method>
+ <method type="virtual" name="toString" sig="()Ljava.lang.String;" modifiers="public">
+ <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.String;" type="static" />
+ </method>
+ </class>
+ <class name="java.lang.Comparable" shadows="System.IComparable" modifiers="public abstract interface">
+ <attribute type="IKVM.Attributes.SignatureAttribute" sig="(Ljava.lang.String;)V">
+ <parameter>&lt;T:Ljava/lang/Object;&gt;Ljava/lang/Object;</parameter>
+ </attribute>
+ <method name="compareTo" sig="(Ljava.lang.Object;)I" modifiers="public abstract">
+ <attribute type="IKVM.Attributes.SignatureAttribute" sig="(Ljava.lang.String;)V">
+ <parameter>(TT;)I</parameter>
+ </attribute>
+ <parameter name="o" />
+ <override name="CompareTo" />
+ </method>
+ </class>
+ <!-- Here we are adding/replacing methods to existing classes -->
+ <class name="java.lang.Class">
+ <field name="typeWrapper" sig="Ljava.lang.Object;" modifiers="private" />
+ <field name="pd" sig="Ljava.security.ProtectionDomain;" modifiers="private" />
+ <field name="signers" sig="[Ljava.lang.Object;" modifiers="private" />
+ <field name="constantPool" sig="Ljava.lang.Object;" modifiers="private" />
+ <method name="op_Implicit" sig="(Lcli.System.Type;)Ljava.lang.Class;" modifiers="public static" attributes="SpecialName">
+ <attribute type="IKVM.Attributes.HideFromJavaAttribute" sig="()V" />
+ <body>
+ <ldarg_0 />
+ <call class="ikvm.runtime.Util" name="getFriendlyClassFromType" sig="(Lcli.System.Type;)Ljava.lang.Class;" />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.lang.ClassLoader">
+ <field name="wrapper" sig="Ljava.lang.Object;" modifiers="private" />
+ <method name="getBootstrapResource" sig="(Ljava.lang.String;)Ljava.net.URL;">
+ <body>
+ <ldarg_0 />
+ <call class="java.lang.LangHelper" name="getBootstrapResource" sig="(Ljava.lang.String;)Ljava.net.URL;" />
+ <ret />
+ </body>
+ </method>
+ <method name="getBootstrapResources" sig="(Ljava.lang.String;)Ljava.util.Enumeration;">
+ <body>
+ <ldarg_0 />
+ <call class="java.lang.LangHelper" name="getBootstrapResources" sig="(Ljava.lang.String;)Ljava.util.Enumeration;" />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="ikvm.internal.EnumEnum">
+ <field name="typeWrapper" sig="Ljava.lang.Object;" modifiers="private" />
+ </class>
+ <class name="java.lang.Package">
+ <method name="getSystemPackage" sig="(Ljava.lang.String;)Ljava.lang.Package;" modifiers="static">
+ <body>
+ <ldsfld class="java.lang.Package" name="pkgs" sig="Ljava.util.Map;" />
+ <ldarg_0 />
+ <call class="java.lang.LangHelper" name="getSystemPackage" sig="(Ljava.util.Map;Ljava.lang.String;)Ljava.lang.Package;" />
+ <ret />
+ </body>
+ </method>
+ <method name="getSystemPackages" sig="()[Ljava.lang.Package;" modifiers="static">
+ <body>
+ <ldsfld class="java.lang.Package" name="pkgs" sig="Ljava.util.Map;" />
+ <call class="java.lang.LangHelper" name="getSystemPackages" sig="(Ljava.util.Map;)[Ljava.lang.Package;" />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <!-- This is where the "native" helper methods start -->
+ <class name="ikvm.lang.CIL">
+ <method name="unbox_byte" sig="(Ljava.lang.Object;)B">
+ <body>
+ <ldarg_0 />
+ <unbox type="System.Byte" />
+ <ldind_i1 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_boolean" sig="(Ljava.lang.Object;)Z">
+ <body>
+ <ldarg_0 />
+ <unbox type="System.Boolean" />
+ <ldind_i1 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_short" sig="(Ljava.lang.Object;)S">
+ <body>
+ <ldarg_0 />
+ <unbox type="System.Int16" />
+ <ldind_i2 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_char" sig="(Ljava.lang.Object;)C">
+ <body>
+ <ldarg_0 />
+ <unbox type="System.Char" />
+ <ldind_i2 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_int" sig="(Ljava.lang.Object;)I">
+ <body>
+ <ldarg_0 />
+ <unbox type="System.Int32" />
+ <ldind_i4 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_float" sig="(Ljava.lang.Object;)F">
+ <body>
+ <ldarg_0 />
+ <unbox type="System.Single" />
+ <ldind_r4 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_long" sig="(Ljava.lang.Object;)J">
+ <body>
+ <ldarg_0 />
+ <unbox type="System.Int64" />
+ <ldind_i8 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_double" sig="(Ljava.lang.Object;)D">
+ <body>
+ <ldarg_0 />
+ <unbox type="System.Double" />
+ <ldind_r8 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_byte" sig="(B)Lcli.System.Byte;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_boolean" sig="(Z)Lcli.System.Boolean;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_short" sig="(S)Lcli.System.Int16;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_char" sig="(C)Lcli.System.Char;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_int" sig="(I)Lcli.System.Int32;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_float" sig="(F)Lcli.System.Single;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_long" sig="(J)Lcli.System.Int64;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_double" sig="(D)Lcli.System.Double;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_sbyte" sig="(B)Lcli.System.SByte;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_ushort" sig="(S)Lcli.System.UInt16;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_uint" sig="(I)Lcli.System.UInt32;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="box_ulong" sig="(J)Lcli.System.UInt64;">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_sbyte" sig="(Lcli.System.SByte;)B">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_ushort" sig="(Lcli.System.UInt16;)S">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_uint" sig="(Lcli.System.UInt32;)I">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ <method name="unbox_ulong" sig="(Lcli.System.UInt64;)J">
+ <body>
+ <ldarg_0 />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.lang.VMSystem">
+ <method name="identityHashCode" sig="(Ljava.lang.Object;)I">
+ <body>
+ <ldarg_0 />
+ <conditional framework="2.0">
+ <code>
+ <call type="System.Runtime.CompilerServices.RuntimeHelpers" name="GetHashCode" sig="(Ljava.lang.Object;)I" />
+ </code>
+ </conditional>
+ <conditional framework="1.1">
+ <code>
+ <!-- FXBUG RuntimeHelpers.GetHashCode is broken in multi AppDomain scenarios (on v1.x) -->
+ <call type="System.Object" name="GetHashCode" sig="()I" />
+ </code>
+ </conditional>
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="gnu.java.net.PlainDatagramSocketImpl">
+ <method name="setDatagramPacketLength" sig="(Ljava.net.DatagramPacket;I)V">
+ <body>
+ <ldarg_0 />
+ <ldarg_1 />
+ <stfld class="java.net.DatagramPacket" name="length" sig="I" />
+ <ret />
+ </body>
+ </method>
+ <method name="getDatagramPacketBufferLength" sig="(Ljava.net.DatagramPacket;)I">
+ <body>
+ <ldarg_0 />
+ <ldfld class="java.net.DatagramPacket" name="maxlen" sig="I" />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.nio.channels.VMChannels">
+ <method name="newInputStream" sig="(Lgnu.java.nio.FileChannelImpl;)Ljava.io.FileInputStream;">
+ <body>
+ <ldarg_0 />
+ <newobj class="java.io.FileInputStream" name="&lt;init&gt;" sig="(Lgnu.java.nio.FileChannelImpl;)V" />
+ <ret />
+ </body>
+ </method>
+ <method name="newOutputStream" sig="(Lgnu.java.nio.FileChannelImpl;)Ljava.io.FileOutputStream;">
+ <body>
+ <ldarg_0 />
+ <newobj class="java.io.FileOutputStream" name="&lt;init&gt;" sig="(Lgnu.java.nio.FileChannelImpl;)V" />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.util.concurrent.atomic.AtomicReference">
+ <method name="compareAndSet" sig="(Ljava.lang.Object;Ljava.lang.Object;)Z">
+ <body>
+ <ldarg_0 />
+ <ldflda class="java.util.concurrent.atomic.AtomicReference" name="value" sig="Ljava.lang.Object;" />
+ <ldarg_2 />
+ <ldarg_1 />
+ <call type="System.Threading.Interlocked" name="CompareExchange" sig="System.Object&amp;;System.Object;System.Object" />
+ <ldarg_1 />
+ <ceq />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.util.concurrent.atomic.AtomicReferenceArray">
+ <method name="get" sig="(I)Ljava.lang.Object;">
+ <body>
+ <ldarg_0 />
+ <ldfld class="java.util.concurrent.atomic.AtomicReferenceArray" name="array" sig="[Ljava.lang.Object;" />
+ <ldarg_1 />
+ <ldelema sig="Ljava.lang.Object;" />
+ <volatile />
+ <ldind_ref />
+ <ret />
+ </body>
+ </method>
+ <method name="set" sig="(ILjava.lang.Object;)V">
+ <body>
+ <ldarg_0 />
+ <ldfld class="java.util.concurrent.atomic.AtomicReferenceArray" name="array" sig="[Ljava.lang.Object;" />
+ <ldarg_1 />
+ <ldelema sig="Ljava.lang.Object;" />
+ <ldarg_2 />
+ <volatile />
+ <stind_ref />
+ <ret />
+ </body>
+ </method>
+ <method name="compareAndSet" sig="(ILjava.lang.Object;Ljava.lang.Object;)Z">
+ <body>
+ <ldarg_0 />
+ <ldfld class="java.util.concurrent.atomic.AtomicReferenceArray" name="array" sig="[Ljava.lang.Object;" />
+ <ldarg_1 />
+ <ldelema sig="Ljava.lang.Object;" />
+ <ldarg_3 />
+ <ldarg_2 />
+ <call type="System.Threading.Interlocked" name="CompareExchange" sig="System.Object&amp;;System.Object;System.Object" />
+ <ldarg_2 />
+ <ceq />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.util.concurrent.atomic.AtomicInteger">
+ <method name="getAndSet" sig="(I)I">
+ <body>
+ <ldarg_0 />
+ <ldflda class="java.util.concurrent.atomic.AtomicInteger" name="value" sig="I" />
+ <ldarg_1 />
+ <call type="System.Threading.Interlocked" name="Exchange" sig="System.Int32&amp;;System.Int32" />
+ <ret />
+ </body>
+ </method>
+ <method name="compareAndSet" sig="(II)Z">
+ <body>
+ <ldarg_0 />
+ <ldflda class="java.util.concurrent.atomic.AtomicInteger" name="value" sig="I" />
+ <ldarg_2 />
+ <ldarg_1 />
+ <call type="System.Threading.Interlocked" name="CompareExchange" sig="System.Int32&amp;;System.Int32;System.Int32" />
+ <ldarg_1 />
+ <ceq />
+ <ret />
+ </body>
+ </method>
+ <method name="incrementAndGet" sig="()I">
+ <body>
+ <ldarg_0 />
+ <ldflda class="java.util.concurrent.atomic.AtomicInteger" name="value" sig="I" />
+ <call type="System.Threading.Interlocked" name="Increment" sig="System.Int32&amp;" />
+ <ret />
+ </body>
+ </method>
+ <method name="decrementAndGet" sig="()I">
+ <body>
+ <ldarg_0 />
+ <ldflda class="java.util.concurrent.atomic.AtomicInteger" name="value" sig="I" />
+ <call type="System.Threading.Interlocked" name="Decrement" sig="System.Int32&amp;" />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.util.concurrent.atomic.AtomicIntegerArray">
+ <method name="get" sig="(I)I">
+ <body>
+ <ldarg_0 />
+ <ldfld class="java.util.concurrent.atomic.AtomicIntegerArray" name="array" sig="[I" />
+ <ldarg_1 />
+ <ldelema sig="I" />
+ <volatile />
+ <ldind_i4 />
+ <ret />
+ </body>
+ </method>
+ <method name="set" sig="(II)V">
+ <body>
+ <ldarg_0 />
+ <ldfld class="java.util.concurrent.atomic.AtomicIntegerArray" name="array" sig="[I" />
+ <ldarg_1 />
+ <ldelema sig="I" />
+ <ldarg_2 />
+ <volatile />
+ <stind_i4 />
+ <ret />
+ </body>
+ </method>
+ <method name="compareAndSet" sig="(III)Z">
+ <body>
+ <ldarg_0 />
+ <ldfld class="java.util.concurrent.atomic.AtomicIntegerArray" name="array" sig="[I" />
+ <ldarg_1 />
+ <ldelema sig="I" />
+ <ldarg_3 />
+ <ldarg_2 />
+ <call type="System.Threading.Interlocked" name="CompareExchange" sig="System.Int32&amp;;System.Int32;System.Int32" />
+ <ldarg_2 />
+ <ceq />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.util.concurrent.atomic.AtomicLong">
+ <method name="VMSupportsCS8" sig="()Z">
+ <body>
+ <ldc_i4_0 />
+ <ret />
+ </body>
+ </method>
+ </class>
+ <class name="java.lang.Byte">
+ <implements class="cli.System.IFormattable">
+ <method name="ToString" sig="(Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;">
+ <redirect class="ikvm.internal.Formatter" type="static" name="ToString" sig="(Ljava.lang.Byte;Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;" />
+ </method>
+ </implements>
+ </class>
+ <class name="java.lang.Short">
+ <implements class="cli.System.IFormattable">
+ <method name="ToString" sig="(Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;">
+ <redirect class="ikvm.internal.Formatter" type="static" name="ToString" sig="(Ljava.lang.Short;Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;" />
+ </method>
+ </implements>
+ </class>
+ <class name="java.lang.Integer">
+ <implements class="cli.System.IFormattable">
+ <method name="ToString" sig="(Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;">
+ <redirect class="ikvm.internal.Formatter" type="static" name="ToString" sig="(Ljava.lang.Integer;Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;" />
+ </method>
+ </implements>
+ </class>
+ <class name="java.lang.Long">
+ <implements class="cli.System.IFormattable">
+ <method name="ToString" sig="(Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;">
+ <redirect class="ikvm.internal.Formatter" type="static" name="ToString" sig="(Ljava.lang.Long;Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;" />
+ </method>
+ </implements>
+ </class>
+ <class name="java.lang.Float">
+ <implements class="cli.System.IFormattable">
+ <method name="ToString" sig="(Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;">
+ <redirect class="ikvm.internal.Formatter" type="static" name="ToString" sig="(Ljava.lang.Float;Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;" />
+ </method>
+ </implements>
+ </class>
+ <class name="java.lang.Double">
+ <implements class="cli.System.IFormattable">
+ <method name="ToString" sig="(Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;">
+ <redirect class="ikvm.internal.Formatter" type="static" name="ToString" sig="(Ljava.lang.Double;Ljava.lang.String;Lcli.System.IFormatProvider;)Ljava.lang.String;" />
+ </method>
+ </implements>
+ </class>
+ <class name="java.lang.Runtime">
+ <method name="addShutdownHook" sig="(Ljava.lang.Thread;)V">
+ <attribute type="System.Security.Permissions.SecurityPermissionAttribute" sig="(Lcli.System.Security.Permissions.SecurityAction;)V">
+ <parameter>LinkDemand</parameter>
+ <property name="ControlAppDomain" sig="Z">true</property>
+ </attribute>
+ </method>
+ </class>
+ </assembly>
+ <exceptionMappings>
+ <exception src="System.NullReferenceException" dst="java.lang.NullPointerException" />
+ <!-- many of the String and Object methods throw ArgumentNullException where Java throws an NPE -->
+ <exception src="System.ArgumentNullException" dst="java.lang.NullPointerException" />
+ <exception src="System.IndexOutOfRangeException" dst="java.lang.ArrayIndexOutOfBoundsException" />
+ <!-- HACK for String methods, we remap ArgumentOutOfRangeException to StringIndexOutOfBoundsException -->
+ <exception src="System.ArgumentOutOfRangeException" dst="java.lang.StringIndexOutOfBoundsException" />
+ <exception src="System.InvalidCastException" dst="java.lang.ClassCastException" />
+ <!-- NOTE we "map" to java.lang.Error, because that is the base class of all possible mappings.
+ The * in front of the class name means that all subclasses can be thrown as well.
+ -->
+ <exception src="System.TypeInitializationException" dst="*java.lang.Error">
+ <code>
+ <!-- this code is unreachable, TypeInitializationException is handled explicitly in ExceptionHelper.java -->
+ </code>
+ </exception>
+ <exception src="System.Threading.SynchronizationLockException" dst="java.lang.IllegalMonitorStateException" />
+ <exception src="System.OutOfMemoryException" dst="java.lang.OutOfMemoryError" />
+ <exception src="System.DivideByZeroException" dst="java.lang.ArithmeticException">
+ <code>
+ <pop />
+ <ldstr value="/ by zero" />
+ <newobj class="java.lang.ArithmeticException" name="&lt;init&gt;" sig="(Ljava.lang.String;)V" />
+ </code>
+ </exception>
+ <exception src="System.ArrayTypeMismatchException" dst="java.lang.ArrayStoreException" />
+ <exception src="System.StackOverflowException" dst="java.lang.StackOverflowError" />
+ <exception src="System.Security.VerificationException" dst="java.lang.VerifyError" />
+ <exception src="System.Threading.ThreadAbortException" dst="java.lang.ThreadDeath">
+ <code>
+ <castclass type="System.Threading.ThreadAbortException" />
+ <call type="System.Threading.ThreadAbortException" name="get_ExceptionState" sig="()Ljava.lang.Object;" />
+ <isinst class="java.lang.ThreadDeath" />
+ <dup />
+ <brtrue name="end" />
+ <pop />
+ <newobj class="java.lang.ThreadDeath" name="&lt;init&gt;" sig="()V" />
+ <label name="end" />
+ <!-- NOTE we do this last because ResetAbort clears the ExceptionState of the ThreadAbortException (why?) -->
+ <!-- TODO we should put an exception handler around the ResetAbort call, because it will throw a ThreadStateException
+ if no Abort is pending (someone could have thrown the exception manually, or we could have called on a
+ previous handler that turned out not to be match for this exception type) -->
+ <stloc name="x" class="java.lang.ThreadDeath" />
+ <exceptionBlock>
+ <try>
+ <!-- TODO instead of catching the ThreadStateException, we should check the ThreadState
+ before calling ResetAbort -->
+ <call type="System.Threading.Thread" name="ResetAbort" sig="()V" />
+ </try>
+ <catch type="System.Threading.ThreadStateException">
+ <!-- ignore the exception -->
+ </catch>
+ </exceptionBlock>
+ <ldloc name="x" />
+ </code>
+ </exception>
+ <!-- TODO make sure the originating method was from an IKVM.NET generated assembly, because if it was
+ generated by non-Java code, this remapping is obviously bogus. -->
+ <exception src="System.OverflowException" dst="java.lang.NegativeArraySizeException" />
+ </exceptionMappings>
+</root>