~ubuntu-branches/ubuntu/dapper/ikvm/dapper

« back to all changes in this revision

Viewing changes to classpath/map.xml

  • Committer: Bazaar Package Importer
  • Author(s): John Goerzen
  • Date: 2004-08-26 10:18:19 UTC
  • Revision ID: james.westby@ubuntu.com-20040826101819-plz8au2mx4uk1cvc
Tags: upstream-0.8.0.0
ImportĀ upstreamĀ versionĀ 0.8.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="utf-8" ?> 
 
2
<!--
 
3
  Copyright (C) 2002, 2003, 2004 Jeroen Frijters
 
4
 
 
5
  This software is provided 'as-is', without any express or implied
 
6
  warranty.  In no event will the authors be held liable for any damages
 
7
  arising from the use of this software.
 
8
 
 
9
  Permission is granted to anyone to use this software for any purpose,
 
10
  including commercial applications, and to alter it and redistribute it
 
11
  freely, subject to the following restrictions:
 
12
 
 
13
  1. The origin of this software must not be misrepresented; you must not
 
14
     claim that you wrote the original software. If you use this software
 
15
     in a product, an acknowledgment in the product documentation would be
 
16
     appreciated but is not required.
 
17
  2. Altered source versions must be plainly marked as such, and must not be
 
18
     misrepresented as being the original software.
 
19
  3. This notice may not be removed or altered from any source distribution.
 
20
 
 
21
  Jeroen Frijters
 
22
  jeroen@frijters.net
 
23
  
 
24
-->
 
25
<root>
 
26
        <assembly>
 
27
                <class name="java.lang.Object" shadows="System.Object, mscorlib" modifiers="public">
 
28
                        <constructor sig="()V" modifiers="public" />
 
29
                        <method name="notifyAll" sig="()V" modifiers="public final">
 
30
                                <body>
 
31
                                        <ldarg_0 />
 
32
                                        <call type="System.Threading.Monitor, mscorlib" name="PulseAll" sig="(Ljava.lang.Object;)V" />
 
33
                                        <ret />
 
34
                                </body>
 
35
                        </method>
 
36
                        <method name="notify" sig="()V" modifiers="public final">
 
37
                                <body>
 
38
                                        <ldarg_0 />
 
39
                                        <call type="System.Threading.Monitor, mscorlib" name="Pulse" sig="(Ljava.lang.Object;)V" />
 
40
                                        <ret />
 
41
                                </body>
 
42
                        </method>
 
43
                        <method name="wait" sig="()V" modifiers="public final">
 
44
                                <throws class="java.lang.InterruptedException" />
 
45
                                <body>
 
46
                                        <ldarg_0 />
 
47
                                        <call type="System.Threading.Monitor, mscorlib" name="Wait" sig="(Ljava.lang.Object;)Z" />
 
48
                                        <!-- For some reason, Wait returns a boolean -->
 
49
                                        <pop />
 
50
                                        <ret />
 
51
                                </body>
 
52
                        </method>
 
53
                        <method name="wait" sig="(J)V" modifiers="public final">
 
54
                                <throws class="java.lang.InterruptedException" />
 
55
                                <body>
 
56
                                        <ldarg_0 />
 
57
                                        <ldarg_1 />
 
58
                                        <ldc_i4_0 />
 
59
                                        <call class="java.lang.ObjectHelper" name="wait" sig="(Ljava.lang.Object;JI)V" />
 
60
                                        <ret />
 
61
                                </body>
 
62
                        </method>
 
63
                        <method name="wait" sig="(JI)V" modifiers="public final">
 
64
                                <throws class="java.lang.InterruptedException" />
 
65
                                <body>
 
66
                                        <ldarg_0 />
 
67
                                        <ldarg_1 />
 
68
                                        <ldarg_2 />
 
69
                                        <call class="java.lang.ObjectHelper" name="wait" sig="(Ljava.lang.Object;JI)V" />
 
70
                                        <ret />
 
71
                                </body>
 
72
                        </method>
 
73
                        <method name="getClass" sig="()Ljava.lang.Class;" modifiers="public final">
 
74
                                <body>
 
75
                                        <ldarg_0 />
 
76
                                        <call type="System.Object, mscorlib" name="GetType" />
 
77
                                        <call type="NativeCode.java.lang.VMClass" name="getClassFromType" />
 
78
                                        <castclass class="java.lang.Class" />
 
79
                                        <ret />
 
80
                                </body>
 
81
                        </method>
 
82
                        <method name="clone" sig="()Ljava.lang.Object;" modifiers="protected">
 
83
                                <throws class="java.lang.CloneNotSupportedException" />
 
84
                                <body>
 
85
                                        <ldarg_0 />
 
86
                                        <isinst class="java.lang.Cloneable" />
 
87
                                        <brtrue name="ok" />
 
88
                                        <newobj class="java.lang.CloneNotSupportedException" name="&lt;init&gt;" sig="()V" />
 
89
                                        <throw />
 
90
                                        <label name="ok" />
 
91
                                        <ldarg_0 />
 
92
                                        <call type="System.Object, mscorlib" name="MemberwiseClone" />
 
93
                                        <ret />
 
94
                                </body>
 
95
                                <alternateBody>
 
96
                                        <ldarg_0 />
 
97
                                        <isinst type="System.Array, mscorlib" />
 
98
                                        <dup />
 
99
                                        <brtrue name="ok" />
 
100
                                        <newobj class="java.lang.CloneNotSupportedException" name="&lt;init&gt;" sig="()V" />
 
101
                                        <throw />
 
102
                                        <label name="ok" />
 
103
                                        <call type="System.Array, mscorlib" name="Clone" sig="()Ljava.lang.Object;" />
 
104
                                        <ret />
 
105
                                </alternateBody>
 
106
                        </method>
 
107
                        <method name="toString" sig="()Ljava.lang.String;" modifiers="public">
 
108
                                <override name="ToString" />
 
109
                                <body>
 
110
                                        <ldarg_0 />
 
111
                                        <call class="java.lang.ObjectHelper" name="toStringSpecial" sig="(Ljava.lang.Object;)Ljava.lang.String;" />
 
112
                                        <ret />
 
113
                                </body>
 
114
                                <alternateBody>
 
115
                                        <ldarg_0 />
 
116
                                        <isinst type="System.Array, mscorlib" />
 
117
                                        <brfalse name="skip" />
 
118
                                        <ldarg_0 />
 
119
                                        <call class="java.lang.ObjectHelper" name="toStringSpecial" sig="(Ljava.lang.Object;)Ljava.lang.String;" />
 
120
                                        <br name="end" />
 
121
                                        <label name="skip" />
 
122
                                        <ldarg_0 />
 
123
                                        <callvirt type="System.Object, mscorlib" name="ToString" />
 
124
                                        <label name="end" />
 
125
                                        <ret />
 
126
                                </alternateBody>
 
127
                        </method>
 
128
                        <method name="hashCode" sig="()I" modifiers="public">
 
129
                                <override name="GetHashCode" />
 
130
                        </method>
 
131
                        <method name="equals" sig="(Ljava.lang.Object;)Z" modifiers="public">
 
132
                                <override name="Equals" />
 
133
                        </method>
 
134
                        <method name="finalize" sig="()V" modifiers="protected">
 
135
                                <throws class="java.lang.Throwable" />
 
136
                                <!-- NOTE we don't override Finalize, because that would be bad for performance,
 
137
                                         instead, the compiler contains a hack to lazily override Finalize when a class
 
138
                                         overrides our finalize
 
139
                                         TODO consider adding code to constructor (in debug builds) to detect that someone
 
140
                                         has overriden our finalize from another .NET language (if no intermediate Java base class
 
141
                                         has overriden finalize, the lazy override of Object.Finalize hasn't kicked in and finalize
 
142
                                         will never be called)
 
143
                                -->
 
144
                                <body>
 
145
                                        <ldarg_0 />
 
146
                                        <call type="System.Object, mscorlib" name="Finalize" />
 
147
                                        <ret />
 
148
                                </body>
 
149
                                <alternateBody>
 
150
                                        <!-- if code in the java.lang package explicitly invokes finalize on a non java.lang.Object
 
151
                                                 derived object we just ignore it -->
 
152
                                        <ret />
 
153
                                </alternateBody>
 
154
                        </method>
 
155
                </class>
 
156
                <class name="java.lang.String" shadows="System.String, mscorlib" modifiers="public final">
 
157
                        <implements class="java.lang.Comparable" />
 
158
                        <implements class="java.lang.CharSequence" />
 
159
                        <implements class="java.io.Serializable" />
 
160
                        <field name="serialVersionUID" sig="J" modifiers="private static final" constant="-6849794470754667710" />
 
161
                        <constructor sig="()V" modifiers="public">
 
162
                                <alternateBody>
 
163
                                        <ldstr value="" />
 
164
                                        <call type="System.String, mscorlib" name="Copy" />
 
165
                                        <ret />
 
166
                                </alternateBody>
 
167
                        </constructor>
 
168
                        <constructor sig="([C)V" modifiers="public">
 
169
                <alternateBody>
 
170
                                        <!-- force a NullPointerException if the array is null -->
 
171
                                        <ldarg_0 />
 
172
                                        <ldlen />
 
173
                                        <pop />
 
174
                                        <ldarg_0 />
 
175
                                        <newobj type="System.String, mscorlib" name=".ctor" sig="([C)V" />
 
176
                                        <ret />
 
177
                                </alternateBody>
 
178
                        </constructor>
 
179
                        <constructor sig="([CII)V" modifiers="public" />
 
180
                        <!-- Package private constructor, that we redirect to static helper -->
 
181
                        <constructor sig="([CIIZ)V" modifiers="">
 
182
                                <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([CIIZ)Ljava.lang.String;" />
 
183
                        </constructor>
 
184
                        <constructor sig="(Ljava.lang.String;)V" modifiers="public">
 
185
                                <redirect class="System.String, mscorlib" name="Copy" type="static" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
186
                        </constructor>
 
187
                        <constructor sig="(Ljava.lang.StringBuffer;)V" modifiers="public">
 
188
                                <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="(Ljava.lang.StringBuffer;)Ljava.lang.String;" />
 
189
                        </constructor>
 
190
                        <constructor sig="([B)V" modifiers="public">
 
191
                                <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([B)Ljava.lang.String;" />
 
192
                        </constructor>
 
193
                        <constructor sig="([BI)V" modifiers="public">
 
194
                                <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BI)Ljava.lang.String;" />
 
195
                        </constructor>
 
196
                        <constructor sig="([BII)V" modifiers="public">
 
197
                                <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BII)Ljava.lang.String;" />
 
198
                        </constructor>
 
199
                        <constructor sig="([BIII)V" modifiers="public">
 
200
                                <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BIII)Ljava.lang.String;" />
 
201
                        </constructor>
 
202
                        <constructor sig="([BLjava.lang.String;)V" modifiers="public">
 
203
                                <throws class="java.io.UnsupportedEncodingException" />
 
204
                                <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BLjava.lang.String;)Ljava.lang.String;" />
 
205
                        </constructor>
 
206
                        <constructor sig="([BIILjava.lang.String;)V" modifiers="public">
 
207
                                <throws class="java.io.UnsupportedEncodingException" />
 
208
                                <redirect class="java.lang.StringHelper" name="NewString" type="static" sig="([BIILjava.lang.String;)Ljava.lang.String;" />
 
209
                        </constructor>
 
210
                        <method name="hashCode" sig="()I" modifiers="public">
 
211
                                <body>
 
212
                                        <ldarg_0 />
 
213
                                        <call class="java.lang.StringHelper" name="hashCode" sig="(Lcli.System.String;)I" />
 
214
                                        <ret />
 
215
                                </body>
 
216
                        </method>
 
217
                        <!-- we have a toString here to make sure that it shows up as a declared method in reflection -->
 
218
                        <method name="toString" sig="()Ljava.lang.String;" modifiers="public" />
 
219
                        <!-- we have an equals here to make sure that it shows up as a declared method in reflection -->
 
220
                        <method name="equals" sig="(Ljava.lang.Object;)Z" modifiers="public" />
 
221
                        <method name="valueOf" sig="(Z)Ljava.lang.String;" modifiers="public static">
 
222
                                <redirect class="java.lang.StringHelper" />
 
223
                        </method>
 
224
                        <method name="valueOf" sig="(I)Ljava.lang.String;" modifiers="public static">
 
225
                                <redirect class="java.lang.StringHelper" />
 
226
                        </method>
 
227
                        <method name="valueOf" sig="(J)Ljava.lang.String;" modifiers="public static">
 
228
                                <redirect class="java.lang.StringHelper" />
 
229
                        </method>
 
230
                        <method name="valueOf" sig="(C)Ljava.lang.String;" modifiers="public static">
 
231
                                <redirect class="java.lang.StringHelper" sig="(C)Lcli.System.String;" />
 
232
                        </method>
 
233
                        <method name="valueOf" sig="(F)Ljava.lang.String;" modifiers="public static">
 
234
                                <redirect class="java.lang.StringHelper" />
 
235
                        </method>
 
236
                        <method name="valueOf" sig="(D)Ljava.lang.String;" modifiers="public static">
 
237
                                <redirect class="java.lang.StringHelper" />
 
238
                        </method>
 
239
                        <method name="valueOf" sig="([C)Ljava.lang.String;" modifiers="public static">
 
240
                                <redirect class="java.lang.StringHelper" />
 
241
                        </method>
 
242
                        <method name="valueOf" sig="([CII)Ljava.lang.String;" modifiers="public static">
 
243
                                <redirect class="java.lang.StringHelper" />
 
244
                        </method>
 
245
                        <method name="valueOf" sig="(Ljava.lang.Object;)Ljava.lang.String;" modifiers="public static">
 
246
                                <redirect class="java.lang.StringHelper" />
 
247
                        </method>
 
248
                        <method name="substring" sig="(I)Ljava.lang.String;" modifiers="public">
 
249
                                <redirect name="Substring" />
 
250
                        </method>
 
251
                        <method name="length" sig="()I" modifiers="public">
 
252
                                <redirect name="get_Length" />
 
253
                        </method>
 
254
                        <method name="charAt" sig="(I)C" modifiers="public">
 
255
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;I)C" />
 
256
                        </method>
 
257
                        <method name="substring" sig="(II)Ljava.lang.String;" modifiers="public">
 
258
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;II)Ljava.lang.String;" />
 
259
                        </method>
 
260
                        <method name="indexOf" sig="(I)I" modifiers="public">
 
261
                                <body>
 
262
                                        <ldarg_1 />
 
263
                                        <ldc_i4 value="65535" />
 
264
                                        <ble_un name="ok" />
 
265
                                        <ldc_i4_m1 />
 
266
                                        <ret />
 
267
                                        <label name="ok" />
 
268
                                        <ldarg_0 />
 
269
                                        <ldarg_1 />
 
270
                                        <call type="System.String, mscorlib" name="IndexOf" sig="(C)I" />
 
271
                                        <ret />
 
272
                                </body>
 
273
                        </method>
 
274
                        <method name="indexOf" sig="(II)I" modifiers="public">
 
275
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;II)I" />
 
276
                        </method>
 
277
                        <method name="indexOf" sig="(Ljava.lang.String;)I" modifiers="public">
 
278
                                <redirect name="IndexOf" />
 
279
                        </method>
 
280
                        <method name="indexOf" sig="(Ljava.lang.String;I)I" modifiers="public">
 
281
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;Ljava.lang.String;I)I" />
 
282
                        </method>
 
283
                        <method name="lastIndexOf" sig="(I)I" modifiers="public">
 
284
                                <body>
 
285
                                        <ldarg_1 />
 
286
                                        <ldc_i4 value="65535" />
 
287
                                        <ble_un name="ok" />
 
288
                                        <ldc_i4_m1 />
 
289
                                        <ret />
 
290
                                        <label name="ok" />
 
291
                                        <ldarg_0 />
 
292
                                        <ldarg_1 />
 
293
                                        <call type="System.String, mscorlib" name="LastIndexOf" sig="(C)I" />
 
294
                                        <ret />
 
295
                                </body>
 
296
                        </method>
 
297
                        <method name="lastIndexOf" sig="(II)I" modifiers="public">
 
298
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;II)I" />
 
299
                        </method>
 
300
                        <method name="lastIndexOf" sig="(Ljava.lang.String;)I" modifiers="public">
 
301
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;Ljava.lang.String;)I" />
 
302
                        </method>
 
303
                        <method name="lastIndexOf" sig="(Ljava.lang.String;I)I" modifiers="public">
 
304
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;Ljava.lang.String;I)I" />
 
305
                        </method>
 
306
                        <method name="toCharArray" sig="()[C" modifiers="public">
 
307
                                <redirect name="ToCharArray" />
 
308
                        </method>
 
309
                        <method name="getChars" sig="(II[CI)V" modifiers="public">
 
310
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;II[CI)V" />
 
311
                        </method>
 
312
                        <method name="startsWith" sig="(Ljava.lang.String;)Z" modifiers="public">
 
313
                                <redirect name="StartsWith" />
 
314
                        </method>
 
315
                        <method name="startsWith" sig="(Ljava.lang.String;I)Z" modifiers="public">
 
316
                                <redirect class="java.lang.StringHelper" type="static" sig="(Lcli.System.String;Ljava.lang.String;I)Z" />
 
317
                        </method>
 
318
                        <method name="endsWith" sig="(Ljava.lang.String;)Z" modifiers="public">
 
319
                                <redirect name="EndsWith" />
 
320
                        </method>
 
321
                        <method name="toUpperCase" sig="()Ljava.lang.String;" modifiers="public">
 
322
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
323
                        </method>
 
324
                        <method name="toUpperCase" sig="(Ljava.util.Locale;)Ljava.lang.String;" modifiers="public">
 
325
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.util.Locale;)Ljava.lang.String;" />
 
326
                        </method>
 
327
                        <method name="toLowerCase" sig="()Ljava.lang.String;" modifiers="public">
 
328
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
329
                        </method>
 
330
                        <method name="toLowerCase" sig="(Ljava.util.Locale;)Ljava.lang.String;" modifiers="public">
 
331
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.util.Locale;)Ljava.lang.String;" />
 
332
                        </method>
 
333
                        <method name="compareToIgnoreCase" sig="(Ljava.lang.String;)I" modifiers="public">
 
334
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)I" />
 
335
                        </method>
 
336
                        <method name="equalsIgnoreCase" sig="(Ljava.lang.String;)Z" modifiers="public">
 
337
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)Z" />
 
338
                        </method>
 
339
                        <method name="intern" sig="()Ljava.lang.String;" modifiers="public">
 
340
                                <redirect type="static" name="Intern" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
341
                        </method>
 
342
                        <method name="compareTo" sig="(Ljava.lang.String;)I" modifiers="public">
 
343
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)I" />
 
344
                        </method>
 
345
                        <method name="compareTo" sig="(Ljava.lang.Object;)I" modifiers="public">
 
346
                                <redirect name="CompareTo" />
 
347
                        </method>
 
348
                        <method name="replace" sig="(CC)Ljava.lang.String;" modifiers="public">
 
349
                                <redirect name="Replace" />
 
350
                        </method>
 
351
                        <method name="getBytes" sig="()[B" modifiers="public">
 
352
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;)[B" />
 
353
                        </method>
 
354
                        <method name="getBytes" sig="(Ljava.lang.String;)[B" modifiers="public">
 
355
                                <throws class="java.io.UnsupportedEncodingException" />
 
356
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)[B" />
 
357
                        </method>
 
358
                        <method name="subSequence" sig="(II)Ljava.lang.CharSequence;" modifiers="public">
 
359
                                <redirect class="java.lang.StringHelper" type="static" name="substring" sig="(Lcli.System.String;II)Ljava.lang.String;" />
 
360
                        </method>
 
361
                        <method name="trim" sig="()Ljava.lang.String;" modifiers="public">
 
362
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
363
                        </method>
 
364
                        <method name="regionMatches" sig="(ZILjava.lang.String;II)Z" modifiers="public">
 
365
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;ZILjava.lang.String;II)Z" />
 
366
                        </method>
 
367
                        <method name="regionMatches" sig="(ILjava.lang.String;II)Z" modifiers="public">
 
368
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;ILjava.lang.String;II)Z" />
 
369
                        </method>
 
370
                        <method name="getBytes" sig="(II[BI)V" modifiers="public">
 
371
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;II[BI)V" />
 
372
                        </method>
 
373
                        <method name="concat" sig="(Ljava.lang.String;)Ljava.lang.String;" modifiers="public">
 
374
                                <redirect class="java.lang.StringHelper" type="static" sig="(Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;" />
 
375
                        </method>
 
376
                        <method name="contentEquals" sig="(Ljava.lang.StringBuffer;)Z" modifiers="public">
 
377
                                <body>
 
378
                                        <ldarg_0 />
 
379
                                        <ldarg_1 />
 
380
                                        <callvirt class="java.lang.StringBuffer" name="toString" sig="()Ljava.lang.String;" />
 
381
                                        <callvirt type="System.String, mscorlib" name="Equals" sig="(Ljava.lang.String;)Z" />
 
382
                                        <ret />
 
383
                                </body>
 
384
                        </method>
 
385
                        <method name="matches" sig="(Ljava.lang.String;)Z" modifiers="public">
 
386
                                <body>
 
387
                                        <ldarg_1 />
 
388
                                        <ldarg_0 />
 
389
                                        <call class="java.util.regex.Pattern" name="matches" sig="(Ljava.lang.String;Ljava.lang.CharSequence;)Z" />
 
390
                                        <ret />
 
391
                                </body>
 
392
                        </method>
 
393
                        <method name="replaceAll" sig="(Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;" modifiers="public">
 
394
                                <body>
 
395
                                        <ldarg_1 />
 
396
                                        <call class="java.util.regex.Pattern" name="compile" sig="(Ljava.lang.String;)Ljava.util.regex.Pattern;" />
 
397
                                        <ldarg_0 />
 
398
                                        <callvirt class="java.util.regex.Pattern" name="matcher" sig="(Ljava.lang.CharSequence;)Ljava.util.regex.Matcher;" />
 
399
                                        <ldarg_2 />
 
400
                                        <callvirt class="java.util.regex.Matcher" name="replaceAll" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
401
                                        <ret />
 
402
                                </body>
 
403
                        </method>
 
404
                        <method name="replaceFirst" sig="(Ljava.lang.String;Ljava.lang.String;)Ljava.lang.String;" modifiers="public">
 
405
                                <body>
 
406
                                        <ldarg_1 />
 
407
                                        <call class="java.util.regex.Pattern" name="compile" sig="(Ljava.lang.String;)Ljava.util.regex.Pattern;" />
 
408
                                        <ldarg_0 />
 
409
                                        <callvirt class="java.util.regex.Pattern" name="matcher" sig="(Ljava.lang.CharSequence;)Ljava.util.regex.Matcher;" />
 
410
                                        <ldarg_2 />
 
411
                                        <callvirt class="java.util.regex.Matcher" name="replaceFirst" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
412
                                        <ret />
 
413
                                </body>
 
414
                        </method>
 
415
                        <method name="split" sig="(Ljava.lang.String;)[Ljava.lang.String;" modifiers="public">
 
416
                                <body>
 
417
                                        <ldarg_0 />
 
418
                                        <ldarg_1 />
 
419
                                        <ldc_i4_0 />
 
420
                                        <callvirt class="java.lang.String" name="split" sig="(Ljava.lang.String;I)[Ljava.lang.String;" />
 
421
                                        <ret />
 
422
                                </body>
 
423
                        </method>
 
424
                        <method name="split" sig="(Ljava.lang.String;I)[Ljava.lang.String;" modifiers="public">
 
425
                                <body>
 
426
                                        <ldarg_1 />
 
427
                                        <call class="java.util.regex.Pattern" name="compile" sig="(Ljava.lang.String;)Ljava.util.regex.Pattern;" />
 
428
                                        <ldarg_0 />
 
429
                                        <ldarg_2 />
 
430
                                        <callvirt class="java.util.regex.Pattern" name="split" sig="(Ljava.lang.CharSequence;I)[Ljava.lang.String;" />
 
431
                                        <ret />
 
432
                                </body>
 
433
                        </method>
 
434
                        <method name="copyValueOf" sig="([C)Ljava.lang.String;" modifiers="public static">
 
435
                                <body>
 
436
                                        <!-- force a NullPointerException if the array is null -->
 
437
                                        <ldarg_0 />
 
438
                                        <ldlen />
 
439
                                        <pop />
 
440
                                        <ldarg_0 />
 
441
                                        <newobj type="System.String, mscorlib" name=".ctor" sig="([C)V" />
 
442
                                        <ret />
 
443
                                </body>
 
444
                        </method>
 
445
                        <method name="copyValueOf" sig="([CII)Ljava.lang.String;" modifiers="public static">
 
446
                                <body>
 
447
                                        <ldarg_0 />
 
448
                                        <ldarg_1 />
 
449
                                        <ldarg_2 />
 
450
                                        <newobj type="System.String, mscorlib" name=".ctor" sig="([CII)V" />
 
451
                                        <ret />
 
452
                                </body>
 
453
                        </method>
 
454
                        <field name="CASE_INSENSITIVE_ORDER" sig="Ljava.util.Comparator;" modifiers="public static final" />
 
455
                        <!-- NOTE we're redirecting fields to static methods here!
 
456
                                NOTE only reading fields can be redirected
 
457
                        -->
 
458
                        <field name="count" sig="I" modifiers="">
 
459
                                <redirect class="java.lang.StringHelper" type="static" name="GetCountField" sig="(Lcli.System.String;)I" />
 
460
                        </field>
 
461
                        <!-- Making a new char array instead of directly accessing the contents of the string, probably isn't
 
462
                                as efficient as the coder of this construct wished for, but hey ;-) At least it works...
 
463
                        -->
 
464
                        <method name="zeroBasedStringValue" sig="(Ljava.lang.String;)[C" modifiers="static">
 
465
                                <body>
 
466
                                        <ldarg_0 />
 
467
                                        <call type="System.String, mscorlib" name="ToCharArray" sig="()[C" />
 
468
                                        <ret />
 
469
                                </body>
 
470
                        </method>
 
471
                        <!-- NOTE value and offset aren't used anymore in Classpath's StringBuffer, so we should drop them -->
 
472
                        <field name="value" sig="[C" modifiers="">
 
473
                                <redirect class="java.lang.StringHelper" type="static" name="GetValueField" sig="(Lcli.System.String;)[C" />
 
474
                        </field>
 
475
                        <field name="offset" sig="I" modifiers="">
 
476
                                <redirect class="java.lang.StringHelper" type="static" name="GetOffsetField" sig="(Lcli.System.String;)I" />
 
477
                        </field>
 
478
                        <!-- TODO mark this method as BeforeFieldInit (and benchmark to see if that is faster) -->
 
479
                        <clinit>
 
480
                                <body>
 
481
                                        <newobj class="java.lang.String$CaseInsensitiveComparator" name="&lt;init&gt;" sig="()V" />
 
482
                                        <stsfld class="java.lang.String" name="CASE_INSENSITIVE_ORDER" sig="Ljava.util.Comparator;" />
 
483
                                        <ret />
 
484
                                </body>
 
485
                        </clinit>
 
486
                </class>
 
487
                <class name="java.lang.Throwable" shadows="System.Exception, mscorlib" modifiers="public">
 
488
                        <implements class="java.io.Serializable" />
 
489
                        <field name="serialVersionUID" sig="J" modifiers="private static final" constant="-3042686055658047285" />
 
490
                        <field name="serialPersistentFields" sig="[Ljava.io.ObjectStreamField;" modifiers="private static final" />
 
491
                        <clinit>
 
492
                                <body>
 
493
                                        <call class="java.lang.ExceptionHelper" name="getPersistentFields" sig="()[Ljava.io.ObjectStreamField;" />
 
494
                                        <stsfld class="java.lang.Throwable" name="serialPersistentFields" sig="[Ljava.io.ObjectStreamField;" />
 
495
                                        <ret />
 
496
                                </body>
 
497
                        </clinit>
 
498
                        <method name="readObject" sig="(Ljava.io.ObjectInputStream;)V" modifiers="private">
 
499
                                <throws class="java.io.IOException" />
 
500
                                <body>
 
501
                                        <ldarg_0 />
 
502
                                        <ldarg_1 />
 
503
                                        <call class="java.lang.ExceptionHelper" name="readObject" sig="(Ljava.lang.Throwable;Ljava.io.ObjectInputStream;)V" />
 
504
                                        <ret />
 
505
                                </body>
 
506
                        </method>
 
507
                        <method name="writeObject" sig="(Ljava.io.ObjectOutputStream;)V" modifiers="private">
 
508
                                <throws class="java.io.IOException" />
 
509
                                <body>
 
510
                                        <ldarg_0 />
 
511
                                        <ldarg_1 />
 
512
                                        <call class="java.lang.ExceptionHelper" name="writeObject" sig="(Ljava.lang.Throwable;Ljava.io.ObjectOutputStream;)V" />
 
513
                                        <ret />
 
514
                                </body>
 
515
                        </method>
 
516
                        <constructor sig="()V" modifiers="public">
 
517
                                <body>
 
518
                                        <ldarg_0 />
 
519
                                        <call class="java.lang.ExceptionHelper" name="get_NullString" sig="()Ljava.lang.String;" />
 
520
                                        <call type="System.Exception, mscorlib" name=".ctor" sig="(Ljava.lang.String;)V" />
 
521
                                        <ret />
 
522
                                </body>
 
523
                        </constructor>
 
524
                        <constructor sig="(Ljava.lang.String;)V" modifiers="public">
 
525
                                <body>
 
526
                                        <ldarg_0 />
 
527
                                        <ldarg_1 />
 
528
                                        <call class="java.lang.ExceptionHelper" name="FilterMessage" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
529
                                        <call type="System.Exception, mscorlib" name=".ctor" sig="(Ljava.lang.String;)V" />
 
530
                                        <ret />
 
531
                                </body>
 
532
                        </constructor>
 
533
                        <constructor sig="(Ljava.lang.String;Ljava.lang.Throwable;)V" modifiers="public">
 
534
                                <body>
 
535
                                        <ldarg_0 />
 
536
                                        <ldarg_1 />
 
537
                                        <call class="java.lang.ExceptionHelper" name="FilterMessage" sig="(Ljava.lang.String;)Ljava.lang.String;" />
 
538
                                        <ldarg_2 />
 
539
                                        <call type="System.Exception, mscorlib" name=".ctor" sig="(Ljava.lang.String;Ljava.lang.Throwable;)V" />
 
540
                                        <ldarg_2 />
 
541
                                        <brtrue name="skip" />
 
542
                                        <ldarg_0 />
 
543
                                        <ldarg_2 />
 
544
                                        <call class="java.lang.ExceptionHelper" name="initCause" sig="(Ljava.lang.Throwable;Ljava.lang.Throwable;)Ljava.lang.Throwable;" />
 
545
                                        <pop />
 
546
                                        <label name="skip" />
 
547
                                        <ret />
 
548
                                </body>
 
549
                        </constructor>
 
550
                        <constructor sig="(Ljava.lang.Throwable;)V" modifiers="public">
 
551
                                <body>
 
552
                                        <ldarg_0 />
 
553
                                        <ldarg_1 />
 
554
                                        <call class="java.lang.ExceptionHelper" name="GetMessageFromCause" sig="(Ljava.lang.Throwable;)Ljava.lang.String;" />
 
555
                                        <ldarg_1 />
 
556
                                        <call type="System.Exception, mscorlib" name=".ctor" sig="(Ljava.lang.String;Ljava.lang.Throwable;)V" />
 
557
                                        <ldarg_1 />
 
558
                                        <brtrue name="skip" />
 
559
                                        <ldarg_0 />
 
560
                                        <ldarg_1 />
 
561
                                        <call class="java.lang.ExceptionHelper" name="initCause" sig="(Ljava.lang.Throwable;Ljava.lang.Throwable;)Ljava.lang.Throwable;" />
 
562
                                        <pop />
 
563
                                        <label name="skip" />
 
564
                                        <ret />
 
565
                                </body>
 
566
                        </constructor>
 
567
                        <method type="virtual" name="printStackTrace" sig="()V" modifiers="public">
 
568
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)V" type="static" />
 
569
                        </method>
 
570
                        <method type="virtual" name="printStackTrace" sig="(Ljava.io.PrintStream;)V" modifiers="public">
 
571
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;Ljava.io.PrintStream;)V" type="static" />
 
572
                        </method>
 
573
                        <method type="virtual" name="printStackTrace" sig="(Ljava.io.PrintWriter;)V" modifiers="public">
 
574
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;Ljava.io.PrintWriter;)V" type="static" />
 
575
                        </method>
 
576
                        <method type="virtual" name="getMessage" sig="()Ljava.lang.String;" modifiers="public">
 
577
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.String;" type="static" />
 
578
                        </method>
 
579
                        <method type="virtual" name="getLocalizedMessage" sig="()Ljava.lang.String;" modifiers="public">
 
580
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.String;" type="static" />
 
581
                        </method>
 
582
                        <method type="virtual" name="fillInStackTrace" sig="()Ljava.lang.Throwable;" modifiers="public">
 
583
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" type="static" />
 
584
                        </method>
 
585
                        <method type="virtual" name="initCause" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" modifiers="public">
 
586
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;Ljava.lang.Throwable;)Ljava.lang.Throwable;" type="static" />
 
587
                        </method>
 
588
                        <method type="virtual" name="getCause" sig="()Ljava.lang.Throwable;" modifiers="public">
 
589
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" type="static" />
 
590
                        </method>
 
591
                        <method type="virtual" name="getStackTrace" sig="()[Ljava.lang.StackTraceElement;" modifiers="public">
 
592
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)[Ljava.lang.StackTraceElement;" type="static" />
 
593
                        </method>
 
594
                        <method type="virtual" name="setStackTrace" sig="([Ljava.lang.StackTraceElement;)V" modifiers="public">
 
595
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;[Ljava.lang.StackTraceElement;)V" type="static" />
 
596
                        </method>
 
597
                        <method type="virtual" name="toString" sig="()Ljava.lang.String;" modifiers="public">
 
598
                                <redirect class="java.lang.ExceptionHelper" sig="(Ljava.lang.Throwable;)Ljava.lang.String;" type="static" />
 
599
                        </method>
 
600
                </class>
 
601
                <class name="java.lang.Comparable" shadows="System.IComparable, mscorlib" modifiers="public abstract interface">
 
602
                        <method name="compareTo" sig="(Ljava.lang.Object;)I" modifiers="public abstract">
 
603
                                <override name="CompareTo" />
 
604
                        </method>
 
605
                </class>
 
606
                <class name="gnu.classpath.RawData" shadows="System.IntPtr, mscorlib" scope="private">
 
607
                        <!-- TODO custom boxing isn't support for non-private remapped types, but since this is the only
 
608
                             type that has a custom boxing rule, this isn't yet an issue -->
 
609
                        <box>
 
610
                                <!-- We special case boxing, to "box" IntPtr.Zero as null -->
 
611
                                <dup />
 
612
                                <brfalse name="null" />
 
613
                                <box type="System.IntPtr, mscorlib" />
 
614
                                <br name="end" />
 
615
                                <label name="null" />
 
616
                                <pop />
 
617
                                <ldnull />
 
618
                                <label name="end" />
 
619
                        </box>
 
620
                </class>
 
621
                <!-- This is where the "native" helper methods start -->
 
622
                <class name="ikvm.lang.CIL">
 
623
                        <method name="unbox_byte" sig="(Ljava.lang.Object;)B">
 
624
                                <body>
 
625
                                        <ldarg_0 />
 
626
                                        <unbox type="System.SByte, mscorlib" />
 
627
                                        <ldind_i1 />
 
628
                                        <ret />
 
629
                                </body>
 
630
                        </method>
 
631
                        <method name="unbox_boolean" sig="(Ljava.lang.Object;)Z">
 
632
                                <body>
 
633
                                        <ldarg_0 />
 
634
                                        <unbox type="System.Boolean, mscorlib" />
 
635
                                        <ldind_i1 />
 
636
                                        <ret />
 
637
                                </body>
 
638
                        </method>
 
639
                        <method name="unbox_short" sig="(Ljava.lang.Object;)S">
 
640
                                <body>
 
641
                                        <ldarg_0 />
 
642
                                        <unbox type="System.Int16, mscorlib" />
 
643
                                        <ldind_i2 />
 
644
                                        <ret />
 
645
                                </body>
 
646
                        </method>
 
647
                        <method name="unbox_char" sig="(Ljava.lang.Object;)C">
 
648
                                <body>
 
649
                                        <ldarg_0 />
 
650
                                        <unbox type="System.Char, mscorlib" />
 
651
                                        <ldind_i2 />
 
652
                                        <ret />
 
653
                                </body>
 
654
                        </method>
 
655
                        <method name="unbox_int" sig="(Ljava.lang.Object;)I">
 
656
                                <body>
 
657
                                        <ldarg_0 />
 
658
                                        <unbox type="System.Int32, mscorlib" />
 
659
                                        <ldind_i4 />
 
660
                                        <ret />
 
661
                                </body>
 
662
                        </method>
 
663
                        <method name="unbox_float" sig="(Ljava.lang.Object;)F">
 
664
                                <body>
 
665
                                        <ldarg_0 />
 
666
                                        <unbox type="System.Single, mscorlib" />
 
667
                                        <ldind_r4 />
 
668
                                        <ret />
 
669
                                </body>
 
670
                        </method>
 
671
                        <method name="unbox_long" sig="(Ljava.lang.Object;)J">
 
672
                                <body>
 
673
                                        <ldarg_0 />
 
674
                                        <unbox type="System.Int64, mscorlib" />
 
675
                                        <ldind_i8 />
 
676
                                        <ret />
 
677
                                </body>
 
678
                        </method>
 
679
                        <method name="unbox_double" sig="(Ljava.lang.Object;)D">
 
680
                                <body>
 
681
                                        <ldarg_0 />
 
682
                                        <unbox type="System.Double, mscorlib" />
 
683
                                        <ldind_r8 />
 
684
                                        <ret />
 
685
                                </body>
 
686
                        </method>
 
687
                        <method name="box_byte" sig="(B)Ljava.lang.Object;">
 
688
                                <body>
 
689
                                        <ldarg_0 />
 
690
                                        <box type="System.SByte, mscorlib" />
 
691
                                        <ret />
 
692
                                </body>
 
693
                        </method>
 
694
                        <method name="box_boolean" sig="(Z)Ljava.lang.Object;">
 
695
                                <body>
 
696
                                        <ldarg_0 />
 
697
                                        <box type="System.Boolean, mscorlib" />
 
698
                                        <ret />
 
699
                                </body>
 
700
                        </method>
 
701
                        <method name="box_short" sig="(S)Ljava.lang.Object;">
 
702
                                <body>
 
703
                                        <ldarg_0 />
 
704
                                        <box type="System.Int16, mscorlib" />
 
705
                                        <ret />
 
706
                                </body>
 
707
                        </method>
 
708
                        <method name="box_char" sig="(C)Ljava.lang.Object;">
 
709
                                <body>
 
710
                                        <ldarg_0 />
 
711
                                        <box type="System.Char, mscorlib" />
 
712
                                        <ret />
 
713
                                </body>
 
714
                        </method>
 
715
                        <method name="box_int" sig="(I)Ljava.lang.Object;">
 
716
                                <body>
 
717
                                        <ldarg_0 />
 
718
                                        <box type="System.Int32, mscorlib" />
 
719
                                        <ret />
 
720
                                </body>
 
721
                        </method>
 
722
                        <method name="box_float" sig="(F)Ljava.lang.Object;">
 
723
                                <body>
 
724
                                        <ldarg_0 />
 
725
                                        <box type="System.Single, mscorlib" />
 
726
                                        <ret />
 
727
                                </body>
 
728
                        </method>
 
729
                        <method name="box_long" sig="(J)Ljava.lang.Object;">
 
730
                                <body>
 
731
                                        <ldarg_0 />
 
732
                                        <box type="System.Int64, mscorlib" />
 
733
                                        <ret />
 
734
                                </body>
 
735
                        </method>
 
736
                        <method name="box_double" sig="(D)Ljava.lang.Object;">
 
737
                                <body>
 
738
                                        <ldarg_0 />
 
739
                                        <box type="System.Double, mscorlib" />
 
740
                                        <ret />
 
741
                                </body>
 
742
                        </method>
 
743
                        <method name="box_ubyte" sig="(B)Lcli.System.Byte;">
 
744
                                <body>
 
745
                                        <ldarg_0 />
 
746
                                        <ret />
 
747
                                </body>
 
748
                        </method>
 
749
                        <method name="box_ushort" sig="(S)Lcli.System.UInt16;">
 
750
                                <body>
 
751
                                        <ldarg_0 />
 
752
                                        <ret />
 
753
                                </body>
 
754
                        </method>
 
755
                        <method name="box_uint" sig="(I)Lcli.System.UInt32;">
 
756
                                <body>
 
757
                                        <ldarg_0 />
 
758
                                        <ret />
 
759
                                </body>
 
760
                        </method>
 
761
                        <method name="box_ulong" sig="(J)Lcli.System.UInt64;">
 
762
                                <body>
 
763
                                        <ldarg_0 />
 
764
                                        <ret />
 
765
                                </body>
 
766
                        </method>
 
767
                        <method name="unbox_ubyte" sig="(Lcli.System.Byte;)B">
 
768
                                <body>
 
769
                                        <ldarg_0 />
 
770
                                        <ret />
 
771
                                </body>
 
772
                        </method>
 
773
                        <method name="unbox_ushort" sig="(Lcli.System.UInt16;)S">
 
774
                                <body>
 
775
                                        <ldarg_0 />
 
776
                                        <ret />
 
777
                                </body>
 
778
                        </method>
 
779
                        <method name="unbox_uint" sig="(Lcli.System.UInt32;)I">
 
780
                                <body>
 
781
                                        <ldarg_0 />
 
782
                                        <ret />
 
783
                                </body>
 
784
                        </method>
 
785
                        <method name="unbox_ulong" sig="(Lcli.System.UInt64;)J">
 
786
                                <body>
 
787
                                        <ldarg_0 />
 
788
                                        <ret />
 
789
                                </body>
 
790
                        </method>
 
791
                </class>
 
792
                <class name="ikvm.lang.ByteArrayHack">
 
793
                        <method name="cast" sig="([B)[Lcli.System.Byte;">
 
794
                                <body>
 
795
                                        <ldarg_0 />
 
796
                                        <ret />
 
797
                                </body>
 
798
                        </method>
 
799
                        <method name="cast" sig="([Lcli.System.Byte;)[B">
 
800
                                <body>
 
801
                                        <ldarg_0 />
 
802
                                        <ret />
 
803
                                </body>
 
804
                        </method>
 
805
                </class>
 
806
        </assembly>
 
807
        <exceptionMappings>
 
808
                <exception src="System.NullReferenceException, mscorlib" dst="java.lang.NullPointerException" />
 
809
                <!-- many of the String and Object methods throw ArgumentNullException where Java throws an NPE -->
 
810
                <exception src="System.ArgumentNullException, mscorlib" dst="java.lang.NullPointerException" />
 
811
                <exception src="System.IndexOutOfRangeException, mscorlib" dst="java.lang.ArrayIndexOutOfBoundsException" />
 
812
                <!-- HACK for String methods, we remap ArgumentOutOfRangeException to StringIndexOutOfBoundsException -->
 
813
                <exception src="System.ArgumentOutOfRangeException, mscorlib" dst="java.lang.StringIndexOutOfBoundsException" />
 
814
                <exception src="System.InvalidCastException, mscorlib" dst="java.lang.ClassCastException" />
 
815
                <!-- NOTE we "map" to java.lang.Error, because that is the base class of all possible mappings -->
 
816
                <exception src="System.TypeInitializationException, mscorlib" dst="java.lang.Error">
 
817
                        <code>
 
818
                                <call type="System.Exception, mscorlib" name="get_InnerException" sig="()Ljava.lang.Throwable;" />
 
819
                                <call class="java.lang.ExceptionHelper" name="MapExceptionFast" sig="(Ljava.lang.Throwable;)Ljava.lang.Throwable;" />
 
820
                                <dup />
 
821
                                <isinst class="java.lang.Error" />
 
822
                                <brtrue name="end" />
 
823
                                <newobj class="java.lang.ExceptionInInitializerError" name="&lt;init&gt;" sig="(Ljava.lang.Throwable;)V" />
 
824
                                <label name="end" />
 
825
                        </code>
 
826
                </exception>
 
827
                <exception src="System.Threading.SynchronizationLockException, mscorlib" dst="java.lang.IllegalMonitorStateException" />
 
828
                <exception src="System.Threading.ThreadInterruptedException, mscorlib" dst="java.lang.InterruptedException" />
 
829
                <exception src="System.OutOfMemoryException, mscorlib" dst="java.lang.OutOfMemoryError" />
 
830
                <exception src="System.DivideByZeroException, mscorlib" dst="java.lang.ArithmeticException">
 
831
                        <code>
 
832
                                <pop />
 
833
                                <ldstr value="/ by zero" />
 
834
                                <newobj class="java.lang.ArithmeticException" name="&lt;init&gt;" sig="(Ljava.lang.String;)V" />
 
835
                        </code>
 
836
                </exception>
 
837
                <exception src="System.ArrayTypeMismatchException, mscorlib" dst="java.lang.ArrayStoreException" />
 
838
                <exception src="System.StackOverflowException, mscorlib" dst="java.lang.StackOverflowError" />
 
839
                <exception src="System.Security.VerificationException, mscorlib" dst="java.lang.VerifyError" />
 
840
                <exception src="System.Threading.ThreadAbortException, mscorlib" dst="java.lang.ThreadDeath">
 
841
                        <code>
 
842
                                <castclass type="System.Threading.ThreadAbortException, mscorlib" />
 
843
                                <call type="System.Threading.ThreadAbortException, mscorlib" name="get_ExceptionState" sig="()Ljava.lang.Object;" />
 
844
                                <dup />
 
845
                                <isinst class="java.lang.ThreadDeath" />
 
846
                                <brtrue name="end" />
 
847
                                <pop />
 
848
                                <newobj class="java.lang.ThreadDeath" name="&lt;init&gt;" sig="()V" />
 
849
                                <label name="end" />
 
850
                                <!-- NOTE we do this last because ResetAbort clears the ExceptionState of the ThreadAbortException (why?) -->
 
851
                                <!-- TODO we should put an exception handler around the ResetAbort call, because it will throw a ThreadStateException
 
852
                                     if no Abort is pending (someone could have thrown the exception manually, or we could have called on a 
 
853
                                     previous handler that turned out not to be match for this exception type) -->
 
854
                                <castclass class="java.lang.ThreadDeath" />
 
855
                                <call type="System.Threading.Thread, mscorlib" name="ResetAbort" sig="()V" />
 
856
                        </code>
 
857
                </exception>
 
858
                <!-- TODO make sure the originating method was from an IKVM.NET generated assembly, because if it was
 
859
            generated by non-Java code, this remapping is obviously bogus. -->
 
860
                <exception src="System.OverflowException, mscorlib" dst="java.lang.NegativeArraySizeException" />
 
861
        </exceptionMappings>
 
862
</root>