~openjdk/openjdk/openjdk8

« back to all changes in this revision

Viewing changes to patches/zero-port-opt.diff

  • Committer: Matthias Klose
  • Date: 2009-05-27 10:08:07 UTC
  • mfrom: (305.1.57 openjdk6)
  • Revision ID: doko@canonical.com-20090527100807-7kn11m6ux57am1y1
* Merge debian packaging r205:362 from openjdk-6.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
diff -ruNE ports/hotspot/build/linux/makefiles/zero.make ports/hotspot/build/linux/makefiles/zero.make
 
2
--- ports/hotspot/build/linux/makefiles/zero.make       2009-03-05 14:43:47.000000000 +0000
 
3
+++ ports/hotspot/build/linux/makefiles/zero.make       2009-04-03 13:29:53.000000000 +0000
 
4
@@ -23,6 +23,16 @@
 
5
 #
 
6
 #
 
7
 
 
8
+# Not included in includeDB because it has no dependencies
 
9
+ifdef ICEDTEA_ZERO_BUILD
 
10
+# ECN - For the time being HOTSPOT_OPT only enabled for ARM
 
11
+# CFLAGS += -DHOTSPOT_OPT
 
12
+ifeq ($(ZERO_LIBARCH),arm)
 
13
+Obj_Files += bytecodeInterpreter_arm.o
 
14
+CFLAGS += -DHOTSPOT_OPT -DHOTSPOT_ASM -march=armv5t -mtune=cortex-a8 -O2 -falign-functions=32 -falign-loops=8
 
15
+endif
 
16
+endif
 
17
+
 
18
 # The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
 
19
 OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
 
20
 # The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
 
21
diff -ruNE ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_arm.S ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_arm.S
 
22
--- ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_arm.S     1970-01-01 00:00:00.000000000 +0000
 
23
+++ ports/hotspot/src/cpu/zero/vm/bytecodeInterpreter_arm.S     2009-05-08 13:10:20.000000000 +0200
 
24
@@ -0,0 +1,6390 @@
 
25
+#ifdef HOTSPOT_ASM
 
26
+
 
27
+#define opc_fadd       0x62
 
28
+#define opc_dadd       0x63
 
29
+#define opc_fsub       0x66
 
30
+#define opc_dsub       0x67
 
31
+#define opc_fmul       0x6a
 
32
+#define opc_dmul       0x6b
 
33
+#define opc_fdiv       0x6e
 
34
+#define opc_ddiv       0x6f
 
35
+#define opc_i2f                0x86
 
36
+#define opc_i2d                0x87
 
37
+#define opc_f2d                0x8d
 
38
+#define        opc_d2f         0x90
 
39
+#define        opc_fcmpl       0x95
 
40
+#define opc_fcmpg      0x96
 
41
+#define opc_dcmpl      0x97
 
42
+#define opc_dcmpg      0x98
 
43
+
 
44
+#define opc_ifeq       0x99
 
45
+#define opc_ifne       0x9a
 
46
+#define opc_iflt       0x9b
 
47
+#define opc_ifge       0x9c
 
48
+#define opc_ifgt       0x9d
 
49
+#define opc_ifle       0x9e
 
50
+
 
51
+#define opc_if_icmpeq  0x9f
 
52
+#define opc_if_icmpne  0xa0
 
53
+#define opc_if_icmplt  0xa1
 
54
+#define opc_if_icmpge  0xa2
 
55
+#define opc_if_icmpgt  0xa3
 
56
+#define opc_if_icmple  0xa4
 
57
+
 
58
+#define opc_if_acmpeq  0xa5
 
59
+#define opc_if_acmpne  0xa6
 
60
+
 
61
+#define opc_goto       0xa7
 
62
+
 
63
+#define opc_tableswitch        0xaa
 
64
+#define opc_lookupswitch 0xab
 
65
+
 
66
+#define opc_getfield           0xb4
 
67
+
 
68
+#define opc_invokevirtual      0xb6
 
69
+#define opc_invokespecial      0xb7
 
70
+#define opc_invokestatic       0xb8
 
71
+
 
72
+#define opc_ifnull     0xc6
 
73
+#define opc_ifnonnull  0xc7
 
74
+
 
75
+#define msg_no_request         0
 
76
+#define msg_initialize         1
 
77
+#define msg_method_entry       2
 
78
+#define msg_method_resume      3
 
79
+#define msg_deopt_resume       4
 
80
+#define msg_deopt_resume2      5
 
81
+#define msg_got_monitors       6
 
82
+#define msg_rethrow_exception  7
 
83
+#define msg_call_method                8
 
84
+#define msg_return_from_method 9
 
85
+#define msg_more_monitors      10
 
86
+#define msg_throwing_exception 11
 
87
+#define msg_popping_frame      12
 
88
+#define msg_do_osr             13
 
89
+
 
90
+#define        methodInterface 24
 
91
+#define volatileField  25
 
92
+#define vfinalMethod   26
 
93
+#define finalField     27
 
94
+
 
95
+#define ISTATE_JAVA_THREAD     0
 
96
+#define        ISTATE_JAVA_PC          4
 
97
+#define        ISTATE_JAVA_LOCALS      8
 
98
+#define ISTATE_CONSTANT_POOL   12
 
99
+#define ISTATE_JAVA_METHOD     16
 
100
+#define ISTATE_JAVA_MDX                20
 
101
+#define ISTATE_JAVA_STACK      24
 
102
+#define ISTATE_JAVA_MSG                28
 
103
+
 
104
+#define ISTATE_JAVA_CALL_MSG_CALLEE            32
 
105
+#define ISTATE_JAVA_CALL_MSG_CALLEE_ENTRY      36
 
106
+#define ISTATE_JAVA_CALL_MSG_BCP_ADVANCE       40
 
107
+
 
108
+#define ISTATE_JAVA_RETURN_KIND                        32
 
109
+
 
110
+#define tos            r0
 
111
+#define dtos           d0
 
112
+
 
113
+#define tos_btos       0
 
114
+#define tos_ctos       1
 
115
+#define tos_stos       2
 
116
+#define tos_itos       3
 
117
+#define tos_ltos       4
 
118
+#define tos_ftos       5
 
119
+#define tos_dtos       6
 
120
+#define tos_atos       7
 
121
+
 
122
+#define java_locals    r4
 
123
+#define constant_pool  r5
 
124
+#define dtos_table     r6
 
125
+#define        java_stack      r7
 
126
+#define java_pc                r8
 
127
+#define itos_table     r9
 
128
+#define istate         r10
 
129
+#define vtos_table     r11
 
130
+
 
131
+#define PUSHNE(Rn)     strne   Rn, [java_stack], #-4
 
132
+#define PUSH(Rn)       str     Rn, [java_stack], #-4
 
133
+#define POP(Rn)                ldr     Rn, [java_stack, #4]!
 
134
+
 
135
+#define POPGE(Rn)      ldrge   Rn, [java_stack, #4]!
 
136
+
 
137
+       .macro  PUSHD   Dn
 
138
+       sub     java_stack, java_stack, #8
 
139
+       vstr    \Dn, [java_stack, #4]
 
140
+       .endm
 
141
+
 
142
+       .macro  POPD    Dn
 
143
+       vldr    \Dn, [java_stack, #4]
 
144
+       add     java_stack, java_stack, #8
 
145
+       .endm
 
146
+
 
147
+       .macro  OpcodeEntry     label
 
148
+       .global \label
 
149
+\label:
 
150
+       .endm
 
151
+
 
152
+       .arch armv5te
 
153
+       .eabi_attribute 27, 3
 
154
+       .fpu vfp
 
155
+       .eabi_attribute 20, 1
 
156
+       .eabi_attribute 21, 1
 
157
+       .eabi_attribute 23, 3
 
158
+       .eabi_attribute 24, 1
 
159
+       .eabi_attribute 25, 1
 
160
+       .eabi_attribute 26, 2
 
161
+       .eabi_attribute 30, 2
 
162
+       .eabi_attribute 18, 4
 
163
+
 
164
+       .global __aeabi_idiv
 
165
+       .global __aeabi_ldivmod
 
166
+       .global __aeabi_idivmod
 
167
+       .global __aeabi_ldivmod
 
168
+       .global __aeabi_l2f
 
169
+       .global __aeabi_l2d
 
170
+
 
171
+@ --- update_table(bool to_safe) --------------------------------------------
 
172
+
 
173
+       .text
 
174
+
 
175
+       .global _Z21update_table_opt_safeb
 
176
+       .type   _Z21update_table_opt_safeb, %function
 
177
+_Z21update_table_opt_safeb:
 
178
+       cmp     r0, #0
 
179
+
 
180
+@ ECN: A nasty hack here. We want to update the vtos, itos and dtos tables
 
181
+@ However, the dtos table only has one entry to be updated (opc_goto).
 
182
+@ This is because all other entries (ifeq, icmp_ifeq, tableswitch etc) by definition
 
183
+@ do not have a double on top of stack.
 
184
+@ dtos entries are also by definition vfp (otherwise we couldn't have a double in d0)
 
185
+@ Rather than creating an extra entry in each of the vfp and unsafe tables we
 
186
+@ just smash the single opc_goto entry here.
 
187
+       adrl    r0, do_goto_dtos_unsafe
 
188
+       adrnel  r0, do_goto_dtos
 
189
+       ldr     r2, .globals_table_1
 
190
+       ldr     r3, .globals_table_1+4
 
191
+.LPIC1:
 
192
+       add     r2, pc, r2
 
193
+       add     r2, r2, r3
 
194
+       str     r0, [r2, #opc_goto << 2]
 
195
+@ ECN: End nasty hack
 
196
+       
 
197
+       adr     r0, unsafe_table
 
198
+       addne   r0, r0, #safe_table - unsafe_table
 
199
+
 
200
+do_update_table:
 
201
+       ldr     r2, .globals_table_0
 
202
+       ldr     r3, .globals_table_0+4
 
203
+.LPIC0:
 
204
+       add     r2, pc, r2
 
205
+       add     r2, r2, r3
 
206
+       add     r3, r2, #opclabels_data_itos-opclabels_data_vtos
 
207
+
 
208
+.update_loop:
 
209
+       ldr     r1, [r0], #4
 
210
+       cmp     r1, #0
 
211
+       ldrne   ip, [r0], #4
 
212
+       strne   ip, [r2, r1, lsl #2]
 
213
+       ldrne   ip, [r0], #4
 
214
+       strne   ip, [r3, r1, lsl #2]
 
215
+       bne     .update_loop
 
216
+
 
217
+       mov     pc, lr
 
218
+
 
219
+.globals_table_0:
 
220
+       .word   _GLOBAL_OFFSET_TABLE_-(.LPIC0+8)
 
221
+       .word   opclabels_data_vtos(GOTOFF)
 
222
+
 
223
+.globals_table_1:
 
224
+       .word   _GLOBAL_OFFSET_TABLE_-(.LPIC1+8)
 
225
+       .word   opclabels_data_dtos(GOTOFF)
 
226
+
 
227
+unsafe_table:
 
228
+       .word   opc_ifeq,       do_ifeq_vtos_unsafe,    do_ifeq_itos_unsafe
 
229
+       .word   opc_ifne,       do_ifne_vtos_unsafe,    do_ifne_itos_unsafe
 
230
+       .word   opc_iflt,       do_iflt_vtos_unsafe,    do_iflt_itos_unsafe
 
231
+       .word   opc_ifge,       do_ifge_vtos_unsafe,    do_ifge_itos_unsafe
 
232
+       .word   opc_ifgt,       do_ifgt_vtos_unsafe,    do_ifgt_itos_unsafe
 
233
+       .word   opc_ifle,       do_ifle_vtos_unsafe,    do_ifle_itos_unsafe
 
234
+
 
235
+       .word   opc_if_icmpeq,  do_if_icmpeq_vtos_unsafe,       do_if_icmpeq_itos_unsafe
 
236
+       .word   opc_if_icmpne,  do_if_icmpne_vtos_unsafe,       do_if_icmpne_itos_unsafe
 
237
+       .word   opc_if_icmplt,  do_if_icmplt_vtos_unsafe,       do_if_icmplt_itos_unsafe
 
238
+       .word   opc_if_icmpge,  do_if_icmpge_vtos_unsafe,       do_if_icmpge_itos_unsafe
 
239
+       .word   opc_if_icmpgt,  do_if_icmpgt_vtos_unsafe,       do_if_icmpgt_itos_unsafe
 
240
+       .word   opc_if_icmple,  do_if_icmple_vtos_unsafe,       do_if_icmple_itos_unsafe
 
241
+       .word   opc_if_acmpeq,  do_if_acmpeq_vtos_unsafe,       do_if_acmpeq_itos_unsafe
 
242
+       .word   opc_if_acmpne,  do_if_acmpne_vtos_unsafe,       do_if_acmpne_itos_unsafe
 
243
+
 
244
+       .word   opc_goto,       do_goto_vtos_unsafe,    do_goto_itos_unsafe
 
245
+
 
246
+       .word   opc_tableswitch, do_tableswitch_vtos_unsafe,    do_tableswitch_itos_unsafe
 
247
+       .word   opc_lookupswitch, do_lookupswitch_vtos_unsafe,  do_lookupswitch_itos_unsafe
 
248
+
 
249
+       .word   opc_ifnull,     do_ifnull_vtos_unsafe,  do_ifnull_itos_unsafe
 
250
+       .word   opc_ifnonnull,  do_ifnonnull_vtos_unsafe,       do_ifnonnull_itos_unsafe
 
251
+
 
252
+       .word   0
 
253
+
 
254
+safe_table:
 
255
+       .word   opc_ifeq,       do_ifeq_vtos,   do_ifeq_itos
 
256
+       .word   opc_ifne,       do_ifne_vtos,   do_ifne_itos
 
257
+       .word   opc_iflt,       do_iflt_vtos,   do_iflt_itos
 
258
+       .word   opc_ifge,       do_ifge_vtos,   do_ifge_itos
 
259
+       .word   opc_ifgt,       do_ifgt_vtos,   do_ifgt_itos
 
260
+       .word   opc_ifle,       do_ifle_vtos,   do_ifle_itos
 
261
+
 
262
+       .word   opc_if_icmpeq,  do_if_icmpeq_vtos,      do_if_icmpeq_itos
 
263
+       .word   opc_if_icmpne,  do_if_icmpne_vtos,      do_if_icmpne_itos
 
264
+       .word   opc_if_icmplt,  do_if_icmplt_vtos,      do_if_icmplt_itos
 
265
+       .word   opc_if_icmpge,  do_if_icmpge_vtos,      do_if_icmpge_itos
 
266
+       .word   opc_if_icmpgt,  do_if_icmpgt_vtos,      do_if_icmpgt_itos
 
267
+       .word   opc_if_icmple,  do_if_icmple_vtos,      do_if_icmple_itos
 
268
+       .word   opc_if_acmpeq,  do_if_acmpeq_vtos,      do_if_acmpeq_itos
 
269
+       .word   opc_if_acmpne,  do_if_acmpne_vtos,      do_if_acmpne_itos
 
270
+
 
271
+       .word   opc_goto,       do_goto_vtos,   do_goto_itos
 
272
+
 
273
+       .word   opc_tableswitch, do_tableswitch_vtos,   do_tableswitch_itos
 
274
+       .word   opc_lookupswitch, do_lookupswitch_vtos, do_lookupswitch_itos
 
275
+
 
276
+       .word   opc_ifnull,     do_ifnull_vtos, do_ifnull_itos
 
277
+       .word   opc_ifnonnull,  do_ifnonnull_vtos,      do_ifnonnull_itos
 
278
+
 
279
+       .word   0
 
280
+
 
281
+vfp_table:
 
282
+       .word   opc_fadd,       do_fadd_vtos_vfp,       do_fadd_itos_vfp
 
283
+       .word   opc_dadd,       do_dadd_vtos_vfp,       do_dadd_itos_vfp
 
284
+       .word   opc_fsub,       do_fsub_vtos_vfp,       do_fsub_itos_vfp
 
285
+       .word   opc_dsub,       do_dsub_vtos_vfp,       do_dsub_itos_vfp
 
286
+       .word   opc_fmul,       do_fmul_vtos_vfp,       do_fmul_itos_vfp
 
287
+       .word   opc_dmul,       do_dmul_vtos_vfp,       do_dmul_itos_vfp
 
288
+       .word   opc_fdiv,       do_fdiv_vtos_vfp,       do_fdiv_itos_vfp
 
289
+       .word   opc_ddiv,       do_ddiv_vtos_vfp,       do_ddiv_itos_vfp
 
290
+       .word   opc_i2f,        do_i2f_vtos_vfp,        do_i2f_itos_vfp
 
291
+       .word   opc_i2d,        do_i2d_vtos_vfp,        do_i2d_itos_vfp
 
292
+       .word   opc_f2d,        do_f2d_vtos_vfp,        do_f2d_itos_vfp
 
293
+       .word   opc_d2f,        do_d2f_vtos_vfp,        do_d2f_itos_vfp
 
294
+       .word   opc_fcmpl,      do_fcmpl_vtos_vfp,      do_fcmpl_itos_vfp
 
295
+       .word   opc_fcmpg,      do_fcmpg_vtos_vfp,      do_fcmpg_itos_vfp
 
296
+       .word   opc_dcmpl,      do_dcmpl_vtos_vfp,      do_dcmpl_itos_vfp
 
297
+       .word   opc_dcmpg,      do_dcmpg_vtos_vfp,      do_dcmpg_itos_vfp
 
298
+       .word   0
 
299
+
 
300
+proc_self_auxv:
 
301
+       .ascii  "/proc/self/auxv\000"
 
302
+       .align  2
 
303
+
 
304
+       .global vfp_init
 
305
+       .type   vfp_init, %function
 
306
+vfp_init:
 
307
+       stmfd   sp!, {r4, r5, lr}
 
308
+       sub     sp, sp, #128
 
309
+       mov     r4, #0
 
310
+       adr     r0, proc_self_auxv
 
311
+       mov     r1, #0
 
312
+       bl      open
 
313
+       subs    r5, r0, #0
 
314
+       blt     .exit_vfp_init
 
315
+.vfp_init_read_loop:
 
316
+       mov     r2, #128
 
317
+       mov     r0, r5
 
318
+       mov     r1, sp
 
319
+       bl      read
 
320
+       mov     r2, sp
 
321
+       mov     r3, r0, lsr #3
 
322
+       b       .vfp_init_1
 
323
+.vfp_init_vec_loop:
 
324
+       ldmia   r2!, {r1, ip}
 
325
+       cmp     r1, #0
 
326
+       beq     .fini_vfp_init
 
327
+       cmp     r1, #16
 
328
+       bne     .vfp_init_1
 
329
+       tst     ip, #64
 
330
+       movne   r4, #1
 
331
+       bne     .fini_vfp_init
 
332
+.vfp_init_1:
 
333
+       subs    r3, r3, #1
 
334
+       bpl     .vfp_init_vec_loop
 
335
+       cmp     r0, #128
 
336
+       beq     .vfp_init_read_loop
 
337
+.fini_vfp_init:
 
338
+       mov     r0, r5
 
339
+       bl      close
 
340
+.exit_vfp_init:
 
341
+       movs    r0, r4
 
342
+       add     sp, sp, #128
 
343
+       ldmfd   sp!, {r4, r5, lr}
 
344
+       adrne   r0, vfp_table
 
345
+       bne     do_update_table
 
346
+       mov     pc, lr
 
347
+       .size   vfp_init, .-vfp_init
 
348
+
 
349
+       .section        .init_array,"aw",%init_array
 
350
+       .word   vfp_init(target1)
 
351
+
 
352
+       .data
 
353
+
 
354
+opclabels_data_vtos:
 
355
+       .word   do_nop_vtos
 
356
+       .word   do_aconst_null_vtos
 
357
+       .word   do_iconst_m1_vtos
 
358
+       .word   do_iconst_0_vtos
 
359
+       .word   do_iconst_1_vtos
 
360
+       .word   do_iconst_2_vtos
 
361
+       .word   do_iconst_3_vtos
 
362
+       .word   do_iconst_4_vtos
 
363
+       .word   do_iconst_5_vtos
 
364
+       .word   do_lconst_0_vtos
 
365
+       .word   do_lconst_1_vtos
 
366
+       .word   do_fconst_0_vtos
 
367
+       .word   do_fconst_1_vtos
 
368
+       .word   do_fconst_2_vtos
 
369
+       .word   do_dconst_0_vtos
 
370
+       .word   do_dconst_1_vtos
 
371
+       .word   do_bipush_vtos
 
372
+       .word   do_sipush_vtos
 
373
+       .word   do_ldc_vtos
 
374
+       .word   do_ldc_w_vtos
 
375
+       .word   do_ldc2_w_vtos
 
376
+       .word   do_iload_vtos
 
377
+       .word   do_lload_vtos
 
378
+       .word   do_fload_vtos
 
379
+       .word   do_dload_vtos
 
380
+       .word   do_aload_vtos
 
381
+       .word   do_iload_0_vtos
 
382
+       .word   do_iload_1_vtos
 
383
+       .word   do_iload_2_vtos
 
384
+       .word   do_iload_3_vtos
 
385
+       .word   do_lload_0_vtos
 
386
+       .word   do_lload_1_vtos
 
387
+       .word   do_lload_2_vtos
 
388
+       .word   do_lload_3_vtos
 
389
+       .word   do_fload_0_vtos
 
390
+       .word   do_fload_1_vtos
 
391
+       .word   do_fload_2_vtos
 
392
+       .word   do_fload_3_vtos
 
393
+       .word   do_dload_0_vtos
 
394
+       .word   do_dload_1_vtos
 
395
+       .word   do_dload_2_vtos
 
396
+       .word   do_dload_3_vtos
 
397
+       .word   do_aload_0_vtos
 
398
+       .word   do_aload_1_vtos
 
399
+       .word   do_aload_2_vtos
 
400
+       .word   do_aload_3_vtos
 
401
+       .word   do_iaload_vtos
 
402
+       .word   do_laload_vtos
 
403
+       .word   do_faload_vtos
 
404
+       .word   do_daload_vtos
 
405
+       .word   do_aaload_vtos
 
406
+       .word   do_baload_vtos
 
407
+       .word   do_caload_vtos
 
408
+       .word   do_saload_vtos
 
409
+       .word   do_istore_vtos
 
410
+       .word   do_lstore_vtos
 
411
+       .word   do_fstore_vtos
 
412
+       .word   do_dstore_vtos
 
413
+       .word   do_astore_vtos
 
414
+       .word   do_istore_0_vtos
 
415
+       .word   do_istore_1_vtos
 
416
+       .word   do_istore_2_vtos
 
417
+       .word   do_istore_3_vtos
 
418
+       .word   do_lstore_0_vtos
 
419
+       .word   do_lstore_1_vtos
 
420
+       .word   do_lstore_2_vtos
 
421
+       .word   do_lstore_3_vtos
 
422
+       .word   do_fstore_0_vtos
 
423
+       .word   do_fstore_1_vtos
 
424
+       .word   do_fstore_2_vtos
 
425
+       .word   do_fstore_3_vtos
 
426
+       .word   do_dstore_0_vtos
 
427
+       .word   do_dstore_1_vtos
 
428
+       .word   do_dstore_2_vtos
 
429
+       .word   do_dstore_3_vtos
 
430
+       .word   do_astore_0_vtos
 
431
+       .word   do_astore_1_vtos
 
432
+       .word   do_astore_2_vtos
 
433
+       .word   do_astore_3_vtos
 
434
+       .word   do_iastore_vtos
 
435
+       .word   do_lastore_vtos
 
436
+       .word   do_fastore_vtos
 
437
+       .word   do_dastore_vtos
 
438
+       .word   do_aastore_vtos
 
439
+       .word   do_bastore_vtos
 
440
+       .word   do_castore_vtos
 
441
+       .word   do_sastore_vtos
 
442
+       .word   do_pop_vtos
 
443
+       .word   do_pop2_vtos
 
444
+       .word   do_dup_vtos
 
445
+       .word   do_dup_x1_vtos
 
446
+       .word   do_dup_x2_vtos
 
447
+       .word   do_dup2_vtos
 
448
+       .word   do_dup2_x1_vtos
 
449
+       .word   do_dup2_x2_vtos
 
450
+       .word   do_swap_vtos
 
451
+       .word   do_iadd_vtos
 
452
+       .word   do_ladd_vtos
 
453
+       .word   do_fadd_vtos
 
454
+       .word   do_dadd_vtos
 
455
+       .word   do_isub_vtos
 
456
+       .word   do_lsub_vtos
 
457
+       .word   do_fsub_vtos
 
458
+       .word   do_dsub_vtos
 
459
+       .word   do_imul_vtos
 
460
+       .word   do_lmul_vtos
 
461
+       .word   do_fmul_vtos
 
462
+       .word   do_dmul_vtos
 
463
+       .word   do_idiv_vtos
 
464
+       .word   do_ldiv_vtos
 
465
+       .word   do_fdiv_vtos
 
466
+       .word   do_ddiv_vtos
 
467
+       .word   do_irem_vtos
 
468
+       .word   do_lrem_vtos
 
469
+       .word   do_frem_vtos
 
470
+       .word   do_drem_vtos
 
471
+       .word   do_ineg_vtos
 
472
+       .word   do_lneg_vtos
 
473
+       .word   do_fneg_vtos
 
474
+       .word   do_dneg_vtos
 
475
+       .word   do_ishl_vtos
 
476
+       .word   do_lshl_vtos
 
477
+       .word   do_ishr_vtos
 
478
+       .word   do_lshr_vtos
 
479
+       .word   do_iushr_vtos
 
480
+       .word   do_lushr_vtos
 
481
+       .word   do_iand_vtos
 
482
+       .word   do_land_vtos
 
483
+       .word   do_ior_vtos
 
484
+       .word   do_lor_vtos
 
485
+       .word   do_ixor_vtos
 
486
+       .word   do_lxor_vtos
 
487
+       .word   do_iinc_vtos
 
488
+       .word   do_i2l_vtos
 
489
+       .word   do_i2f_vtos
 
490
+       .word   do_i2d_vtos
 
491
+       .word   do_l2i_vtos
 
492
+       .word   do_l2f_vtos
 
493
+       .word   do_l2d_vtos
 
494
+       .word   do_f2i_vtos
 
495
+       .word   do_f2l_vtos
 
496
+       .word   do_f2d_vtos
 
497
+       .word   do_d2i_vtos
 
498
+       .word   do_d2l_vtos
 
499
+       .word   do_d2f_vtos
 
500
+       .word   do_i2b_vtos
 
501
+       .word   do_i2c_vtos
 
502
+       .word   do_i2s_vtos
 
503
+       .word   do_lcmp_vtos
 
504
+       .word   do_fcmpl_vtos
 
505
+       .word   do_fcmpg_vtos
 
506
+       .word   do_dcmpl_vtos
 
507
+       .word   do_dcmpg_vtos
 
508
+       .word   do_ifeq_vtos_unsafe
 
509
+       .word   do_ifne_vtos_unsafe
 
510
+       .word   do_iflt_vtos_unsafe
 
511
+       .word   do_ifge_vtos_unsafe
 
512
+       .word   do_ifgt_vtos_unsafe
 
513
+       .word   do_ifle_vtos_unsafe
 
514
+       .word   do_if_icmpeq_vtos_unsafe
 
515
+       .word   do_if_icmpne_vtos_unsafe
 
516
+       .word   do_if_icmplt_vtos_unsafe
 
517
+       .word   do_if_icmpge_vtos_unsafe
 
518
+       .word   do_if_icmpgt_vtos_unsafe
 
519
+       .word   do_if_icmple_vtos_unsafe
 
520
+       .word   do_if_acmpeq_vtos_unsafe
 
521
+       .word   do_if_acmpne_vtos_unsafe
 
522
+       .word   do_goto_vtos_unsafe
 
523
+       .word   do_jsr_vtos
 
524
+       .word   do_ret_vtos
 
525
+       .word   do_tableswitch_vtos_unsafe
 
526
+       .word   do_lookupswitch_vtos_unsafe
 
527
+       .word   do_ireturn_vtos
 
528
+       .word   do_lreturn_vtos
 
529
+       .word   do_freturn_vtos
 
530
+       .word   do_dreturn_vtos
 
531
+       .word   do_areturn_vtos
 
532
+       .word   do_return_vtos
 
533
+       .word   do_getstatic_vtos
 
534
+       .word   do_putstatic_vtos
 
535
+       .word   do_getfield_vtos
 
536
+       .word   do_putfield_vtos
 
537
+       .word   do_invokevirtual_vtos
 
538
+       .word   do_invokespecial_vtos
 
539
+       .word   do_invokestatic_vtos
 
540
+       .word   do_invokeinterface_vtos
 
541
+       .word   do_xxxunusedxxx_vtos
 
542
+       .word   do_new_vtos
 
543
+       .word   do_newarray_vtos
 
544
+       .word   do_anewarray_vtos
 
545
+       .word   do_arraylength_vtos
 
546
+       .word   do_athrow_vtos
 
547
+       .word   do_checkcast_vtos
 
548
+       .word   do_instanceof_vtos
 
549
+       .word   do_monitorenter_vtos
 
550
+       .word   do_monitorexit_vtos
 
551
+       .word   do_wide_vtos
 
552
+       .word   do_multianewarray_vtos
 
553
+       .word   do_ifnull_vtos_unsafe
 
554
+       .word   do_ifnonnull_vtos_unsafe
 
555
+       .word   do_goto_w_vtos
 
556
+       .word   do_jsr_w_vtos
 
557
+       .word   do_breakpoint_vtos
 
558
+       .word   do_exit_asm_vtos
 
559
+       .word   do_exit_asm_vtos
 
560
+       .word   do_exit_asm_vtos
 
561
+       .word   do_exit_asm_vtos
 
562
+       .word   do_exit_asm_vtos
 
563
+       .word   do_exit_asm_vtos
 
564
+       .word   do_exit_asm_vtos
 
565
+       .word   do_exit_asm_vtos
 
566
+       .word   do_exit_asm_vtos
 
567
+       .word   do_exit_asm_vtos
 
568
+       .word   do_exit_asm_vtos
 
569
+       .word   do_exit_asm_vtos
 
570
+       .word   do_exit_asm_vtos
 
571
+       .word   do_exit_asm_vtos
 
572
+       .word   do_exit_asm_vtos
 
573
+       .word   do_exit_asm_vtos
 
574
+       .word   do_exit_asm_vtos
 
575
+       .word   do_exit_asm_vtos
 
576
+       .word   do_exit_asm_vtos
 
577
+       .word   do_exit_asm_vtos
 
578
+       .word   do_exit_asm_vtos
 
579
+       .word   do_exit_asm_vtos
 
580
+       .word   do_exit_asm_vtos
 
581
+       .word   do_exit_asm_vtos
 
582
+       .word   do_exit_asm_vtos
 
583
+       .word   do_exit_asm_vtos
 
584
+       .word   do_exit_asm_vtos
 
585
+       .word   do_exit_asm_vtos
 
586
+       .word   do_exit_asm_vtos
 
587
+       .word   do_exit_asm_vtos
 
588
+       .word   do_exit_asm_vtos
 
589
+       .word   do_exit_asm_vtos
 
590
+       .word   do_exit_asm_vtos
 
591
+       .word   do_exit_asm_vtos
 
592
+       .word   do_exit_asm_vtos
 
593
+       .word   do_exit_asm_vtos
 
594
+       .word   do_exit_asm_vtos
 
595
+       .word   do_exit_asm_vtos
 
596
+       .word   do_exit_asm_vtos
 
597
+       .word   do_exit_asm_vtos
 
598
+       .word   do_exit_asm_vtos
 
599
+       .word   do_exit_asm_vtos
 
600
+       .word   do_exit_asm_vtos
 
601
+       .word   do_exit_asm_vtos
 
602
+       .word   do_exit_asm_vtos
 
603
+       .word   do_exit_asm_vtos
 
604
+       .word   do_exit_asm_vtos
 
605
+       .word   do_exit_asm_vtos
 
606
+       .word   do_exit_asm_vtos
 
607
+       .word   do_exit_asm_vtos
 
608
+       .word   do_exit_asm_vtos
 
609
+       .word   do_exit_asm_vtos
 
610
+       .word   do_exit_asm_vtos
 
611
+opclabels_data_itos:
 
612
+       .word   do_nop_itos
 
613
+       .word   do_aconst_null_itos
 
614
+       .word   do_iconst_m1_itos
 
615
+       .word   do_iconst_0_itos
 
616
+       .word   do_iconst_1_itos
 
617
+       .word   do_iconst_2_itos
 
618
+       .word   do_iconst_3_itos
 
619
+       .word   do_iconst_4_itos
 
620
+       .word   do_iconst_5_itos
 
621
+       .word   do_lconst_0_itos
 
622
+       .word   do_lconst_1_itos
 
623
+       .word   do_fconst_0_itos
 
624
+       .word   do_fconst_1_itos
 
625
+       .word   do_fconst_2_itos
 
626
+       .word   do_dconst_0_itos
 
627
+       .word   do_dconst_1_itos
 
628
+       .word   do_bipush_itos
 
629
+       .word   do_sipush_itos
 
630
+       .word   do_ldc_itos
 
631
+       .word   do_ldc_w_itos
 
632
+       .word   do_ldc2_w_itos
 
633
+       .word   do_iload_itos
 
634
+       .word   do_lload_itos
 
635
+       .word   do_fload_itos
 
636
+       .word   do_dload_itos
 
637
+       .word   do_aload_itos
 
638
+       .word   do_iload_0_itos
 
639
+       .word   do_iload_1_itos
 
640
+       .word   do_iload_2_itos
 
641
+       .word   do_iload_3_itos
 
642
+       .word   do_lload_0_itos
 
643
+       .word   do_lload_1_itos
 
644
+       .word   do_lload_2_itos
 
645
+       .word   do_lload_3_itos
 
646
+       .word   do_fload_0_itos
 
647
+       .word   do_fload_1_itos
 
648
+       .word   do_fload_2_itos
 
649
+       .word   do_fload_3_itos
 
650
+       .word   do_dload_0_itos
 
651
+       .word   do_dload_1_itos
 
652
+       .word   do_dload_2_itos
 
653
+       .word   do_dload_3_itos
 
654
+       .word   do_aload_0_itos
 
655
+       .word   do_aload_1_itos
 
656
+       .word   do_aload_2_itos
 
657
+       .word   do_aload_3_itos
 
658
+       .word   do_iaload_itos
 
659
+       .word   do_laload_itos
 
660
+       .word   do_faload_itos
 
661
+       .word   do_daload_itos
 
662
+       .word   do_aaload_itos
 
663
+       .word   do_baload_itos
 
664
+       .word   do_caload_itos
 
665
+       .word   do_saload_itos
 
666
+       .word   do_istore_itos
 
667
+       .word   do_lstore_itos
 
668
+       .word   do_fstore_itos
 
669
+       .word   do_dstore_itos
 
670
+       .word   do_astore_itos
 
671
+       .word   do_istore_0_itos
 
672
+       .word   do_istore_1_itos
 
673
+       .word   do_istore_2_itos
 
674
+       .word   do_istore_3_itos
 
675
+       .word   do_lstore_0_itos
 
676
+       .word   do_lstore_1_itos
 
677
+       .word   do_lstore_2_itos
 
678
+       .word   do_lstore_3_itos
 
679
+       .word   do_fstore_0_itos
 
680
+       .word   do_fstore_1_itos
 
681
+       .word   do_fstore_2_itos
 
682
+       .word   do_fstore_3_itos
 
683
+       .word   do_dstore_0_itos
 
684
+       .word   do_dstore_1_itos
 
685
+       .word   do_dstore_2_itos
 
686
+       .word   do_dstore_3_itos
 
687
+       .word   do_astore_0_itos
 
688
+       .word   do_astore_1_itos
 
689
+       .word   do_astore_2_itos
 
690
+       .word   do_astore_3_itos
 
691
+       .word   do_iastore_itos
 
692
+       .word   do_lastore_itos
 
693
+       .word   do_fastore_itos
 
694
+       .word   do_dastore_itos
 
695
+       .word   do_aastore_itos
 
696
+       .word   do_bastore_itos
 
697
+       .word   do_castore_itos
 
698
+       .word   do_sastore_itos
 
699
+       .word   do_pop_itos
 
700
+       .word   do_pop2_itos
 
701
+       .word   do_dup_itos
 
702
+       .word   do_dup_x1_itos
 
703
+       .word   do_dup_x2_itos
 
704
+       .word   do_dup2_itos
 
705
+       .word   do_dup2_x1_itos
 
706
+       .word   do_dup2_x2_itos
 
707
+       .word   do_swap_itos
 
708
+       .word   do_iadd_itos
 
709
+       .word   do_ladd_itos
 
710
+       .word   do_fadd_itos
 
711
+       .word   do_dadd_itos
 
712
+       .word   do_isub_itos
 
713
+       .word   do_lsub_itos
 
714
+       .word   do_fsub_itos
 
715
+       .word   do_dsub_itos
 
716
+       .word   do_imul_itos
 
717
+       .word   do_lmul_itos
 
718
+       .word   do_fmul_itos
 
719
+       .word   do_dmul_itos
 
720
+       .word   do_idiv_itos
 
721
+       .word   do_ldiv_itos
 
722
+       .word   do_fdiv_itos
 
723
+       .word   do_ddiv_itos
 
724
+       .word   do_irem_itos
 
725
+       .word   do_lrem_itos
 
726
+       .word   do_frem_itos
 
727
+       .word   do_drem_itos
 
728
+       .word   do_ineg_itos
 
729
+       .word   do_lneg_itos
 
730
+       .word   do_fneg_itos
 
731
+       .word   do_dneg_itos
 
732
+       .word   do_ishl_itos
 
733
+       .word   do_lshl_itos
 
734
+       .word   do_ishr_itos
 
735
+       .word   do_lshr_itos
 
736
+       .word   do_iushr_itos
 
737
+       .word   do_lushr_itos
 
738
+       .word   do_iand_itos
 
739
+       .word   do_land_itos
 
740
+       .word   do_ior_itos
 
741
+       .word   do_lor_itos
 
742
+       .word   do_ixor_itos
 
743
+       .word   do_lxor_itos
 
744
+       .word   do_iinc_itos
 
745
+       .word   do_i2l_itos
 
746
+       .word   do_i2f_itos
 
747
+       .word   do_i2d_itos
 
748
+       .word   do_l2i_itos
 
749
+       .word   do_l2f_itos
 
750
+       .word   do_l2d_itos
 
751
+       .word   do_f2i_itos
 
752
+       .word   do_f2l_itos
 
753
+       .word   do_f2d_itos
 
754
+       .word   do_d2i_itos
 
755
+       .word   do_d2l_itos
 
756
+       .word   do_d2f_itos
 
757
+       .word   do_i2b_itos
 
758
+       .word   do_i2c_itos
 
759
+       .word   do_i2s_itos
 
760
+       .word   do_lcmp_itos
 
761
+       .word   do_fcmpl_itos
 
762
+       .word   do_fcmpg_itos
 
763
+       .word   do_dcmpl_itos
 
764
+       .word   do_dcmpg_itos
 
765
+       .word   do_ifeq_itos_unsafe
 
766
+       .word   do_ifne_itos_unsafe
 
767
+       .word   do_iflt_itos_unsafe
 
768
+       .word   do_ifge_itos_unsafe
 
769
+       .word   do_ifgt_itos_unsafe
 
770
+       .word   do_ifle_itos_unsafe
 
771
+       .word   do_if_icmpeq_itos_unsafe
 
772
+       .word   do_if_icmpne_itos_unsafe
 
773
+       .word   do_if_icmplt_itos_unsafe
 
774
+       .word   do_if_icmpge_itos_unsafe
 
775
+       .word   do_if_icmpgt_itos_unsafe
 
776
+       .word   do_if_icmple_itos_unsafe
 
777
+       .word   do_if_acmpeq_itos_unsafe
 
778
+       .word   do_if_acmpne_itos_unsafe
 
779
+       .word   do_goto_itos_unsafe
 
780
+       .word   do_jsr_itos
 
781
+       .word   do_ret_itos
 
782
+       .word   do_tableswitch_itos_unsafe
 
783
+       .word   do_lookupswitch_itos_unsafe
 
784
+       .word   do_ireturn_itos
 
785
+       .word   do_lreturn_itos
 
786
+       .word   do_freturn_itos
 
787
+       .word   do_dreturn_itos
 
788
+       .word   do_areturn_itos
 
789
+       .word   do_return_itos
 
790
+       .word   do_getstatic_itos
 
791
+       .word   do_putstatic_itos
 
792
+       .word   do_getfield_itos
 
793
+       .word   do_putfield_itos
 
794
+       .word   do_invokevirtual_itos
 
795
+       .word   do_invokespecial_itos
 
796
+       .word   do_invokestatic_itos
 
797
+       .word   do_invokeinterface_itos
 
798
+       .word   do_xxxunusedxxx_itos
 
799
+       .word   do_new_itos
 
800
+       .word   do_newarray_itos
 
801
+       .word   do_anewarray_itos
 
802
+       .word   do_arraylength_itos
 
803
+       .word   do_athrow_itos
 
804
+       .word   do_checkcast_itos
 
805
+       .word   do_instanceof_itos
 
806
+       .word   do_monitorenter_itos
 
807
+       .word   do_monitorexit_itos
 
808
+       .word   do_wide_itos
 
809
+       .word   do_multianewarray_itos
 
810
+       .word   do_ifnull_itos_unsafe
 
811
+       .word   do_ifnonnull_itos_unsafe
 
812
+       .word   do_goto_w_itos
 
813
+       .word   do_jsr_w_itos
 
814
+       .word   do_breakpoint_itos
 
815
+       .word   do_exit_asm_itos
 
816
+       .word   do_exit_asm_itos
 
817
+       .word   do_exit_asm_itos
 
818
+       .word   do_exit_asm_itos
 
819
+       .word   do_exit_asm_itos
 
820
+       .word   do_exit_asm_itos
 
821
+       .word   do_exit_asm_itos
 
822
+       .word   do_exit_asm_itos
 
823
+       .word   do_exit_asm_itos
 
824
+       .word   do_exit_asm_itos
 
825
+       .word   do_exit_asm_itos
 
826
+       .word   do_exit_asm_itos
 
827
+       .word   do_exit_asm_itos
 
828
+       .word   do_exit_asm_itos
 
829
+       .word   do_exit_asm_itos
 
830
+       .word   do_exit_asm_itos
 
831
+       .word   do_exit_asm_itos
 
832
+       .word   do_exit_asm_itos
 
833
+       .word   do_exit_asm_itos
 
834
+       .word   do_exit_asm_itos
 
835
+       .word   do_exit_asm_itos
 
836
+       .word   do_exit_asm_itos
 
837
+       .word   do_exit_asm_itos
 
838
+       .word   do_exit_asm_itos
 
839
+       .word   do_exit_asm_itos
 
840
+       .word   do_exit_asm_itos
 
841
+       .word   do_exit_asm_itos
 
842
+       .word   do_exit_asm_itos
 
843
+       .word   do_exit_asm_itos
 
844
+       .word   do_exit_asm_itos
 
845
+       .word   do_exit_asm_itos
 
846
+       .word   do_exit_asm_itos
 
847
+       .word   do_exit_asm_itos
 
848
+       .word   do_exit_asm_itos
 
849
+       .word   do_exit_asm_itos
 
850
+       .word   do_exit_asm_itos
 
851
+       .word   do_exit_asm_itos
 
852
+       .word   do_exit_asm_itos
 
853
+       .word   do_exit_asm_itos
 
854
+       .word   do_exit_asm_itos
 
855
+       .word   do_exit_asm_itos
 
856
+       .word   do_exit_asm_itos
 
857
+       .word   do_exit_asm_itos
 
858
+       .word   do_exit_asm_itos
 
859
+       .word   do_exit_asm_itos
 
860
+       .word   do_exit_asm_itos
 
861
+       .word   do_exit_asm_itos
 
862
+       .word   do_exit_asm_itos
 
863
+       .word   do_exit_asm_itos
 
864
+       .word   do_exit_asm_itos
 
865
+       .word   do_exit_asm_itos
 
866
+       .word   do_exit_asm_itos
 
867
+       .word   do_exit_asm_itos
 
868
+opclabels_data_dtos:
 
869
+       .word   do_nop_dtos
 
870
+       .word   do_aconst_null_dtos
 
871
+       .word   do_iconst_m1_dtos
 
872
+       .word   do_iconst_0_dtos
 
873
+       .word   do_iconst_1_dtos
 
874
+       .word   do_iconst_2_dtos
 
875
+       .word   do_iconst_3_dtos
 
876
+       .word   do_iconst_4_dtos
 
877
+       .word   do_iconst_5_dtos
 
878
+       .word   do_lconst_0_dtos
 
879
+       .word   do_lconst_1_dtos
 
880
+       .word   do_fconst_0_dtos
 
881
+       .word   do_fconst_1_dtos
 
882
+       .word   do_fconst_2_dtos
 
883
+       .word   do_dconst_0_dtos
 
884
+       .word   do_dconst_1_dtos
 
885
+       .word   do_bipush_dtos
 
886
+       .word   do_sipush_dtos
 
887
+       .word   do_ldc_dtos
 
888
+       .word   do_ldc_w_dtos
 
889
+       .word   do_ldc2_w_dtos
 
890
+       .word   do_iload_dtos
 
891
+       .word   do_lload_dtos
 
892
+       .word   do_fload_dtos
 
893
+       .word   do_dload_dtos
 
894
+       .word   do_aload_dtos
 
895
+       .word   do_iload_0_dtos
 
896
+       .word   do_iload_1_dtos
 
897
+       .word   do_iload_2_dtos
 
898
+       .word   do_iload_3_dtos
 
899
+       .word   do_lload_0_dtos
 
900
+       .word   do_lload_1_dtos
 
901
+       .word   do_lload_2_dtos
 
902
+       .word   do_lload_3_dtos
 
903
+       .word   do_fload_0_dtos
 
904
+       .word   do_fload_1_dtos
 
905
+       .word   do_fload_2_dtos
 
906
+       .word   do_fload_3_dtos
 
907
+       .word   do_dload_0_dtos
 
908
+       .word   do_dload_1_dtos
 
909
+       .word   do_dload_2_dtos
 
910
+       .word   do_dload_3_dtos
 
911
+       .word   do_aload_0_dtos
 
912
+       .word   do_aload_1_dtos
 
913
+       .word   do_aload_2_dtos
 
914
+       .word   do_aload_3_dtos
 
915
+       .word   do_iaload_dtos
 
916
+       .word   do_laload_dtos
 
917
+       .word   do_faload_dtos
 
918
+       .word   do_daload_dtos
 
919
+       .word   do_aaload_dtos
 
920
+       .word   do_baload_dtos
 
921
+       .word   do_caload_dtos
 
922
+       .word   do_saload_dtos
 
923
+       .word   do_istore_dtos
 
924
+       .word   do_lstore_dtos
 
925
+       .word   do_fstore_dtos
 
926
+       .word   do_dstore_dtos
 
927
+       .word   do_astore_dtos
 
928
+       .word   do_istore_0_dtos
 
929
+       .word   do_istore_1_dtos
 
930
+       .word   do_istore_2_dtos
 
931
+       .word   do_istore_3_dtos
 
932
+       .word   do_lstore_0_dtos
 
933
+       .word   do_lstore_1_dtos
 
934
+       .word   do_lstore_2_dtos
 
935
+       .word   do_lstore_3_dtos
 
936
+       .word   do_fstore_0_dtos
 
937
+       .word   do_fstore_1_dtos
 
938
+       .word   do_fstore_2_dtos
 
939
+       .word   do_fstore_3_dtos
 
940
+       .word   do_dstore_0_dtos
 
941
+       .word   do_dstore_1_dtos
 
942
+       .word   do_dstore_2_dtos
 
943
+       .word   do_dstore_3_dtos
 
944
+       .word   do_astore_0_dtos
 
945
+       .word   do_astore_1_dtos
 
946
+       .word   do_astore_2_dtos
 
947
+       .word   do_astore_3_dtos
 
948
+       .word   do_iastore_dtos
 
949
+       .word   do_lastore_dtos
 
950
+       .word   do_fastore_dtos
 
951
+       .word   do_dastore_dtos
 
952
+       .word   do_aastore_dtos
 
953
+       .word   do_bastore_dtos
 
954
+       .word   do_castore_dtos
 
955
+       .word   do_sastore_dtos
 
956
+       .word   do_pop_dtos
 
957
+       .word   do_pop2_dtos
 
958
+       .word   do_dup_dtos
 
959
+       .word   do_dup_x1_dtos
 
960
+       .word   do_dup_x2_dtos
 
961
+       .word   do_dup2_dtos
 
962
+       .word   do_dup2_x1_dtos
 
963
+       .word   do_dup2_x2_dtos
 
964
+       .word   do_swap_dtos
 
965
+       .word   do_iadd_dtos
 
966
+       .word   do_ladd_dtos
 
967
+       .word   do_fadd_dtos
 
968
+       .word   do_dadd_dtos
 
969
+       .word   do_isub_dtos
 
970
+       .word   do_lsub_dtos
 
971
+       .word   do_fsub_dtos
 
972
+       .word   do_dsub_dtos
 
973
+       .word   do_imul_dtos
 
974
+       .word   do_lmul_dtos
 
975
+       .word   do_fmul_dtos
 
976
+       .word   do_dmul_dtos
 
977
+       .word   do_idiv_dtos
 
978
+       .word   do_ldiv_dtos
 
979
+       .word   do_fdiv_dtos
 
980
+       .word   do_ddiv_dtos
 
981
+       .word   do_irem_dtos
 
982
+       .word   do_lrem_dtos
 
983
+       .word   do_frem_dtos
 
984
+       .word   do_drem_dtos
 
985
+       .word   do_ineg_dtos
 
986
+       .word   do_lneg_dtos
 
987
+       .word   do_fneg_dtos
 
988
+       .word   do_dneg_dtos
 
989
+       .word   do_ishl_dtos
 
990
+       .word   do_lshl_dtos
 
991
+       .word   do_ishr_dtos
 
992
+       .word   do_lshr_dtos
 
993
+       .word   do_iushr_dtos
 
994
+       .word   do_lushr_dtos
 
995
+       .word   do_iand_dtos
 
996
+       .word   do_land_dtos
 
997
+       .word   do_ior_dtos
 
998
+       .word   do_lor_dtos
 
999
+       .word   do_ixor_dtos
 
1000
+       .word   do_lxor_dtos
 
1001
+       .word   do_iinc_dtos
 
1002
+       .word   do_i2l_dtos
 
1003
+       .word   do_i2f_dtos
 
1004
+       .word   do_i2d_dtos
 
1005
+       .word   do_l2i_dtos
 
1006
+       .word   do_l2f_dtos
 
1007
+       .word   do_l2d_dtos
 
1008
+       .word   do_f2i_dtos
 
1009
+       .word   do_f2l_dtos
 
1010
+       .word   do_f2d_dtos
 
1011
+       .word   do_d2i_dtos
 
1012
+       .word   do_d2l_dtos
 
1013
+       .word   do_d2f_dtos
 
1014
+       .word   do_i2b_dtos
 
1015
+       .word   do_i2c_dtos
 
1016
+       .word   do_i2s_dtos
 
1017
+       .word   do_lcmp_dtos
 
1018
+       .word   do_fcmpl_dtos
 
1019
+       .word   do_fcmpg_dtos
 
1020
+       .word   do_dcmpl_dtos
 
1021
+       .word   do_dcmpg_dtos
 
1022
+       .word   do_ifeq_dtos
 
1023
+       .word   do_ifne_dtos
 
1024
+       .word   do_iflt_dtos
 
1025
+       .word   do_ifge_dtos
 
1026
+       .word   do_ifgt_dtos
 
1027
+       .word   do_ifle_dtos
 
1028
+       .word   do_if_icmpeq_dtos
 
1029
+       .word   do_if_icmpne_dtos
 
1030
+       .word   do_if_icmplt_dtos
 
1031
+       .word   do_if_icmpge_dtos
 
1032
+       .word   do_if_icmpgt_dtos
 
1033
+       .word   do_if_icmple_dtos
 
1034
+       .word   do_if_acmpeq_dtos
 
1035
+       .word   do_if_acmpne_dtos
 
1036
+       .word   do_goto_dtos
 
1037
+       .word   do_jsr_dtos
 
1038
+       .word   do_ret_dtos
 
1039
+       .word   do_tableswitch_dtos
 
1040
+       .word   do_lookupswitch_dtos
 
1041
+       .word   do_ireturn_dtos
 
1042
+       .word   do_lreturn_dtos
 
1043
+       .word   do_freturn_dtos
 
1044
+       .word   do_dreturn_dtos
 
1045
+       .word   do_areturn_dtos
 
1046
+       .word   do_return_dtos
 
1047
+       .word   do_getstatic_dtos
 
1048
+       .word   do_putstatic_dtos
 
1049
+       .word   do_getfield_dtos
 
1050
+       .word   do_putfield_dtos
 
1051
+       .word   do_invokevirtual_dtos
 
1052
+       .word   do_invokespecial_dtos
 
1053
+       .word   do_invokestatic_dtos
 
1054
+       .word   do_invokeinterface_dtos
 
1055
+       .word   do_xxxunusedxxx_dtos
 
1056
+       .word   do_new_dtos
 
1057
+       .word   do_newarray_dtos
 
1058
+       .word   do_anewarray_dtos
 
1059
+       .word   do_arraylength_dtos
 
1060
+       .word   do_athrow_dtos
 
1061
+       .word   do_checkcast_dtos
 
1062
+       .word   do_instanceof_dtos
 
1063
+       .word   do_monitorenter_dtos
 
1064
+       .word   do_monitorexit_dtos
 
1065
+       .word   do_wide_dtos
 
1066
+       .word   do_multianewarray_dtos
 
1067
+       .word   do_ifnull_dtos
 
1068
+       .word   do_ifnonnull_dtos
 
1069
+       .word   do_goto_w_dtos
 
1070
+       .word   do_jsr_w_dtos
 
1071
+       .word   do_breakpoint_dtos
 
1072
+       .word   do_exit_asm_dtos
 
1073
+       .word   do_exit_asm_dtos
 
1074
+       .word   do_exit_asm_dtos
 
1075
+       .word   do_exit_asm_dtos
 
1076
+       .word   do_exit_asm_dtos
 
1077
+       .word   do_exit_asm_dtos
 
1078
+       .word   do_exit_asm_dtos
 
1079
+       .word   do_exit_asm_dtos
 
1080
+       .word   do_exit_asm_dtos
 
1081
+       .word   do_exit_asm_dtos
 
1082
+       .word   do_exit_asm_dtos
 
1083
+       .word   do_exit_asm_dtos
 
1084
+       .word   do_exit_asm_dtos
 
1085
+       .word   do_exit_asm_dtos
 
1086
+       .word   do_exit_asm_dtos
 
1087
+       .word   do_exit_asm_dtos
 
1088
+       .word   do_exit_asm_dtos
 
1089
+       .word   do_exit_asm_dtos
 
1090
+       .word   do_exit_asm_dtos
 
1091
+       .word   do_exit_asm_dtos
 
1092
+       .word   do_exit_asm_dtos
 
1093
+       .word   do_exit_asm_dtos
 
1094
+       .word   do_exit_asm_dtos
 
1095
+       .word   do_exit_asm_dtos
 
1096
+       .word   do_exit_asm_dtos
 
1097
+       .word   do_exit_asm_dtos
 
1098
+       .word   do_exit_asm_dtos
 
1099
+       .word   do_exit_asm_dtos
 
1100
+       .word   do_exit_asm_dtos
 
1101
+       .word   do_exit_asm_dtos
 
1102
+       .word   do_exit_asm_dtos
 
1103
+       .word   do_exit_asm_dtos
 
1104
+       .word   do_exit_asm_dtos
 
1105
+       .word   do_exit_asm_dtos
 
1106
+       .word   do_exit_asm_dtos
 
1107
+       .word   do_exit_asm_dtos
 
1108
+       .word   do_exit_asm_dtos
 
1109
+       .word   do_exit_asm_dtos
 
1110
+       .word   do_exit_asm_dtos
 
1111
+       .word   do_exit_asm_dtos
 
1112
+       .word   do_exit_asm_dtos
 
1113
+       .word   do_exit_asm_dtos
 
1114
+       .word   do_exit_asm_dtos
 
1115
+       .word   do_exit_asm_dtos
 
1116
+       .word   do_exit_asm_dtos
 
1117
+       .word   do_exit_asm_dtos
 
1118
+       .word   do_exit_asm_dtos
 
1119
+       .word   do_exit_asm_dtos
 
1120
+       .word   do_exit_asm_dtos
 
1121
+       .word   do_exit_asm_dtos
 
1122
+       .word   do_exit_asm_dtos
 
1123
+       .word   do_exit_asm_dtos
 
1124
+       .word   do_exit_asm_dtos
 
1125
+
 
1126
+@ ---- run_opt --------------------------------------------------------------
 
1127
+
 
1128
+       .text
 
1129
+       .global _ZN19BytecodeInterpreter7run_optEPS_
 
1130
+       .type   _ZN19BytecodeInterpreter7run_optEPS_, %function
 
1131
+_ZN19BytecodeInterpreter7run_optEPS_:
 
1132
+       @ args = 0, pretend = 0, frame = 40
 
1133
+       @ frame_needed = 0, uses_anonymous_args = 0
 
1134
+@ --- run_opt_entry -------------------------------------------------
 
1135
+       OpcodeEntry     run_opt_entry
 
1136
+       stmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
 
1137
+       mov     istate, r0
 
1138
+       ldr     java_pc, [istate, #ISTATE_JAVA_PC]
 
1139
+       ldr     r9, .globals_table
 
1140
+       ldrb    r2, [java_pc, #0]
 
1141
+       ldr     java_stack, [istate, #ISTATE_JAVA_STACK]
 
1142
+.pic_location:
 
1143
+       add     r9, pc, r9              @ Don't move this instruction from the .pic_location label
 
1144
+       ldr     r0, .globals_table+4
 
1145
+       ldr     java_locals, [istate, #ISTATE_JAVA_LOCALS]
 
1146
+       ldr     constant_pool, [istate, #ISTATE_CONSTANT_POOL]
 
1147
+       add     vtos_table, r9, r0
 
1148
+       ldr     r2, [vtos_table, r2, asl #2]
 
1149
+       add     itos_table, vtos_table, #opclabels_data_itos - opclabels_data_vtos
 
1150
+       add     dtos_table, vtos_table, #opclabels_data_dtos - opclabels_data_vtos
 
1151
+       mov     pc, r2
 
1152
+
 
1153
+       .align  2
 
1154
+.globals_table:
 
1155
+       .word   _GLOBAL_OFFSET_TABLE_-(.pic_location+8)
 
1156
+       .word   opclabels_data_vtos(GOTOFF)
 
1157
+
 
1158
+@ ----- The Bytecode Implementations --------------------------------------
 
1159
+
 
1160
+@ --- do_getfield_vtos -------------------------------------------------
 
1161
+       OpcodeEntry     do_getfield_vtos
 
1162
+       POP(tos)
 
1163
+@ --- do_getfield_itos -------------------------------------------------
 
1164
+       OpcodeEntry     do_getfield_itos
 
1165
+       ldrb    r3, [java_pc,#1]
 
1166
+       ldrb    r2, [java_pc,#2]
 
1167
+       ldrb    ip, [java_pc,#3]!
 
1168
+       orr     r3, r3, r2, lsl #8
 
1169
+       add     r1, constant_pool, #16
 
1170
+       ldr     r3, [r1, r3, lsl #4]!                   @ r1 = cache
 
1171
+       ldr     ip, [itos_table, ip, asl #2]
 
1172
+       and     r3, r3, #0x00ff0000
 
1173
+       cmp     r3, #180 << 16
 
1174
+       bne     .exit_getfield
 
1175
+       movs    r3, r0
 
1176
+       beq     .exit_getfield
 
1177
+       ldr     r2, [r1, #12]
 
1178
+       ldr     lr, [r1, #8]
 
1179
+       movs    r2, r2, lsr #29
 
1180
+       ldrhi   tos, [r3, lr]           @ C = 1, Z = 0 => R2 == 3, 5, 7
 
1181
+       movhi   pc, ip                  @ early exit for word accesses
 
1182
+       ldreqsb tos, [r3, lr]           @ Z = 1 => R2 = 0, 1
 
1183
+       ldrcsh  tos, [r3, lr]           @ C = 1 => R2 = 1 (overwrites previous load)
 
1184
+       moveq   pc, ip
 
1185
+       tst     r2, #2
 
1186
+       addne   r3, r3, lr
 
1187
+       ldmneia r3, {r0, r1}            @ 4, 6
 
1188
+       PUSHNE(r1)
 
1189
+       movne   pc, ip
 
1190
+       ldrsh   tos, [r3, lr]           @ 2
 
1191
+       mov     pc, ip
 
1192
+
 
1193
+@ --- do_putstatic_dtos -------------------------------------------------
 
1194
+       OpcodeEntry     do_putstatic_dtos
 
1195
+       PUSHD   dtos
 
1196
+       b       do_putstatic_vtos
 
1197
+@ --- do_putstatic_vtos -------------------------------------------------
 
1198
+       OpcodeEntry     do_putstatic_vtos
 
1199
+       POP(tos)
 
1200
+@ --- do_putstatic_itos -------------------------------------------------
 
1201
+       OpcodeEntry     do_putstatic_itos
 
1202
+       ldrb    r3, [java_pc,#1]
 
1203
+       ldrb    r2, [java_pc,#2]
 
1204
+       ldrb    ip, [java_pc,#3]!
 
1205
+       orr     r3, r3, r2, lsl #8
 
1206
+       add     r1, constant_pool, #16
 
1207
+       ldr     r3, [r1, r3, lsl #4]!                   @ r1 = cache
 
1208
+       ldr     ip, [vtos_table, ip, asl #2]
 
1209
+       and     r3, r3, #0xff000000
 
1210
+       cmp     r3, #179 << 24
 
1211
+       bne     .exit_putstatic_1
 
1212
+       ldr     r3, [r1, #4]                            @ r3 = object
 
1213
+       ldr     r2, [r1, #12]                           @ r2 = tos_type
 
1214
+       ldr     lr, [r1, #8]                            @ lr = offset
 
1215
+       mov     r2, r2, lsr #28
 
1216
+       cmp     r2, #tos_atos
 
1217
+       beq     .exit_putstatic_1       @ atos - let main loop handle it
 
1218
+       cmp     r2, #tos_ltos
 
1219
+       cmpne   r2, #tos_dtos
 
1220
+       beq     do_putstatic_1          @ ltos or dtos
 
1221
+       cmp     r2, #tos_itos
 
1222
+       strcs   tos, [r3, lr]           @ itos or ftos
 
1223
+       movcs   pc, ip
 
1224
+       cmp     r2, #tos_ctos
 
1225
+       strcsh  tos, [r3, lr]           @ ctos or stos
 
1226
+       strccb  tos, [r3, lr]           @ btos
 
1227
+       mov     pc, ip
 
1228
+do_putstatic_1:
 
1229
+       POP(r1)
 
1230
+       add     r3, r3, lr
 
1231
+       stmia   r3, {r0, r1}
 
1232
+       mov     pc, ip
 
1233
+
 
1234
+@ --- do_putfield_dtos -------------------------------------------------
 
1235
+       OpcodeEntry     do_putfield_dtos
 
1236
+       PUSHD   dtos
 
1237
+       b       do_putfield_vtos
 
1238
+@ --- do_putfield_vtos -------------------------------------------------
 
1239
+       OpcodeEntry     do_putfield_vtos
 
1240
+       POP(tos)
 
1241
+@ --- do_putfield_itos -------------------------------------------------
 
1242
+       OpcodeEntry     do_putfield_itos
 
1243
+       ldrb    r3, [java_pc,#1]
 
1244
+       ldrb    r2, [java_pc,#2]
 
1245
+       ldrb    ip, [java_pc,#3]!
 
1246
+       orr     r3, r3, r2, lsl #8
 
1247
+       add     r1, constant_pool, #16
 
1248
+       ldr     r3, [r1, r3, lsl #4]!                   @ r1 = cache
 
1249
+       ldr     ip, [vtos_table, ip, asl #2]
 
1250
+       and     r3, r3, #0xff000000
 
1251
+       cmp     r3, #181 << 24
 
1252
+       bne     .exit_putfield_1
 
1253
+       ldr     r2, [r1, #12]                           @ r2 = tos_type
 
1254
+       ldr     lr, [r1, #8]                            @ lr = offset
 
1255
+       mov     r2, r2, lsr #28
 
1256
+       cmp     r2, #tos_atos
 
1257
+       beq     .exit_putfield_1        @ atos - let main loop handle it
 
1258
+       cmp     r2, #tos_ltos
 
1259
+       cmpne   r2, #tos_dtos
 
1260
+       beq     do_putfield_1           @ ltos or dtos
 
1261
+       POP(r3)
 
1262
+       cmp     r3, #0
 
1263
+       beq     .exit_putfield_2
 
1264
+       cmp     r2, #tos_itos
 
1265
+       strcs   tos, [r3, lr]           @ itos or ftos
 
1266
+       movcs   pc, ip
 
1267
+       cmp     r2, #tos_ctos
 
1268
+       strcsh  tos, [r3, lr]           @ ctos or stos
 
1269
+       strccb  tos, [r3, lr]           @ btos
 
1270
+       mov     pc, ip
 
1271
+do_putfield_1:
 
1272
+       POP(r1)
 
1273
+       POP(r3)
 
1274
+       cmp     r3, #0
 
1275
+       beq     .exit_putfield_3
 
1276
+       add     r3, r3, lr
 
1277
+       stmia   r3, {r0, r1}
 
1278
+       mov     pc, ip
 
1279
+
 
1280
+@ --- do_invokestatic_dtos -------------------------------------------------
 
1281
+       OpcodeEntry     do_invokestatic_dtos
 
1282
+       PUSHD   dtos
 
1283
+       b       do_invokestatic_vtos
 
1284
+@ --- do_invokestatic_itos -------------------------------------------------
 
1285
+       OpcodeEntry     do_invokestatic_itos
 
1286
+       PUSH(tos)
 
1287
+@ --- do_invokestatic_vtos -------------------------------------------------
 
1288
+       OpcodeEntry     do_invokestatic_vtos
 
1289
+       ldrb    r3, [java_pc, #2]       @ zero_extendqisi2
 
1290
+       ldrb    r2, [java_pc, #1]       @ zero_extendqisi2
 
1291
+       add     r1, constant_pool, #16
 
1292
+       orr     r2, r2, r3, asl #8
 
1293
+       ldr     r3, [r1, r2, lsl #4]!
 
1294
+       and     r3, r3, #0x00ff0000
 
1295
+       cmp     r3, #opc_invokestatic << 16
 
1296
+       bne     .exit_asm
 
1297
+       ldr     r2, [r1, #4]
 
1298
+       mov     ip, #msg_call_method
 
1299
+       str     r2, [istate, #ISTATE_JAVA_CALL_MSG_CALLEE]
 
1300
+       ldr     r3, [r2, #76]
 
1301
+       str     ip, [istate, #ISTATE_JAVA_MSG]
 
1302
+       str     r3, [istate, #ISTATE_JAVA_CALL_MSG_CALLEE_ENTRY]
 
1303
+       mov     r3, #3
 
1304
+       str     r3, [istate, #ISTATE_JAVA_CALL_MSG_BCP_ADVANCE]
 
1305
+       str     java_pc, [istate, #ISTATE_JAVA_PC]
 
1306
+       str     java_stack, [istate, #ISTATE_JAVA_STACK]
 
1307
+       mov     r0, #1
 
1308
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 
1309
+
 
1310
+@ --- do_invokevirtual_dtos -------------------------------------------------
 
1311
+       OpcodeEntry     do_invokevirtual_dtos
 
1312
+       PUSHD   dtos
 
1313
+       b       do_invokevirtual_vtos
 
1314
+@ --- do_invokevirtual_itos -------------------------------------------------
 
1315
+       OpcodeEntry     do_invokevirtual_itos
 
1316
+       PUSH(tos)
 
1317
+@ --- do_invokevirtual_vtos -------------------------------------------------
 
1318
+       OpcodeEntry     do_invokevirtual_vtos
 
1319
+       ldrb    r3, [java_pc, #2]       @ zero_extendqisi2
 
1320
+       ldrb    r2, [java_pc, #1]       @ zero_extendqisi2
 
1321
+       add     r1, constant_pool, #16
 
1322
+       orr     r2, r2, r3, asl #8
 
1323
+       ldr     r3, [r1, r2, lsl #4]!
 
1324
+       and     r3, r3, #0xff000000
 
1325
+       cmp     r3, #opc_invokevirtual << 24
 
1326
+       bne     .exit_asm
 
1327
+       ldr     r3, [r1, #12]
 
1328
+       and     r2, r3, #255
 
1329
+       ldr     r2, [java_stack, r2, asl #2]
 
1330
+       cmp     r2, #0
 
1331
+       beq     .exit_asm
 
1332
+       tst     r3, #1 << vfinalMethod
 
1333
+       ldr     r0, [r1, #8]
 
1334
+       ldreq   r3, [r2, #4]
 
1335
+       mov     ip, #msg_call_method
 
1336
+       addeq   r3, r3, r0, asl #2
 
1337
+       ldreq   r0, [r3, #304]
 
1338
+       str     ip, [istate, #ISTATE_JAVA_MSG]
 
1339
+       ldr     r3, [r0, #76]
 
1340
+       str     r0, [istate, #ISTATE_JAVA_CALL_MSG_CALLEE]
 
1341
+       str     r3, [istate, #ISTATE_JAVA_CALL_MSG_CALLEE_ENTRY]
 
1342
+       str     java_pc, [istate, #ISTATE_JAVA_PC]
 
1343
+       mov     r3, #3
 
1344
+       str     r3, [istate, #ISTATE_JAVA_CALL_MSG_BCP_ADVANCE]
 
1345
+       str     java_stack, [istate, #ISTATE_JAVA_STACK]
 
1346
+       mov     r0, #1
 
1347
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 
1348
+
 
1349
+@ --- do_invokespecial_dtos -------------------------------------------------
 
1350
+       OpcodeEntry     do_invokespecial_dtos
 
1351
+       PUSHD   dtos
 
1352
+       b       do_invokespecial_vtos
 
1353
+@ --- do_invokespecial_itos -------------------------------------------------
 
1354
+       OpcodeEntry     do_invokespecial_itos
 
1355
+       PUSH(tos)
 
1356
+@ --- do_invokespecial_vtos -------------------------------------------------
 
1357
+       OpcodeEntry     do_invokespecial_vtos
 
1358
+       ldrb    r3, [java_pc, #2]       @ zero_extendqisi2
 
1359
+       ldrb    r2, [java_pc, #1]       @ zero_extendqisi2
 
1360
+       add     r1, constant_pool, #16
 
1361
+       orr     r2, r2, r3, asl #8
 
1362
+       ldr     r3, [r1, r2, lsl #4]!
 
1363
+       and     r3, r3, #0x00ff0000
 
1364
+       cmp     r3, #opc_invokespecial << 24
 
1365
+       bne     .exit_asm
 
1366
+       ldr     r3, [r1, #12]
 
1367
+       and     r2, r3, #255
 
1368
+       ldr     r2, [java_stack, r2, asl #2]
 
1369
+       cmp     r2, #0
 
1370
+       beq     .exit_asm
 
1371
+       ldr     r2, [r1, #4]
 
1372
+       mov     ip, #msg_call_method
 
1373
+       str     r2, [istate, #ISTATE_JAVA_CALL_MSG_CALLEE]
 
1374
+       ldr     r3, [r2, #76]
 
1375
+       str     ip, [istate, #ISTATE_JAVA_MSG]
 
1376
+       str     r3, [istate, #ISTATE_JAVA_CALL_MSG_CALLEE_ENTRY]
 
1377
+       mov     r3, #3
 
1378
+       str     r3, [istate, #ISTATE_JAVA_CALL_MSG_BCP_ADVANCE]
 
1379
+       str     java_pc, [istate, #ISTATE_JAVA_PC]
 
1380
+       str     java_stack, [istate, #ISTATE_JAVA_STACK]
 
1381
+       mov     r0, #1
 
1382
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 
1383
+
 
1384
+       OpcodeEntry     do_ireturn_dtos
 
1385
+       OpcodeEntry     do_lreturn_dtos
 
1386
+       OpcodeEntry     do_freturn_dtos
 
1387
+       OpcodeEntry     do_dreturn_dtos
 
1388
+       OpcodeEntry     do_areturn_dtos
 
1389
+       OpcodeEntry     do_return_dtos
 
1390
+       PUSHD   dtos
 
1391
+       b       do_return_vtos
 
1392
+       OpcodeEntry     do_ireturn_itos
 
1393
+       OpcodeEntry     do_lreturn_itos
 
1394
+       OpcodeEntry     do_freturn_itos
 
1395
+       OpcodeEntry     do_dreturn_itos
 
1396
+       OpcodeEntry     do_areturn_itos
 
1397
+       OpcodeEntry     do_return_itos
 
1398
+       PUSH(tos)
 
1399
+       OpcodeEntry     do_ireturn_vtos
 
1400
+       OpcodeEntry     do_lreturn_vtos
 
1401
+       OpcodeEntry     do_freturn_vtos
 
1402
+       OpcodeEntry     do_dreturn_vtos
 
1403
+       OpcodeEntry     do_areturn_vtos
 
1404
+       OpcodeEntry     do_return_vtos
 
1405
+       ldr     r0, [istate, #ISTATE_JAVA_THREAD]
 
1406
+       ldr     r2, [istate, #52]
 
1407
+       ldr     ip, [r0, #4]
 
1408
+       ldr     r3, [istate, #60]
 
1409
+       cmp     ip, #0
 
1410
+       bne     .exit_asm
 
1411
+
 
1412
+       cmp     r2, r3
 
1413
+       bcc     .exit_asm               @ CC => r3 > r2 => r2 = end
 
1414
+
 
1415
+       ldrb    ip, [java_pc], #1
 
1416
+       mov     r2, #msg_return_from_method
 
1417
+       str     java_pc, [istate, #ISTATE_JAVA_PC]
 
1418
+       str     java_stack, [istate, #ISTATE_JAVA_STACK]
 
1419
+       str     r2, [istate, #ISTATE_JAVA_MSG]
 
1420
+       str     ip, [istate, #ISTATE_JAVA_RETURN_KIND]
 
1421
+       mov     r0, #1
 
1422
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 
1423
+
 
1424
+@ --- do_iload_vtos -------------------------------------------------
 
1425
+       OpcodeEntry     do_iload_vtos
 
1426
+       ldrb    ip, [java_pc, #2]!
 
1427
+       ldrb    r3, [java_pc, #-1]
 
1428
+       ldr     ip, [itos_table, ip, asl #2]
 
1429
+       ldr     tos, [java_locals, -r3, asl #2]
 
1430
+       mov     pc, ip
 
1431
+
 
1432
+@ --- do_iload_itos -------------------------------------------------
 
1433
+       OpcodeEntry     do_iload_itos
 
1434
+       ldrb    ip, [java_pc, #2]!
 
1435
+       ldrb    r3, [java_pc, #-1]
 
1436
+       PUSH(tos)
 
1437
+       ldr     ip, [itos_table, ip, asl #2]
 
1438
+       ldr     tos, [java_locals, -r3, asl #2]
 
1439
+       mov     pc, ip
 
1440
+
 
1441
+@ --- do_aload_vtos -------------------------------------------------
 
1442
+       OpcodeEntry     do_aload_vtos
 
1443
+       ldrb    ip, [java_pc, #2]!
 
1444
+       ldrb    r3, [java_pc, #-1]
 
1445
+       ldr     ip, [itos_table, ip, asl #2]
 
1446
+       ldr     tos, [java_locals, -r3, asl #2]
 
1447
+       mov     pc, ip
 
1448
+
 
1449
+@ --- do_aload_itos -------------------------------------------------
 
1450
+       OpcodeEntry     do_aload_itos
 
1451
+       ldrb    ip, [java_pc, #2]!
 
1452
+       ldrb    r3, [java_pc, #-1]
 
1453
+       PUSH(tos)
 
1454
+       ldr     ip, [itos_table, ip, asl #2]
 
1455
+       ldr     tos, [java_locals, -r3, asl #2]
 
1456
+       mov     pc, ip
 
1457
+
 
1458
+@ --- do_iconst_1_vtos -------------------------------------------------
 
1459
+       OpcodeEntry     do_iconst_1_vtos
 
1460
+       ldrb    r3, [java_pc, #1]!
 
1461
+       mov     tos, #1
 
1462
+       ldr     r2, [itos_table, r3, asl #2]
 
1463
+       mov     pc, r2
 
1464
+
 
1465
+@ --- do_iconst_1_itos -------------------------------------------------
 
1466
+       OpcodeEntry     do_iconst_1_itos
 
1467
+       ldrb    r3, [java_pc, #1]!
 
1468
+       PUSH(tos)
 
1469
+       ldr     r2, [itos_table, r3, asl #2]
 
1470
+       mov     tos, #1
 
1471
+       mov     pc, r2
 
1472
+
 
1473
+@ --- do_ifnull_vtos_unsafe -------------------------------------------------
 
1474
+       OpcodeEntry     do_ifnull_vtos_unsafe
 
1475
+@ --- do_ifeq_vtos_unsafe -------------------------------------------------
 
1476
+       OpcodeEntry     do_ifeq_vtos_unsafe
 
1477
+
 
1478
+       POP(tos)
 
1479
+
 
1480
+@ --- do_ifnull_itos_unsafe -------------------------------------------------
 
1481
+       OpcodeEntry     do_ifnull_itos_unsafe
 
1482
+@ --- do_ifeq_itos_unsafe -------------------------------------------------
 
1483
+       OpcodeEntry     do_ifeq_itos_unsafe
 
1484
+
 
1485
+       ldrsb   r1, [java_pc, #1]
 
1486
+       ldrb    ip, [java_pc, #2]
 
1487
+       cmp     tos, #0
 
1488
+       orreq   ip, ip, r1, lsl #8
 
1489
+       ldreqb  ip, [java_pc, ip]!
 
1490
+       ldrneb  ip, [java_pc, #3]!
 
1491
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1492
+       mov     pc, ip
 
1493
+
 
1494
+@ --- do_ifnonnull_vtos_unsafe -------------------------------------------------
 
1495
+       OpcodeEntry     do_ifnonnull_vtos_unsafe
 
1496
+@ --- do_ifne_vtos_unsafe -------------------------------------------------
 
1497
+       OpcodeEntry     do_ifne_vtos_unsafe
 
1498
+
 
1499
+       POP(tos)
 
1500
+       ldrsb   r1, [java_pc, #1]
 
1501
+       ldrb    ip, [java_pc, #2]
 
1502
+       cmp     tos, #0
 
1503
+       orrne   ip, ip, r1, lsl #8
 
1504
+       ldrneb  ip, [java_pc, ip]!
 
1505
+       ldreqb  ip, [java_pc, #3]!
 
1506
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1507
+       mov     pc, ip
 
1508
+
 
1509
+       OpcodeEntry do_ifnonnull_itos_unsafe
 
1510
+@ --- do_ifne_itos_unsafe -------------------------------------------------
 
1511
+       OpcodeEntry     do_ifne_itos_unsafe
 
1512
+
 
1513
+       ldrsb   r1, [java_pc, #1]
 
1514
+       ldrb    ip, [java_pc, #2]
 
1515
+       cmp     tos, #0
 
1516
+       orrne   ip, ip, r1, lsl #8
 
1517
+       ldrneb  ip, [java_pc, ip]!
 
1518
+       ldreqb  ip, [java_pc, #3]!
 
1519
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1520
+       mov     pc, ip
 
1521
+
 
1522
+@ --- do_ifle_vtos_unsafe -------------------------------------------------
 
1523
+       OpcodeEntry     do_ifle_vtos_unsafe
 
1524
+
 
1525
+       POP(tos)
 
1526
+       ldrsb   r1, [java_pc, #1]
 
1527
+       ldrb    ip, [java_pc, #2]
 
1528
+       cmp     tos, #0
 
1529
+       orrle   ip, ip, r1, lsl #8
 
1530
+       ldrleb  ip, [java_pc, ip]!
 
1531
+       ldrgtb  ip, [java_pc, #3]!
 
1532
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1533
+       mov     pc, ip
 
1534
+
 
1535
+@ --- do_ifle_itos_unsafe -------------------------------------------------
 
1536
+       OpcodeEntry     do_ifle_itos_unsafe
 
1537
+
 
1538
+       ldrsb   r1, [java_pc, #1]
 
1539
+       ldrb    ip, [java_pc, #2]
 
1540
+       cmp     tos, #0
 
1541
+       orrle   ip, ip, r1, lsl #8
 
1542
+       ldrleb  ip, [java_pc, ip]!
 
1543
+       ldrgtb  ip, [java_pc, #3]!
 
1544
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1545
+       mov     pc, ip
 
1546
+
 
1547
+@ --- do_ifgt_vtos_unsafe -------------------------------------------------
 
1548
+       OpcodeEntry     do_ifgt_vtos_unsafe
 
1549
+
 
1550
+       POP(tos)
 
1551
+
 
1552
+@ --- do_ifgt_itos_unsafe -------------------------------------------------
 
1553
+       OpcodeEntry     do_ifgt_itos_unsafe
 
1554
+
 
1555
+       ldrsb   r1, [java_pc, #1]
 
1556
+       ldrb    ip, [java_pc, #2]
 
1557
+       cmp     tos, #0
 
1558
+       orrgt   ip, ip, r1, lsl #8
 
1559
+       ldrgtb  ip, [java_pc, ip]!
 
1560
+       ldrleb  ip, [java_pc, #3]!
 
1561
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1562
+       mov     pc, ip
 
1563
+
 
1564
+@ --- do_ifge_vtos_unsafe -------------------------------------------------
 
1565
+       OpcodeEntry     do_ifge_vtos_unsafe
 
1566
+
 
1567
+       POP(tos)
 
1568
+
 
1569
+@ --- do_ifge_itos_unsafe -------------------------------------------------
 
1570
+       OpcodeEntry     do_ifge_itos_unsafe
 
1571
+
 
1572
+       ldrsb   r1, [java_pc, #1]
 
1573
+       ldrb    ip, [java_pc, #2]
 
1574
+       cmp     tos, #0
 
1575
+       orrge   ip, ip, r1, lsl #8
 
1576
+       ldrgeb  ip, [java_pc, ip]!
 
1577
+       ldrltb  ip, [java_pc, #3]!
 
1578
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1579
+       mov     pc, ip
 
1580
+
 
1581
+@ --- do_iflt_vtos_unsafe -------------------------------------------------
 
1582
+       OpcodeEntry     do_iflt_vtos_unsafe
 
1583
+
 
1584
+       POP(tos)
 
1585
+
 
1586
+@ --- do_iflt_itos_unsafe -------------------------------------------------
 
1587
+       OpcodeEntry     do_iflt_itos_unsafe
 
1588
+
 
1589
+       ldrsb   r1, [java_pc, #1]
 
1590
+       ldrb    ip, [java_pc, #2]
 
1591
+       cmp     tos, #0
 
1592
+       orrlt   ip, ip, r1, lsl #8
 
1593
+       ldrltb  ip, [java_pc, ip]!
 
1594
+       ldrgeb  ip, [java_pc, #3]!
 
1595
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1596
+       mov     pc, ip
 
1597
+
 
1598
+@ --- do_if_acmpeq_vtos_unsafe -------------------------------------------------
 
1599
+       OpcodeEntry     do_if_acmpeq_vtos_unsafe
 
1600
+@ --- do_if_icmpeq_vtos_unsafe -------------------------------------------------
 
1601
+       OpcodeEntry     do_if_icmpeq_vtos_unsafe
 
1602
+
 
1603
+       POP(tos)
 
1604
+
 
1605
+@ --- do_if_acmpeq_itos_unsafe -------------------------------------------------
 
1606
+       OpcodeEntry     do_if_acmpeq_itos_unsafe
 
1607
+@ --- do_if_icmpeq_itos_unsafe -------------------------------------------------
 
1608
+       OpcodeEntry     do_if_icmpeq_itos_unsafe
 
1609
+
 
1610
+       POP(r3)
 
1611
+       ldrsb   r1, [java_pc, #1]
 
1612
+       ldrb    ip, [java_pc, #2]
 
1613
+       cmp     r3, tos
 
1614
+       orreq   ip, ip, r1, lsl #8
 
1615
+       ldreqb  ip, [java_pc, ip]!
 
1616
+       ldrneb  ip, [java_pc, #3]!
 
1617
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1618
+       mov     pc, ip
 
1619
+
 
1620
+@ --- do_if_acmpne_vtos_unsafe -------------------------------------------------
 
1621
+       OpcodeEntry     do_if_acmpne_vtos_unsafe
 
1622
+@ --- do_if_icmpne_vtos_unsafe -------------------------------------------------
 
1623
+       OpcodeEntry     do_if_icmpne_vtos_unsafe
 
1624
+
 
1625
+       POP(tos)
 
1626
+
 
1627
+@ --- do_if_acmpne_itos_unsafe -------------------------------------------------
 
1628
+       OpcodeEntry     do_if_acmpne_itos_unsafe
 
1629
+@ --- do_if_icmpne_itos_unsafe -------------------------------------------------
 
1630
+       OpcodeEntry     do_if_icmpne_itos_unsafe
 
1631
+
 
1632
+       POP(r3)
 
1633
+       ldrsb   r1, [java_pc, #1]
 
1634
+       ldrb    ip, [java_pc, #2]
 
1635
+       cmp     r3, tos
 
1636
+       orrne   ip, ip, r1, lsl #8
 
1637
+       ldrneb  ip, [java_pc, ip]!
 
1638
+       ldreqb  ip, [java_pc, #3]!
 
1639
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1640
+       mov     pc, ip
 
1641
+
 
1642
+@ --- do_if_icmplt_vtos_unsafe -------------------------------------------------
 
1643
+       OpcodeEntry     do_if_icmplt_vtos_unsafe
 
1644
+
 
1645
+       POP(tos)
 
1646
+       POP(r3)
 
1647
+       ldrsb   r1, [java_pc, #1]
 
1648
+       ldrb    ip, [java_pc, #2]
 
1649
+       cmp     r3, tos
 
1650
+       orrlt   ip, ip, r1, lsl #8
 
1651
+       ldrltb  ip, [java_pc, ip]!
 
1652
+       ldrgeb  ip, [java_pc, #3]!
 
1653
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1654
+       mov     pc, ip
 
1655
+
 
1656
+@ --- do_if_icmplt_itos_unsafe -------------------------------------------------
 
1657
+       OpcodeEntry     do_if_icmplt_itos_unsafe
 
1658
+
 
1659
+       POP(r3)
 
1660
+       ldrsb   r1, [java_pc, #1]
 
1661
+       ldrb    ip, [java_pc, #2]
 
1662
+       cmp     r3, tos
 
1663
+       orrlt   ip, ip, r1, lsl #8
 
1664
+       ldrltb  ip, [java_pc, ip]!
 
1665
+       ldrgeb  ip, [java_pc, #3]!
 
1666
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1667
+       mov     pc, ip
 
1668
+
 
1669
+@ --- do_if_icmpge_vtos_unsafe -------------------------------------------------
 
1670
+       OpcodeEntry     do_if_icmpge_vtos_unsafe
 
1671
+
 
1672
+       POP(tos)
 
1673
+
 
1674
+@ --- do_if_icmpge_itos_unsafe -------------------------------------------------
 
1675
+       OpcodeEntry     do_if_icmpge_itos_unsafe
 
1676
+
 
1677
+       POP(r3)
 
1678
+       ldrsb   r1, [java_pc, #1]
 
1679
+       ldrb    ip, [java_pc, #2]
 
1680
+       cmp     r3, tos
 
1681
+       orrge   ip, ip, r1, lsl #8
 
1682
+       ldrgeb  ip, [java_pc, ip]!
 
1683
+       ldrltb  ip, [java_pc, #3]!
 
1684
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1685
+       mov     pc, ip
 
1686
+
 
1687
+@ --- do_if_icmpgt_vtos_unsafe -------------------------------------------------
 
1688
+       OpcodeEntry     do_if_icmpgt_vtos_unsafe
 
1689
+
 
1690
+       POP(tos)
 
1691
+
 
1692
+@ --- do_if_icmpgt_itos_unsafe -------------------------------------------------
 
1693
+       OpcodeEntry     do_if_icmpgt_itos_unsafe
 
1694
+
 
1695
+       POP(r3)
 
1696
+       ldrsb   r1, [java_pc, #1]
 
1697
+       ldrb    ip, [java_pc, #2]
 
1698
+       cmp     r3, tos
 
1699
+       orrgt   ip, ip, r1, lsl #8
 
1700
+       ldrgtb  ip, [java_pc, ip]!
 
1701
+       ldrleb  ip, [java_pc, #3]!
 
1702
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1703
+       mov     pc, ip
 
1704
+
 
1705
+@ --- do_if_icmple_vtos_unsafe -------------------------------------------------
 
1706
+       OpcodeEntry     do_if_icmple_vtos_unsafe
 
1707
+
 
1708
+       POP(tos)
 
1709
+
 
1710
+@ --- do_if_icmple_itos_unsafe -------------------------------------------------
 
1711
+       OpcodeEntry     do_if_icmple_itos_unsafe
 
1712
+
 
1713
+       POP(r3)
 
1714
+       ldrsb   r1, [java_pc, #1]
 
1715
+       ldrb    ip, [java_pc, #2]
 
1716
+       cmp     r3, tos
 
1717
+       orrle   ip, ip, r1, lsl #8
 
1718
+       ldrleb  ip, [java_pc, ip]!
 
1719
+       ldrgtb  ip, [java_pc, #3]!
 
1720
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1721
+       mov     pc, ip
 
1722
+
 
1723
+@ --- do_goto_itos_unsafe -------------------------------------------------
 
1724
+       OpcodeEntry     do_goto_itos_unsafe
 
1725
+
 
1726
+       ldrsb   r1, [java_pc, #1]
 
1727
+       ldrb    ip, [java_pc, #2]
 
1728
+       orr     ip, ip, r1, lsl #8
 
1729
+       ldrb    ip, [java_pc, ip]!
 
1730
+       ldr     ip, [itos_table, ip, lsl #2]
 
1731
+       mov     pc, ip
 
1732
+
 
1733
+@ --- do_goto_vtos_unsafe -------------------------------------------------
 
1734
+       OpcodeEntry     do_goto_vtos_unsafe
 
1735
+
 
1736
+       ldrsb   r1, [java_pc, #1]
 
1737
+       ldrb    ip, [java_pc, #2]
 
1738
+       orr     ip, ip, r1, lsl #8
 
1739
+       ldrb    ip, [java_pc, ip]!
 
1740
+       ldr     ip, [vtos_table, ip, lsl #2]
 
1741
+       mov     pc, ip
 
1742
+
 
1743
+@ --- do_iload_0_itos -------------------------------------------------
 
1744
+       OpcodeEntry     do_iload_0_itos
 
1745
+       ldrb    r2, [java_pc, #1]!
 
1746
+       PUSH(tos)
 
1747
+       ldr     r2, [itos_table, r2, asl #2]
 
1748
+       ldr     tos, [java_locals, #0]
 
1749
+       mov     pc, r2
 
1750
+
 
1751
+@ --- do_aload_0_itos -------------------------------------------------
 
1752
+       OpcodeEntry     do_aload_0_itos
 
1753
+       PUSH(tos)
 
1754
+@ --- do_aload_0_vtos -------------------------------------------------
 
1755
+       OpcodeEntry     do_aload_0_vtos
 
1756
+       ldrb    r2, [java_pc, #1]!
 
1757
+       ldr     tos, [java_locals, #0]
 
1758
+       cmp     r2, #opc_getfield
 
1759
+       ldrne   pc, [itos_table, r2, asl #2]
 
1760
+       ldrb    r3, [java_pc,#1]
 
1761
+       ldrb    r2, [java_pc,#2]
 
1762
+       ldrb    ip, [java_pc,#3]!
 
1763
+       orr     r3, r3, r2, lsl #8
 
1764
+       add     r1, constant_pool, #16
 
1765
+       ldr     r3, [r1, r3, lsl #4]!                   @ r1 = cache
 
1766
+       ldr     ip, [itos_table, ip, asl #2]
 
1767
+       and     r3, r3, #0x00ff0000
 
1768
+       cmp     r3, #180 << 16
 
1769
+       bne     .exit_getfield
 
1770
+       movs    r3, r0
 
1771
+       beq     .exit_getfield
 
1772
+       ldr     r2, [r1, #12]
 
1773
+       ldr     lr, [r1, #8]
 
1774
+       movs    r2, r2, lsr #29
 
1775
+       ldrhi   tos, [r3, lr]           @ C = 1, Z = 0 => R2 == 3, 5, 7
 
1776
+       movhi   pc, ip                  @ early exit for word accesses
 
1777
+       ldreqsb tos, [r3, lr]           @ Z = 1 => R2 = 0, 1
 
1778
+       ldrcsh  tos, [r3, lr]           @ C = 1 => R2 = 1 (overwrites previous load)
 
1779
+       moveq   pc, ip
 
1780
+       tst     r2, #2
 
1781
+       addne   r3, r3, lr
 
1782
+       ldmneia r3, {r0, r1}            @ 4, 6
 
1783
+       PUSHNE(r1)
 
1784
+       movne   pc, ip
 
1785
+       ldrsh   tos, [r3, lr]           @ 2
 
1786
+       mov     pc, ip
 
1787
+
 
1788
+@ --- do_iload_0_vtos -------------------------------------------------
 
1789
+       OpcodeEntry     do_iload_0_vtos
 
1790
+       ldrb    r2, [java_pc, #1]!
 
1791
+       ldr     tos, [java_locals, #0]
 
1792
+       ldr     r2, [itos_table, r2, asl #2]
 
1793
+       mov     pc, r2
 
1794
+
 
1795
+@ --- do_aload_1_itos -------------------------------------------------
 
1796
+       OpcodeEntry     do_aload_1_itos
 
1797
+       ldrb    r2, [java_pc, #1]!
 
1798
+       PUSH(tos)
 
1799
+       ldr     r2, [itos_table, r2, asl #2]
 
1800
+       ldr     tos, [java_locals, #-4]
 
1801
+       mov     pc, r2
 
1802
+
 
1803
+@ --- do_iload_1_itos -------------------------------------------------
 
1804
+       OpcodeEntry     do_iload_1_itos
 
1805
+       ldrb    r2, [java_pc, #1]!
 
1806
+       PUSH(tos)
 
1807
+       ldr     r2, [itos_table, r2, asl #2]
 
1808
+       ldr     tos, [java_locals, #-4]
 
1809
+       mov     pc, r2
 
1810
+
 
1811
+@ --- do_aload_1_vtos -------------------------------------------------
 
1812
+       OpcodeEntry     do_aload_1_vtos
 
1813
+       ldrb    r2, [java_pc, #1]!
 
1814
+       ldr     tos, [java_locals, #-4]
 
1815
+       ldr     r2, [itos_table, r2, asl #2]
 
1816
+       mov     pc, r2
 
1817
+
 
1818
+@ --- do_iload_1_vtos -------------------------------------------------
 
1819
+       OpcodeEntry     do_iload_1_vtos
 
1820
+       ldrb    r2, [java_pc, #1]!
 
1821
+       ldr     tos, [java_locals, #-4]
 
1822
+       ldr     r2, [itos_table, r2, asl #2]
 
1823
+       mov     pc, r2
 
1824
+
 
1825
+@ --- do_aload_2_itos -------------------------------------------------
 
1826
+       OpcodeEntry     do_aload_2_itos
 
1827
+       ldrb    r2, [java_pc, #1]!
 
1828
+       PUSH(tos)
 
1829
+       ldr     r2, [itos_table, r2, asl #2]
 
1830
+       ldr     tos, [java_locals, #-8]
 
1831
+       mov     pc, r2
 
1832
+
 
1833
+@ --- do_iload_2_itos -------------------------------------------------
 
1834
+       OpcodeEntry     do_iload_2_itos
 
1835
+       ldrb    r2, [java_pc, #1]!
 
1836
+       PUSH(tos)
 
1837
+       ldr     r2, [itos_table, r2, asl #2]
 
1838
+       ldr     tos, [java_locals, #-8]
 
1839
+       mov     pc, r2
 
1840
+
 
1841
+@ --- do_aload_2_vtos -------------------------------------------------
 
1842
+       OpcodeEntry     do_aload_2_vtos
 
1843
+       ldrb    r2, [java_pc, #1]!
 
1844
+       ldr     tos, [java_locals, #-8]
 
1845
+       ldr     r2, [itos_table, r2, asl #2]
 
1846
+       mov     pc, r2
 
1847
+
 
1848
+@ --- do_iload_2_vtos -------------------------------------------------
 
1849
+       OpcodeEntry     do_iload_2_vtos
 
1850
+       ldrb    r2, [java_pc, #1]!
 
1851
+       ldr     tos, [java_locals, #-8]
 
1852
+       ldr     r2, [itos_table, r2, asl #2]
 
1853
+       mov     pc, r2
 
1854
+
 
1855
+@ --- do_aload_3_itos -------------------------------------------------
 
1856
+       OpcodeEntry     do_aload_3_itos
 
1857
+       ldrb    r2, [java_pc, #1]!
 
1858
+       PUSH(tos)
 
1859
+       ldr     r2, [itos_table, r2, asl #2]
 
1860
+       ldr     tos, [java_locals, #-12]
 
1861
+       mov     pc, r2
 
1862
+
 
1863
+@ --- do_iload_3_itos -------------------------------------------------
 
1864
+       OpcodeEntry     do_iload_3_itos
 
1865
+       ldrb    r2, [java_pc, #1]!
 
1866
+       PUSH(tos)
 
1867
+       ldr     r2, [itos_table, r2, asl #2]
 
1868
+       ldr     tos, [java_locals, #-12]
 
1869
+       mov     pc, r2
 
1870
+
 
1871
+@ --- do_aload_3_vtos -------------------------------------------------
 
1872
+       OpcodeEntry     do_aload_3_vtos
 
1873
+       ldrb    r2, [java_pc, #1]!
 
1874
+       ldr     tos, [java_locals, #-12]
 
1875
+       ldr     r2, [itos_table, r2, asl #2]
 
1876
+       mov     pc, r2
 
1877
+
 
1878
+@ --- do_iload_3_vtos -------------------------------------------------
 
1879
+       OpcodeEntry     do_iload_3_vtos
 
1880
+       ldrb    r2, [java_pc, #1]!
 
1881
+       ldr     tos, [java_locals, #-12]
 
1882
+       ldr     r2, [itos_table, r2, asl #2]
 
1883
+       mov     pc, r2
 
1884
+
 
1885
+@ --- do_iaload_vtos -------------------------------------------------
 
1886
+       OpcodeEntry     do_iaload_vtos
 
1887
+       POP(tos)
 
1888
+@ --- do_iaload_itos -------------------------------------------------
 
1889
+       OpcodeEntry     do_iaload_itos
 
1890
+       POP(r2)
 
1891
+       ldrb    ip, [java_pc, #1]!
 
1892
+       cmp     r2, #0
 
1893
+       beq     .itos_exit_iaload
 
1894
+       ldr     r3, [r2, #8]
 
1895
+       cmp     tos, r3
 
1896
+       bcs     .itos_exit_iaload
 
1897
+       ldr     ip, [itos_table, ip, asl #2]
 
1898
+       add     r3, r2, tos, lsl #2
 
1899
+       ldr     tos, [r3, #12]
 
1900
+       mov     pc, ip
 
1901
+
 
1902
+@ --- do_aaload_vtos -------------------------------------------------
 
1903
+       OpcodeEntry     do_aaload_vtos
 
1904
+       POP(tos)
 
1905
+@ --- do_aaload_itos -------------------------------------------------
 
1906
+       OpcodeEntry     do_aaload_itos
 
1907
+       POP(r2)
 
1908
+       ldrb    ip, [java_pc, #1]!
 
1909
+       cmp     r2, #0
 
1910
+       beq     .itos_exit_iaload
 
1911
+       ldr     r3, [r2, #8]
 
1912
+       cmp     tos, r3
 
1913
+       bcs     .itos_exit_iaload
 
1914
+       ldr     ip, [itos_table, ip, asl #2]
 
1915
+       add     r3, r2, tos, lsl #2
 
1916
+       ldr     tos, [r3, #12]
 
1917
+       mov     pc, ip
 
1918
+
 
1919
+@ --- do_istore_vtos -------------------------------------------------
 
1920
+       OpcodeEntry     do_istore_vtos
 
1921
+       POP(tos)
 
1922
+@ --- do_istore_itos -------------------------------------------------
 
1923
+       OpcodeEntry     do_istore_itos
 
1924
+       ldrb    ip, [java_pc, #2]!
 
1925
+       ldrb    r3, [java_pc, #-1]
 
1926
+       ldr     ip, [vtos_table, ip, asl #2]
 
1927
+       str     tos, [java_locals, -r3, asl #2]
 
1928
+       mov     pc, ip
 
1929
+
 
1930
+@ --- do_istore_0_vtos -------------------------------------------------
 
1931
+       OpcodeEntry     do_istore_0_vtos
 
1932
+       POP(tos)
 
1933
+@ --- do_istore_0_itos -------------------------------------------------
 
1934
+       OpcodeEntry     do_istore_0_itos
 
1935
+       ldrb    r2, [java_pc, #1]!
 
1936
+       ldr     r2, [vtos_table, r2, asl #2]
 
1937
+       str     tos, [java_locals, #0]
 
1938
+       mov     pc, r2
 
1939
+
 
1940
+@ --- do_istore_1_vtos -------------------------------------------------
 
1941
+       OpcodeEntry     do_istore_1_vtos
 
1942
+       POP(tos)
 
1943
+@ --- do_istore_1_itos -------------------------------------------------
 
1944
+       OpcodeEntry     do_istore_1_itos
 
1945
+       ldrb    r2, [java_pc, #1]!
 
1946
+       ldr     r2, [vtos_table, r2, asl #2]
 
1947
+       str     tos, [java_locals, #-4]
 
1948
+       mov     pc, r2
 
1949
+
 
1950
+@ --- do_istore_2_vtos -------------------------------------------------
 
1951
+       OpcodeEntry     do_istore_2_vtos
 
1952
+       POP(tos)
 
1953
+@ --- do_istore_2_itos -------------------------------------------------
 
1954
+       OpcodeEntry     do_istore_2_itos
 
1955
+       ldrb    r2, [java_pc, #1]!
 
1956
+       ldr     r2, [vtos_table, r2, asl #2]
 
1957
+       str     tos, [java_locals, #-8]
 
1958
+       mov     pc, r2
 
1959
+
 
1960
+@ --- do_istore_3_vtos -------------------------------------------------
 
1961
+       OpcodeEntry     do_istore_3_vtos
 
1962
+       POP(tos)
 
1963
+@ --- do_istore_3_itos -------------------------------------------------
 
1964
+       OpcodeEntry     do_istore_3_itos
 
1965
+       ldrb    r2, [java_pc, #1]!
 
1966
+       ldr     r2, [vtos_table, r2, asl #2]
 
1967
+       str     tos, [java_locals, #-12]
 
1968
+       mov     pc, r2
 
1969
+
 
1970
+@ --- do_iinc_vtos -------------------------------------------------
 
1971
+       OpcodeEntry     do_iinc_vtos
 
1972
+       ldrb    r2, [java_pc, #1]
 
1973
+       ldrb    ip, [java_pc, #3]!
 
1974
+       ldrsb   r1, [java_pc, #-1]
 
1975
+       ldr     r3, [java_locals, -r2, lsl #2]
 
1976
+       ldr     ip, [vtos_table, ip, asl #2]
 
1977
+       add     r3, r3, r1
 
1978
+       str     r3, [java_locals, -r2, lsl #2]
 
1979
+       mov     pc, ip
 
1980
+
 
1981
+@ --- do_iinc_itos -------------------------------------------------
 
1982
+       OpcodeEntry     do_iinc_itos
 
1983
+       ldrb    r2, [java_pc, #1]
 
1984
+       ldrb    ip, [java_pc, #3]!
 
1985
+       ldrsb   r1, [java_pc, #-1]
 
1986
+       ldr     r3, [java_locals, -r2, lsl #2]
 
1987
+       ldr     ip, [itos_table, ip, asl #2]
 
1988
+       add     r3, r3, r1
 
1989
+       str     r3, [java_locals, -r2, lsl #2]
 
1990
+       mov     pc, ip
 
1991
+
 
1992
+@ --- do_iadd_vtos -------------------------------------------------
 
1993
+       OpcodeEntry     do_iadd_vtos
 
1994
+       POP(tos)
 
1995
+@ --- do_iadd_itos -------------------------------------------------
 
1996
+       OpcodeEntry     do_iadd_itos
 
1997
+       ldrb    ip, [java_pc, #1]!
 
1998
+       POP(r1)
 
1999
+       ldr     ip, [itos_table, ip, asl #2]
 
2000
+       add     r0, r0, r1
 
2001
+       mov     pc, ip
 
2002
+
 
2003
+@ --- do_isub_vtos -------------------------------------------------
 
2004
+       OpcodeEntry     do_isub_vtos
 
2005
+       POP(tos)
 
2006
+@ --- do_isub_itos -------------------------------------------------
 
2007
+       OpcodeEntry     do_isub_itos
 
2008
+       ldrb    ip, [java_pc, #1]!
 
2009
+       POP(r1)
 
2010
+       ldr     ip, [itos_table, ip, asl #2]
 
2011
+       sub     r0, r1, r0
 
2012
+       mov     pc, ip
 
2013
+
 
2014
+@ --- do_iand_vtos -------------------------------------------------
 
2015
+       OpcodeEntry     do_iand_vtos
 
2016
+       POP(tos)
 
2017
+@ --- do_iand_itos -------------------------------------------------
 
2018
+       OpcodeEntry     do_iand_itos
 
2019
+       ldrb    ip, [java_pc, #1]!
 
2020
+       POP(r1)
 
2021
+       ldr     ip, [itos_table, ip, asl #2]
 
2022
+       and     r0, r1, r0
 
2023
+       mov     pc, ip
 
2024
+
 
2025
+@ --- do_ior_vtos -------------------------------------------------
 
2026
+       OpcodeEntry     do_ior_vtos
 
2027
+       POP(tos)
 
2028
+@ --- do_ior_itos -------------------------------------------------
 
2029
+       OpcodeEntry     do_ior_itos
 
2030
+       ldrb    ip, [java_pc, #1]!
 
2031
+       POP(r1)
 
2032
+       ldr     ip, [itos_table, ip, asl #2]
 
2033
+       orr     r0, r1, r0
 
2034
+       mov     pc, ip
 
2035
+
 
2036
+@ --- do_ixor_vtos -------------------------------------------------
 
2037
+       OpcodeEntry     do_ixor_vtos
 
2038
+       POP(tos)
 
2039
+@ --- do_ixor_itos -------------------------------------------------
 
2040
+       OpcodeEntry     do_ixor_itos
 
2041
+       ldrb    ip, [java_pc, #1]!
 
2042
+       POP(r1)
 
2043
+       ldr     ip, [itos_table, ip, asl #2]
 
2044
+       eor     r0, r1, r0
 
2045
+       mov     pc, ip
 
2046
+
 
2047
+@ --- do_aconst_null_itos -------------------------------------------------
 
2048
+       OpcodeEntry     do_aconst_null_itos
 
2049
+@ --- do_iconst_0_itos -------------------------------------------------
 
2050
+       OpcodeEntry     do_iconst_0_itos
 
2051
+       PUSH(tos)
 
2052
+@ --- do_aconst_null_vtos -------------------------------------------------
 
2053
+       OpcodeEntry     do_aconst_null_vtos
 
2054
+@ --- do_iconst_0_vtos -------------------------------------------------
 
2055
+       OpcodeEntry     do_iconst_0_vtos
 
2056
+       ldrb    r3, [java_pc, #1]!
 
2057
+       mov     tos, #0
 
2058
+       ldr     r2, [itos_table, r3, asl #2]
 
2059
+       mov     pc, r2
 
2060
+
 
2061
+@ --- do_iconst_2_itos -------------------------------------------------
 
2062
+       OpcodeEntry     do_iconst_2_itos
 
2063
+       PUSH(tos)
 
2064
+@ --- do_iconst_2_vtos -------------------------------------------------
 
2065
+       OpcodeEntry     do_iconst_2_vtos
 
2066
+       ldrb    r3, [java_pc, #1]!
 
2067
+       mov     tos, #2
 
2068
+       ldr     r2, [itos_table, r3, asl #2]
 
2069
+       mov     pc, r2
 
2070
+
 
2071
+@ --- do_iconst_3_itos -------------------------------------------------
 
2072
+       OpcodeEntry     do_iconst_3_itos
 
2073
+       PUSH(tos)
 
2074
+@ --- do_iconst_3_vtos -------------------------------------------------
 
2075
+       OpcodeEntry     do_iconst_3_vtos
 
2076
+       ldrb    r3, [java_pc, #1]!
 
2077
+       mov     tos, #3
 
2078
+       ldr     r2, [itos_table, r3, asl #2]
 
2079
+       mov     pc, r2
 
2080
+
 
2081
+@ --- do_iconst_4_itos -------------------------------------------------
 
2082
+       OpcodeEntry     do_iconst_4_itos
 
2083
+       PUSH(tos)
 
2084
+@ --- do_iconst_4_vtos -------------------------------------------------
 
2085
+       OpcodeEntry     do_iconst_4_vtos
 
2086
+       ldrb    r3, [java_pc, #1]!
 
2087
+       mov     tos, #4
 
2088
+       ldr     r2, [itos_table, r3, asl #2]
 
2089
+       mov     pc, r2
 
2090
+
 
2091
+@ --- do_iconst_5_itos -------------------------------------------------
 
2092
+       OpcodeEntry     do_iconst_5_itos
 
2093
+       PUSH(tos)
 
2094
+@ --- do_iconst_5_vtos -------------------------------------------------
 
2095
+       OpcodeEntry     do_iconst_5_vtos
 
2096
+       ldrb    r3, [java_pc, #1]!
 
2097
+       mov     tos, #5
 
2098
+       ldr     r2, [itos_table, r3, asl #2]
 
2099
+       mov     pc, r2
 
2100
+
 
2101
+@ --- do_nop_itos -------------------------------------------------
 
2102
+       OpcodeEntry     do_nop_itos
 
2103
+       PUSH(tos)
 
2104
+@ --- do_nop_vtos -------------------------------------------------
 
2105
+       OpcodeEntry     do_nop_vtos
 
2106
+       ldrb    r3, [java_pc, #1]!
 
2107
+       ldr     r2, [vtos_table, r3, asl #2]
 
2108
+       mov     pc, r2
 
2109
+
 
2110
+@ ---- INSERT
 
2111
+
 
2112
+@ --- do_iconst_m1_itos -------------------------------------------------
 
2113
+       OpcodeEntry     do_iconst_m1_itos
 
2114
+       PUSH(tos)
 
2115
+@ --- do_iconst_m1_vtos -------------------------------------------------
 
2116
+       OpcodeEntry     do_iconst_m1_vtos
 
2117
+       ldrb    r3, [java_pc, #1]!
 
2118
+       mvn     tos, #0
 
2119
+       ldr     r2, [itos_table, r3, asl #2]
 
2120
+       mov     pc, r2
 
2121
+
 
2122
+@ --- do_fconst_0_itos -------------------------------------------------
 
2123
+       OpcodeEntry     do_fconst_0_itos
 
2124
+       PUSH(tos)
 
2125
+@ --- do_fconst_0_vtos -------------------------------------------------
 
2126
+       OpcodeEntry     do_fconst_0_vtos
 
2127
+       ldrb    r3, [java_pc, #1]!
 
2128
+       mov     tos, #0
 
2129
+       ldr     r2, [itos_table, r3, asl #2]
 
2130
+       mov     pc, r2
 
2131
+
 
2132
+@ --- do_fconst_1_itos -------------------------------------------------
 
2133
+       OpcodeEntry     do_fconst_1_itos
 
2134
+       PUSH(tos)
 
2135
+@ --- do_fconst_1_vtos -------------------------------------------------
 
2136
+       OpcodeEntry     do_fconst_1_vtos
 
2137
+       ldrb    r3, [java_pc, #1]!
 
2138
+       mov     tos, #1065353216
 
2139
+       ldr     r2, [itos_table, r3, asl #2]
 
2140
+       mov     pc, r2
 
2141
+
 
2142
+@ --- do_fconst_2_itos -------------------------------------------------
 
2143
+       OpcodeEntry     do_fconst_2_itos
 
2144
+       PUSH(tos)
 
2145
+@ --- do_fconst_2_vtos -------------------------------------------------
 
2146
+       OpcodeEntry     do_fconst_2_vtos
 
2147
+       ldrb    r3, [java_pc, #1]!
 
2148
+       mov     tos, #1073741824
 
2149
+       ldr     r2, [itos_table, r3, asl #2]
 
2150
+       mov     pc, r2
 
2151
+
 
2152
+@ --- do_dconst_0_itos -------------------------------------------------
 
2153
+       OpcodeEntry     do_dconst_0_itos
 
2154
+@ --- do_lconst_0_itos -------------------------------------------------
 
2155
+       OpcodeEntry     do_lconst_0_itos
 
2156
+       PUSH(tos)
 
2157
+@ --- do_dconst_0_vtos -------------------------------------------------
 
2158
+       OpcodeEntry     do_dconst_0_vtos
 
2159
+@ --- do_lconst_0_vtos -------------------------------------------------
 
2160
+       OpcodeEntry     do_lconst_0_vtos
 
2161
+       ldrb    r2, [java_pc, #1]!
 
2162
+       mov     tos, #0
 
2163
+       ldr     r2, [itos_table, r2, asl #2]
 
2164
+       PUSH(tos)
 
2165
+       mov     pc, r2
 
2166
+
 
2167
+@ --- do_lconst_1_itos -------------------------------------------------
 
2168
+       OpcodeEntry     do_lconst_1_itos
 
2169
+       PUSH(tos)
 
2170
+@ --- do_lconst_1_vtos -------------------------------------------------
 
2171
+       OpcodeEntry     do_lconst_1_vtos
 
2172
+       ldrb    r2, [java_pc, #1]!
 
2173
+       mov     r0, #1
 
2174
+       mov     r1, #0
 
2175
+       ldr     r2, [itos_table, r2, asl #2]
 
2176
+       PUSH(r1)
 
2177
+       mov     pc, r2
 
2178
+
 
2179
+@ --- do_dconst_1_itos -------------------------------------------------
 
2180
+       OpcodeEntry     do_dconst_1_itos
 
2181
+       PUSH(tos)
 
2182
+@ --- do_dconst_1_vtos -------------------------------------------------
 
2183
+       OpcodeEntry     do_dconst_1_vtos
 
2184
+       ldrb    r2, [java_pc, #1]!
 
2185
+       mov     r1, #0x3f000000
 
2186
+       mov     r0, #0
 
2187
+       ldr     r2, [itos_table, r2, asl #2]
 
2188
+       orr     r1, r1, #0x00f00000
 
2189
+       PUSH(r1)
 
2190
+       mov     pc, r2
 
2191
+
 
2192
+@ --- do_bipush_itos -------------------------------------------------
 
2193
+       OpcodeEntry     do_bipush_itos
 
2194
+       PUSH(tos)
 
2195
+@ --- do_bipush_vtos -------------------------------------------------
 
2196
+       OpcodeEntry     do_bipush_vtos
 
2197
+       ldrb    r2, [java_pc, #2]!
 
2198
+       ldrsb   tos, [java_pc, #-1]
 
2199
+       ldr     r2, [itos_table, r2, asl #2]
 
2200
+       mov     pc, r2
 
2201
+
 
2202
+@ --- do_sipush_itos -------------------------------------------------
 
2203
+       OpcodeEntry     do_sipush_itos
 
2204
+       PUSH(tos)
 
2205
+@ --- do_sipush_vtos -------------------------------------------------
 
2206
+       OpcodeEntry     do_sipush_vtos
 
2207
+       ldrb    r2, [java_pc, #3]!
 
2208
+       ldrsb   r0, [java_pc, #-2]
 
2209
+       ldrb    r1, [java_pc, #-1]
 
2210
+       ldr     r2, [itos_table, r2, asl #2]
 
2211
+       orr     tos, r1, r0, lsl #8
 
2212
+       mov     pc, r2
 
2213
+
 
2214
+@ --- do_fload_itos -------------------------------------------------
 
2215
+       OpcodeEntry     do_fload_itos
 
2216
+       PUSH(tos)
 
2217
+@ --- do_fload_vtos -------------------------------------------------
 
2218
+       OpcodeEntry     do_fload_vtos
 
2219
+       ldrb    ip, [java_pc, #2]!
 
2220
+       ldrb    r3, [java_pc, #-1]
 
2221
+       ldr     ip, [itos_table, ip, asl #2]
 
2222
+       ldr     tos, [java_locals, -r3, asl #2]
 
2223
+       mov     pc, ip
 
2224
+
 
2225
+@ --- do_dload_itos -------------------------------------------------
 
2226
+       OpcodeEntry     do_dload_itos
 
2227
+@ --- do_lload_itos -------------------------------------------------
 
2228
+       OpcodeEntry     do_lload_itos
 
2229
+       PUSH(tos)
 
2230
+@ --- do_dload_vtos -------------------------------------------------
 
2231
+       OpcodeEntry     do_dload_vtos
 
2232
+@ --- do_lload_vtos -------------------------------------------------
 
2233
+       OpcodeEntry     do_lload_vtos
 
2234
+       ldrb    r3, [java_pc, #1]
 
2235
+       ldrb    ip, [java_pc, #2]!
 
2236
+       sub     r3, java_locals, r3, lsl #2
 
2237
+       ldmda   r3, {r0, r1}
 
2238
+       ldr     r2, [itos_table, ip, asl #2]
 
2239
+       PUSH(r1)
 
2240
+       mov     pc, r2
 
2241
+
 
2242
+@ --- do_fload_0_itos -------------------------------------------------
 
2243
+       OpcodeEntry     do_fload_0_itos
 
2244
+       PUSH(tos)
 
2245
+@ --- do_fload_0_vtos -------------------------------------------------
 
2246
+       OpcodeEntry     do_fload_0_vtos
 
2247
+       ldrb    r2, [java_pc, #1]!
 
2248
+       ldr     tos, [java_locals, #0]
 
2249
+       ldr     r2, [itos_table, r2, asl #2]
 
2250
+       mov     pc, r2
 
2251
+
 
2252
+@ --- do_fload_1_itos -------------------------------------------------
 
2253
+       OpcodeEntry     do_fload_1_itos
 
2254
+       PUSH(tos)
 
2255
+@ --- do_fload_1_vtos -------------------------------------------------
 
2256
+       OpcodeEntry     do_fload_1_vtos
 
2257
+       ldrb    r2, [java_pc, #1]!
 
2258
+       ldr     tos, [java_locals, #-4]
 
2259
+       ldr     r2, [itos_table, r2, asl #2]
 
2260
+       mov     pc, r2
 
2261
+
 
2262
+@ --- do_fload_2_itos -------------------------------------------------
 
2263
+       OpcodeEntry     do_fload_2_itos
 
2264
+       PUSH(tos)
 
2265
+@ --- do_fload_2_vtos -------------------------------------------------
 
2266
+       OpcodeEntry     do_fload_2_vtos
 
2267
+       ldrb    r2, [java_pc, #1]!
 
2268
+       ldr     tos, [java_locals, #-8]
 
2269
+       ldr     r2, [itos_table, r2, asl #2]
 
2270
+       mov     pc, r2
 
2271
+
 
2272
+@ --- do_fload_3_itos -------------------------------------------------
 
2273
+       OpcodeEntry     do_fload_3_itos
 
2274
+       PUSH(tos)
 
2275
+@ --- do_fload_3_vtos -------------------------------------------------
 
2276
+       OpcodeEntry     do_fload_3_vtos
 
2277
+       ldrb    r2, [java_pc, #1]!
 
2278
+       ldr     tos, [java_locals, #-12]
 
2279
+       ldr     r2, [itos_table, r2, asl #2]
 
2280
+       mov     pc, r2
 
2281
+
 
2282
+@ --- do_dload_0_itos -------------------------------------------------
 
2283
+       OpcodeEntry     do_dload_0_itos
 
2284
+@ --- do_lload_0_itos -------------------------------------------------
 
2285
+       OpcodeEntry     do_lload_0_itos
 
2286
+       PUSH(tos)
 
2287
+@ --- do_dload_0_vtos -------------------------------------------------
 
2288
+       OpcodeEntry     do_dload_0_vtos
 
2289
+@ --- do_lload_0_vtos -------------------------------------------------
 
2290
+       OpcodeEntry     do_lload_0_vtos
 
2291
+       ldrb    ip, [java_pc, #1]!
 
2292
+       ldmda   java_locals, {r0-r1}
 
2293
+       ldr     ip, [itos_table, ip, asl #2]
 
2294
+       PUSH(r1)
 
2295
+       mov     pc, ip
 
2296
+
 
2297
+@ --- do_dload_1_itos -------------------------------------------------
 
2298
+       OpcodeEntry     do_dload_1_itos
 
2299
+@ --- do_lload_1_itos -------------------------------------------------
 
2300
+       OpcodeEntry     do_lload_1_itos
 
2301
+       PUSH(tos)
 
2302
+@ --- do_dload_1_vtos -------------------------------------------------
 
2303
+       OpcodeEntry     do_dload_1_vtos
 
2304
+@ --- do_lload_1_vtos -------------------------------------------------
 
2305
+       OpcodeEntry     do_lload_1_vtos
 
2306
+       ldrb    ip, [java_pc, #1]!
 
2307
+       ldmdb   java_locals, {r0-r1}
 
2308
+       ldr     ip, [itos_table, ip, asl #2]
 
2309
+       PUSH(r1)
 
2310
+       mov     pc, ip
 
2311
+
 
2312
+@ --- do_dload_2_itos -------------------------------------------------
 
2313
+       OpcodeEntry     do_dload_2_itos
 
2314
+@ --- do_lload_2_itos -------------------------------------------------
 
2315
+       OpcodeEntry     do_lload_2_itos
 
2316
+       PUSH(tos)
 
2317
+@ --- do_dload_2_vtos -------------------------------------------------
 
2318
+       OpcodeEntry     do_dload_2_vtos
 
2319
+@ --- do_lload_2_vtos -------------------------------------------------
 
2320
+       OpcodeEntry     do_lload_2_vtos
 
2321
+       ldrb    ip, [java_pc, #1]!
 
2322
+       ldr     r2, [java_locals, #-8]
 
2323
+       ldr     r0, [java_locals, #-12]
 
2324
+       ldr     ip, [itos_table, ip, asl #2]
 
2325
+       PUSH(r2)
 
2326
+       mov     pc, ip
 
2327
+
 
2328
+@ --- do_dload_3_itos -------------------------------------------------
 
2329
+       OpcodeEntry     do_dload_3_itos
 
2330
+@ --- do_lload_3_itos -------------------------------------------------
 
2331
+       OpcodeEntry     do_lload_3_itos
 
2332
+       PUSH(tos)
 
2333
+@ --- do_dload_3_vtos -------------------------------------------------
 
2334
+       OpcodeEntry     do_dload_3_vtos
 
2335
+@ --- do_lload_3_vtos -------------------------------------------------
 
2336
+       OpcodeEntry     do_lload_3_vtos
 
2337
+       ldrb    ip, [java_pc, #1]!
 
2338
+       ldr     r2, [java_locals, #-12]
 
2339
+       ldr     r0, [java_locals, #-16]
 
2340
+       ldr     ip, [itos_table, ip, asl #2]
 
2341
+       PUSH(r2)
 
2342
+       mov     pc, ip
 
2343
+
 
2344
+@ --- do_faload_vtos -------------------------------------------------
 
2345
+       OpcodeEntry     do_faload_vtos
 
2346
+       POP(tos)
 
2347
+@ --- do_faload_itos -------------------------------------------------
 
2348
+       OpcodeEntry     do_faload_itos
 
2349
+       POP(r2)
 
2350
+       ldrb    ip, [java_pc, #1]!
 
2351
+       cmp     r2, #0
 
2352
+       beq     .itos_exit_iaload
 
2353
+       ldr     r3, [r2, #8]
 
2354
+       cmp     tos, r3
 
2355
+       bcs     .itos_exit_iaload
 
2356
+       ldr     ip, [itos_table, ip, asl #2]
 
2357
+       add     r3, r2, tos, lsl #2
 
2358
+       ldr     tos, [r3, #12]
 
2359
+       mov     pc, ip
 
2360
+
 
2361
+@ --- do_baload_vtos -------------------------------------------------
 
2362
+       OpcodeEntry     do_baload_vtos
 
2363
+       POP(tos)
 
2364
+@ --- do_baload_itos -------------------------------------------------
 
2365
+       OpcodeEntry     do_baload_itos
 
2366
+       POP(r2)
 
2367
+       ldrb    ip, [java_pc, #1]!
 
2368
+       cmp     r2, #0
 
2369
+       beq     .itos_exit_iaload
 
2370
+       ldr     r3, [r2, #8]
 
2371
+       cmp     tos, r3
 
2372
+       bcs     .itos_exit_iaload
 
2373
+       ldr     ip, [itos_table, ip, asl #2]
 
2374
+       add     r3, r2, tos
 
2375
+       ldrsb   tos, [r3, #12]
 
2376
+       mov     pc, ip
 
2377
+
 
2378
+@ --- do_caload_vtos -------------------------------------------------
 
2379
+       OpcodeEntry     do_caload_vtos
 
2380
+       POP(tos)
 
2381
+@ --- do_caload_itos -------------------------------------------------
 
2382
+       OpcodeEntry     do_caload_itos
 
2383
+       POP(r2)
 
2384
+       ldrb    ip, [java_pc, #1]!
 
2385
+       cmp     r2, #0
 
2386
+       beq     .itos_exit_iaload
 
2387
+       ldr     r3, [r2, #8]
 
2388
+       cmp     tos, r3
 
2389
+       bcs     .itos_exit_iaload
 
2390
+       ldr     ip, [itos_table, ip, asl #2]
 
2391
+       add     r3, r2, tos, lsl #1
 
2392
+       ldrh    tos, [r3, #12]
 
2393
+       mov     pc, ip
 
2394
+
 
2395
+@ --- do_saload_vtos -------------------------------------------------
 
2396
+       OpcodeEntry     do_saload_vtos
 
2397
+       POP(tos)
 
2398
+@ --- do_saload_itos -------------------------------------------------
 
2399
+       OpcodeEntry     do_saload_itos
 
2400
+       POP(r2)
 
2401
+       ldrb    ip, [java_pc, #1]!
 
2402
+       cmp     r2, #0
 
2403
+       beq     .itos_exit_iaload
 
2404
+       ldr     r3, [r2, #8]
 
2405
+       cmp     tos, r3
 
2406
+       bcs     .itos_exit_iaload
 
2407
+       ldr     ip, [itos_table, ip, asl #2]
 
2408
+       add     r3, r2, tos, lsl #1
 
2409
+       ldrsh   tos, [r3, #12]
 
2410
+       mov     pc, ip
 
2411
+
 
2412
+@ --- do_daload_vtos -------------------------------------------------
 
2413
+       OpcodeEntry     do_daload_vtos
 
2414
+@ --- do_laload_vtos -------------------------------------------------
 
2415
+       OpcodeEntry     do_laload_vtos
 
2416
+       POP(tos)
 
2417
+@ --- do_daload_itos -------------------------------------------------
 
2418
+       OpcodeEntry     do_daload_itos
 
2419
+@ --- do_laload_itos -------------------------------------------------
 
2420
+       OpcodeEntry     do_laload_itos
 
2421
+       POP(r2)
 
2422
+       ldrb    ip, [java_pc, #1]!
 
2423
+       cmp     r2, #0
 
2424
+       beq     .itos_exit_laload
 
2425
+       ldr     r3, [r2, #8]
 
2426
+       cmp     tos, r3
 
2427
+       bcs     .itos_exit_laload
 
2428
+       add     r3, r2, tos, asl #3
 
2429
+       ldr     r2, [r3, #20]
 
2430
+       ldr     ip, [itos_table, ip, asl #2]
 
2431
+       ldr     tos, [r3, #16]
 
2432
+       PUSH(r2)
 
2433
+       mov     pc, ip
 
2434
+
 
2435
+@ --- do_fstore_vtos -------------------------------------------------
 
2436
+       OpcodeEntry     do_fstore_vtos
 
2437
+       POP(tos)
 
2438
+@ --- do_fstore_itos -------------------------------------------------
 
2439
+       OpcodeEntry     do_fstore_itos
 
2440
+       ldrb    ip, [java_pc, #2]!
 
2441
+       ldrb    r3, [java_pc, #-1]
 
2442
+       ldr     ip, [vtos_table, ip, asl #2]
 
2443
+       str     tos, [java_locals, -r3, asl #2]
 
2444
+       mov     pc, ip
 
2445
+
 
2446
+@ --- do_dstore_vtos -------------------------------------------------
 
2447
+       OpcodeEntry     do_dstore_vtos
 
2448
+@ --- do_lstore_vtos -------------------------------------------------
 
2449
+       OpcodeEntry     do_lstore_vtos
 
2450
+       POP(tos)
 
2451
+@ --- do_dstore_itos -------------------------------------------------
 
2452
+       OpcodeEntry     do_dstore_itos
 
2453
+@ --- do_lstore_itos -------------------------------------------------
 
2454
+       OpcodeEntry     do_lstore_itos
 
2455
+       ldrb    ip, [java_pc, #2]!
 
2456
+       ldrb    r3, [java_pc, #-1]
 
2457
+       POP(r1)
 
2458
+       ldr     ip, [vtos_table, ip, asl #2]
 
2459
+       sub     r3, java_locals, r3, lsl #2
 
2460
+       stmda   r3, {r0, r1}
 
2461
+       mov     pc, ip
 
2462
+
 
2463
+@ --- do_fstore_0_vtos -------------------------------------------------
 
2464
+       OpcodeEntry     do_fstore_0_vtos
 
2465
+       POP(tos)
 
2466
+@ --- do_fstore_0_itos -------------------------------------------------
 
2467
+       OpcodeEntry     do_fstore_0_itos
 
2468
+       ldrb    r2, [java_pc, #1]!
 
2469
+       ldr     r2, [vtos_table, r2, asl #2]
 
2470
+       str     tos, [java_locals, #0]
 
2471
+       mov     pc, r2
 
2472
+
 
2473
+@ --- do_fstore_1_vtos -------------------------------------------------
 
2474
+       OpcodeEntry     do_fstore_1_vtos
 
2475
+       POP(tos)
 
2476
+@ --- do_fstore_1_itos -------------------------------------------------
 
2477
+       OpcodeEntry     do_fstore_1_itos
 
2478
+       ldrb    r2, [java_pc, #1]!
 
2479
+       ldr     r2, [vtos_table, r2, asl #2]
 
2480
+       str     tos, [java_locals, #-4]
 
2481
+       mov     pc, r2
 
2482
+
 
2483
+@ --- do_fstore_2_vtos -------------------------------------------------
 
2484
+       OpcodeEntry     do_fstore_2_vtos
 
2485
+       POP(tos)
 
2486
+@ --- do_fstore_2_itos -------------------------------------------------
 
2487
+       OpcodeEntry     do_fstore_2_itos
 
2488
+       ldrb    r2, [java_pc, #1]!
 
2489
+       ldr     r2, [vtos_table, r2, asl #2]
 
2490
+       str     tos, [java_locals, #-8]
 
2491
+       mov     pc, r2
 
2492
+
 
2493
+@ --- do_fstore_3_vtos -------------------------------------------------
 
2494
+       OpcodeEntry     do_fstore_3_vtos
 
2495
+       POP(tos)
 
2496
+@ --- do_fstore_3_itos -------------------------------------------------
 
2497
+       OpcodeEntry     do_fstore_3_itos
 
2498
+       ldrb    r2, [java_pc, #1]!
 
2499
+       ldr     r2, [vtos_table, r2, asl #2]
 
2500
+       str     tos, [java_locals, #-12]
 
2501
+       mov     pc, r2
 
2502
+
 
2503
+@ --- do_dstore_0_vtos -------------------------------------------------
 
2504
+       OpcodeEntry     do_dstore_0_vtos
 
2505
+@ --- do_lstore_0_vtos -------------------------------------------------
 
2506
+       OpcodeEntry     do_lstore_0_vtos
 
2507
+       POP(tos)
 
2508
+@ --- do_dstore_0_itos -------------------------------------------------
 
2509
+       OpcodeEntry     do_dstore_0_itos
 
2510
+@ --- do_lstore_0_itos -------------------------------------------------
 
2511
+       OpcodeEntry     do_lstore_0_itos
 
2512
+       ldrb    ip, [java_pc, #1]!
 
2513
+       POP(r1)
 
2514
+       ldr     ip, [vtos_table, ip, asl #2]
 
2515
+       stmda   java_locals, {r0,r1}
 
2516
+       mov     pc, ip
 
2517
+
 
2518
+@ --- do_dstore_1_vtos -------------------------------------------------
 
2519
+       OpcodeEntry     do_dstore_1_vtos
 
2520
+@ --- do_lstore_1_vtos -------------------------------------------------
 
2521
+       OpcodeEntry     do_lstore_1_vtos
 
2522
+       POP(tos)
 
2523
+@ --- do_dstore_1_itos -------------------------------------------------
 
2524
+       OpcodeEntry     do_dstore_1_itos
 
2525
+@ --- do_lstore_1_itos -------------------------------------------------
 
2526
+       OpcodeEntry     do_lstore_1_itos
 
2527
+       ldrb    ip, [java_pc, #1]!
 
2528
+       POP(r1)
 
2529
+       ldr     ip, [vtos_table, ip, asl #2]
 
2530
+       stmdb   java_locals, {r0,r1}
 
2531
+       mov     pc, ip
 
2532
+
 
2533
+@ --- do_dstore_2_vtos -------------------------------------------------
 
2534
+       OpcodeEntry     do_dstore_2_vtos
 
2535
+@ --- do_lstore_2_vtos -------------------------------------------------
 
2536
+       OpcodeEntry     do_lstore_2_vtos
 
2537
+       POP(tos)
 
2538
+@ --- do_dstore_2_itos -------------------------------------------------
 
2539
+       OpcodeEntry     do_dstore_2_itos
 
2540
+@ --- do_lstore_2_itos -------------------------------------------------
 
2541
+       OpcodeEntry     do_lstore_2_itos
 
2542
+       ldrb    ip, [java_pc, #1]!
 
2543
+       POP(r3)
 
2544
+       str     tos, [java_locals, #-12]
 
2545
+       ldr     ip, [vtos_table, ip, asl #2]
 
2546
+       str     r3, [java_locals, #-8]
 
2547
+       mov     pc, ip
 
2548
+
 
2549
+@ --- do_dstore_3_vtos -------------------------------------------------
 
2550
+       OpcodeEntry     do_dstore_3_vtos
 
2551
+@ --- do_lstore_3_vtos -------------------------------------------------
 
2552
+       OpcodeEntry     do_lstore_3_vtos
 
2553
+       POP(tos)
 
2554
+@ --- do_dstore_3_itos -------------------------------------------------
 
2555
+       OpcodeEntry     do_dstore_3_itos
 
2556
+@ --- do_lstore_3_itos -------------------------------------------------
 
2557
+       OpcodeEntry     do_lstore_3_itos
 
2558
+       ldrb    ip, [java_pc, #1]!
 
2559
+       POP(r3)
 
2560
+       str     tos, [java_locals, #-16]
 
2561
+       ldr     ip, [vtos_table, ip, asl #2]
 
2562
+       str     r3, [java_locals, #-12]
 
2563
+       mov     pc, ip
 
2564
+
 
2565
+@ --- do_fastore_vtos -------------------------------------------------
 
2566
+       OpcodeEntry     do_fastore_vtos
 
2567
+@ --- do_iastore_vtos -------------------------------------------------
 
2568
+       OpcodeEntry     do_iastore_vtos
 
2569
+       POP(tos)
 
2570
+@ --- do_fastore_itos -------------------------------------------------
 
2571
+       OpcodeEntry     do_fastore_itos
 
2572
+@ --- do_iastore_itos -------------------------------------------------
 
2573
+       OpcodeEntry     do_iastore_itos
 
2574
+       ldmib   java_stack!, {r1, r2}   @ r0 = value@ r1 = index@ r2 = arrayref
 
2575
+       ldrb    ip, [java_pc, #1]!
 
2576
+       cmp     r2, #0
 
2577
+       beq     .itos_exit_iastore
 
2578
+       ldr     r3, [r2, #8]
 
2579
+       cmp     r1, r3
 
2580
+       bcs     .itos_exit_iastore
 
2581
+       ldr     ip, [vtos_table, ip, asl #2]
 
2582
+       add     r3, r2, r1, lsl #2
 
2583
+       str     tos, [r3, #12]
 
2584
+       mov     pc, ip
 
2585
+
 
2586
+@ --- do_bastore_vtos -------------------------------------------------
 
2587
+       OpcodeEntry     do_bastore_vtos
 
2588
+       POP(tos)
 
2589
+@ --- do_bastore_itos -------------------------------------------------
 
2590
+       OpcodeEntry     do_bastore_itos
 
2591
+       ldmib   java_stack!, {r1, r2}   @ r0 = value@ r1 = index@ r2 = arrayref
 
2592
+       ldrb    ip, [java_pc, #1]!
 
2593
+       cmp     r2, #0
 
2594
+       beq     .itos_exit_iastore
 
2595
+       ldr     r3, [r2, #8]
 
2596
+       cmp     r1, r3
 
2597
+       bcs     .itos_exit_iastore
 
2598
+       ldr     ip, [vtos_table, ip, asl #2]
 
2599
+       add     r3, r2, r1
 
2600
+       strb    tos, [r3, #12]
 
2601
+       mov     pc, ip
 
2602
+
 
2603
+@ --- do_castore_vtos -------------------------------------------------
 
2604
+       OpcodeEntry     do_castore_vtos
 
2605
+@ --- do_sastore_vtos -------------------------------------------------
 
2606
+       OpcodeEntry     do_sastore_vtos
 
2607
+       POP(tos)
 
2608
+@ --- do_castore_itos -------------------------------------------------
 
2609
+       OpcodeEntry     do_castore_itos
 
2610
+@ --- do_sastore_itos -------------------------------------------------
 
2611
+       OpcodeEntry     do_sastore_itos
 
2612
+       ldmib   java_stack!, {r1, r2}   @ r0 = value@ r1 = index@ r2 = arrayref
 
2613
+       ldrb    ip, [java_pc, #1]!
 
2614
+       cmp     r2, #0
 
2615
+       beq     .itos_exit_iastore
 
2616
+       ldr     r3, [r2, #8]
 
2617
+       cmp     r1, r3
 
2618
+       bcs     .itos_exit_iastore
 
2619
+       ldr     ip, [vtos_table, ip, asl #2]
 
2620
+       add     r3, r2, r1, lsl #1
 
2621
+       strh    tos, [r3, #12]
 
2622
+       mov     pc, ip
 
2623
+
 
2624
+@ --- do_dastore_vtos -------------------------------------------------
 
2625
+       OpcodeEntry     do_dastore_vtos
 
2626
+@ --- do_lastore_vtos -------------------------------------------------
 
2627
+       OpcodeEntry     do_lastore_vtos
 
2628
+       POP(tos)
 
2629
+@ --- do_dastore_itos -------------------------------------------------
 
2630
+       OpcodeEntry     do_dastore_itos
 
2631
+@ --- do_lastore_itos -------------------------------------------------
 
2632
+       OpcodeEntry     do_lastore_itos
 
2633
+       ldmib   java_stack!, {r1, r2, r3} @ r0,r1 = value, r2 = index, r3 = arrayref
 
2634
+       ldrb    ip, [java_pc, #1]!
 
2635
+       cmp     r3, #0
 
2636
+       beq     .itos_exit_lastore
 
2637
+       ldr     lr, [r3, #8]
 
2638
+       cmp     r2, lr
 
2639
+       bcs     .itos_exit_lastore
 
2640
+       add     r3, r3, r2, lsl #3
 
2641
+       ldr     ip, [vtos_table, ip, asl #2]
 
2642
+       str     r0, [r3, #16]
 
2643
+       str     r1, [r3, #20]
 
2644
+       mov     pc, ip
 
2645
+
 
2646
+@ --- do_pop_vtos -------------------------------------------------
 
2647
+       OpcodeEntry     do_pop_vtos
 
2648
+       ldrb    r3, [java_pc, #1]!
 
2649
+       add     java_stack, java_stack, #4
 
2650
+       ldr     r2, [vtos_table, r3, asl #2]
 
2651
+       mov     pc, r2
 
2652
+@ --- do_pop_itos -------------------------------------------------
 
2653
+       OpcodeEntry     do_pop_itos
 
2654
+       ldrb    r3, [java_pc, #1]!
 
2655
+       ldr     r2, [vtos_table, r3, asl #2]
 
2656
+       mov     pc, r2
 
2657
+
 
2658
+@ --- do_pop2_vtos -------------------------------------------------
 
2659
+       OpcodeEntry     do_pop2_vtos
 
2660
+       ldrb    r3, [java_pc, #1]!
 
2661
+       add     java_stack, java_stack, #8
 
2662
+       ldr     r2, [vtos_table, r3, asl #2]
 
2663
+       mov     pc, r2
 
2664
+@ --- do_pop2_itos -------------------------------------------------
 
2665
+       OpcodeEntry     do_pop2_itos
 
2666
+       ldrb    r3, [java_pc, #1]!
 
2667
+       add     java_stack, java_stack, #4
 
2668
+       ldr     r2, [vtos_table, r3, asl #2]
 
2669
+       mov     pc, r2
 
2670
+
 
2671
+@ --- do_dup_vtos -------------------------------------------------
 
2672
+       OpcodeEntry     do_dup_vtos
 
2673
+       ldrb    r3, [java_pc, #1]!
 
2674
+       ldr     r0, [java_stack, #4]
 
2675
+       ldr     r2, [itos_table, r3, asl #2]
 
2676
+       mov     pc, r2
 
2677
+@ --- do_dup_itos -------------------------------------------------
 
2678
+       OpcodeEntry     do_dup_itos
 
2679
+       ldrb    r3, [java_pc, #1]!
 
2680
+       str     r0, [java_stack], #-4
 
2681
+       ldr     r2, [itos_table, r3, asl #2]
 
2682
+       mov     pc, r2
 
2683
+
 
2684
+@ --- do_dup2_vtos -------------------------------------------------
 
2685
+       OpcodeEntry     do_dup2_vtos
 
2686
+       ldrb    r3, [java_pc, #1]!
 
2687
+       ldmib   java_stack, {r0,r1}
 
2688
+       ldr     r2, [itos_table, r3, asl #2]
 
2689
+       PUSH(r1)
 
2690
+       mov     pc, r2
 
2691
+@ --- do_dup2_itos -------------------------------------------------
 
2692
+       OpcodeEntry     do_dup2_itos
 
2693
+       ldrb    r3, [java_pc, #1]!
 
2694
+       ldr     r1, [java_stack, #4]
 
2695
+       PUSH(r0)
 
2696
+       ldr     r2, [itos_table, r3, asl #2]
 
2697
+       PUSH(r1)
 
2698
+       mov     pc, r2
 
2699
+
 
2700
+@ --- do_dup_x1_vtos -------------------------------------------------
 
2701
+       OpcodeEntry     do_dup_x1_vtos
 
2702
+       ldrb    r3, [java_pc, #1]!
 
2703
+       ldmib   java_stack!, {r0,r1}
 
2704
+       ldr     r2, [itos_table, r3, asl #2]
 
2705
+       PUSH(tos)
 
2706
+       PUSH(r1)
 
2707
+       mov     pc, r2
 
2708
+@ --- do_dup_x1_itos -------------------------------------------------
 
2709
+       OpcodeEntry     do_dup_x1_itos
 
2710
+       ldrb    r3, [java_pc, #1]!
 
2711
+       POP(r1)
 
2712
+       PUSH(tos)
 
2713
+       ldr     r2, [itos_table, r3, asl #2]
 
2714
+       PUSH(r1)
 
2715
+       mov     pc, r2
 
2716
+
 
2717
+@ --- do_dup_x2_vtos -------------------------------------------------
 
2718
+       OpcodeEntry     do_dup_x2_vtos
 
2719
+       POP(tos)
 
2720
+       ldrb    ip, [java_pc, #1]!
 
2721
+       ldmib   java_stack!, {r1,r2}
 
2722
+       PUSH(tos)
 
2723
+       ldr     ip, [itos_table, ip, asl #2]
 
2724
+       stmda   java_stack!, {r1,r2}
 
2725
+       mov     pc, ip
 
2726
+@ --- do_dup_x2_itos -------------------------------------------------
 
2727
+       OpcodeEntry     do_dup_x2_itos
 
2728
+       ldrb    ip, [java_pc, #1]!
 
2729
+       ldmib   java_stack!, {r1,r2}
 
2730
+       PUSH(tos)
 
2731
+       ldr     ip, [itos_table, ip, asl #2]
 
2732
+       stmda   java_stack!, {r1,r2}
 
2733
+       mov     pc, ip
 
2734
+
 
2735
+@ --- do_dup2_x1_vtos -------------------------------------------------
 
2736
+       OpcodeEntry     do_dup2_x1_vtos
 
2737
+       POP(tos)
 
2738
+       ldrb    ip, [java_pc, #1]!
 
2739
+       ldmib   java_stack!, {r1,r2}
 
2740
+       ldr     ip, [itos_table, ip, asl #2]
 
2741
+       stmda   java_stack!, {r0,r1}
 
2742
+       stmda   java_stack!, {r1,r2}
 
2743
+       mov     pc, ip
 
2744
+@ --- do_dup2_x1_itos -------------------------------------------------
 
2745
+       OpcodeEntry     do_dup2_x1_itos
 
2746
+       ldrb    ip, [java_pc, #1]!
 
2747
+       ldmib   java_stack!, {r1,r2}
 
2748
+       ldr     ip, [itos_table, ip, asl #2]
 
2749
+       stmda   java_stack!, {r0,r1}
 
2750
+       stmda   java_stack!, {r1,r2}
 
2751
+       mov     pc, ip
 
2752
+
 
2753
+@ --- do_dup2_x2_vtos -------------------------------------------------
 
2754
+       OpcodeEntry     do_dup2_x2_vtos
 
2755
+       POP(tos)
 
2756
+       ldrb    ip, [java_pc, #1]!
 
2757
+       ldmib   java_stack!, {r1,r2,r3}
 
2758
+       ldr     ip, [itos_table, ip, asl #2]
 
2759
+       stmda   java_stack!, {r0,r1}
 
2760
+       stmda   java_stack!, {r1,r2,r3}
 
2761
+       mov     pc, ip
 
2762
+@ --- do_dup2_x2_itos -------------------------------------------------
 
2763
+       OpcodeEntry     do_dup2_x2_itos
 
2764
+       ldrb    ip, [java_pc, #1]!
 
2765
+       ldmib   java_stack!, {r1,r2,r3}
 
2766
+       ldr     ip, [itos_table, ip, asl #2]
 
2767
+       stmda   java_stack!, {r0,r1}
 
2768
+       stmda   java_stack!, {r1,r2,r3}
 
2769
+       mov     pc, ip
 
2770
+
 
2771
+@ --- do_swap_vtos -------------------------------------------------
 
2772
+       OpcodeEntry     do_swap_vtos
 
2773
+       POP(tos)
 
2774
+       ldrb    ip, [java_pc, #1]!
 
2775
+       POP(r1)
 
2776
+       PUSH(tos)
 
2777
+       ldr     ip, [itos_table, ip, asl #2]
 
2778
+       mov     tos, r1
 
2779
+       mov     pc, ip
 
2780
+@ --- do_swap_itos -------------------------------------------------
 
2781
+       OpcodeEntry     do_swap_itos
 
2782
+       ldrb    ip, [java_pc, #1]!
 
2783
+       POP(r1)
 
2784
+       PUSH(tos)
 
2785
+       ldr     ip, [itos_table, ip, asl #2]
 
2786
+       mov     tos, r1
 
2787
+       mov     pc, ip
 
2788
+
 
2789
+@ --- do_imul_vtos -------------------------------------------------
 
2790
+       OpcodeEntry     do_imul_vtos
 
2791
+       POP(tos)
 
2792
+@ --- do_imul_itos -------------------------------------------------
 
2793
+       OpcodeEntry     do_imul_itos
 
2794
+       ldrb    ip, [java_pc, #1]!
 
2795
+       POP(r1)
 
2796
+       ldr     ip, [itos_table, ip, asl #2]
 
2797
+       mul     r0, r1, r0
 
2798
+       mov     pc, ip
 
2799
+
 
2800
+@ --- do_ladd_vtos -------------------------------------------------
 
2801
+       OpcodeEntry     do_ladd_vtos
 
2802
+       POP(tos)
 
2803
+@ --- do_ladd_itos -------------------------------------------------
 
2804
+       OpcodeEntry     do_ladd_itos
 
2805
+       ldrb    ip, [java_pc, #1]!
 
2806
+       ldmib   java_stack!, {r1-r3}
 
2807
+       ldr     ip, [itos_table, ip, asl #2]
 
2808
+       adds    r0, r0, r2
 
2809
+       adc     r1, r1, r3
 
2810
+       PUSH(r1)
 
2811
+       mov     pc, ip
 
2812
+
 
2813
+@ --- do_lsub_vtos -------------------------------------------------
 
2814
+       OpcodeEntry     do_lsub_vtos
 
2815
+       POP(tos)
 
2816
+@ --- do_lsub_itos -------------------------------------------------
 
2817
+       OpcodeEntry     do_lsub_itos
 
2818
+       ldrb    ip, [java_pc, #1]!
 
2819
+       ldmib   java_stack!, {r1-r3}
 
2820
+       ldr     ip, [itos_table, ip, asl #2]
 
2821
+       subs    r0, r2, r0
 
2822
+       sbc     r1, r3, r1
 
2823
+       PUSH(r1)
 
2824
+       mov     pc, ip
 
2825
+
 
2826
+@ --- do_lmul_vtos -------------------------------------------------
 
2827
+       OpcodeEntry     do_lmul_vtos
 
2828
+       POP(tos)
 
2829
+@ --- do_lmul_itos -------------------------------------------------
 
2830
+       OpcodeEntry     do_lmul_itos
 
2831
+       ldmib   java_stack!, {r1-r3}
 
2832
+       umull   lr, ip, r2, r0
 
2833
+       mla     r1, r2, r1, ip
 
2834
+       ldrb    r2, [java_pc, #1]!
 
2835
+       mla     r1, r3, r0, r1
 
2836
+       PUSH(r1)
 
2837
+       ldr     r2, [itos_table, r2, asl #2]
 
2838
+       mov     tos, lr
 
2839
+       mov     pc, r2
 
2840
+
 
2841
+@ --- do_land_vtos -------------------------------------------------
 
2842
+       OpcodeEntry     do_land_vtos
 
2843
+       POP(tos)
 
2844
+@ --- do_land_itos -------------------------------------------------
 
2845
+       OpcodeEntry     do_land_itos
 
2846
+       ldrb    ip, [java_pc, #1]!
 
2847
+       ldmib   java_stack!, {r1-r3}
 
2848
+       ldr     ip, [itos_table, ip, asl #2]
 
2849
+       and     r0, r2, r0
 
2850
+       and     r1, r3, r1
 
2851
+       PUSH(r1)
 
2852
+       mov     pc, ip
 
2853
+
 
2854
+@ --- do_lor_vtos -------------------------------------------------
 
2855
+       OpcodeEntry     do_lor_vtos
 
2856
+       POP(tos)
 
2857
+@ --- do_lor_itos -------------------------------------------------
 
2858
+       OpcodeEntry     do_lor_itos
 
2859
+       ldrb    ip, [java_pc, #1]!
 
2860
+       ldmib   java_stack!, {r1-r3}
 
2861
+       ldr     ip, [itos_table, ip, asl #2]
 
2862
+       orr     r0, r2, r0
 
2863
+       orr     r1, r3, r1
 
2864
+       PUSH(r1)
 
2865
+       mov     pc, ip
 
2866
+
 
2867
+@ --- do_lxor_vtos -------------------------------------------------
 
2868
+       OpcodeEntry     do_lxor_vtos
 
2869
+       POP(tos)
 
2870
+@ --- do_lxor_itos -------------------------------------------------
 
2871
+       OpcodeEntry     do_lxor_itos
 
2872
+       ldrb    ip, [java_pc, #1]!
 
2873
+       ldmib   java_stack!, {r1-r3}
 
2874
+       ldr     ip, [itos_table, ip, asl #2]
 
2875
+       eor     r0, r2, r0
 
2876
+       eor     r1, r3, r1
 
2877
+       PUSH(r1)
 
2878
+       mov     pc, ip
 
2879
+
 
2880
+@ --- do_ineg_vtos -------------------------------------------------
 
2881
+       OpcodeEntry     do_ineg_vtos
 
2882
+       POP(tos)
 
2883
+@ --- do_ineg_itos -------------------------------------------------
 
2884
+       OpcodeEntry     do_ineg_itos
 
2885
+       ldrb    r2, [java_pc, #1]!
 
2886
+       rsb     tos, tos, #0
 
2887
+       ldr     r2, [itos_table, r2, asl #2]
 
2888
+       mov     pc, r2
 
2889
+
 
2890
+@ --- do_lneg_vtos -------------------------------------------------
 
2891
+       OpcodeEntry     do_lneg_vtos
 
2892
+       POP(tos)
 
2893
+@ --- do_lneg_itos -------------------------------------------------
 
2894
+       OpcodeEntry     do_lneg_itos
 
2895
+       ldrb    ip, [java_pc, #1]!
 
2896
+       POP(r1)
 
2897
+       rsbs    tos, tos, #0
 
2898
+       ldr     ip, [itos_table, ip, asl #2]
 
2899
+       rsc     r1, r1, #0
 
2900
+       PUSH(r1)
 
2901
+       mov     pc, ip
 
2902
+
 
2903
+@ --- do_ishl_vtos -------------------------------------------------
 
2904
+       OpcodeEntry     do_ishl_vtos
 
2905
+       POP(tos)
 
2906
+@ --- do_ishl_itos -------------------------------------------------
 
2907
+       OpcodeEntry     do_ishl_itos
 
2908
+       ldrb    ip, [java_pc, #1]!
 
2909
+       POP(r1)
 
2910
+       and     tos, tos, #31
 
2911
+       ldr     ip, [itos_table, ip, asl #2]
 
2912
+       mov     tos, r1, lsl r0
 
2913
+       mov     pc, ip
 
2914
+
 
2915
+@ --- do_lshl_vtos -------------------------------------------------
 
2916
+       OpcodeEntry     do_lshl_vtos
 
2917
+       POP(tos)
 
2918
+@ --- do_lshl_itos -------------------------------------------------
 
2919
+       OpcodeEntry     do_lshl_itos
 
2920
+        ldrb    ip, [java_pc, #1]!
 
2921
+        tst     tos, #32
 
2922
+        and     r2, tos, #31
 
2923
+       ldmib   java_stack!, {r1,r3}
 
2924
+       ldr     ip, [itos_table, ip, asl #2]
 
2925
+        movne   r0, #0
 
2926
+        movne   r3, r1, lsl r2
 
2927
+        moveq   r0, r1, lsl r2
 
2928
+        moveq   r3, r3, lsl r2
 
2929
+        rsbeq   r2, r2, #32
 
2930
+        orreq   r3, r3, r1, lsr r2
 
2931
+       PUSH(r3)
 
2932
+       mov     pc, ip
 
2933
+
 
2934
+@ --- do_ishr_vtos -------------------------------------------------
 
2935
+       OpcodeEntry     do_ishr_vtos
 
2936
+       POP(tos)
 
2937
+@ --- do_ishr_itos -------------------------------------------------
 
2938
+       OpcodeEntry     do_ishr_itos
 
2939
+       ldrb    ip, [java_pc, #1]!
 
2940
+       POP(r1)
 
2941
+       and     r0, r0, #31
 
2942
+       ldr     ip, [itos_table, ip, asl #2]
 
2943
+       mov     tos, r1, asr r0
 
2944
+       mov     pc, ip
 
2945
+
 
2946
+@ --- do_lshr_vtos -------------------------------------------------
 
2947
+       OpcodeEntry     do_lshr_vtos
 
2948
+       POP(tos)
 
2949
+@ --- do_lshr_itos -------------------------------------------------
 
2950
+       OpcodeEntry     do_lshr_itos
 
2951
+        ldrb    ip, [java_pc, #1]!
 
2952
+        tst     tos, #32
 
2953
+        and     a3, tos, #31
 
2954
+       ldmib   java_stack!, {a1, a4}
 
2955
+       ldr     ip, [itos_table, ip, asl #2]
 
2956
+        movne   a2, a4, asr #31
 
2957
+        movne   a1, a4, asr a3
 
2958
+        moveq   a2, a4, asr a3
 
2959
+        moveq   a1, a1, lsr a3
 
2960
+        rsbeq   a3, a3, #32
 
2961
+        orreq   a1, a1, a4, lsl a3
 
2962
+       PUSH(a2)
 
2963
+       mov     pc, ip
 
2964
+
 
2965
+@ --- do_iushr_vtos -------------------------------------------------
 
2966
+       OpcodeEntry     do_iushr_vtos
 
2967
+       POP(tos)
 
2968
+@ --- do_iushr_itos -------------------------------------------------
 
2969
+       OpcodeEntry     do_iushr_itos
 
2970
+       ldrb    ip, [java_pc, #1]!
 
2971
+       POP(r1)
 
2972
+       and     r0, r0, #31
 
2973
+       ldr     ip, [itos_table, ip, asl #2]
 
2974
+       mov     tos, r1, lsr r0
 
2975
+       mov     pc, ip
 
2976
+
 
2977
+@ --- do_lushr_vtos -------------------------------------------------
 
2978
+       OpcodeEntry     do_lushr_vtos
 
2979
+       POP(tos)
 
2980
+@ --- do_lushr_itos -------------------------------------------------
 
2981
+       OpcodeEntry     do_lushr_itos
 
2982
+        ldrb    ip, [java_pc, #1]!
 
2983
+        tst     tos, #32
 
2984
+        and     a3, tos, #31
 
2985
+       ldmib   java_stack!, {a1, a4}
 
2986
+       ldr     ip, [itos_table, ip, asl #2]
 
2987
+        movne   a2, #0
 
2988
+        movne   a1, a4, lsr a3
 
2989
+        moveq   a2, a4, lsr a3
 
2990
+        moveq   a1, a1, lsr a3
 
2991
+        rsbeq   a3, a3, #32
 
2992
+        orreq   a1, a1, a4, lsl a3
 
2993
+       PUSH(a2)
 
2994
+       mov     pc, ip
 
2995
+
 
2996
+@ --- do_dcmpl_itos_vfp -------------------------------------------------
 
2997
+       OpcodeEntry     do_dcmpl_itos_vfp
 
2998
+       PUSH(tos)
 
2999
+@ --- do_dcmpl_vtos_vfp -------------------------------------------------
 
3000
+       OpcodeEntry     do_dcmpl_vtos_vfp
 
3001
+       ldrb    r3, [java_pc, #1]!
 
3002
+       fldd    d6, [java_stack, #12]
 
3003
+       fldd    d7, [java_stack, #4]
 
3004
+       fcmped  d6, d7
 
3005
+       ldr     r2, [itos_table, r3, asl #2]
 
3006
+       fmstat
 
3007
+       mvnmi   tos, #0
 
3008
+       bmi     do_dcmpl_1_vtos
 
3009
+       movgt   tos, #1
 
3010
+       bgt     do_dcmpl_1_vtos
 
3011
+       fcmpd   d6, d7
 
3012
+       fmstat
 
3013
+       moveq   tos, #0
 
3014
+       mvnne   tos, #0
 
3015
+do_dcmpl_1_vtos:
 
3016
+       add     java_stack, java_stack, #16
 
3017
+       mov     pc, r2
 
3018
+
 
3019
+@ --- do_ldiv_itos -------------------------------------------------
 
3020
+       OpcodeEntry     do_ldiv_itos
 
3021
+       PUSH(tos)
 
3022
+@ --- do_ldiv_vtos -------------------------------------------------
 
3023
+       OpcodeEntry     do_ldiv_vtos
 
3024
+       ldmib   java_stack!, {r2, r3}
 
3025
+       ldmib   java_stack!, {r0, r1}
 
3026
+       orrs    lr, r2, r3
 
3027
+       beq     .ldiv_0
 
3028
+       bl      __aeabi_ldivmod(PLT)
 
3029
+       ldrb    r3, [java_pc, #1]!
 
3030
+       PUSH(r1)
 
3031
+       ldr     r2, [itos_table, r3, asl #2]
 
3032
+       mov     pc, r2
 
3033
+
 
3034
+@ --- do_lrem_itos -------------------------------------------------
 
3035
+       OpcodeEntry     do_lrem_itos
 
3036
+       PUSH(tos)
 
3037
+@ --- do_lrem_vtos -------------------------------------------------
 
3038
+       OpcodeEntry     do_lrem_vtos
 
3039
+       ldmib   java_stack!, {r2, r3}
 
3040
+       ldmib   java_stack!, {r0, r1}
 
3041
+       orrs    lr, r2, r3
 
3042
+       beq     .lrem_0
 
3043
+       bl      __aeabi_ldivmod(PLT)
 
3044
+       ldrb    r0, [java_pc, #1]!
 
3045
+       PUSH(r3)
 
3046
+       ldr     ip, [itos_table, r0, asl #2]
 
3047
+       mov     tos, r2
 
3048
+       mov     pc, ip
 
3049
+
 
3050
+@ --- do_dadd_itos_vfp -------------------------------------------------
 
3051
+       OpcodeEntry     do_dadd_itos_vfp
 
3052
+       PUSH(tos)
 
3053
+@ --- do_dadd_vtos_vfp -------------------------------------------------
 
3054
+       OpcodeEntry     do_dadd_vtos_vfp
 
3055
+       ldrb    r3, [java_pc, #1]!
 
3056
+       fldd    d7, [java_stack, #12]
 
3057
+       fldd    d6, [java_stack, #4]
 
3058
+       ldr     r2, [dtos_table, r3, asl #2]
 
3059
+       faddd   d0, d7, d6
 
3060
+       add     java_stack, java_stack, #16
 
3061
+       mov     pc, r2
 
3062
+
 
3063
+@ --- do_fadd_itos_vfp -------------------------------------------------
 
3064
+       OpcodeEntry     do_fadd_itos_vfp
 
3065
+       PUSH(tos)
 
3066
+@ --- do_fadd_vtos_vfp -------------------------------------------------
 
3067
+       OpcodeEntry     do_fadd_vtos_vfp
 
3068
+       ldrb    r3, [java_pc, #1]!
 
3069
+       flds    s15, [java_stack, #8]
 
3070
+       flds    s14, [java_stack, #4]
 
3071
+       ldr     r2, [vtos_table, r3, asl #2]
 
3072
+       fadds   s15, s15, s14
 
3073
+       fsts    s15, [java_stack, #8]
 
3074
+       add     java_stack, java_stack, #4
 
3075
+       mov     pc, r2
 
3076
+
 
3077
+@ --- do_dsub_itos_vfp -------------------------------------------------
 
3078
+       OpcodeEntry     do_dsub_itos_vfp
 
3079
+       PUSH(tos)
 
3080
+@ --- do_dsub_vtos_vfp -------------------------------------------------
 
3081
+       OpcodeEntry     do_dsub_vtos_vfp
 
3082
+       ldrb    r3, [java_pc, #1]!
 
3083
+       fldd    d7, [java_stack, #12]
 
3084
+       fldd    d6, [java_stack, #4]
 
3085
+       ldr     r2, [dtos_table, r3, asl #2]
 
3086
+       fsubd   d0, d7, d6
 
3087
+       add     java_stack, java_stack, #16
 
3088
+       mov     pc, r2
 
3089
+
 
3090
+@ --- do_getstatic_dtos -------------------------------------------------
 
3091
+       OpcodeEntry     do_getstatic_dtos
 
3092
+       PUSHD   dtos
 
3093
+       b       do_getstatic_vtos
 
3094
+@ --- do_getstatic_itos -------------------------------------------------
 
3095
+       OpcodeEntry     do_getstatic_itos
 
3096
+       PUSH(tos)
 
3097
+@ --- do_getstatic_vtos -------------------------------------------------
 
3098
+       OpcodeEntry     do_getstatic_vtos
 
3099
+       ldrb    r3, [java_pc,#1]
 
3100
+       ldrb    r2, [java_pc,#2]
 
3101
+       ldrb    ip, [java_pc,#3]!
 
3102
+       orr     r3, r3, r2, lsl #8
 
3103
+       add     r1, constant_pool, #16
 
3104
+       ldr     r3, [r1, r3, lsl #4]!                   @ r1 = cache
 
3105
+       ldr     ip, [itos_table, ip, asl #2]
 
3106
+       and     r3, r3, #0x00ff0000
 
3107
+       cmp     r3, #178 << 16
 
3108
+       bne     .exit_getstatic
 
3109
+       ldr     r3, [r1, #4]
 
3110
+       ldr     r2, [r1, #12]
 
3111
+       ldr     lr, [r1, #8]
 
3112
+       movs    r2, r2, lsr #29
 
3113
+       ldrhi   tos, [r3, lr]           @ C = 1, Z = 0 => R2 == 3, 5, 7
 
3114
+       movhi   pc, ip                  @ early exit for word accesses
 
3115
+       ldreqsb tos, [r3, lr]           @ Z = 1 => R2 = 0, 1
 
3116
+       ldrcsh  tos, [r3, lr]           @ C = 1 => R2 = 1 (overwrites previous load)
 
3117
+       moveq   pc, ip
 
3118
+       tst     r2, #2
 
3119
+       addne   r3, r3, lr
 
3120
+       ldmneia r3, {r0, r1}            @ 4, 6
 
3121
+       PUSHNE(r1)
 
3122
+       movne   pc, ip
 
3123
+       ldrsh   tos, [r3, lr]           @ 2
 
3124
+       mov     pc, ip
 
3125
+
 
3126
+@ --- do_arraylength_vtos -------------------------------------------------
 
3127
+       OpcodeEntry     do_arraylength_vtos
 
3128
+       POP(tos)
 
3129
+@ --- do_arraylength_itos -------------------------------------------------
 
3130
+       OpcodeEntry     do_arraylength_itos
 
3131
+       ldrb    r2, [java_pc, #1]!
 
3132
+       cmp     tos, #0
 
3133
+       beq     .exit_arraylength
 
3134
+       ldr     r2, [itos_table, r2, asl #2]
 
3135
+       ldr     tos, [tos, #8]
 
3136
+       mov     pc, r2
 
3137
+
 
3138
+@ --- do_astore_0_itos -------------------------------------------------
 
3139
+       OpcodeEntry     do_astore_0_itos
 
3140
+       PUSH(tos)
 
3141
+@ --- do_astore_0_vtos -------------------------------------------------
 
3142
+       OpcodeEntry     do_astore_0_vtos
 
3143
+       mov     r0, java_stack
 
3144
+       mov     r2, java_locals
 
3145
+       mov     r3, #0
 
3146
+       mvn     r1, #0
 
3147
+       bl      _ZN19BytecodeInterpreter6astoreEPiiS0_i(PLT)
 
3148
+       ldrb    r3, [java_pc, #1]!
 
3149
+       add     java_stack, java_stack, #4
 
3150
+       ldr     r2, [vtos_table, r3, asl #2]
 
3151
+       mov     pc, r2
 
3152
+
 
3153
+@ --- do_astore_1_itos -------------------------------------------------
 
3154
+       OpcodeEntry     do_astore_1_itos
 
3155
+       PUSH(tos)
 
3156
+@ --- do_astore_1_vtos -------------------------------------------------
 
3157
+       OpcodeEntry     do_astore_1_vtos
 
3158
+       mov     r0, java_stack
 
3159
+       mov     r2, java_locals
 
3160
+       mov     r3, #1
 
3161
+       mvn     r1, #0
 
3162
+       bl      _ZN19BytecodeInterpreter6astoreEPiiS0_i(PLT)
 
3163
+       ldrb    r3, [java_pc, #1]!
 
3164
+       add     java_stack, java_stack, #4
 
3165
+       ldr     r2, [vtos_table, r3, asl #2]
 
3166
+       mov     pc, r2
 
3167
+
 
3168
+@ --- do_astore_2_itos -------------------------------------------------
 
3169
+       OpcodeEntry     do_astore_2_itos
 
3170
+       PUSH(tos)
 
3171
+@ --- do_astore_2_vtos -------------------------------------------------
 
3172
+       OpcodeEntry     do_astore_2_vtos
 
3173
+       mov     r0, java_stack
 
3174
+       mov     r2, java_locals
 
3175
+       mov     r3, #2
 
3176
+       mvn     r1, #0
 
3177
+       bl      _ZN19BytecodeInterpreter6astoreEPiiS0_i(PLT)
 
3178
+       ldrb    r3, [java_pc, #1]!
 
3179
+       add     java_stack, java_stack, #4
 
3180
+       ldr     r2, [vtos_table, r3, asl #2]
 
3181
+       mov     pc, r2
 
3182
+
 
3183
+@ --- do_astore_3_itos -------------------------------------------------
 
3184
+       OpcodeEntry     do_astore_3_itos
 
3185
+       PUSH(tos)
 
3186
+@ --- do_astore_3_vtos -------------------------------------------------
 
3187
+       OpcodeEntry     do_astore_3_vtos
 
3188
+       mov     r0, java_stack
 
3189
+       mov     r2, java_locals
 
3190
+       mov     r3, #3
 
3191
+       mvn     r1, #0
 
3192
+       bl      _ZN19BytecodeInterpreter6astoreEPiiS0_i(PLT)
 
3193
+       ldrb    r3, [java_pc, #1]!
 
3194
+       add     java_stack, java_stack, #4
 
3195
+       ldr     r2, [vtos_table, r3, asl #2]
 
3196
+       mov     pc, r2
 
3197
+
 
3198
+@ --- do_astore_itos -------------------------------------------------
 
3199
+       OpcodeEntry     do_astore_itos
 
3200
+       PUSH(tos)
 
3201
+@ --- do_astore_vtos -------------------------------------------------
 
3202
+       OpcodeEntry     do_astore_vtos
 
3203
+       mov     r0, java_stack
 
3204
+       ldrb    r3, [java_pc, #1]
 
3205
+       mov     r2, java_locals
 
3206
+       mvn     r1, #0
 
3207
+       bl      _ZN19BytecodeInterpreter6astoreEPiiS0_i(PLT)
 
3208
+       ldrb    r3, [java_pc, #2]!
 
3209
+       add     java_stack, java_stack, #4
 
3210
+       ldr     r2, [vtos_table, r3, asl #2]
 
3211
+       mov     pc, r2
 
3212
+
 
3213
+@ --- do_dcmpg_itos_vfp -------------------------------------------------
 
3214
+       OpcodeEntry     do_dcmpg_itos_vfp
 
3215
+       PUSH(tos)
 
3216
+@ --- do_dcmpg_vtos_vfp -------------------------------------------------
 
3217
+       OpcodeEntry     do_dcmpg_vtos_vfp
 
3218
+       ldrb    r3, [java_pc, #1]!
 
3219
+       fldd    d6, [java_stack, #12]
 
3220
+       fldd    d7, [java_stack, #4]
 
3221
+       fcmped  d6, d7
 
3222
+       ldr     r2, [itos_table, r3, asl #2]
 
3223
+       fmstat
 
3224
+       mvnmi   tos, #0
 
3225
+       bmi     do_dcmpg_1_itos
 
3226
+       movgt   tos, #1
 
3227
+       bgt     do_dcmpg_1_itos
 
3228
+       fcmpd   d6, d7
 
3229
+       fmstat
 
3230
+       moveq   tos, #0
 
3231
+       movne   tos, #1
 
3232
+do_dcmpg_1_itos:
 
3233
+       add     java_stack, java_stack, #16
 
3234
+       mov     pc, r2
 
3235
+
 
3236
+@ --- do_lcmp_vtos -------------------------------------------------
 
3237
+       OpcodeEntry     do_lcmp_vtos
 
3238
+       POP(tos)
 
3239
+@ --- do_lcmp_itos -------------------------------------------------
 
3240
+       OpcodeEntry     do_lcmp_itos
 
3241
+       ldmib   java_stack!, {r1-r3}
 
3242
+       ldrb    ip, [java_pc, #1]!
 
3243
+        subs    tos, r2, r0
 
3244
+        movne   tos, #1
 
3245
+        sbcs    r3, r3, r1
 
3246
+       ldr     ip, [itos_table, ip, asl #2]
 
3247
+        movne   tos, #1
 
3248
+        rsblt   tos, tos, #0
 
3249
+       mov     pc, ip
 
3250
+
 
3251
+@ --- do_fsub_itos_vfp -------------------------------------------------
 
3252
+       OpcodeEntry     do_fsub_itos_vfp
 
3253
+       PUSH(tos)
 
3254
+@ --- do_fsub_vtos_vfp -------------------------------------------------
 
3255
+       OpcodeEntry     do_fsub_vtos_vfp
 
3256
+       ldrb    r3, [java_pc, #1]!
 
3257
+       flds    s15, [java_stack, #8]
 
3258
+       flds    s14, [java_stack, #4]
 
3259
+       ldr     r2, [vtos_table, r3, asl #2]
 
3260
+       fsubs   s15, s15, s14
 
3261
+       fsts    s15, [java_stack, #8]
 
3262
+       add     java_stack, java_stack, #4
 
3263
+       mov     pc, r2
 
3264
+
 
3265
+@ --- do_dmul_itos_vfp -------------------------------------------------
 
3266
+       OpcodeEntry     do_dmul_itos_vfp
 
3267
+       PUSH(tos)
 
3268
+@ --- do_dmul_vtos_vfp -------------------------------------------------
 
3269
+       OpcodeEntry     do_dmul_vtos_vfp
 
3270
+       ldrb    r3, [java_pc, #1]!
 
3271
+       fldd    d5, [java_stack, #12]
 
3272
+       fldd    d7, [java_stack, #4]
 
3273
+       ldr     r2, [dtos_table, r3, asl #2]
 
3274
+       fmuld   d0, d5, d7
 
3275
+       add     java_stack, java_stack, #16
 
3276
+       mov     pc, r2
 
3277
+
 
3278
+@ --- do_fmul_itos_vfp -------------------------------------------------
 
3279
+       OpcodeEntry     do_fmul_itos_vfp
 
3280
+       PUSH(tos)
 
3281
+@ --- do_fmul_vtos_vfp -------------------------------------------------
 
3282
+       OpcodeEntry     do_fmul_vtos_vfp
 
3283
+       ldrb    r3, [java_pc, #1]!
 
3284
+       flds    s13, [java_stack, #8]
 
3285
+       flds    s15, [java_stack, #4]
 
3286
+       ldr     r2, [vtos_table, r3, asl #2]
 
3287
+       fmuls   s14, s13, s15
 
3288
+       fsts    s14, [java_stack, #8]
 
3289
+       add     java_stack, java_stack, #4
 
3290
+       mov     pc, r2
 
3291
+
 
3292
+@ --- do_ddiv_itos_vfp -------------------------------------------------
 
3293
+       OpcodeEntry     do_ddiv_itos_vfp
 
3294
+       PUSH(tos)
 
3295
+@ --- do_ddiv_vtos_vfp -------------------------------------------------
 
3296
+       OpcodeEntry     do_ddiv_vtos_vfp
 
3297
+       ldrb    r3, [java_pc, #1]!
 
3298
+       fldd    d5, [java_stack, #12]
 
3299
+       fldd    d7, [java_stack, #4]
 
3300
+       ldr     r2, [dtos_table, r3, asl #2]
 
3301
+       fdivd   d0, d5, d7
 
3302
+       add     java_stack, java_stack, #16
 
3303
+       mov     pc, r2
 
3304
+
 
3305
+@ --- do_fdiv_itos_vfp -------------------------------------------------
 
3306
+       OpcodeEntry     do_fdiv_itos_vfp
 
3307
+       PUSH(tos)
 
3308
+@ --- do_fdiv_vtos_vfp -------------------------------------------------
 
3309
+       OpcodeEntry     do_fdiv_vtos_vfp
 
3310
+       ldrb    r3, [java_pc, #1]!
 
3311
+       flds    s13, [java_stack, #8]
 
3312
+       flds    s15, [java_stack, #4]
 
3313
+       ldr     r2, [vtos_table, r3, asl #2]
 
3314
+       fdivs   s14, s13, s15
 
3315
+       fsts    s14, [java_stack, #8]
 
3316
+       add     java_stack, java_stack, #4
 
3317
+       mov     pc, r2
 
3318
+
 
3319
+@ --- do_drem_vtos -------------------------------------------------
 
3320
+       OpcodeEntry     do_drem_vtos
 
3321
+       POP(tos)
 
3322
+@ --- do_drem_itos -------------------------------------------------
 
3323
+       OpcodeEntry     do_drem_itos
 
3324
+       mov     r2, tos
 
3325
+       POP(r3)
 
3326
+       ldmib   java_stack!, {r0, r1}
 
3327
+       bl      fmod(PLT)
 
3328
+       ldrb    r3, [java_pc, #1]!
 
3329
+       PUSH(r1)
 
3330
+       ldr     r2, [itos_table, r3, asl #2]
 
3331
+       mov     pc, r2
 
3332
+
 
3333
+@ --- do_frem_vtos -------------------------------------------------
 
3334
+       OpcodeEntry     do_frem_vtos
 
3335
+       POP(tos)
 
3336
+@ --- do_frem_itos -------------------------------------------------
 
3337
+       OpcodeEntry     do_frem_itos
 
3338
+        bl      __aeabi_f2d(PLT)
 
3339
+       POP(r2)
 
3340
+       stmda   java_stack!, {r0, r1}
 
3341
+       mov     r0, r2
 
3342
+        bl      __aeabi_f2d(PLT)
 
3343
+       ldmib   java_stack!, {r2, r3}
 
3344
+       bl      fmod(PLT)
 
3345
+        bl      __aeabi_d2f(PLT)
 
3346
+       ldrb    r3, [java_pc, #1]!
 
3347
+       ldr     r2, [itos_table, r3, asl #2]
 
3348
+       mov     pc, r2
 
3349
+
 
3350
+@ --- do_fneg_vtos -------------------------------------------------
 
3351
+       OpcodeEntry     do_fneg_vtos
 
3352
+       POP(tos)
 
3353
+@ --- do_fneg_itos -------------------------------------------------
 
3354
+       OpcodeEntry     do_fneg_itos
 
3355
+       ldrb    r3, [java_pc, #1]!
 
3356
+       eor     tos, tos, #0x80000000
 
3357
+       ldr     r2, [itos_table, r3, asl #2]
 
3358
+       mov     pc, r2
 
3359
+
 
3360
+@ --- do_dneg_vtos -------------------------------------------------
 
3361
+       OpcodeEntry     do_dneg_vtos
 
3362
+       POP(tos)
 
3363
+@ --- do_dneg_itos -------------------------------------------------
 
3364
+       OpcodeEntry     do_dneg_itos
 
3365
+       ldrb    r3, [java_pc, #1]!
 
3366
+       POP(r1)
 
3367
+       eor     r1, r1, #0x80000000
 
3368
+       ldr     r2, [itos_table, r3, asl #2]
 
3369
+       PUSH(r1)
 
3370
+       mov     pc, r2
 
3371
+
 
3372
+@ --- do_i2f_vtos_vfp -------------------------------------------------
 
3373
+       OpcodeEntry     do_i2f_vtos_vfp
 
3374
+       POP(tos)
 
3375
+@ --- do_i2f_itos_vfp -------------------------------------------------
 
3376
+       OpcodeEntry     do_i2f_itos_vfp
 
3377
+       ldrb    r3, [java_pc, #1]!
 
3378
+       fmsr    s12, tos
 
3379
+       fsitos  s15, s12
 
3380
+       ldr     r2, [vtos_table, r3, asl #2]
 
3381
+       fsts    s15, [java_stack]
 
3382
+       sub     java_stack, java_stack, #4
 
3383
+       mov     pc, r2
 
3384
+
 
3385
+@ --- do_i2l_vtos -------------------------------------------------
 
3386
+       OpcodeEntry     do_i2l_vtos
 
3387
+       POP(tos)
 
3388
+@ --- do_i2l_itos -------------------------------------------------
 
3389
+       OpcodeEntry     do_i2l_itos
 
3390
+       ldrb    r2, [java_pc, #1]!
 
3391
+       mov     r1, tos, asr #31
 
3392
+       ldr     r2, [itos_table, r2, asl #2]
 
3393
+       PUSH(r1)
 
3394
+       mov     pc, r2
 
3395
+
 
3396
+@ --- do_i2d_vtos_vfp -------------------------------------------------
 
3397
+       OpcodeEntry     do_i2d_vtos_vfp
 
3398
+       POP(tos)
 
3399
+@ --- do_i2d_itos_vfp -------------------------------------------------
 
3400
+       OpcodeEntry     do_i2d_itos_vfp
 
3401
+       ldrb    r3, [java_pc, #1]!
 
3402
+       fmsr    s13, tos
 
3403
+       fsitod  d0, s13
 
3404
+       ldr     r2, [dtos_table, r3, asl #2]
 
3405
+       mov     pc, r2
 
3406
+
 
3407
+@ --- do_l2i_vtos -------------------------------------------------
 
3408
+       OpcodeEntry     do_l2i_vtos
 
3409
+       POP(tos)
 
3410
+@ --- do_l2i_itos -------------------------------------------------
 
3411
+       OpcodeEntry     do_l2i_itos
 
3412
+       ldrb    r2, [java_pc, #1]!
 
3413
+       add     java_stack, java_stack, #4
 
3414
+       ldr     r2, [itos_table, r2, asl #2]
 
3415
+       mov     pc, r2
 
3416
+
 
3417
+@ --- do_l2f_vtos -------------------------------------------------
 
3418
+       OpcodeEntry     do_l2f_vtos
 
3419
+       POP(tos)
 
3420
+@ --- do_l2f_itos -------------------------------------------------
 
3421
+       OpcodeEntry     do_l2f_itos
 
3422
+       POP(r1)
 
3423
+       bl      __aeabi_l2f(PLT)
 
3424
+       ldrb    r3, [java_pc, #1]!
 
3425
+       ldr     r2, [itos_table, r3, asl #2]
 
3426
+       mov     pc, r2
 
3427
+
 
3428
+@ --- do_l2d_vtos -------------------------------------------------
 
3429
+       OpcodeEntry     do_l2d_vtos
 
3430
+       POP(tos)
 
3431
+@ --- do_l2d_itos -------------------------------------------------
 
3432
+       OpcodeEntry     do_l2d_itos
 
3433
+       POP(r1)
 
3434
+       bl      __aeabi_l2d(PLT)
 
3435
+       ldrb    r2, [java_pc, #1]!
 
3436
+       PUSH(r1)
 
3437
+       ldr     r2, [itos_table, r2, asl #2]
 
3438
+       mov     pc, r2
 
3439
+
 
3440
+@ --- do_f2i_vtos -------------------------------------------------
 
3441
+       OpcodeEntry     do_f2i_vtos
 
3442
+       POP(tos)
 
3443
+@ --- do_f2i_itos -------------------------------------------------
 
3444
+       OpcodeEntry     do_f2i_itos
 
3445
+       bl      _ZN13SharedRuntime3f2iEf(PLT)
 
3446
+       ldrb    r3, [java_pc, #1]!
 
3447
+       ldr     r2, [itos_table, r3, asl #2]
 
3448
+       mov     pc, r2
 
3449
+
 
3450
+@ --- do_f2l_vtos -------------------------------------------------
 
3451
+       OpcodeEntry     do_f2l_vtos
 
3452
+       POP(tos)
 
3453
+@ --- do_f2l_itos -------------------------------------------------
 
3454
+       OpcodeEntry     do_f2l_itos
 
3455
+       bl      _ZN13SharedRuntime3f2lEf(PLT)
 
3456
+       ldrb    r3, [java_pc, #1]!
 
3457
+       PUSH(r1)
 
3458
+       ldr     r2, [itos_table, r3, asl #2]
 
3459
+       mov     pc, r2
 
3460
+
 
3461
+@ --- do_f2d_itos_vfp -------------------------------------------------
 
3462
+       OpcodeEntry     do_f2d_itos_vfp
 
3463
+       PUSH(tos)
 
3464
+@ --- do_f2d_vtos_vfp -------------------------------------------------
 
3465
+       OpcodeEntry     do_f2d_vtos_vfp
 
3466
+       flds    s14, [java_stack, #4]
 
3467
+       fcvtds  d0, s14
 
3468
+       ldrb    r3, [java_pc, #1]!
 
3469
+       add     java_stack, java_stack, #4
 
3470
+       ldr     r2, [dtos_table, r3, asl #2]
 
3471
+       mov     pc, r2
 
3472
+
 
3473
+@ --- do_d2i_vtos -------------------------------------------------
 
3474
+       OpcodeEntry     do_d2i_vtos
 
3475
+       POP(tos)
 
3476
+@ --- do_d2i_itos -------------------------------------------------
 
3477
+       OpcodeEntry     do_d2i_itos
 
3478
+       POP(r1)
 
3479
+       bl      _ZN13SharedRuntime3d2iEd(PLT)
 
3480
+       ldrb    r3, [java_pc, #1]!
 
3481
+       ldr     r2, [itos_table, r3, asl #2]
 
3482
+       mov     pc, r2
 
3483
+
 
3484
+@ --- do_d2f_itos_vfp -------------------------------------------------
 
3485
+       OpcodeEntry     do_d2f_itos_vfp
 
3486
+       PUSH(tos)
 
3487
+@ --- do_d2f_vtos_vfp -------------------------------------------------
 
3488
+       OpcodeEntry     do_d2f_vtos_vfp
 
3489
+       fldd    d7, [java_stack, #4]
 
3490
+       fcvtsd  s14, d7
 
3491
+       fsts    s14, [java_stack, #8]
 
3492
+       ldrb    r3, [java_pc, #1]!
 
3493
+       add     java_stack, java_stack, #4
 
3494
+       ldr     r2, [vtos_table, r3, asl #2]
 
3495
+       mov     pc, r2
 
3496
+
 
3497
+@ --- do_d2l_vtos -------------------------------------------------
 
3498
+       OpcodeEntry     do_d2l_vtos
 
3499
+       POP(tos)
 
3500
+@ --- do_d2l_itos -------------------------------------------------
 
3501
+       OpcodeEntry     do_d2l_itos
 
3502
+       POP(r1)
 
3503
+       bl      _ZN13SharedRuntime3d2lEd(PLT)
 
3504
+       ldrb    r3, [java_pc, #1]!
 
3505
+       PUSH(r1)
 
3506
+       ldr     r2, [itos_table, r3, asl #2]
 
3507
+       mov     pc, r2
 
3508
+
 
3509
+@ --- do_i2b_vtos -------------------------------------------------
 
3510
+       OpcodeEntry     do_i2b_vtos
 
3511
+       POP(tos)
 
3512
+@ --- do_i2b_itos -------------------------------------------------
 
3513
+       OpcodeEntry     do_i2b_itos
 
3514
+       ldrb    r2, [java_pc, #1]!
 
3515
+       mov     tos, tos, asl #24
 
3516
+       ldr     r2, [itos_table, r2, asl #2]
 
3517
+       mov     tos, tos, asr #24
 
3518
+       mov     pc, r2
 
3519
+
 
3520
+@ --- do_i2c_vtos -------------------------------------------------
 
3521
+       OpcodeEntry     do_i2c_vtos
 
3522
+       POP(tos)
 
3523
+@ --- do_i2c_itos -------------------------------------------------
 
3524
+       OpcodeEntry     do_i2c_itos
 
3525
+       ldrb    r2, [java_pc, #1]!
 
3526
+       mov     tos, tos, asl #16
 
3527
+       ldr     r2, [itos_table, r2, asl #2]
 
3528
+       mov     tos, tos, lsr #16
 
3529
+       mov     pc, r2
 
3530
+
 
3531
+@ --- do_i2s_vtos -------------------------------------------------
 
3532
+       OpcodeEntry     do_i2s_vtos
 
3533
+       POP(tos)
 
3534
+@ --- do_i2s_itos -------------------------------------------------
 
3535
+       OpcodeEntry     do_i2s_itos
 
3536
+       ldrb    r2, [java_pc, #1]!
 
3537
+       mov     tos, tos, asl #16
 
3538
+       ldr     r2, [itos_table, r2, asl #2]
 
3539
+       mov     tos, tos, asr #16
 
3540
+       mov     pc, r2
 
3541
+
 
3542
+@ --- do_ldc_itos -------------------------------------------------
 
3543
+       OpcodeEntry     do_ldc_itos
 
3544
+       PUSH(tos)
 
3545
+@ --- do_ldc_vtos -------------------------------------------------
 
3546
+       OpcodeEntry     do_ldc_vtos
 
3547
+       ldr     r3, [istate, #ISTATE_JAVA_METHOD]
 
3548
+       ldrb    r1, [java_pc, #1]
 
3549
+
 
3550
+       ldr     r0, [r3, #12]
 
3551
+       ldr     r2, [r0, #8]
 
3552
+       add     r2, r2, #12
 
3553
+       ldrb    r3, [r2, r1]
 
3554
+
 
3555
+       cmp     r3, #3                  @ int
 
3556
+       cmpne   r3, #4                  @ float
 
3557
+       cmpne   r3, #8                  @ string
 
3558
+       bne     .exit_asm
 
3559
+
 
3560
+       ldrb    ip, [java_pc, #2]!
 
3561
+       add     r3, r0, r1, lsl #2
 
3562
+       ldr     tos, [r3, #32]
 
3563
+       ldr     pc, [itos_table, ip, lsl #2]
 
3564
+
 
3565
+@ --- do_ldc_w_itos -------------------------------------------------
 
3566
+       OpcodeEntry     do_ldc_w_itos
 
3567
+       PUSH(tos)
 
3568
+@ --- do_ldc_w_vtos -------------------------------------------------
 
3569
+       OpcodeEntry     do_ldc_w_vtos
 
3570
+       ldr     r3, [istate, #ISTATE_JAVA_METHOD]
 
3571
+       ldrb    r0, [java_pc, #1]
 
3572
+       ldrb    r2, [java_pc, #2]
 
3573
+
 
3574
+       ldr     ip, [r3, #12]
 
3575
+       orr     r2, r2, r0, asl #8
 
3576
+       ldr     r1, [ip, #8]
 
3577
+       add     r1, r1, #12
 
3578
+       ldrb    r3, [r1, r2]
 
3579
+
 
3580
+       cmp     r3, #3                  @ int
 
3581
+       cmpne   r3, #4                  @ float
 
3582
+       cmpne   r3, #8                  @ string
 
3583
+       bne     .exit_asm
 
3584
+
 
3585
+       ldrb    r1, [java_pc, #3]!
 
3586
+       add     r3, ip, r2, lsl #2
 
3587
+       ldr     tos, [r3, #32]
 
3588
+       ldr     pc, [itos_table, r1, lsl #2]
 
3589
+
 
3590
+@ --- do_ldc2_w_itos -------------------------------------------------
 
3591
+       OpcodeEntry     do_ldc2_w_itos
 
3592
+       PUSH(tos)
 
3593
+@ --- do_ldc2_w_vtos -------------------------------------------------
 
3594
+       OpcodeEntry     do_ldc2_w_vtos
 
3595
+       ldr     r3, [istate, #ISTATE_JAVA_METHOD]
 
3596
+       ldrb    r0, [java_pc, #1]
 
3597
+       ldrb    r2, [java_pc, #2]
 
3598
+
 
3599
+       ldr     ip, [r3, #12]
 
3600
+       orr     r2, r2, r0, asl #8
 
3601
+       ldr     r1, [ip, #8]
 
3602
+       add     r1, r1, #12
 
3603
+       ldrb    r3, [r1, r2]
 
3604
+
 
3605
+       cmp     r3, #5
 
3606
+       cmpne   r3, #6
 
3607
+       bne     .exit_asm
 
3608
+
 
3609
+       ldrb    r3, [java_pc, #3]!
 
3610
+       add     ip, ip, r2, lsl #2
 
3611
+       add     ip, ip, #32
 
3612
+       ldmia   ip, {r0, r1}
 
3613
+       PUSH(r1)
 
3614
+       ldr     pc, [itos_table, r3, lsl #2]
 
3615
+       
 
3616
+@ --- do_fcmpl_itos_vfp -------------------------------------------------
 
3617
+       OpcodeEntry     do_fcmpl_itos_vfp
 
3618
+       PUSH(tos)
 
3619
+@ --- do_fcmpl_vtos_vfp -------------------------------------------------
 
3620
+       OpcodeEntry     do_fcmpl_vtos_vfp
 
3621
+       flds    s14, [java_stack, #8]
 
3622
+       flds    s15, [java_stack, #4]
 
3623
+       fcmpes  s14, s15
 
3624
+       add     java_stack, java_stack, #8
 
3625
+       fmstat
 
3626
+       mvnmi   tos, #0
 
3627
+       bmi     do_fcmpl_1_itos
 
3628
+       movgt   tos, #1
 
3629
+       bgt     do_fcmpl_1_itos
 
3630
+       fcmps   s14, s15
 
3631
+       fmstat
 
3632
+       moveq   tos, #0
 
3633
+       mvnne   tos, #0
 
3634
+do_fcmpl_1_itos:
 
3635
+       ldrb    r3, [java_pc, #1]!
 
3636
+       ldr     r2, [itos_table, r3, asl #2]
 
3637
+       mov     pc, r2
 
3638
+
 
3639
+@ --- do_fcmpg_itos_vfp -------------------------------------------------
 
3640
+       OpcodeEntry     do_fcmpg_itos_vfp
 
3641
+       PUSH(tos)
 
3642
+@ --- do_fcmpg_vtos_vfp -------------------------------------------------
 
3643
+       OpcodeEntry     do_fcmpg_vtos_vfp
 
3644
+       flds    s14, [java_stack, #8]
 
3645
+       flds    s15, [java_stack, #4]
 
3646
+       fcmpes  s14, s15
 
3647
+       add     java_stack, java_stack, #8
 
3648
+       fmstat
 
3649
+       mvnmi   tos, #0
 
3650
+       bmi     do_fcmpg_1_itos
 
3651
+       movgt   tos, #1
 
3652
+       bgt     do_fcmpg_1_itos
 
3653
+       fcmps   s14, s15
 
3654
+       fmstat
 
3655
+       moveq   tos, #0
 
3656
+       movne   tos, #1
 
3657
+do_fcmpg_1_itos:
 
3658
+       ldrb    r3, [java_pc, #1]!
 
3659
+       ldr     r2, [itos_table, r3, asl #2]
 
3660
+       mov     pc, r2
 
3661
+
 
3662
+@ --- do_tableswitch_vtos_unsafe -------------------------------------------------
 
3663
+       OpcodeEntry     do_tableswitch_vtos_unsafe
 
3664
+do_tableswitch_vtos_unsafe:
 
3665
+       POP(tos)
 
3666
+@ --- do_tableswitch_itos_unsafe -------------------------------------------------
 
3667
+       OpcodeEntry     do_tableswitch_itos_unsafe
 
3668
+do_tableswitch_itos_unsafe:
 
3669
+       mov     a2, tos
 
3670
+        bic     a1, java_pc, #3
 
3671
+        ldr     a4,[a1,#8]
 
3672
+@       BYTESEX_REVERSE a3, a4, a3
 
3673
+
 
3674
+       eor     a3, a4, a4, ror #16
 
3675
+       bic     a3, a3, #0xff0000
 
3676
+       mov     a4, a4, ror #8
 
3677
+       eor     a3, a4, a3, lsr #8
 
3678
+
 
3679
+        ldr     a4,[a1,#12]
 
3680
+@       BYTESEX_REVERSE a4, a4, ip
 
3681
+
 
3682
+       eor     ip, a4, a4, ror #16
 
3683
+       bic     ip, ip, #0xff0000
 
3684
+       mov     a4, a4, ror #8
 
3685
+       eor     a4, a4, ip, lsr #8
 
3686
+
 
3687
+        sub     a2,a2,a3
 
3688
+        sub     a4,a4,a3
 
3689
+        cmp     a4,a2
 
3690
+        ldrcc   a1,[a1,#4]
 
3691
+        addcs   a1,a1,a2,LSL #2
 
3692
+        ldrcs   a1,[a1,#16]
 
3693
+@       BYTESEX_REVERSE a1, a1, a4
 
3694
+
 
3695
+       eor     a4, a1, a1, ror #16
 
3696
+       bic     a4, a4, #0xff0000
 
3697
+       mov     a1, a1, ror #8
 
3698
+       eors    ip, a1, a4, lsr #8
 
3699
+
 
3700
+       ldrb    r2, [java_pc, ip]!
 
3701
+       ldr     pc, [vtos_table, r2, lsl #2]
 
3702
+
 
3703
+@ --- do_lookupswitch_vtos_unsafe -------------------------------------------------
 
3704
+       OpcodeEntry     do_lookupswitch_vtos_unsafe
 
3705
+do_lookupswitch_vtos_unsafe:
 
3706
+       POP(tos)
 
3707
+@ --- do_lookupswitch_itos_unsafe -------------------------------------------------
 
3708
+       OpcodeEntry     do_lookupswitch_itos_unsafe
 
3709
+do_lookupswitch_itos_unsafe:
 
3710
+       mov     a2, tos
 
3711
+        bic     a1, java_pc, #3
 
3712
+@       BYTESEX_REVERSE a2, a2, ip
 
3713
+
 
3714
+       eor     ip, a2, a2, ror #16
 
3715
+       bic     ip, ip, #0xff0000
 
3716
+       mov     a2, a2, ror #8
 
3717
+       eor     a2, a2, ip, lsr #8
 
3718
+
 
3719
+        ldr     a3,[a1,#8]
 
3720
+@       BYTESEX_REVERSE a3, a3, ip
 
3721
+
 
3722
+       eor     ip, a3, a3, ror #16
 
3723
+       bic     ip, ip, #0xff0000
 
3724
+       mov     a3, a3, ror #8
 
3725
+       eor     a3, a3, ip, lsr #8
 
3726
+
 
3727
+        subs    a4,a3,#1
 
3728
+        bmi     .lookupswitch1_unsafe
 
3729
+        add     a1, a1, #4
 
3730
+.lookupswitch0_unsafe:
 
3731
+        ldr      a3,[a1,#8]!
 
3732
+        cmp     a3,a2
 
3733
+        beq     .lookupswitch2_unsafe
 
3734
+        subs    a4,a4,#1
 
3735
+        bpl     .lookupswitch0_unsafe
 
3736
+.lookupswitch1_unsafe:
 
3737
+        bic     a1, java_pc, #3
 
3738
+.lookupswitch2_unsafe:
 
3739
+        ldr      a2,[a1,#4]
 
3740
+@       BYTESEX_REVERSE a2, a2, ip
 
3741
+
 
3742
+       eor     ip, a2, a2, ror #16
 
3743
+       bic     ip, ip, #0xff0000
 
3744
+       mov     a2, a2, ror #8
 
3745
+       eors    ip, a2, ip, lsr #8
 
3746
+
 
3747
+       ldrb    r2, [java_pc, ip]!
 
3748
+       ldr     pc, [vtos_table, r2, lsl #2]
 
3749
+
 
3750
+@---- DONE TO HERE ---
 
3751
+
 
3752
+@ --- run_opt_exit -------------------------------------------------
 
3753
+       OpcodeEntry     run_opt_exit
 
3754
+.dtos_exit_dastore:
 
3755
+       sub     java_pc, java_pc, #1
 
3756
+       sub     java_stack, java_stack, #8
 
3757
+       PUSHD   d0
 
3758
+       b       .exit_asm
 
3759
+.itos_exit_lastore:
 
3760
+       sub     java_pc, java_pc, #1
 
3761
+       sub     java_stack, java_stack, #12
 
3762
+       PUSH(tos)
 
3763
+       b       .exit_asm
 
3764
+
 
3765
+.itos_exit_iastore:
 
3766
+       sub     java_pc, java_pc, #1
 
3767
+       sub     java_stack, java_stack, #8
 
3768
+       PUSH(tos)
 
3769
+       b       .exit_asm
 
3770
+
 
3771
+.itos_exit_iaload:
 
3772
+.itos_exit_laload:
 
3773
+       sub     java_pc, java_pc, #1
 
3774
+       sub     java_stack, java_stack, #4
 
3775
+       PUSH(tos)
 
3776
+       b       .exit_asm
 
3777
+
 
3778
+.exit_tableswitch:
 
3779
+       sub     java_stack, java_stack, #4
 
3780
+       b       .exit_asm
 
3781
+.exit_branch1op:
 
3782
+       sub     java_stack, java_stack, #4
 
3783
+       sub     java_pc, java_pc, ip
 
3784
+       b       .exit_asm
 
3785
+.exit_branch:
 
3786
+       sub     java_stack, java_stack, #8
 
3787
+       sub     java_pc, java_pc, ip
 
3788
+       b       .exit_asm
 
3789
+.itos_exit_goto:
 
3790
+       PUSH(tos)
 
3791
+.vtos_exit_goto:
 
3792
+       sub     java_pc, java_pc, ip
 
3793
+       b       .exit_asm
 
3794
+
 
3795
+.exit_getstatic:
 
3796
+       sub     java_pc, java_pc, #3
 
3797
+       b       .exit_asm
 
3798
+.exit_putfield_3:
 
3799
+       PUSH(r3)
 
3800
+       PUSH(r1)
 
3801
+       PUSH(tos)
 
3802
+       sub     java_pc, java_pc, #3
 
3803
+       b       .exit_asm
 
3804
+.exit_putfield_2:
 
3805
+       PUSH(r3)
 
3806
+.exit_putstatic_1:
 
3807
+.exit_putfield_1:
 
3808
+.exit_getfield:
 
3809
+       PUSH(tos)
 
3810
+       sub     java_pc, java_pc, #3
 
3811
+       b       .exit_asm
 
3812
+.lrem_0:
 
3813
+.ldiv_0:
 
3814
+       sub     java_stack, java_stack, #16
 
3815
+       b       .exit_asm
 
3816
+.remc_0:
 
3817
+.divc_0:
 
3818
+       sub     java_stack, java_stack, #4
 
3819
+       PUSH(tos)
 
3820
+       sub     java_pc, java_pc, #1    @ undo autoincrement
 
3821
+.exit_asm:
 
3822
+       str     java_pc, [istate, #ISTATE_JAVA_PC]
 
3823
+       str     java_stack, [istate, #ISTATE_JAVA_STACK]
 
3824
+       mov     r0, #0
 
3825
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 
3826
+.exit_arraylength:
 
3827
+       PUSH(tos)
 
3828
+       sub     java_pc, java_pc, #1
 
3829
+       b       .exit_asm
 
3830
+
 
3831
+do_aastore_itos:
 
3832
+@do_ireturn_itos:
 
3833
+@do_lreturn_itos:
 
3834
+@do_freturn_itos:
 
3835
+@do_dreturn_itos:
 
3836
+@do_areturn_itos:
 
3837
+@do_return_itos:
 
3838
+@do_putstatic_itos:
 
3839
+@do_putfield_itos:
 
3840
+@do_invokestatic_itos:
 
3841
+@do_invokevirtual_itos:
 
3842
+@do_invokespecial_itos:
 
3843
+do_invokeinterface_itos:
 
3844
+do_xxxunusedxxx_itos:
 
3845
+do_new_itos:
 
3846
+do_newarray_itos:
 
3847
+do_anewarray_itos:
 
3848
+do_athrow_itos:
 
3849
+do_checkcast_itos:
 
3850
+do_instanceof_itos:
 
3851
+do_monitorenter_itos:
 
3852
+do_monitorexit_itos:
 
3853
+do_wide_itos:
 
3854
+do_multianewarray_itos:
 
3855
+do_goto_w_itos:
 
3856
+do_jsr_itos:
 
3857
+do_ret_itos:
 
3858
+do_jsr_w_itos:
 
3859
+do_breakpoint_itos:
 
3860
+do_exit_asm_itos:
 
3861
+do_ifeq_itos:
 
3862
+do_ifne_itos:
 
3863
+do_iflt_itos:
 
3864
+do_ifge_itos:
 
3865
+do_ifgt_itos:
 
3866
+do_ifle_itos:
 
3867
+do_if_icmpeq_itos:
 
3868
+do_if_icmpne_itos:
 
3869
+do_if_icmplt_itos:
 
3870
+do_if_icmpge_itos:
 
3871
+do_if_icmpgt_itos:
 
3872
+do_if_icmple_itos:
 
3873
+do_if_acmpeq_itos:
 
3874
+do_if_acmpne_itos:
 
3875
+do_goto_itos:
 
3876
+do_tableswitch_itos:
 
3877
+do_lookupswitch_itos:
 
3878
+do_ifnull_itos:
 
3879
+do_ifnonnull_itos:
 
3880
+       PUSH(tos)
 
3881
+do_aastore_vtos:
 
3882
+@do_ireturn_vtos:
 
3883
+@do_lreturn_vtos:
 
3884
+@do_freturn_vtos:
 
3885
+@do_dreturn_vtos:
 
3886
+@do_areturn_vtos:
 
3887
+@do_return_vtos:
 
3888
+@do_putstatic_vtos:
 
3889
+@do_putfield_vtos:
 
3890
+@do_invokestatic_vtos:
 
3891
+@do_invokevirtual_vtos:
 
3892
+@do_invokespecial_vtos:
 
3893
+do_invokeinterface_vtos:
 
3894
+do_xxxunusedxxx_vtos:
 
3895
+do_new_vtos:
 
3896
+do_newarray_vtos:
 
3897
+do_anewarray_vtos:
 
3898
+do_athrow_vtos:
 
3899
+do_checkcast_vtos:
 
3900
+do_instanceof_vtos:
 
3901
+do_monitorenter_vtos:
 
3902
+do_monitorexit_vtos:
 
3903
+do_wide_vtos:
 
3904
+do_multianewarray_vtos:
 
3905
+do_goto_w_vtos:
 
3906
+do_jsr_vtos:
 
3907
+do_ret_vtos:
 
3908
+do_jsr_w_vtos:
 
3909
+do_breakpoint_vtos:
 
3910
+do_exit_asm_vtos:
 
3911
+do_ifeq_vtos:
 
3912
+do_ifne_vtos:
 
3913
+do_iflt_vtos:
 
3914
+do_ifge_vtos:
 
3915
+do_ifgt_vtos:
 
3916
+do_ifle_vtos:
 
3917
+do_if_icmpeq_vtos:
 
3918
+do_if_icmpne_vtos:
 
3919
+do_if_icmplt_vtos:
 
3920
+do_if_icmpge_vtos:
 
3921
+do_if_icmpgt_vtos:
 
3922
+do_if_icmple_vtos:
 
3923
+do_if_acmpeq_vtos:
 
3924
+do_if_acmpne_vtos:
 
3925
+do_goto_vtos:
 
3926
+do_tableswitch_vtos:
 
3927
+do_lookupswitch_vtos:
 
3928
+do_ifnull_vtos:
 
3929
+do_ifnonnull_vtos:
 
3930
+       str     java_pc, [istate, #ISTATE_JAVA_PC]
 
3931
+       str     java_stack, [istate, #ISTATE_JAVA_STACK]
 
3932
+       mov     r0, #0
 
3933
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 
3934
+
 
3935
+@ ----- The Bytecode Implementations --------------------------------------
 
3936
+
 
3937
+@ --- do_irem -------------------------------------------------
 
3938
+       OpcodeEntry     do_irem
 
3939
+do_irem_vtos:
 
3940
+       POP(tos)
 
3941
+do_irem_itos:
 
3942
+       POP(r1)
 
3943
+       ldrb    lr, [r8, #1]!
 
3944
+       adr     r3, .rem_table
 
3945
+       cmp     r0, #0x20
 
3946
+       ldrcc   r3, [r3, r0, lsl #2]
 
3947
+       ldr     lr, [vtos_table, lr, asl #2]
 
3948
+       movcc   pc, r3
 
3949
+
 
3950
+        ands    a4, a1, #0x80000000
 
3951
+        rsbmi   a1, a1, #0
 
3952
+        eors    ip, a4, a2, ASR #32
 
3953
+        rsbcs   a2, a2, #0
 
3954
+       movs    a3, a1
 
3955
+.r_loop:
 
3956
+        cmp     a3, a2, LSR #8
 
3957
+        movls   a3, a3, LSL #8
 
3958
+        blo     .r_loop
 
3959
+        cmp     a3, a2, LSR #1
 
3960
+        bhi     .r_jump7
 
3961
+        cmp     a3, a2, LSR #2
 
3962
+        bhi     .r_jump6
 
3963
+        cmp     a3, a2, LSR #3
 
3964
+        bhi     .r_jump5
 
3965
+        cmp     a3, a2, LSR #4
 
3966
+        bhi     .r_jump4
 
3967
+        cmp     a3, a2, LSR #5
 
3968
+        bhi     .r_jump3
 
3969
+        cmp     a3, a2, LSR #6
 
3970
+        bhi     .r_jump2
 
3971
+        cmp     a3, a2, LSR #7
 
3972
+        bhi     .r_jump1
 
3973
+.r_loop2:
 
3974
+@ not executed when falling into .r_loop2
 
3975
+        movhi   a3, a3, LSR #8
 
3976
+        cmp     a2, a3, LSL #7
 
3977
+        adc     a4, a4, a4
 
3978
+        subcs   a2, a2, a3, LSL #7
 
3979
+        cmp     a2, a3, LSL #6
 
3980
+.r_jump1:
 
3981
+        adc     a4, a4, a4
 
3982
+        subcs   a2, a2, a3, LSL #6
 
3983
+        cmp     a2, a3, LSL #5
 
3984
+.r_jump2:
 
3985
+        adc     a4, a4, a4
 
3986
+        subcs   a2, a2, a3, LSL #5
 
3987
+        cmp     a2, a3, LSL #4
 
3988
+.r_jump3:
 
3989
+        adc     a4, a4, a4
 
3990
+        subcs   a2, a2, a3, LSL #4
 
3991
+        cmp     a2, a3, LSL #3
 
3992
+.r_jump4:
 
3993
+        adc     a4, a4, a4
 
3994
+        subcs   a2, a2, a3, LSL #3
 
3995
+        cmp     a2, a3, LSL #2
 
3996
+.r_jump5:
 
3997
+        adc     a4, a4, a4
 
3998
+        subcs   a2, a2, a3, LSL #2
 
3999
+        cmp     a2, a3, LSL #1
 
4000
+.r_jump6:
 
4001
+        adc     a4, a4, a4
 
4002
+        subcs   a2, a2, a3, LSL #1
 
4003
+.r_jump7:
 
4004
+        cmp     a2, a3
 
4005
+        adc     a4, a4, a4
 
4006
+        subcs   a2, a2, a3
 
4007
+        cmp     a3, a1
 
4008
+        bne     .r_loop2
 
4009
+        movs    ip, ip, lsl #1
 
4010
+       rsbmi   a2, a2, #0
 
4011
+       str     a2, [java_stack], #-4
 
4012
+       mov     pc, lr
 
4013
+
 
4014
+.rem_table:
 
4015
+       .word   .remc_0
 
4016
+       .word   .remc_1
 
4017
+       .word   .remc_2
 
4018
+       .word   .remc_3
 
4019
+       .word   .remc_4
 
4020
+       .word   .remc_5
 
4021
+       .word   .remc_6
 
4022
+       .word   .remc_7
 
4023
+       .word   .remc_8
 
4024
+       .word   .remc_9
 
4025
+       .word   .remc_10
 
4026
+       .word   .remc_11
 
4027
+       .word   .remc_12
 
4028
+       .word   .remc_13
 
4029
+       .word   .remc_14
 
4030
+       .word   .remc_15
 
4031
+       .word   .remc_16
 
4032
+       .word   .remc_17
 
4033
+       .word   .remc_18
 
4034
+       .word   .remc_19
 
4035
+       .word   .remc_20
 
4036
+       .word   .remc_21
 
4037
+       .word   .remc_22
 
4038
+       .word   .remc_23
 
4039
+       .word   .remc_24
 
4040
+       .word   .remc_25
 
4041
+       .word   .remc_26
 
4042
+       .word   .remc_27
 
4043
+       .word   .remc_28
 
4044
+       .word   .remc_29
 
4045
+       .word   .remc_30
 
4046
+       .word   .remc_31
 
4047
+
 
4048
+.remc_1:
 
4049
+       mov     a1, #0
 
4050
+       str     a1, [java_stack], #-4
 
4051
+       mov     pc, lr
 
4052
+.remc_2:
 
4053
+       add     ip, a2, a2, lsr #31
 
4054
+        mov    a1, ip, asr #1
 
4055
+       sub     a1, a2, a1, lsl #1
 
4056
+       str     a1, [java_stack], #-4
 
4057
+       mov     pc, lr
 
4058
+.remc_3:
 
4059
+       ldr     a1, .dc_3
 
4060
+        smull  a3, a4, a2, a1
 
4061
+        sub    a1, a4, a2, asr #31
 
4062
+       add     ip, a1, a1, lsl #1
 
4063
+       sub     a1, a2, ip
 
4064
+       str     a1, [java_stack], #-4
 
4065
+       mov     pc, lr
 
4066
+.remc_4:
 
4067
+       movs    ip, a2
 
4068
+        addmi  ip, ip, #3
 
4069
+        mov    a1, ip, asr #2
 
4070
+       sub     a1, a2, a1, lsl #2
 
4071
+       str     a1, [java_stack], #-4
 
4072
+       mov     pc, lr
 
4073
+.remc_5:
 
4074
+       ldr     a1, .dc_5
 
4075
+        smull  a3, a4, a2, a1
 
4076
+        mov    ip, a2, asr #31
 
4077
+        rsb    a1, ip, a4, asr #1
 
4078
+       add     ip, a1, a1, lsl #2
 
4079
+       sub     a1, a2, ip
 
4080
+       str     a1, [java_stack], #-4
 
4081
+       mov     pc, lr
 
4082
+.remc_6:
 
4083
+       ldr     a1, .dc_6
 
4084
+        smull  a3, a4, a2, a1
 
4085
+        sub    a1, a4, a2, asr #31
 
4086
+       add     ip, a1, a1, lsl #1
 
4087
+       sub     a1, a2, ip, lsl #1
 
4088
+       str     a1, [java_stack], #-4
 
4089
+       mov     pc, lr
 
4090
+.remc_7:
 
4091
+       ldr     a1, .dc_7
 
4092
+        smull  a3, a4, a2, a1
 
4093
+        mov    a1, a2, asr #31
 
4094
+        add    a3, a2, a4
 
4095
+        rsb    a1, a1, a3, asr #2
 
4096
+       rsb     ip, a1, a1, lsl #3
 
4097
+       sub     a1, a2, ip
 
4098
+       str     a1, [java_stack], #-4
 
4099
+       mov     pc, lr
 
4100
+.remc_8:
 
4101
+       movs    ip, a2
 
4102
+        addmi  ip, ip, #7
 
4103
+        mov    a1, ip, asr #3
 
4104
+       sub     a1, a2, a1, lsl #3
 
4105
+       str     a1, [java_stack], #-4
 
4106
+       mov     pc, lr
 
4107
+.remc_9:
 
4108
+       ldr     a1, .dc_9
 
4109
+        smull  a3, a4, a2, a1
 
4110
+        mov    ip, a2, asr #31
 
4111
+        rsb    a1, ip, a4, asr #1
 
4112
+       add     ip, a1, a1, lsl #3
 
4113
+       sub     a1, a2, ip
 
4114
+       str     a1, [java_stack], #-4
 
4115
+       mov     pc, lr
 
4116
+.remc_10:
 
4117
+       ldr     a1, .dc_10
 
4118
+        smull  a3, a4, a2, a1
 
4119
+        mov    ip, a2, asr #31
 
4120
+        rsb    a1, ip, a4, asr #2
 
4121
+       add     ip, a1, a1, lsl #2
 
4122
+       sub     a1, a2, ip, lsl #1
 
4123
+       str     a1, [java_stack], #-4
 
4124
+       mov     pc, lr
 
4125
+.remc_11:
 
4126
+       ldr     a1, .dc_11
 
4127
+        smull  a3, a4, a2, a1
 
4128
+        mov    ip, a2, asr #31
 
4129
+        rsb    a1, ip, a4, asr #1
 
4130
+       add     ip, a1, a1, lsl #2
 
4131
+       add     ip, a1, ip, lsl #1
 
4132
+       sub     a1, a2, ip
 
4133
+       str     a1, [java_stack], #-4
 
4134
+       mov     pc, lr
 
4135
+.remc_12:
 
4136
+       ldr     a1, .dc_12
 
4137
+        smull  a3, a4, a2, a1
 
4138
+        mov    ip, a2, asr #31
 
4139
+        rsb    a1, ip, a4, asr #1
 
4140
+       add     ip, a1, a1, lsl #1
 
4141
+       sub     a1, a2, ip, lsl #2
 
4142
+       str     a1, [java_stack], #-4
 
4143
+       mov     pc, lr
 
4144
+.remc_13:
 
4145
+       ldr     a1, .dc_13
 
4146
+        smull  a3, a4, a2, a1
 
4147
+        mov    ip, a2, asr #31
 
4148
+        rsb    a1, ip, a4, asr #2
 
4149
+       add     ip, a1, a1, lsl #1
 
4150
+       add     ip, a1, ip, lsl #2
 
4151
+       sub     a1, a2, ip
 
4152
+       str     a1, [java_stack], #-4
 
4153
+       mov     pc, lr
 
4154
+.remc_14:
 
4155
+       ldr     a1, .dc_14
 
4156
+        smull  a3, a4, a2, a1
 
4157
+        mov    a1, a2, asr #31
 
4158
+        add    a3, a2, a4
 
4159
+        rsb    a1, a1, a3, asr #3
 
4160
+       rsb     ip, a1, a1, lsl #3
 
4161
+       sub     a1, a2, ip, lsl #1
 
4162
+       str     a1, [java_stack], #-4
 
4163
+       mov     pc, lr
 
4164
+.remc_15:
 
4165
+       ldr     a1, .dc_15
 
4166
+        smull  a3, a4, a2, a1
 
4167
+        mov    a1, a2, asr #31
 
4168
+        add    a3, a2, a4
 
4169
+        rsb    a1, a1, a3, asr #3
 
4170
+       rsb     ip, a1, a1, lsl #4
 
4171
+       sub     a1, a2, ip
 
4172
+       str     a1, [java_stack], #-4
 
4173
+       mov     pc, lr
 
4174
+.remc_16:
 
4175
+       movs    ip, a2
 
4176
+        addmi  ip, ip, #15
 
4177
+        mov    a1, ip, asr #4
 
4178
+       sub     a1, a2, a1, lsl #4
 
4179
+       str     a1, [java_stack], #-4
 
4180
+       mov     pc, lr
 
4181
+.remc_17:
 
4182
+       ldr     a1, .dc_17
 
4183
+        smull  a3, a4, a2, a1
 
4184
+        mov    ip, a2, asr #31
 
4185
+        rsb    a1, ip, a4, asr #3
 
4186
+       add     ip, a1, a1, lsl #4
 
4187
+       sub     a1, a2, ip
 
4188
+       str     a1, [java_stack], #-4
 
4189
+       mov     pc, lr
 
4190
+.remc_18:
 
4191
+       ldr     a1, .dc_18
 
4192
+        smull  a3, a4, a2, a1
 
4193
+        mov    ip, a2, asr #31
 
4194
+        rsb    a1, ip, a4, asr #2
 
4195
+       add     ip, a1, a1, lsl #3
 
4196
+       sub     a1, a2, ip, lsl #1
 
4197
+       str     a1, [java_stack], #-4
 
4198
+       mov     pc, lr
 
4199
+.remc_19:
 
4200
+       ldr     a1, .dc_19
 
4201
+        smull  a3, a4, a2, a1
 
4202
+        mov    ip, a2, asr #31
 
4203
+        rsb    a1, ip, a4, asr #3
 
4204
+       add     ip, a1, a1, lsl #3
 
4205
+       add     ip, a1, ip, lsl #1
 
4206
+       sub     a1, a2, ip
 
4207
+       str     a1, [java_stack], #-4
 
4208
+       mov     pc, lr
 
4209
+.remc_20:
 
4210
+       ldr     a1, .dc_20
 
4211
+        smull  a3, a4, a2, a1
 
4212
+        mov    ip, a2, asr #31
 
4213
+        rsb    a1, ip, a4, asr #3
 
4214
+       add     ip, a1, a1, lsl #2
 
4215
+       sub     a1, a2, ip, lsl #2
 
4216
+       str     a1, [java_stack], #-4
 
4217
+       mov     pc, lr
 
4218
+.remc_21:
 
4219
+       ldr     a1, .dc_21
 
4220
+        smull  a3, a4, a2, a1
 
4221
+        mov    ip, a2, asr #31
 
4222
+        rsb    a1, ip, a4, asr #2
 
4223
+       add     ip, a1, a1, lsl #1
 
4224
+       rsb     ip, ip, ip, lsl #3
 
4225
+       sub     a1, a2, ip
 
4226
+       str     a1, [java_stack], #-4
 
4227
+       mov     pc, lr
 
4228
+.remc_22:
 
4229
+       ldr     a1, .dc_22
 
4230
+        smull  a3, a4, a2, a1
 
4231
+        mov    ip, a2, asr #31
 
4232
+        rsb    a1, ip, a4, asr #2
 
4233
+       add     ip, a1, a1, lsl #2
 
4234
+       add     ip, a1, ip, lsl #1
 
4235
+       sub     a1, a2, ip, lsl #1
 
4236
+       str     a1, [java_stack], #-4
 
4237
+       mov     pc, lr
 
4238
+.remc_23:
 
4239
+       ldr     a1, .dc_23
 
4240
+        smull  a3, a4, a2, a1
 
4241
+        mov    a1, a2, asr #31
 
4242
+        add    a3, a2, a4
 
4243
+        rsb    a1, a1, a3, asr #4
 
4244
+       add     ip, a1, a1, lsl #1
 
4245
+       rsb     ip, a1, ip, lsl #3
 
4246
+       sub     a1, a2, ip
 
4247
+       str     a1, [java_stack], #-4
 
4248
+       mov     pc, lr
 
4249
+.remc_24:
 
4250
+       ldr     a1, .dc_24
 
4251
+        smull  a3, a4, a2, a1
 
4252
+        mov    ip, a2, asr #31
 
4253
+        rsb    a1, ip, a4, asr #2
 
4254
+       add     ip, a1, a1, lsl #1
 
4255
+       sub     a1, a2, ip, lsl #3
 
4256
+       str     a1, [java_stack], #-4
 
4257
+       mov     pc, lr
 
4258
+.remc_25:
 
4259
+       ldr     a1, .dc_25
 
4260
+        smull  a3, a4, a2, a1
 
4261
+        mov    ip, a2, asr #31
 
4262
+        rsb    a1, ip, a4, asr #3
 
4263
+       add     ip, a1, a1, lsl #2
 
4264
+       add     ip, ip, ip, lsl #2
 
4265
+       sub     a1, a2, ip
 
4266
+       str     a1, [java_stack], #-4
 
4267
+       mov     pc, lr
 
4268
+.remc_26:
 
4269
+       ldr     a1, .dc_26
 
4270
+        smull  a3, a4, a2, a1
 
4271
+        mov    ip, a2, asr #31
 
4272
+        rsb    a1, ip, a4, asr #3
 
4273
+       add     ip, a1, a1, lsl #1
 
4274
+       add     ip, a1, ip, lsl #2
 
4275
+       sub     a1, a2, ip, lsl #1
 
4276
+       str     a1, [java_stack], #-4
 
4277
+       mov     pc, lr
 
4278
+.remc_27:
 
4279
+       ldr     a1, .dc_27
 
4280
+        smull  a3, a4, a2, a1
 
4281
+        mov    ip, a2, asr #31
 
4282
+        rsb    a1, ip, a4, asr #3
 
4283
+       add     ip, a1, a1, lsl #1
 
4284
+       add     ip, ip, ip, lsl #3
 
4285
+       sub     a1, a2, ip
 
4286
+       str     a1, [java_stack], #-4
 
4287
+       mov     pc, lr
 
4288
+.remc_28:
 
4289
+       ldr     a1, .dc_28
 
4290
+        smull  a3, a4, a2, a1
 
4291
+        mov    a1, a2, asr #31
 
4292
+        add    a3, a2, a4
 
4293
+        rsb    a1, a1, a3, asr #4
 
4294
+       rsb     ip, a1, a1, lsl #3
 
4295
+       sub     a1, a2, ip, lsl #2
 
4296
+       str     a1, [java_stack], #-4
 
4297
+       mov     pc, lr
 
4298
+.remc_29:
 
4299
+       ldr     a1, .dc_29
 
4300
+        smull  a3, a4, a2, a1
 
4301
+        mov    a1, a2, asr #31
 
4302
+        add    a3, a2, a4
 
4303
+        rsb    a1, a1, a3, asr #4
 
4304
+       rsb     ip, a1, a1, lsl #3
 
4305
+       add     ip, a1, ip, lsl #2
 
4306
+       sub     a1, a2, ip
 
4307
+       str     a1, [java_stack], #-4
 
4308
+       mov     pc, lr
 
4309
+.remc_30:
 
4310
+       ldr     a1, .dc_30
 
4311
+        smull  a3, a4, a2, a1
 
4312
+        mov    a1, a2, asr #31
 
4313
+        add    a3, a2, a4
 
4314
+        rsb    a1, a1, a3, asr #4
 
4315
+       rsb     ip, a1, a1, lsl #4
 
4316
+       sub     a1, a2, ip, lsl #1
 
4317
+       str     a1, [java_stack], #-4
 
4318
+       mov     pc, lr
 
4319
+.remc_31:
 
4320
+       ldr     a1, .dc_31
 
4321
+        smull  a3, a4, a2, a1
 
4322
+        mov    a1, a2, asr #31
 
4323
+        add    a3, a2, a4
 
4324
+        rsb    a1, a1, a3, asr #4
 
4325
+       rsb     ip, a1, a1, lsl #5
 
4326
+       sub     a1, a2, ip
 
4327
+       str     a1, [java_stack], #-4
 
4328
+       mov     pc, lr
 
4329
+
 
4330
+@ --- do_idiv -------------------------------------------------
 
4331
+       OpcodeEntry     do_idiv
 
4332
+do_idiv_vtos:
 
4333
+       POP(tos)
 
4334
+do_idiv_itos:
 
4335
+       POP(r1)
 
4336
+       ldrb    lr, [r8, #1]!
 
4337
+       adr     r3, .div_table
 
4338
+@      add     r3, vtos_table, #div_table
 
4339
+       cmp     r0, #0x20
 
4340
+       ldrcc   r3, [r3, r0, lsl #2]
 
4341
+       ldr     lr, [vtos_table, lr, asl #2]
 
4342
+       movcc   pc, r3
 
4343
+
 
4344
+        ands    a4, a1, #0x80000000
 
4345
+        rsbmi   a1, a1, #0
 
4346
+        eors    ip, a4, a2, ASR #32
 
4347
+        rsbcs   a2, a2, #0
 
4348
+       movs    a3, a1
 
4349
+.s_loop:
 
4350
+        cmp     a3, a2, LSR #8
 
4351
+        movls   a3, a3, LSL #8
 
4352
+        blo     .s_loop
 
4353
+        cmp     a3, a2, LSR #1
 
4354
+        bhi     .s_jump7
 
4355
+        cmp     a3, a2, LSR #2
 
4356
+        bhi     .s_jump6
 
4357
+        cmp     a3, a2, LSR #3
 
4358
+        bhi     .s_jump5
 
4359
+        cmp     a3, a2, LSR #4
 
4360
+        bhi     .s_jump4
 
4361
+        cmp     a3, a2, LSR #5
 
4362
+        bhi     .s_jump3
 
4363
+        cmp     a3, a2, LSR #6
 
4364
+        bhi     .s_jump2
 
4365
+        cmp     a3, a2, LSR #7
 
4366
+        bhi     .s_jump1
 
4367
+.s_loop2:
 
4368
+@ not executed when falling into .s_loop2
 
4369
+        movhi   a3, a3, LSR #8
 
4370
+        cmp     a2, a3, LSL #7
 
4371
+        adc     a4, a4, a4
 
4372
+        subcs   a2, a2, a3, LSL #7
 
4373
+        cmp     a2, a3, LSL #6
 
4374
+.s_jump1:
 
4375
+        adc     a4, a4, a4
 
4376
+        subcs   a2, a2, a3, LSL #6
 
4377
+        cmp     a2, a3, LSL #5
 
4378
+.s_jump2:
 
4379
+        adc     a4, a4, a4
 
4380
+        subcs   a2, a2, a3, LSL #5
 
4381
+        cmp     a2, a3, LSL #4
 
4382
+.s_jump3:
 
4383
+        adc     a4, a4, a4
 
4384
+        subcs   a2, a2, a3, LSL #4
 
4385
+        cmp     a2, a3, LSL #3
 
4386
+.s_jump4:
 
4387
+        adc     a4, a4, a4
 
4388
+        subcs   a2, a2, a3, LSL #3
 
4389
+        cmp     a2, a3, LSL #2
 
4390
+.s_jump5:
 
4391
+        adc     a4, a4, a4
 
4392
+        subcs   a2, a2, a3, LSL #2
 
4393
+        cmp     a2, a3, LSL #1
 
4394
+.s_jump6:
 
4395
+        adc     a4, a4, a4
 
4396
+        subcs   a2, a2, a3, LSL #1
 
4397
+.s_jump7:
 
4398
+        cmp     a2, a3
 
4399
+        adc     a4, a4, a4
 
4400
+        subcs   a2, a2, a3
 
4401
+        cmp     a3, a1
 
4402
+        bne     .s_loop2
 
4403
+        movs    ip, ip, lsl #1
 
4404
+       rsbcs   a4, a4, #0
 
4405
+       str     a4, [java_stack], #-4
 
4406
+       mov     pc, lr
 
4407
+
 
4408
+.div_table:
 
4409
+       .word   .divc_0
 
4410
+       .word   .divc_1
 
4411
+       .word   .divc_2
 
4412
+       .word   .divc_3
 
4413
+       .word   .divc_4
 
4414
+       .word   .divc_5
 
4415
+       .word   .divc_6
 
4416
+       .word   .divc_7
 
4417
+       .word   .divc_8
 
4418
+       .word   .divc_9
 
4419
+       .word   .divc_10
 
4420
+       .word   .divc_11
 
4421
+       .word   .divc_12
 
4422
+       .word   .divc_13
 
4423
+       .word   .divc_14
 
4424
+       .word   .divc_15
 
4425
+       .word   .divc_16
 
4426
+       .word   .divc_17
 
4427
+       .word   .divc_18
 
4428
+       .word   .divc_19
 
4429
+       .word   .divc_20
 
4430
+       .word   .divc_21
 
4431
+       .word   .divc_22
 
4432
+       .word   .divc_23
 
4433
+       .word   .divc_24
 
4434
+       .word   .divc_25
 
4435
+       .word   .divc_26
 
4436
+       .word   .divc_27
 
4437
+       .word   .divc_28
 
4438
+       .word   .divc_29
 
4439
+       .word   .divc_30
 
4440
+       .word   .divc_31
 
4441
+
 
4442
+.divc_1:
 
4443
+       str     a2, [java_stack], #-4
 
4444
+       mov     pc, lr
 
4445
+.divc_2:
 
4446
+        add     a2, a2, a2, lsr #31
 
4447
+        mov     a1, a2, asr #1
 
4448
+       str     r0, [java_stack], #-4
 
4449
+       mov     pc, lr
 
4450
+.divc_3:
 
4451
+       ldr     a1, .dc_3
 
4452
+        smull  a3, a4, a2, a1
 
4453
+        sub    a1, a4, a2, asr #31
 
4454
+       str     r0, [java_stack], #-4
 
4455
+       mov     pc, lr
 
4456
+.divc_4:
 
4457
+       movs    a4, a2
 
4458
+        addmi  a4, a4, #3
 
4459
+        mov    a1, a4, asr #2
 
4460
+       str     r0, [java_stack], #-4
 
4461
+       mov     pc, lr
 
4462
+.divc_5:
 
4463
+       ldr     a1, .dc_5
 
4464
+        smull  a3, a4, a2, a1
 
4465
+        mov    a3, a2, asr #31
 
4466
+        rsb    a1, a3, a4, asr #1
 
4467
+       str     r0, [java_stack], #-4
 
4468
+       mov     pc, lr
 
4469
+.divc_6:
 
4470
+       ldr     a1, .dc_6
 
4471
+        smull  a3, a4, a2, a1
 
4472
+        sub    a1, a4, a2, asr #31
 
4473
+       str     r0, [java_stack], #-4
 
4474
+       mov     pc, lr
 
4475
+.divc_7:
 
4476
+       ldr     a1, .dc_7
 
4477
+        smull  a3, a4, a2, a1
 
4478
+        mov    a1, a2, asr #31
 
4479
+        add    a3, a2, a4
 
4480
+        rsb    a1, a1, a3, asr #2
 
4481
+       str     r0, [java_stack], #-4
 
4482
+       mov     pc, lr
 
4483
+.divc_8:
 
4484
+       movs    a3, a2
 
4485
+        addmi  a3, a3, #7
 
4486
+        mov    a1, a3, asr #3
 
4487
+       str     r0, [java_stack], #-4
 
4488
+       mov     pc, lr
 
4489
+.divc_9:
 
4490
+       ldr     a1, .dc_9
 
4491
+        smull  a3, a4, a2, a1
 
4492
+        mov    a3, a2, asr #31
 
4493
+        rsb    a1, a3, a4, asr #1
 
4494
+       str     r0, [java_stack], #-4
 
4495
+       mov     pc, lr
 
4496
+.divc_10:
 
4497
+       ldr     a1, .dc_10
 
4498
+        smull  a3, a4, a2, a1
 
4499
+        mov    a3, a2, asr #31
 
4500
+        rsb    a1, a3, a4, asr #2
 
4501
+       str     r0, [java_stack], #-4
 
4502
+       mov     pc, lr
 
4503
+.divc_11:
 
4504
+       ldr     a1, .dc_11
 
4505
+        smull  a3, a4, a2, a1
 
4506
+        mov    a3, a2, asr #31
 
4507
+        rsb    a1, a3, a4, asr #1
 
4508
+       str     r0, [java_stack], #-4
 
4509
+       mov     pc, lr
 
4510
+.divc_12:
 
4511
+       ldr     a1, .dc_12
 
4512
+        smull  a3, a4, a2, a1
 
4513
+        mov    a3, a2, asr #31
 
4514
+        rsb    a1, a3, a4, asr #1
 
4515
+       str     r0, [java_stack], #-4
 
4516
+       mov     pc, lr
 
4517
+.divc_13:
 
4518
+       ldr     a1, .dc_13
 
4519
+        smull  a3, a4, a2, a1
 
4520
+        mov    a3, a2, asr #31
 
4521
+        rsb    a1, a3, a4, asr #2
 
4522
+       str     r0, [java_stack], #-4
 
4523
+       mov     pc, lr
 
4524
+.divc_14:
 
4525
+       ldr     a1, .dc_14
 
4526
+        smull  a3, a4, a2, a1
 
4527
+        mov    a1, a2, asr #31
 
4528
+        add    a3, a2, a4
 
4529
+        rsb    a1, a1, a3, asr #3
 
4530
+       str     r0, [java_stack], #-4
 
4531
+       mov     pc, lr
 
4532
+.divc_15:
 
4533
+       ldr     a1, .dc_15
 
4534
+        smull  a3, a4, a2, a1
 
4535
+        mov    a1, a2, asr #31
 
4536
+        add    a3, a2, a4
 
4537
+        rsb    a1, a1, a3, asr #3
 
4538
+       str     r0, [java_stack], #-4
 
4539
+       mov     pc, lr
 
4540
+.divc_16:
 
4541
+       movs    a3, a2
 
4542
+        addmi  a3, a3, #15
 
4543
+        mov    a1, a3, asr #4
 
4544
+       str     r0, [java_stack], #-4
 
4545
+       mov     pc, lr
 
4546
+.divc_17:
 
4547
+       ldr     a1, .dc_17
 
4548
+        smull  a3, a4, a2, a1
 
4549
+        mov    a3, a2, asr #31
 
4550
+        rsb    a1, a3, a4, asr #3
 
4551
+       str     r0, [java_stack], #-4
 
4552
+       mov     pc, lr
 
4553
+.divc_18:
 
4554
+       ldr     a1, .dc_18
 
4555
+        smull  a3, a4, a2, a1
 
4556
+        mov    a3, a2, asr #31
 
4557
+        rsb    a1, a3, a4, asr #2
 
4558
+       str     r0, [java_stack], #-4
 
4559
+       mov     pc, lr
 
4560
+.divc_19:
 
4561
+       ldr     a1, .dc_19
 
4562
+        smull  a3, a4, a2, a1
 
4563
+        mov    a3, a2, asr #31
 
4564
+        rsb    a1, a3, a4, asr #3
 
4565
+       str     r0, [java_stack], #-4
 
4566
+       mov     pc, lr
 
4567
+.divc_20:
 
4568
+       ldr     a1, .dc_20
 
4569
+        smull  a3, a4, a2, a1
 
4570
+        mov    a3, a2, asr #31
 
4571
+        rsb    a1, a3, a4, asr #3
 
4572
+       str     r0, [java_stack], #-4
 
4573
+       mov     pc, lr
 
4574
+.divc_21:
 
4575
+       ldr     a1, .dc_21
 
4576
+        smull  a3, a4, a2, a1
 
4577
+        mov    a3, a2, asr #31
 
4578
+        rsb    a1, a3, a4, asr #2
 
4579
+       str     r0, [java_stack], #-4
 
4580
+       mov     pc, lr
 
4581
+.divc_22:
 
4582
+       ldr     a1, .dc_22
 
4583
+        smull  a3, a4, a2, a1
 
4584
+        mov    a3, a2, asr #31
 
4585
+        rsb    a1, a3, a4, asr #2
 
4586
+       str     r0, [java_stack], #-4
 
4587
+       mov     pc, lr
 
4588
+.divc_23:
 
4589
+       ldr     a1, .dc_23
 
4590
+        smull  a3, a4, a2, a1
 
4591
+        mov    a1, a2, asr #31
 
4592
+        add    a3, a2, a4
 
4593
+        rsb    a1, a1, a3, asr #4
 
4594
+       str     r0, [java_stack], #-4
 
4595
+       mov     pc, lr
 
4596
+.divc_24:
 
4597
+       ldr     a1, .dc_24
 
4598
+        smull  a3, a4, a2, a1
 
4599
+        mov    a3, a2, asr #31
 
4600
+        rsb    a1, a3, a4, asr #2
 
4601
+       str     r0, [java_stack], #-4
 
4602
+       mov     pc, lr
 
4603
+.divc_25:
 
4604
+       ldr     a1, .dc_25
 
4605
+        smull  a3, a4, a2, a1
 
4606
+        mov    a3, a2, asr #31
 
4607
+        rsb    a1, a3, a4, asr #3
 
4608
+       str     r0, [java_stack], #-4
 
4609
+       mov     pc, lr
 
4610
+.divc_26:
 
4611
+       ldr     a1, .dc_26
 
4612
+        smull  a3, a4, a2, a1
 
4613
+        mov    a3, a2, asr #31
 
4614
+        rsb    a1, a3, a4, asr #3
 
4615
+       str     r0, [java_stack], #-4
 
4616
+       mov     pc, lr
 
4617
+.divc_27:
 
4618
+       ldr     a1, .dc_27
 
4619
+        smull  a3, a4, a2, a1
 
4620
+        mov    a3, a2, asr #31
 
4621
+        rsb    a1, a3, a4, asr #3
 
4622
+       str     r0, [java_stack], #-4
 
4623
+       mov     pc, lr
 
4624
+.divc_28:
 
4625
+       ldr     a1, .dc_28
 
4626
+        smull  a3, a4, a2, a1
 
4627
+        mov    a1, a2, asr #31
 
4628
+        add    a3, a2, a4
 
4629
+        rsb    a1, a1, a3, asr #4
 
4630
+       str     r0, [java_stack], #-4
 
4631
+       mov     pc, lr
 
4632
+.divc_29:
 
4633
+       ldr     a1, .dc_29
 
4634
+        smull  a3, a4, a2, a1
 
4635
+        mov    a1, a2, asr #31
 
4636
+        add    a3, a2, a4
 
4637
+        rsb    a1, a1, a3, asr #4
 
4638
+       str     r0, [java_stack], #-4
 
4639
+       mov     pc, lr
 
4640
+.divc_30:
 
4641
+       ldr     a1, .dc_30
 
4642
+        smull  a3, a4, a2, a1
 
4643
+        mov    a1, a2, asr #31
 
4644
+        add    a3, a2, a4
 
4645
+        rsb    a1, a1, a3, asr #4
 
4646
+       str     r0, [java_stack], #-4
 
4647
+       mov     pc, lr
 
4648
+.divc_31:
 
4649
+       ldr     a1, .dc_31
 
4650
+        smull  a3, a4, a2, a1
 
4651
+        mov    a1, a2, asr #31
 
4652
+        add    a3, a2, a4
 
4653
+        rsb    a1, a1, a3, asr #4
 
4654
+       str     r0, [java_stack], #-4
 
4655
+       mov     pc, lr
 
4656
+.dc_7:
 
4657
+.dc_14:
 
4658
+       .word     0x92492493
 
4659
+.dc_15:
 
4660
+.dc_30:
 
4661
+       .word     0x88888889
 
4662
+.dc_23:
 
4663
+       .word     0xb21642c9
 
4664
+.dc_28:
 
4665
+       .word     0x92492493
 
4666
+.dc_29:
 
4667
+       .word     0x8d3dcb09
 
4668
+.dc_31:
 
4669
+       .word     0x84210843
 
4670
+.dc_6:
 
4671
+.dc_12:
 
4672
+.dc_24:
 
4673
+       .word     0x2aaaaaab
 
4674
+.dc_19:
 
4675
+       .word     0x6bca1af3
 
4676
+.dc_5:
 
4677
+.dc_10:
 
4678
+.dc_20:
 
4679
+       .word     0x66666667
 
4680
+.dc_21:
 
4681
+       .word     0x30c30c31
 
4682
+.dc_11:
 
4683
+.dc_22:
 
4684
+       .word     0x2e8ba2e9
 
4685
+.dc_26:
 
4686
+.dc_13:
 
4687
+       .word     0x4ec4ec4f
 
4688
+.dc_25:
 
4689
+       .word     0x51eb851f
 
4690
+.dc_27:
 
4691
+       .word     0x4bda12f7
 
4692
+.dc_3:
 
4693
+       .word     0x55555556
 
4694
+.dc_17:
 
4695
+       .word     0x78787879
 
4696
+.dc_9:
 
4697
+.dc_18:
 
4698
+       .word     0x38e38e39
 
4699
+
 
4700
+@ ==== Software floating point operations ====================================
 
4701
+
 
4702
+@ --- do_fadd_vtos -------------------------------------------------
 
4703
+       OpcodeEntry     do_fadd_vtos
 
4704
+       POP(tos)
 
4705
+@ --- do_fadd_itos -------------------------------------------------
 
4706
+       OpcodeEntry     do_fadd_itos
 
4707
+       POP(r1)
 
4708
+       bl      __aeabi_fadd(PLT)
 
4709
+       ldrb    ip, [java_pc, #1]!
 
4710
+       ldr     ip, [itos_table, ip, lsl #2]
 
4711
+       mov     pc, ip
 
4712
+
 
4713
+#ifndef FAST_SW_FP
 
4714
+@ --- do_dadd_vtos -------------------------------------------------
 
4715
+       OpcodeEntry     do_dadd_vtos
 
4716
+       POP(tos)
 
4717
+@ --- do_dadd_itos -------------------------------------------------
 
4718
+       OpcodeEntry     do_dadd_itos
 
4719
+       ldmib   java_stack!, {r1-r3}
 
4720
+       bl      __aeabi_dadd(PLT)
 
4721
+       ldrb    ip, [java_pc, #1]!
 
4722
+       PUSH(r1)
 
4723
+       ldr     ip, [itos_table, ip, lsl #2]
 
4724
+       mov     pc, ip
 
4725
+#endif
 
4726
+
 
4727
+@ --- do_fsub_vtos -------------------------------------------------
 
4728
+       OpcodeEntry     do_fsub_vtos
 
4729
+       POP(tos)
 
4730
+@ --- do_fsub_itos -------------------------------------------------
 
4731
+       OpcodeEntry     do_fsub_itos
 
4732
+       POP(r1)                         @ Args are in wrong order - so just neg
 
4733
+       eor     tos, tos, #0x80000000   @ R0 and add - easier than swap
 
4734
+       bl      __aeabi_fadd(PLT)
 
4735
+       ldrb    ip, [java_pc, #1]!
 
4736
+       ldr     ip, [itos_table, ip, lsl #2]
 
4737
+       mov     pc, ip
 
4738
+
 
4739
+#ifndef FAST_SW_FP
 
4740
+@ --- do_dsub_vtos -------------------------------------------------
 
4741
+       OpcodeEntry     do_dsub_vtos
 
4742
+       POP(tos)
 
4743
+@ --- do_dsub_itos -------------------------------------------------
 
4744
+       OpcodeEntry     do_dsub_itos
 
4745
+       ldmib   java_stack!, {r1-r3}    @ args in wrong order - easier to
 
4746
+       eor     r1, r1, #0x80000000     @ just neg rather than swap
 
4747
+       bl      __aeabi_dadd(PLT)
 
4748
+       ldrb    ip, [java_pc, #1]!
 
4749
+       PUSH(r1)
 
4750
+       ldr     ip, [itos_table, ip, lsl #2]
 
4751
+       mov     pc, ip
 
4752
+#endif
 
4753
+
 
4754
+@ --- do_fmul_vtos -------------------------------------------------
 
4755
+       OpcodeEntry     do_fmul_vtos
 
4756
+       POP(tos)
 
4757
+@ --- do_fmul_itos -------------------------------------------------
 
4758
+       OpcodeEntry     do_fmul_itos
 
4759
+       POP(r1)
 
4760
+       bl      __aeabi_fmul(PLT)
 
4761
+       ldrb    ip, [java_pc, #1]!
 
4762
+       ldr     ip, [itos_table, ip, lsl #2]
 
4763
+       mov     pc, ip
 
4764
+
 
4765
+#ifndef FAST_SW_FP
 
4766
+@ --- do_dmul_vtos -------------------------------------------------
 
4767
+       OpcodeEntry     do_dmul_vtos
 
4768
+       POP(tos)
 
4769
+@ --- do_dmul_itos -------------------------------------------------
 
4770
+       OpcodeEntry     do_dmul_itos
 
4771
+       ldmib   java_stack!, {r1-r3}
 
4772
+       bl      __aeabi_dmul(PLT)
 
4773
+       ldrb    ip, [java_pc, #1]!
 
4774
+       PUSH(r1)
 
4775
+       ldr     ip, [itos_table, ip, lsl #2]
 
4776
+       mov     pc, ip
 
4777
+#endif
 
4778
+
 
4779
+@ --- do_fdiv_vtos -------------------------------------------------
 
4780
+       OpcodeEntry     do_fdiv_vtos
 
4781
+       POP(tos)
 
4782
+@ --- do_fdiv_itos -------------------------------------------------
 
4783
+       OpcodeEntry     do_fdiv_itos
 
4784
+       mov     r1, r0
 
4785
+       POP(tos)
 
4786
+       bl      __aeabi_fdiv(PLT)
 
4787
+       ldrb    ip, [java_pc, #1]!
 
4788
+       ldr     ip, [itos_table, ip, lsl #2]
 
4789
+       mov     pc, ip
 
4790
+
 
4791
+@ --- do_ddiv_vtos -------------------------------------------------
 
4792
+       OpcodeEntry     do_ddiv_vtos
 
4793
+       POP(tos)
 
4794
+@ --- do_ddiv_itos -------------------------------------------------
 
4795
+       OpcodeEntry     do_ddiv_itos
 
4796
+       mov     r2, r0
 
4797
+       POP     (r3)
 
4798
+       ldmib   java_stack!, {r0, r1}
 
4799
+       bl      __aeabi_ddiv(PLT)
 
4800
+       ldrb    ip, [java_pc, #1]!
 
4801
+       PUSH(r1)
 
4802
+       ldr     ip, [itos_table, ip, lsl #2]
 
4803
+       mov     pc, ip
 
4804
+
 
4805
+@ --- do_i2f_vtos -------------------------------------------------
 
4806
+       OpcodeEntry     do_i2f_vtos
 
4807
+       POP(tos)
 
4808
+@ --- do_i2f_itos -------------------------------------------------
 
4809
+       OpcodeEntry     do_i2f_itos
 
4810
+       bl      __aeabi_i2f(PLT)
 
4811
+       ldrb    ip, [java_pc, #1]!
 
4812
+       ldr     ip, [itos_table, ip, lsl #2]
 
4813
+       mov     pc, ip
 
4814
+
 
4815
+@ --- do_i2d_vtos -------------------------------------------------
 
4816
+       OpcodeEntry     do_i2d_vtos
 
4817
+       POP(tos)
 
4818
+@ --- do_i2d_itos -------------------------------------------------
 
4819
+       OpcodeEntry     do_i2d_itos
 
4820
+       bl      __aeabi_i2d(PLT)
 
4821
+       ldrb    ip, [java_pc, #1]!
 
4822
+       PUSH(r1)
 
4823
+       ldr     ip, [itos_table, ip, lsl #2]
 
4824
+       mov     pc, ip
 
4825
+
 
4826
+@ --- do_f2d_vtos -------------------------------------------------
 
4827
+       OpcodeEntry     do_f2d_vtos
 
4828
+       POP(tos)
 
4829
+@ --- do_f2d_itos -------------------------------------------------
 
4830
+       OpcodeEntry     do_f2d_itos
 
4831
+       bl      __aeabi_f2d(PLT)
 
4832
+       ldrb    ip, [java_pc, #1]!
 
4833
+       PUSH(r1)
 
4834
+       ldr     ip, [itos_table, ip, lsl #2]
 
4835
+       mov     pc, ip
 
4836
+
 
4837
+@ --- do_d2f_vtos -------------------------------------------------
 
4838
+       OpcodeEntry     do_d2f_vtos
 
4839
+       POP(tos)
 
4840
+@ --- do_d2f_itos -------------------------------------------------
 
4841
+       OpcodeEntry     do_d2f_itos
 
4842
+       POP(r1)
 
4843
+       bl      __aeabi_d2f(PLT)
 
4844
+       ldrb    ip, [java_pc, #1]!
 
4845
+       ldr     ip, [itos_table, ip, lsl #2]
 
4846
+       mov     pc, ip
 
4847
+
 
4848
+@ --- do_fcmpl_itos -------------------------------------------------
 
4849
+       OpcodeEntry     do_fcmpl_itos
 
4850
+       PUSH(tos)
 
4851
+@ --- do_fcmpl_vtos -------------------------------------------------
 
4852
+       OpcodeEntry     do_fcmpl_vtos
 
4853
+       ldmib   java_stack, {r0, r1}
 
4854
+       bl      __aeabi_fcmpgt(PLT)
 
4855
+       cmp     r0, #0
 
4856
+       movne   r0, #-1
 
4857
+       bne     do_fcmpl_1
 
4858
+       ldmib   java_stack, {r0, r1}
 
4859
+       bl      __aeabi_fcmplt(PLT)
 
4860
+       cmp     r0, #0
 
4861
+       movne   r0, #1
 
4862
+       bne     do_fcmpl_1
 
4863
+       ldmib   java_stack, {r0, r1}
 
4864
+       bl      __aeabi_fcmpeq(PLT)
 
4865
+       cmp     r0, #0
 
4866
+       movne   r0, #0
 
4867
+       moveq   r0, #-1
 
4868
+do_fcmpl_1:
 
4869
+       ldrb    ip, [java_pc, #1]!
 
4870
+       add     java_stack, java_stack, #8
 
4871
+       ldr     ip, [itos_table, ip, lsl #2]
 
4872
+       mov     pc, ip
 
4873
+
 
4874
+@ --- do_fcmpg_itos -------------------------------------------------
 
4875
+       OpcodeEntry     do_fcmpg_itos
 
4876
+       PUSH(tos)
 
4877
+@ --- do_fcmpg_vtos -------------------------------------------------
 
4878
+       OpcodeEntry     do_fcmpg_vtos
 
4879
+       ldmib   java_stack, {r0, r1}
 
4880
+       bl      __aeabi_fcmpgt(PLT)
 
4881
+       cmp     r0, #0
 
4882
+       movne   r0, #-1
 
4883
+       bne     do_fcmpg_1
 
4884
+       ldmib   java_stack, {r0, r1}
 
4885
+       bl      __aeabi_fcmplt(PLT)
 
4886
+       cmp     r0, #0
 
4887
+       movne   r0, #1
 
4888
+       bne     do_fcmpg_1
 
4889
+       ldmib   java_stack, {r0, r1}
 
4890
+       bl      __aeabi_fcmpeq(PLT)
 
4891
+       cmp     r0, #0
 
4892
+       movne   r0, #0
 
4893
+       moveq   r0, #1
 
4894
+do_fcmpg_1:
 
4895
+       ldrb    ip, [java_pc, #1]!
 
4896
+       add     java_stack, java_stack, #8
 
4897
+       ldr     ip, [itos_table, ip, lsl #2]
 
4898
+       mov     pc, ip
 
4899
+
 
4900
+@ --- do_dcmpl_itos -------------------------------------------------
 
4901
+       OpcodeEntry     do_dcmpl_itos
 
4902
+       PUSH(tos)
 
4903
+@ --- do_dcmpl_vtos -------------------------------------------------
 
4904
+       OpcodeEntry     do_dcmpl_vtos
 
4905
+       ldmib   java_stack, {r0, r1, r2, r3}
 
4906
+       bl      __aeabi_dcmpgt(PLT)
 
4907
+       cmp     r0, #0
 
4908
+       movne   r0, #-1
 
4909
+       bne     do_dcmpl_1
 
4910
+       ldmib   java_stack, {r0, r1, r2, r3}
 
4911
+       bl      __aeabi_dcmplt(PLT)
 
4912
+       cmp     r0, #0
 
4913
+       movne   r0, #1
 
4914
+       bne     do_dcmpl_1
 
4915
+       ldmib   java_stack, {r0, r1, r2, r3}
 
4916
+       bl      __aeabi_dcmpeq(PLT)
 
4917
+       cmp     r0, #0
 
4918
+       movne   r0, #0
 
4919
+       moveq   r0, #-1
 
4920
+do_dcmpl_1:
 
4921
+       ldrb    ip, [java_pc, #1]!
 
4922
+       add     java_stack, java_stack, #16
 
4923
+       ldr     ip, [itos_table, ip, lsl #2]
 
4924
+       mov     pc, ip
 
4925
+
 
4926
+@ --- do_dcmpg_itos -------------------------------------------------
 
4927
+       OpcodeEntry     do_dcmpg_itos
 
4928
+       PUSH(tos)
 
4929
+@ --- do_dcmpg_vtos -------------------------------------------------
 
4930
+       OpcodeEntry     do_dcmpg_vtos
 
4931
+       ldmib   java_stack, {r0, r1, r2, r3}
 
4932
+       bl      __aeabi_dcmpgt(PLT)
 
4933
+       cmp     r0, #0
 
4934
+       movne   r0, #-1
 
4935
+       bne     do_dcmpg_1
 
4936
+       ldmib   java_stack, {r0, r1, r2, r3}
 
4937
+       bl      __aeabi_dcmplt(PLT)
 
4938
+       cmp     r0, #0
 
4939
+       movne   r0, #1
 
4940
+       bne     do_dcmpg_1
 
4941
+       ldmib   java_stack, {r0, r1, r2, r3}
 
4942
+       bl      __aeabi_dcmpeq(PLT)
 
4943
+       cmp     r0, #0
 
4944
+       movne   r0, #0
 
4945
+       moveq   r0, #1
 
4946
+do_dcmpg_1:
 
4947
+       ldrb    ip, [java_pc, #1]!
 
4948
+       add     java_stack, java_stack, #16
 
4949
+       ldr     ip, [itos_table, ip, lsl #2]
 
4950
+       mov     pc, ip
 
4951
+
 
4952
+@ ==== Double TOS operations ==============================================================
 
4953
+
 
4954
+@ --- do_nop_dtos -------------------------------------------------
 
4955
+       OpcodeEntry     do_nop_dtos
 
4956
+       PUSHD   dtos
 
4957
+       b       do_nop_vtos
 
4958
+@ --- do_aconst_null_dtos -------------------------------------------------
 
4959
+       OpcodeEntry     do_aconst_null_dtos
 
4960
+       PUSHD   dtos
 
4961
+       b       do_aconst_null_vtos
 
4962
+@ --- do_iconst_m1_dtos -------------------------------------------------
 
4963
+       OpcodeEntry     do_iconst_m1_dtos
 
4964
+       PUSHD   dtos
 
4965
+       b       do_iconst_m1_vtos
 
4966
+@ --- do_iconst_0_dtos -------------------------------------------------
 
4967
+       OpcodeEntry     do_iconst_0_dtos
 
4968
+       PUSHD   dtos
 
4969
+       b       do_iconst_0_vtos
 
4970
+@ --- do_iconst_1_dtos -------------------------------------------------
 
4971
+       OpcodeEntry     do_iconst_1_dtos
 
4972
+       PUSHD   dtos
 
4973
+       b       do_iconst_1_vtos
 
4974
+@ --- do_iconst_2_dtos -------------------------------------------------
 
4975
+       OpcodeEntry     do_iconst_2_dtos
 
4976
+       PUSHD   dtos
 
4977
+       b       do_iconst_2_vtos
 
4978
+@ --- do_iconst_3_dtos -------------------------------------------------
 
4979
+       OpcodeEntry     do_iconst_3_dtos
 
4980
+       PUSHD   dtos
 
4981
+       b       do_iconst_3_vtos
 
4982
+@ --- do_iconst_4_dtos -------------------------------------------------
 
4983
+       OpcodeEntry     do_iconst_4_dtos
 
4984
+       PUSHD   dtos
 
4985
+       b       do_iconst_4_vtos
 
4986
+@ --- do_iconst_5_dtos -------------------------------------------------
 
4987
+       OpcodeEntry     do_iconst_5_dtos
 
4988
+       PUSHD   dtos
 
4989
+       b       do_iconst_5_vtos
 
4990
+@ --- do_lconst_0_dtos -------------------------------------------------
 
4991
+       OpcodeEntry     do_lconst_0_dtos
 
4992
+       PUSHD   dtos
 
4993
+       b       do_lconst_0_vtos
 
4994
+@ --- do_lconst_1_dtos -------------------------------------------------
 
4995
+       OpcodeEntry     do_lconst_1_dtos
 
4996
+       PUSHD   dtos
 
4997
+       b       do_lconst_1_vtos
 
4998
+@ --- do_fconst_0_dtos -------------------------------------------------
 
4999
+       OpcodeEntry     do_fconst_0_dtos
 
5000
+       PUSHD   dtos
 
5001
+       b       do_fconst_0_vtos
 
5002
+@ --- do_fconst_1_dtos -------------------------------------------------
 
5003
+       OpcodeEntry     do_fconst_1_dtos
 
5004
+       PUSHD   dtos
 
5005
+       b       do_fconst_1_vtos
 
5006
+@ --- do_fconst_2_dtos -------------------------------------------------
 
5007
+       OpcodeEntry     do_fconst_2_dtos
 
5008
+       PUSHD   dtos
 
5009
+       b       do_fconst_2_vtos
 
5010
+@ --- do_dconst_0_dtos -------------------------------------------------
 
5011
+       OpcodeEntry     do_dconst_0_dtos
 
5012
+       PUSHD   dtos
 
5013
+       b       do_dconst_0_vtos
 
5014
+@ --- do_dconst_1_dtos -------------------------------------------------
 
5015
+       OpcodeEntry     do_dconst_1_dtos
 
5016
+       PUSHD   dtos
 
5017
+       b       do_dconst_1_vtos
 
5018
+@ --- do_bipush_dtos -------------------------------------------------
 
5019
+       OpcodeEntry     do_bipush_dtos
 
5020
+       PUSHD   dtos
 
5021
+       b       do_bipush_vtos
 
5022
+@ --- do_sipush_dtos -------------------------------------------------
 
5023
+       OpcodeEntry     do_sipush_dtos
 
5024
+       PUSHD   dtos
 
5025
+       b       do_sipush_vtos
 
5026
+@ --- do_ldc_dtos -------------------------------------------------
 
5027
+       OpcodeEntry     do_ldc_dtos
 
5028
+       PUSHD   dtos
 
5029
+       b       do_ldc_vtos
 
5030
+@ --- do_ldc_w_dtos -------------------------------------------------
 
5031
+       OpcodeEntry     do_ldc_w_dtos
 
5032
+       PUSHD   dtos
 
5033
+       b       do_ldc_w_vtos
 
5034
+@ --- do_ldc2_w_dtos -------------------------------------------------
 
5035
+       OpcodeEntry     do_ldc2_w_dtos
 
5036
+       PUSHD   dtos
 
5037
+       b       do_ldc2_w_vtos
 
5038
+@ --- do_iload_dtos -------------------------------------------------
 
5039
+       OpcodeEntry     do_iload_dtos
 
5040
+       PUSHD   dtos
 
5041
+       b       do_iload_vtos
 
5042
+@ --- do_lload_dtos -------------------------------------------------
 
5043
+       OpcodeEntry     do_lload_dtos
 
5044
+       PUSHD   dtos
 
5045
+       b       do_lload_vtos
 
5046
+@ --- do_fload_dtos -------------------------------------------------
 
5047
+       OpcodeEntry     do_fload_dtos
 
5048
+       PUSHD   dtos
 
5049
+       b       do_fload_vtos
 
5050
+@ --- do_dload_dtos -------------------------------------------------
 
5051
+       OpcodeEntry     do_dload_dtos
 
5052
+       PUSHD   dtos
 
5053
+       b       do_dload_vtos
 
5054
+@ --- do_aload_dtos -------------------------------------------------
 
5055
+       OpcodeEntry     do_aload_dtos
 
5056
+       PUSHD   dtos
 
5057
+       b       do_aload_vtos
 
5058
+@ --- do_iload_0_dtos -------------------------------------------------
 
5059
+       OpcodeEntry     do_iload_0_dtos
 
5060
+       PUSHD   dtos
 
5061
+       b       do_iload_0_vtos
 
5062
+@ --- do_iload_1_dtos -------------------------------------------------
 
5063
+       OpcodeEntry     do_iload_1_dtos
 
5064
+       PUSHD   dtos
 
5065
+       b       do_iload_1_vtos
 
5066
+@ --- do_iload_2_dtos -------------------------------------------------
 
5067
+       OpcodeEntry     do_iload_2_dtos
 
5068
+       PUSHD   dtos
 
5069
+       b       do_iload_2_vtos
 
5070
+@ --- do_iload_3_dtos -------------------------------------------------
 
5071
+       OpcodeEntry     do_iload_3_dtos
 
5072
+       PUSHD   dtos
 
5073
+       b       do_iload_3_vtos
 
5074
+@ --- do_lload_0_dtos -------------------------------------------------
 
5075
+       OpcodeEntry     do_lload_0_dtos
 
5076
+       PUSHD   dtos
 
5077
+       b       do_lload_0_vtos
 
5078
+@ --- do_lload_1_dtos -------------------------------------------------
 
5079
+       OpcodeEntry     do_lload_1_dtos
 
5080
+       PUSHD   dtos
 
5081
+       b       do_lload_1_vtos
 
5082
+@ --- do_lload_2_dtos -------------------------------------------------
 
5083
+       OpcodeEntry     do_lload_2_dtos
 
5084
+       PUSHD   dtos
 
5085
+       b       do_lload_2_vtos
 
5086
+@ --- do_lload_3_dtos -------------------------------------------------
 
5087
+       OpcodeEntry     do_lload_3_dtos
 
5088
+       PUSHD   dtos
 
5089
+       b       do_lload_3_vtos
 
5090
+@ --- do_fload_0_dtos -------------------------------------------------
 
5091
+       OpcodeEntry     do_fload_0_dtos
 
5092
+       PUSHD   dtos
 
5093
+       b       do_fload_0_vtos
 
5094
+@ --- do_fload_1_dtos -------------------------------------------------
 
5095
+       OpcodeEntry     do_fload_1_dtos
 
5096
+       PUSHD   dtos
 
5097
+       b       do_fload_1_vtos
 
5098
+@ --- do_fload_2_dtos -------------------------------------------------
 
5099
+       OpcodeEntry     do_fload_2_dtos
 
5100
+       PUSHD   dtos
 
5101
+       b       do_fload_2_vtos
 
5102
+@ --- do_fload_3_dtos -------------------------------------------------
 
5103
+       OpcodeEntry     do_fload_3_dtos
 
5104
+       PUSHD   dtos
 
5105
+       b       do_fload_3_vtos
 
5106
+@ --- do_dload_0_dtos -------------------------------------------------
 
5107
+       OpcodeEntry     do_dload_0_dtos
 
5108
+       PUSHD   dtos
 
5109
+       b       do_dload_0_vtos
 
5110
+@ --- do_dload_1_dtos -------------------------------------------------
 
5111
+       OpcodeEntry     do_dload_1_dtos
 
5112
+       PUSHD   dtos
 
5113
+       b       do_dload_1_vtos
 
5114
+@ --- do_dload_2_dtos -------------------------------------------------
 
5115
+       OpcodeEntry     do_dload_2_dtos
 
5116
+       PUSHD   dtos
 
5117
+       b       do_dload_2_vtos
 
5118
+@ --- do_dload_3_dtos -------------------------------------------------
 
5119
+       OpcodeEntry     do_dload_3_dtos
 
5120
+       PUSHD   dtos
 
5121
+       b       do_dload_3_vtos
 
5122
+@ --- do_aload_0_dtos -------------------------------------------------
 
5123
+       OpcodeEntry     do_aload_0_dtos
 
5124
+       PUSHD   dtos
 
5125
+       b       do_aload_0_vtos
 
5126
+@ --- do_aload_1_dtos -------------------------------------------------
 
5127
+       OpcodeEntry     do_aload_1_dtos
 
5128
+       PUSHD   dtos
 
5129
+       b       do_aload_1_vtos
 
5130
+@ --- do_aload_2_dtos -------------------------------------------------
 
5131
+       OpcodeEntry     do_aload_2_dtos
 
5132
+       PUSHD   dtos
 
5133
+       b       do_aload_2_vtos
 
5134
+@ --- do_aload_3_dtos -------------------------------------------------
 
5135
+       OpcodeEntry     do_aload_3_dtos
 
5136
+       PUSHD   dtos
 
5137
+       b       do_aload_3_vtos
 
5138
+@ --- do_iaload_dtos -------------------------------------------------
 
5139
+       OpcodeEntry     do_iaload_dtos
 
5140
+       PUSHD   dtos
 
5141
+       b       do_iaload_vtos
 
5142
+@ --- do_laload_dtos -------------------------------------------------
 
5143
+       OpcodeEntry     do_laload_dtos
 
5144
+       PUSHD   dtos
 
5145
+       b       do_laload_vtos
 
5146
+@ --- do_faload_dtos -------------------------------------------------
 
5147
+       OpcodeEntry     do_faload_dtos
 
5148
+       PUSHD   dtos
 
5149
+       b       do_faload_vtos
 
5150
+@ --- do_daload_dtos -------------------------------------------------
 
5151
+       OpcodeEntry     do_daload_dtos
 
5152
+       PUSHD   dtos
 
5153
+       b       do_daload_vtos
 
5154
+@ --- do_aaload_dtos -------------------------------------------------
 
5155
+       OpcodeEntry     do_aaload_dtos
 
5156
+       PUSHD   dtos
 
5157
+       b       do_aaload_vtos
 
5158
+@ --- do_baload_dtos -------------------------------------------------
 
5159
+       OpcodeEntry     do_baload_dtos
 
5160
+       PUSHD   dtos
 
5161
+       b       do_baload_vtos
 
5162
+@ --- do_caload_dtos -------------------------------------------------
 
5163
+       OpcodeEntry     do_caload_dtos
 
5164
+       PUSHD   dtos
 
5165
+       b       do_caload_vtos
 
5166
+@ --- do_saload_dtos -------------------------------------------------
 
5167
+       OpcodeEntry     do_saload_dtos
 
5168
+       PUSHD   dtos
 
5169
+       b       do_saload_vtos
 
5170
+@ --- do_dstore_dtos -------------------------------------------------
 
5171
+       OpcodeEntry     do_dstore_dtos
 
5172
+       ldrb    r3, [java_pc, #1]
 
5173
+       ldrb    ip, [java_pc, #2]!
 
5174
+       sub     r3, java_locals, r3, lsl #2
 
5175
+       ldr     ip, [vtos_table, ip, asl #2]
 
5176
+       vstr    d0, [r3, #-4]
 
5177
+       mov     pc, ip
 
5178
+@ --- do_dstore_0_dtos -------------------------------------------------
 
5179
+       OpcodeEntry     do_dstore_0_dtos
 
5180
+       ldrb    ip, [java_pc, #1]!
 
5181
+       vstr    d0, [java_locals, #-4]
 
5182
+       ldr     ip, [vtos_table, ip, asl #2]
 
5183
+       mov     pc, ip
 
5184
+@ --- do_dstore_1_dtos -------------------------------------------------
 
5185
+       OpcodeEntry     do_dstore_1_dtos
 
5186
+       ldrb    ip, [java_pc, #1]!
 
5187
+       vstr    d0, [java_locals, #-8]
 
5188
+       ldr     ip, [vtos_table, ip, asl #2]
 
5189
+       mov     pc, ip
 
5190
+@ --- do_dstore_2_dtos -------------------------------------------------
 
5191
+       OpcodeEntry     do_dstore_2_dtos
 
5192
+       ldrb    ip, [java_pc, #1]!
 
5193
+       vstr    d0, [java_locals, #-12]
 
5194
+       ldr     ip, [vtos_table, ip, asl #2]
 
5195
+       mov     pc, ip
 
5196
+@ --- do_dstore_3_dtos -------------------------------------------------
 
5197
+       OpcodeEntry     do_dstore_3_dtos
 
5198
+       ldrb    ip, [java_pc, #1]!
 
5199
+       vstr    d0, [java_locals, #-16]
 
5200
+       ldr     ip, [vtos_table, ip, asl #2]
 
5201
+       mov     pc, ip
 
5202
+@ --- do_dastore_dtos -------------------------------------------------
 
5203
+       OpcodeEntry     do_dastore_dtos
 
5204
+       ldmib   java_stack!, {r2, r3} @ d0 = value, r2 = index, r3 = arrayref
 
5205
+       ldrb    ip, [java_pc, #1]!
 
5206
+       cmp     r3, #0
 
5207
+       beq     .dtos_exit_dastore
 
5208
+       ldr     lr, [r3, #8]
 
5209
+       cmp     r2, lr
 
5210
+       bcs     .dtos_exit_dastore
 
5211
+       add     r3, r3, r2, lsl #3
 
5212
+       ldr     ip, [vtos_table, ip, asl #2]
 
5213
+       vstr    d0, [r3, #16]
 
5214
+       mov     pc, ip
 
5215
+@ --- do_pop2_dtos -------------------------------------------------
 
5216
+       OpcodeEntry     do_pop2_dtos
 
5217
+       ldrb    ip, [java_pc, #1]!
 
5218
+       ldr     ip, [vtos_table, ip, asl #2]
 
5219
+       mov     pc, ip
 
5220
+
 
5221
+@ ECN: Questionable here, in dup2, dup2_x1 and dup2_x2 whether we should keep
 
5222
+@ the double in dtos, or push it for 'free'. It depends what happens next.
 
5223
+@ Id it is a double operation we win. If we end up pushing it anyway then we
 
5224
+@ lose as we have done 2 FP stores.
 
5225
+@ --- do_dup2_dtos -------------------------------------------------
 
5226
+       OpcodeEntry     do_dup2_dtos
 
5227
+       ldrb    ip, [java_pc, #1]!
 
5228
+       PUSHD   dtos
 
5229
+       ldr     ip, [dtos_table, ip, asl #2]
 
5230
+       mov     pc, ip
 
5231
+@ --- do_dup2_x1_dtos -------------------------------------------------
 
5232
+       OpcodeEntry     do_dup2_x1_dtos
 
5233
+       ldrb    ip, [java_pc, #1]!
 
5234
+       POP(tos)
 
5235
+       PUSHD   dtos
 
5236
+       ldr     ip, [dtos_table, ip, asl #2]
 
5237
+       PUSH(tos)
 
5238
+       mov     pc, ip
 
5239
+@ --- do_dup2_x2_dtos -------------------------------------------------
 
5240
+       OpcodeEntry     do_dup2_x2_dtos
 
5241
+       ldrb    ip, [java_pc, #1]!
 
5242
+       ldmib   java_stack!, {r0,r1}
 
5243
+       ldr     ip, [dtos_table, ip, asl #2]
 
5244
+       PUSHD   dtos
 
5245
+       stmda   java_stack!, {r0,r1}
 
5246
+       mov     pc, ip
 
5247
+@ --- do_dadd_dtos -------------------------------------------------
 
5248
+       OpcodeEntry     do_dadd_dtos
 
5249
+       ldrb    r3, [java_pc, #1]!
 
5250
+       POPD    d1
 
5251
+       ldr     r2, [dtos_table, r3, asl #2]
 
5252
+       faddd   d0, d1, d0
 
5253
+       mov     pc, r2
 
5254
+@ --- do_dsub_dtos -------------------------------------------------
 
5255
+       OpcodeEntry     do_dsub_dtos
 
5256
+       ldrb    r3, [java_pc, #1]!
 
5257
+       POPD    d1
 
5258
+       ldr     r2, [dtos_table, r3, asl #2]
 
5259
+       fsubd   d0, d1, d0
 
5260
+       mov     pc, r2
 
5261
+@ --- do_dmul_dtos -------------------------------------------------
 
5262
+       OpcodeEntry     do_dmul_dtos
 
5263
+       ldrb    r3, [java_pc, #1]!
 
5264
+       POPD    d1
 
5265
+       ldr     r2, [dtos_table, r3, asl #2]
 
5266
+       fmuld   d0, d1, d0
 
5267
+       mov     pc, r2
 
5268
+@ --- do_ddiv_dtos -------------------------------------------------
 
5269
+       OpcodeEntry     do_ddiv_dtos
 
5270
+       ldrb    r3, [java_pc, #1]!
 
5271
+       POPD    d1
 
5272
+       ldr     r2, [dtos_table, r3, asl #2]
 
5273
+       fdivd   d0, d1, d0
 
5274
+       mov     pc, r2
 
5275
+@ --- do_drem_dtos -------------------------------------------------
 
5276
+       OpcodeEntry     do_drem_dtos
 
5277
+       vmov    r2, r3, dtos
 
5278
+       ldmib   java_stack!, {r0, r1}
 
5279
+       bl      fmod(PLT)
 
5280
+       ldrb    r3, [java_pc, #1]!
 
5281
+       PUSH(r1)
 
5282
+       ldr     r2, [itos_table, r3, asl #2]
 
5283
+       mov     pc, r2
 
5284
+@ --- do_dneg_dtos -------------------------------------------------
 
5285
+       OpcodeEntry     do_dneg_dtos
 
5286
+       ldrb    r3, [java_pc, #1]!
 
5287
+       fnegd   dtos, dtos
 
5288
+       ldr     r2, [dtos_table, r3, asl #2]
 
5289
+       mov     pc, r2
 
5290
+@ --- do_iinc_dtos -------------------------------------------------
 
5291
+       OpcodeEntry     do_iinc_dtos
 
5292
+       ldrb    r2, [java_pc, #1]
 
5293
+       ldrb    ip, [java_pc, #3]!
 
5294
+       ldrsb   r1, [java_pc, #-1]
 
5295
+       ldr     r3, [java_locals, -r2, lsl #2]
 
5296
+       ldr     ip, [dtos_table, ip, asl #2]
 
5297
+       add     r3, r3, r1
 
5298
+       str     r3, [java_locals, -r2, lsl #2]
 
5299
+       mov     pc, ip
 
5300
+@ --- do_d2i_dtos -------------------------------------------------
 
5301
+       OpcodeEntry     do_d2i_dtos
 
5302
+       vmov    r0, r1, dtos
 
5303
+       bl      _ZN13SharedRuntime3d2iEd(PLT)
 
5304
+       ldrb    r3, [java_pc, #1]!
 
5305
+       ldr     r2, [itos_table, r3, asl #2]
 
5306
+       mov     pc, r2
 
5307
+@ --- do_d2l_dtos -------------------------------------------------
 
5308
+       OpcodeEntry     do_d2l_dtos
 
5309
+       vmov    r0, r1, dtos
 
5310
+       bl      _ZN13SharedRuntime3d2lEd(PLT)
 
5311
+       ldrb    r3, [java_pc, #1]!
 
5312
+       PUSH(r1)
 
5313
+       ldr     r2, [itos_table, r3, asl #2]
 
5314
+       mov     pc, r2
 
5315
+@ --- do_d2f_dtos -------------------------------------------------
 
5316
+       OpcodeEntry     do_d2f_dtos
 
5317
+       ldrb    r3, [java_pc, #1]!
 
5318
+       fcvtsd  s14, dtos
 
5319
+       ldr     r2, [itos_table, r3, asl #2]
 
5320
+       vmov    r0, s14
 
5321
+       mov     pc, r2
 
5322
+@ --- do_dcmpl_dtos -------------------------------------------------
 
5323
+       OpcodeEntry     do_dcmpl_dtos
 
5324
+       ldrb    r3, [java_pc, #1]!
 
5325
+       POPD    d1
 
5326
+       fcmped  d1, dtos
 
5327
+       ldr     r2, [itos_table, r3, asl #2]
 
5328
+       fmstat
 
5329
+       mvnmi   tos, #0
 
5330
+       movmi   pc, r2
 
5331
+       movgt   tos, #1
 
5332
+       movgt   pc, r2
 
5333
+       fcmpd   d1, dtos
 
5334
+       fmstat
 
5335
+       moveq   tos, #0
 
5336
+       mvnne   tos, #0
 
5337
+       mov     pc, r2
 
5338
+@ --- do_dcmpg_dtos -------------------------------------------------
 
5339
+       OpcodeEntry     do_dcmpg_dtos
 
5340
+       ldrb    r3, [java_pc, #1]!
 
5341
+       POPD    d1
 
5342
+       fcmped  d1, dtos
 
5343
+       ldr     r2, [itos_table, r3, asl #2]
 
5344
+       fmstat
 
5345
+       mvnmi   tos, #0
 
5346
+       movmi   pc, r2
 
5347
+       movgt   tos, #1
 
5348
+       movgt   pc, r2
 
5349
+       fcmpd   d1, dtos
 
5350
+       fmstat
 
5351
+       moveq   tos, #0
 
5352
+       movne   tos, #1
 
5353
+       mov     pc, r2
 
5354
+@ --- do_goto_dtos -------------------------------------------------
 
5355
+       OpcodeEntry     do_goto_dtos_unsafe
 
5356
+       ldrsb   r1, [java_pc, #1]
 
5357
+       ldrb    ip, [java_pc, #2]
 
5358
+       orr     ip, ip, r1, lsl #8
 
5359
+       ldrb    ip, [java_pc, ip]!
 
5360
+       ldr     ip, [dtos_table, ip, lsl #2]
 
5361
+       mov     pc, ip
 
5362
+
 
5363
+@ --- do_exit_asm_dtos -------------------------------------------------
 
5364
+       OpcodeEntry     do_goto_dtos
 
5365
+       OpcodeEntry     do_jsr_dtos
 
5366
+       OpcodeEntry     do_ret_dtos
 
5367
+@      OpcodeEntry     do_dreturn_dtos
 
5368
+@      OpcodeEntry     do_putstatic_dtos
 
5369
+@      OpcodeEntry     do_putfield_dtos
 
5370
+@      OpcodeEntry     do_invokestatic_dtos
 
5371
+@      OpcodeEntry     do_invokevirtual_dtos
 
5372
+@      OpcodeEntry     do_invokespecial_dtos
 
5373
+       OpcodeEntry     do_invokeinterface_dtos
 
5374
+       OpcodeEntry     do_new_dtos
 
5375
+       OpcodeEntry     do_xxxunusedxxx_dtos
 
5376
+       OpcodeEntry     do_goto_w_dtos
 
5377
+       OpcodeEntry     do_exit_asm_dtos
 
5378
+       OpcodeEntry     do_breakpoint_dtos
 
5379
+       OpcodeEntry     do_jsr_w_dtos
 
5380
+       OpcodeEntry     do_wide_dtos
 
5381
+       PUSHD   dtos
 
5382
+       str     java_pc, [istate, #ISTATE_JAVA_PC]
 
5383
+       str     java_stack, [istate, #ISTATE_JAVA_STACK]
 
5384
+       mov     r0, #0
 
5385
+       ldmfd   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 
5386
+
 
5387
+@ ECN: These opcodes should never happen - we make sure they dont!
 
5388
+
 
5389
+       OpcodeEntry     do_istore_dtos
 
5390
+       OpcodeEntry     do_lstore_dtos
 
5391
+       OpcodeEntry     do_fstore_dtos
 
5392
+       OpcodeEntry     do_astore_dtos
 
5393
+       OpcodeEntry     do_istore_0_dtos
 
5394
+       OpcodeEntry     do_istore_1_dtos
 
5395
+       OpcodeEntry     do_istore_2_dtos
 
5396
+       OpcodeEntry     do_istore_3_dtos
 
5397
+       OpcodeEntry     do_lstore_0_dtos
 
5398
+       OpcodeEntry     do_lstore_1_dtos
 
5399
+       OpcodeEntry     do_lstore_2_dtos
 
5400
+       OpcodeEntry     do_lstore_3_dtos
 
5401
+       OpcodeEntry     do_fstore_0_dtos
 
5402
+       OpcodeEntry     do_fstore_1_dtos
 
5403
+       OpcodeEntry     do_fstore_2_dtos
 
5404
+       OpcodeEntry     do_fstore_3_dtos
 
5405
+       OpcodeEntry     do_astore_0_dtos
 
5406
+       OpcodeEntry     do_astore_1_dtos
 
5407
+       OpcodeEntry     do_astore_2_dtos
 
5408
+       OpcodeEntry     do_astore_3_dtos
 
5409
+       OpcodeEntry     do_iastore_dtos
 
5410
+       OpcodeEntry     do_lastore_dtos
 
5411
+       OpcodeEntry     do_fastore_dtos
 
5412
+       OpcodeEntry     do_aastore_dtos
 
5413
+       OpcodeEntry     do_bastore_dtos
 
5414
+       OpcodeEntry     do_castore_dtos
 
5415
+       OpcodeEntry     do_sastore_dtos
 
5416
+       OpcodeEntry     do_pop_dtos
 
5417
+       OpcodeEntry     do_dup_dtos
 
5418
+       OpcodeEntry     do_dup_x1_dtos
 
5419
+       OpcodeEntry     do_dup_x2_dtos
 
5420
+       OpcodeEntry     do_swap_dtos
 
5421
+       OpcodeEntry     do_iadd_dtos
 
5422
+       OpcodeEntry     do_ladd_dtos
 
5423
+       OpcodeEntry     do_fadd_dtos
 
5424
+       OpcodeEntry     do_isub_dtos
 
5425
+       OpcodeEntry     do_lsub_dtos
 
5426
+       OpcodeEntry     do_fsub_dtos
 
5427
+       OpcodeEntry     do_imul_dtos
 
5428
+       OpcodeEntry     do_lmul_dtos
 
5429
+       OpcodeEntry     do_fmul_dtos
 
5430
+       OpcodeEntry     do_idiv_dtos
 
5431
+       OpcodeEntry     do_ldiv_dtos
 
5432
+       OpcodeEntry     do_fdiv_dtos
 
5433
+       OpcodeEntry     do_irem_dtos
 
5434
+       OpcodeEntry     do_lrem_dtos
 
5435
+       OpcodeEntry     do_frem_dtos
 
5436
+       OpcodeEntry     do_ineg_dtos
 
5437
+       OpcodeEntry     do_lneg_dtos
 
5438
+       OpcodeEntry     do_fneg_dtos
 
5439
+       OpcodeEntry     do_ishl_dtos
 
5440
+       OpcodeEntry     do_lshl_dtos
 
5441
+       OpcodeEntry     do_ishr_dtos
 
5442
+       OpcodeEntry     do_lshr_dtos
 
5443
+       OpcodeEntry     do_iushr_dtos
 
5444
+       OpcodeEntry     do_lushr_dtos
 
5445
+       OpcodeEntry     do_iand_dtos
 
5446
+       OpcodeEntry     do_land_dtos
 
5447
+       OpcodeEntry     do_ior_dtos
 
5448
+       OpcodeEntry     do_lor_dtos
 
5449
+       OpcodeEntry     do_ixor_dtos
 
5450
+       OpcodeEntry     do_lxor_dtos
 
5451
+       OpcodeEntry     do_i2l_dtos
 
5452
+       OpcodeEntry     do_i2f_dtos
 
5453
+       OpcodeEntry     do_i2d_dtos
 
5454
+       OpcodeEntry     do_l2i_dtos
 
5455
+       OpcodeEntry     do_l2f_dtos
 
5456
+       OpcodeEntry     do_l2d_dtos
 
5457
+       OpcodeEntry     do_f2i_dtos
 
5458
+       OpcodeEntry     do_f2l_dtos
 
5459
+       OpcodeEntry     do_f2d_dtos
 
5460
+       OpcodeEntry     do_i2b_dtos
 
5461
+       OpcodeEntry     do_i2c_dtos
 
5462
+       OpcodeEntry     do_i2s_dtos
 
5463
+       OpcodeEntry     do_lcmp_dtos
 
5464
+       OpcodeEntry     do_fcmpl_dtos
 
5465
+       OpcodeEntry     do_fcmpg_dtos
 
5466
+       OpcodeEntry     do_ifeq_dtos
 
5467
+       OpcodeEntry     do_ifne_dtos
 
5468
+       OpcodeEntry     do_iflt_dtos
 
5469
+       OpcodeEntry     do_ifge_dtos
 
5470
+       OpcodeEntry     do_ifgt_dtos
 
5471
+       OpcodeEntry     do_ifle_dtos
 
5472
+       OpcodeEntry     do_if_icmpeq_dtos
 
5473
+       OpcodeEntry     do_if_icmpne_dtos
 
5474
+       OpcodeEntry     do_if_icmplt_dtos
 
5475
+       OpcodeEntry     do_if_icmpge_dtos
 
5476
+       OpcodeEntry     do_if_icmpgt_dtos
 
5477
+       OpcodeEntry     do_if_icmple_dtos
 
5478
+       OpcodeEntry     do_if_acmpeq_dtos
 
5479
+       OpcodeEntry     do_if_acmpne_dtos
 
5480
+       OpcodeEntry     do_tableswitch_dtos
 
5481
+       OpcodeEntry     do_lookupswitch_dtos
 
5482
+@      OpcodeEntry     do_ireturn_dtos
 
5483
+@      OpcodeEntry     do_lreturn_dtos
 
5484
+@      OpcodeEntry     do_freturn_dtos
 
5485
+@      OpcodeEntry     do_areturn_dtos
 
5486
+@      OpcodeEntry     do_return_dtos
 
5487
+       OpcodeEntry     do_newarray_dtos
 
5488
+       OpcodeEntry     do_anewarray_dtos
 
5489
+       OpcodeEntry     do_arraylength_dtos
 
5490
+       OpcodeEntry     do_athrow_dtos
 
5491
+       OpcodeEntry     do_checkcast_dtos
 
5492
+       OpcodeEntry     do_instanceof_dtos
 
5493
+       OpcodeEntry     do_monitorenter_dtos
 
5494
+       OpcodeEntry     do_monitorexit_dtos
 
5495
+       OpcodeEntry     do_multianewarray_dtos
 
5496
+       OpcodeEntry     do_ifnull_dtos
 
5497
+       OpcodeEntry     do_ifnonnull_dtos
 
5498
+       OpcodeEntry     do_getfield_dtos
 
5499
+
 
5500
+       mov     r0, #1
 
5501
+       str     r0, [r0, -r0]
 
5502
+
 
5503
+#ifdef FAST_SW_FP
 
5504
+
 
5505
+@ ==== Fast SW FP emulation ===============================================================
 
5506
+
 
5507
+#define al             r0
 
5508
+#define ah             r1
 
5509
+#define bl             r2
 
5510
+#define bh             r3
 
5511
+#define tmp            r6
 
5512
+#define sh             r12
 
5513
+#define ex_add         r14
 
5514
+
 
5515
+@ TOS = TOSM1 + TOS
 
5516
+@ What we actually do is TOS = TOS + TOSM1
 
5517
+@ --- do_dadd_vtos -------------------------------------------------
 
5518
+       OpcodeEntry     do_dadd_vtos
 
5519
+       POP(al)
 
5520
+@ --- do_dadd_itos -------------------------------------------------
 
5521
+       OpcodeEntry     do_dadd_itos
 
5522
+       ldmib   java_stack!, {ah, bl, bh}
 
5523
+       mov     tmp, #0xff000000
 
5524
+       orr     tmp, tmp, #0x00e00000
 
5525
+        bics    ex_add, tmp, ah, LSL #1
 
5526
+        bicnes  ex_add, tmp, bh, LSL #1
 
5527
+        beq     dadd_naninf
 
5528
+        teq     ah, bh
 
5529
+        eormi   bh, bh, #1 << 31
 
5530
+        bmi     _dsub1
 
5531
+_dadd1:
 
5532
+        subs    ex_add, al, bl
 
5533
+        sbcs    sh, ah, bh
 
5534
+        bhs     dadd_swapped
 
5535
+        adds    bl, bl, ex_add
 
5536
+        adc     bh, bh, sh
 
5537
+        subs    al, al, ex_add
 
5538
+        sbc     ah, ah, sh
 
5539
+dadd_swapped:
 
5540
+        mov     ex_add, ah, LSR #20
 
5541
+        sub     sh, ex_add, bh, LSR #20
 
5542
+        tst     tmp, bh, LSL #1
 
5543
+        beq     dadd_uncommon
 
5544
+        bic     ah, ah, ex_add, LSL #20
 
5545
+        bic     bh, bh, tmp
 
5546
+        orr     bh, bh, #1 << 20
 
5547
+dadd_doadd:
 
5548
+        rsbs    tmp, sh, #32
 
5549
+        blo     dadd_bigshift
 
5550
+dadd_smallshift:
 
5551
+        adds    al, al, bl, LSR sh
 
5552
+        adc     ah, ah, bh, LSR sh
 
5553
+        adds    al, al, bh, LSL tmp
 
5554
+        adcs    ah, ah, #0
 
5555
+        cmp     ah, #1 << 20
 
5556
+        bhs     dadd_carry
 
5557
+        add     ah, ah, ex_add, LSL #20     @ add exponent
 
5558
+dadd_nocarry:
 
5559
+        movs    bl, bl, LSL tmp         @ round and sticky bits
 
5560
+       bpl     dadd_exit
 
5561
+        adds    al, al, #1
 
5562
+        movccs  bl, bl, LSL #1          @ is sticky bit zero?
 
5563
+       bne     dadd_exit
 
5564
+dadd_roundeven:
 
5565
+        cmp     al, #0
 
5566
+        bicne   al, al, #1              @ RTE if carry didn't occur
 
5567
+        adceq   ah, ah, #0              @ increment high word if it did
 
5568
+dadd_check_overflow_inx:
 
5569
+        mov     bh, ah, LSL #1
 
5570
+        cmp     bh, #0xFFE00000
 
5571
+       blo     dadd_exit
 
5572
+        subhs   ah, ah, #3<<29          @ bias exponent
 
5573
+       b       return_double_Inf
 
5574
+dadd_bigshift:
 
5575
+        cmp     bl, #1
 
5576
+        adc     bl, bh, bh
 
5577
+        sub     sh, sh, #32             @ nonzero
 
5578
+        rsbs    tmp, sh, #31            @ sets C if within a word
 
5579
+        movlo   tmp, #0                 @ C clear if sh > 31
 
5580
+        addhss  al, al, bh, LSR sh
 
5581
+        adc     ah, ah, ex_add, LSL #20
 
5582
+        cmp     ex_add, ah, LSR #20
 
5583
+        beq     dadd_nocarry
 
5584
+        sub     ah, ah, ex_add, LSL #20
 
5585
+dadd_carry:
 
5586
+        add     ah, ah, #1 << 20
 
5587
+        movs    ah, ah, LSR #1
 
5588
+        add     ah, ah, ex_add, LSL #20
 
5589
+        movs    al, al, RRX
 
5590
+        bcc     dadd_check_overflow_exact
 
5591
+        adcs    al, al, #0
 
5592
+        movccs  tmp, bl, LSL tmp    @EQ = round to even
 
5593
+        bne     dadd_check_overflow_exact
 
5594
+        b       dadd_roundeven
 
5595
+dadd_rnearup_carry:
 
5596
+        adds    al, al, #1
 
5597
+        movccs  bl, bl, LSL #1          @ is sticky bit zero?
 
5598
+        bne     dadd_check_overflow_inx
 
5599
+        b       dadd_roundeven
 
5600
+dadd_check_overflow_exact:
 
5601
+        mov     bh, ah, LSL #1
 
5602
+        cmp     bh, #0xFFE00000
 
5603
+       blo     dadd_exit
 
5604
+        sub     ah, ah, #3<<29          @ bias exponent
 
5605
+
 
5606
+return_double_Inf:
 
5607
+       and     a3, ah, #0x80000000
 
5608
+return_double_Inf_1:
 
5609
+       mov     al, #0
 
5610
+       mov     ah, #0x7f000000
 
5611
+       orr     ah, ah, #0x00f00000
 
5612
+       orr     ah,ah,a3
 
5613
+dadd_exit:
 
5614
+       ldrb    ip, [java_pc, #1]!
 
5615
+       PUSH(ah)
 
5616
+       ldr     ip, [itos_table, ip, lsl #2]
 
5617
+       mov     pc, ip
 
5618
+
 
5619
+dadd_uncommon:
 
5620
+        orrs    tmp, bl, bh, LSL #1     @ Is b zero or denormal?
 
5621
+        beq     dadd_bzero
 
5622
+        movs    tmp, ex_add, LSL #21
 
5623
+        bic     ah, ah, ex_add, LSL #20
 
5624
+        bicne   bh, bh, #1 << 31
 
5625
+        subne   sh, sh, #1              @ adjust exponent to fake exp_b = 1
 
5626
+        bne     dadd_doadd    
 
5627
+        adds    al, al, bl
 
5628
+        adc     ah, ah, bh
 
5629
+        b       daddsub_denorm
 
5630
+dadd_bzero:
 
5631
+        movs    tmp, ex_add, LSL #21        @ is a denormal?
 
5632
+       bne     dadd_exit
 
5633
+        orrs    tmp, al, ah, LSL #1     @ a zero?
 
5634
+       beq     dadd_exit
 
5635
+        b       daddsub_denorm
 
5636
+
 
5637
+dadd_naninf:
 
5638
+        cmp     al, #1                  @ sets C if al!=0
 
5639
+        adc     ex_add, ah, ah
 
5640
+        cmp     bl, #1
 
5641
+        adc     sh, bh, bh
 
5642
+        cmp     ex_add, tmp                 @ HI if a is NaN
 
5643
+        cmpls   sh, tmp                 @ HI if either is NaN
 
5644
+        bhi     return_double_NaN
 
5645
+        cmp     ex_add, sh
 
5646
+        beq     dadd_twoinf
 
5647
+        cmp     ex_add, tmp                 @ EQ if a is Inf
 
5648
+        movne   ah, bh
 
5649
+        movne   al, bl
 
5650
+       b       dadd_exit
 
5651
+dadd_twoinf:
 
5652
+        teq     ah, bh
 
5653
+       bpl     dadd_exit
 
5654
+       b       return_double_NaN
 
5655
+
 
5656
+@ ECN: load 1st arg off stack and do a reverse subtract
 
5657
+@ ECN: We want TOSM1 - TOS, but args end up in wrong order so do rsb
 
5658
+@ --- do_dsub_vtos -------------------------------------------------
 
5659
+       OpcodeEntry     do_dsub_vtos
 
5660
+       POP(al)
 
5661
+@ --- do_dsub_itos -------------------------------------------------
 
5662
+       OpcodeEntry     do_dsub_itos
 
5663
+       ldmib   java_stack, {ah, bl, bh}
 
5664
+        mov     tmp, #0xff000000
 
5665
+        orr     tmp, tmp, #0x00e00000
 
5666
+        bics    ex_add, tmp, ah, LSL #1
 
5667
+        bicnes  ex_add, tmp, bh, LSL #1
 
5668
+        beq     drsb_naninf
 
5669
+       teq     ah, bh
 
5670
+       eor     ah, ah, #1 << 31
 
5671
+       bmi     _dadd1
 
5672
+       eor     bh, bh, #1 << 31
 
5673
+_dsub1:
 
5674
+        subs    ex_add, al, bl
 
5675
+        sbcs    sh, ah, bh
 
5676
+        bhs     dsub_swapped
 
5677
+dsub_do_swap:
 
5678
+        eor     sh, sh, #1 << 31        @ negate a and b as a - b == -b - -a
 
5679
+        adds    bl, bl, ex_add
 
5680
+        adc     bh, bh, sh
 
5681
+        subs    al, al, ex_add
 
5682
+        sbc     ah, ah, sh
 
5683
+dsub_swapped:
 
5684
+        mov     ex_add, ah, LSR #20
 
5685
+        sub     sh, ex_add, bh, LSR #20
 
5686
+        tst     tmp, bh, LSL #1
 
5687
+        beq     dsub_uncommon
 
5688
+        bic     ah, ah, ex_add, LSL #20
 
5689
+        bic     bh, bh, tmp, ASR #1
 
5690
+        rsbs    bl, bl, #0
 
5691
+        rsc     bh, bh, tmp, ASR #1     @ 0xffe00000 >> 1 = -(1 << 20)
 
5692
+dsub_dosub:
 
5693
+        rsbs    tmp, sh, #32
 
5694
+        blo     dsub_bigshift
 
5695
+dsub_smallshift:
 
5696
+        adds    al, al, bl, LSR sh
 
5697
+        adc     ah, ah, bh, ASR sh
 
5698
+        adds    al, al, bh, LSL tmp
 
5699
+        adcs    ah, ah, #0
 
5700
+        bmi     dsub_borrow
 
5701
+dsub_noborrow:
 
5702
+        add     ah, ah, ex_add, LSL #20
 
5703
+        movs    bl, bl, LSL tmp
 
5704
+dsub_dorounding:
 
5705
+       bpl     dsub_exit
 
5706
+        adds    al, al, #1              @ Z flag set if carry to high word
 
5707
+        cmpne   bl, #0x80000000         @ check we don't have to round to even
 
5708
+       bne     dsub_exit
 
5709
+        cmp     al, #0
 
5710
+        addeq   ah, ah, #1
 
5711
+        bicne   al, al, #1
 
5712
+       b       dsub_exit
 
5713
+dsub_bigshift:
 
5714
+        cmp     bl, #1
 
5715
+        adc     bl, bh, bh 
 
5716
+        sub     sh, sh, #32
 
5717
+        rsbs    tmp, sh, #31
 
5718
+        blo     dsub_hugeshift
 
5719
+        adds    al, al, bh, ASR sh
 
5720
+        adcs    ah, ah, #-1
 
5721
+        bpl     dsub_noborrow
 
5722
+dsub_borrow:
 
5723
+        add     tmp, tmp, #1
 
5724
+        movs    tmp, bl, LSL tmp
 
5725
+        adcs    al, al, al              @ shift al,ah left including guard bit
 
5726
+        adc     ah, ah, ah
 
5727
+        add     sh, ah, ex_add, LSL #21     @ ah = 0xFFE00000 + fraction. Adding
 
5728
+        movs    sh, sh, LSR #21         @ C-bit is clear if bit 20 of ah
 
5729
+        bls     dsub_renormalize        @   clear, so 2 bits or more
 
5730
+        add     ah, ah, ex_add, LSL #20
 
5731
+        adds    al, al, tmp, LSR #31    @ C and Z flag are set if carry over
 
5732
+        cmpcc   tmp, #0x80000000        @ check that we don't have to round
 
5733
+       bne     dsub_exit
 
5734
+        cmp     al, #0
 
5735
+        addeq   ah, ah, #1
 
5736
+        bicne   al, al, #1
 
5737
+       b       dsub_exit
 
5738
+dsub_renormalize:
 
5739
+        bcs     dsub_ex_one
 
5740
+        adds    ah, ah, #1 << 21
 
5741
+        cmpeq   al, #0
 
5742
+        beq     dsub_retzero            @ go and deal with it, if so
 
5743
+        mov     sh, ex_add, LSR #11
 
5744
+        bic     ex_add, ex_add, #1 << 11
 
5745
+        sub     ex_add, ex_add, #2        @ for leading bit
 
5746
+dsub_renormloop:                 @ TODO: add loop for 8 bit per cycle renorm
 
5747
+        adds    al, al, al
 
5748
+        adc     ah, ah, ah
 
5749
+        sub     ex_add, ex_add, #1
 
5750
+        tst     ah, #1 << 20
 
5751
+        beq     dsub_renormloop
 
5752
+        add     ah, ah, sh, LSL #31 
 
5753
+        add     ah, ah, ex_add, LSL #20
 
5754
+        cmp     ex_add, #0
 
5755
+       bgt     dsub_exit
 
5756
+        add     ah, ah, #3 << 29        @ bias exponent
 
5757
+        @ Rounding direction indicator is zero (denormal results are exact)
 
5758
+       mov     ip, #0
 
5759
+        b       __dunder
 
5760
+dsub_hugeshift:
 
5761
+dsub_return:
 
5762
+        add     ah, ah, ex_add, LSL #20
 
5763
+dsub_return1:
 
5764
+dsub_exit:
 
5765
+       ldrb    ip, [java_pc, #1]!
 
5766
+       PUSH(ah)
 
5767
+       ldr     ip, [itos_table, ip, lsl #2]
 
5768
+       mov     pc, ip
 
5769
+dsub_ex_one:    @ underflow when ex = 1 - shift back to denorm
 
5770
+        movs    ah, ah, ASR #1
 
5771
+        mov     al, al, RRX
 
5772
+        add     ah, ah, ex_add, LSL #20
 
5773
+        b       dsub_denorm
 
5774
+dsub_uncommon:
 
5775
+        orrs    tmp, bl, bh, LSL #12    @ is b zero or denorm?
 
5776
+        beq     dsub_bzero
 
5777
+        movs    tmp, ex_add, LSL #21
 
5778
+        bic     ah, ah, ex_add, LSL #20
 
5779
+        beq     dsub_both_denorm
 
5780
+        bic     bh, bh, #1 << 31
 
5781
+        sub     sh, sh, #1
 
5782
+        rsbs    bl, bl,#0
 
5783
+        rsc     bh, bh,#0
 
5784
+        b       dsub_dosub    
 
5785
+dsub_both_denorm:
 
5786
+        subs    al, al, bl
 
5787
+        sbc     ah, ah, bh
 
5788
+        b       dsub_denorm
 
5789
+dsub_bzero:
 
5790
+        orrs    tmp, al, ah, LSL #1
 
5791
+        bne     dsub_denorm             @ return a@ but it might be denormal
 
5792
+dsub_retzero:
 
5793
+        mov     ah, #0                  @ clear sign bit (al is already 0)
 
5794
+       b       dsub_exit
 
5795
+dsub_denorm:
 
5796
+daddsub_denorm:
 
5797
+        movs    bl, ah, LSL #1          @ discard sign bit
 
5798
+        tsteq   al, al                  @ do we have a zero?
 
5799
+        beq     dsub_retzero            @ yes@ go and ensure the right sign
 
5800
+       b       dsub_exit
 
5801
+drsb_naninf:
 
5802
+        @ Handle NaNs and infinities in reverse subtraction. We
 
5803
+        @ just swap the operands and go to dsub_naninf.
 
5804
+        eor     ah, ah, bh
 
5805
+        eor     al, al, bl
 
5806
+        eor     bh, bh, ah
 
5807
+        eor     bl, bl, al
 
5808
+        eor     ah, ah, bh
 
5809
+        eor     al, al, bl
 
5810
+dsub_naninf:
 
5811
+        cmp     al, #1                  @ sets C if al!=0
 
5812
+        adc     ex_add, ah, ah
 
5813
+        cmp     bl, #1
 
5814
+        adc     sh, bh, bh
 
5815
+        cmp     ex_add, tmp                 @ HI if a is NaN
 
5816
+        cmpls   sh, tmp                 @ HI if either is NaN
 
5817
+        bhi     return_double_NaN
 
5818
+        cmp     ex_add, sh
 
5819
+        beq     dsub_twoinf
 
5820
+        cmp     ex_add, tmp                 @ EQ if a is Inf
 
5821
+        eorne   ah, bh, #0x80000000
 
5822
+        movne   al, bl
 
5823
+       b       dsub_exit
 
5824
+dsub_twoinf:
 
5825
+        teq     ah, bh
 
5826
+       bmi     dsub_exit
 
5827
+
 
5828
+return_double_NaN:
 
5829
+       and     a3, ah, #0x80000000
 
5830
+       mov     al, #0
 
5831
+       mov     ah, #0x7f000000
 
5832
+       orr     ah, ah, #0x00f80000
 
5833
+       orr     ah,ah,a3
 
5834
+       b       dsub_exit
 
5835
+
 
5836
+@ === underflow handler ================================================
 
5837
+
 
5838
+#define        INX_pos 30
 
5839
+#define INX_bit (1<<30)
 
5840
+
 
5841
+#define exp    r2
 
5842
+#define temp   r3
 
5843
+
 
5844
+__dunder:
 
5845
+        tst     ah, ah
 
5846
+        orrmi   ip, ip, #1<<16
 
5847
+        mov     temp, #0x600
 
5848
+        mov     exp, ah, LSR #20      @ find the exponent
 
5849
+        add     temp, temp, #1
 
5850
+        bic     ah, ah, exp, LSL #20 @ remove exponent from mantissa
 
5851
+        bic     exp, exp, #0x800        @ lose the sign bit
 
5852
+        sub     exp, temp, exp
 
5853
+        orr     ah, ah, #1<<20      @ put on mantissa leading bit
 
5854
+        cmp     exp, #53
 
5855
+        bhi     dunder_stickyonly
 
5856
+        beq     dunder_roundbit
 
5857
+        cmp     exp, #21
 
5858
+        blo     dunder_hiword
 
5859
+        subs    exp, exp, #32
 
5860
+        bls     dunder_hiloword
 
5861
+dunder_loloword:
 
5862
+        rsb     temp, exp, #32
 
5863
+        cmp     al, #0
 
5864
+        mov     al, ah, LSR exp
 
5865
+        mov     exp, ah, LSL temp
 
5866
+        orrne   exp, exp, #1
 
5867
+        mov     ah, #0
 
5868
+        b       dunder_round
 
5869
+dunder_hiloword:
 
5870
+        rsb     temp, exp, #0
 
5871
+        add     exp, exp, #32
 
5872
+        mov     ah, ah, LSL temp
 
5873
+        orr     ah, ah, al, LSR exp
 
5874
+        mov     exp, al, LSL temp
 
5875
+        mov     al, ah
 
5876
+        mov     ah, #0
 
5877
+        b       dunder_round
 
5878
+dunder_hiword:
 
5879
+        rsb     temp, exp, #32
 
5880
+        mov     tmp, al, LSL temp
 
5881
+        mov     temp, ah, LSL temp
 
5882
+        orr     al, temp, al, LSR exp
 
5883
+        mov     ah, ah, LSR exp
 
5884
+        mov     exp, tmp
 
5885
+        b       dunder_round
 
5886
+dunder_roundbit:
 
5887
+        orrs    exp, al, ah, LSL #12
 
5888
+        mov     al, #0
 
5889
+        mov     ah, #0
 
5890
+        mov     exp, #0x80000000
 
5891
+        addne   exp, exp, #1
 
5892
+        b       dunder_round
 
5893
+dunder_stickyonly:
 
5894
+        mov     exp, #1
 
5895
+        mov     ah, #0
 
5896
+        mov     al, #0
 
5897
+dunder_round:
 
5898
+        tst     ip, #1<<16
 
5899
+        bic     ip, ip, #1<<16
 
5900
+        orrne   ah, ah, #0x80000000
 
5901
+        tst     exp, exp
 
5902
+       beq     dsub_exit
 
5903
+        movs    exp, exp, LSL #1        @ round bit in C, sticky in ~Z
 
5904
+        bcc     dunder_rerounded        @ if no round bit, we're done
 
5905
+        beq     dunder_roundeven        @ RTE is tricky due to rerounding
 
5906
+dunder_roundup:
 
5907
+        adds    al, al, #1          @ round up
 
5908
+        adc     ah, ah, #0
 
5909
+dunder_rerounded:
 
5910
+       b       dsub_exit
 
5911
+dunder_roundeven:
 
5912
+        movs    exp, ip, ASR #INX_pos   @ get -1, 0, +1 from direction bits
 
5913
+        bmi     dunder_roundup          @ if -1, round up unconditionally
 
5914
+        bne     dunder_rerounded        @ if +1, round down unconditionally
 
5915
+        adds    al, al, #1          @ round up ...
 
5916
+        adc     ah, ah, #0
 
5917
+        bic     al, al, #1          @ ... and then to even
 
5918
+        b       dunder_rerounded
 
5919
+
 
5920
+@ === MULTIPLY Double ===================================================
 
5921
+
 
5922
+#define ex_m           r14
 
5923
+#define uh             r12
 
5924
+#define ul             r4
 
5925
+#define rs             r4
 
5926
+#define th             r5
 
5927
+#define tl             r6
 
5928
+
 
5929
+@ --- do_dmul_vtos -------------------------------------------------
 
5930
+       OpcodeEntry     do_dmul_vtos
 
5931
+       POP(al)
 
5932
+@ --- do_dmul_itos -------------------------------------------------
 
5933
+       OpcodeEntry     do_dmul_itos
 
5934
+       ldmib   java_stack!, {ah, bl, bh}
 
5935
+       stmdb   sp!, {r4, r5}
 
5936
+       mov     tmp, #0x7f00000
 
5937
+       orr     tmp, tmp, #0x00f0000
 
5938
+        bics    ex_m, tmp, ah, LSR #4     @ test for Infs or NaNs
 
5939
+        bicnes  ex_m, tmp, bh, LSR #4
 
5940
+        beq     dmul_naninf
 
5941
+        and     ex_m, tmp, ah, LSR #4     @ get exponent of a
 
5942
+        eor     th, ah, bh              @ compute sign of result
 
5943
+        orr     ex_m, ex_m, th, LSR #31     @   and save it at bottom of ex
 
5944
+        ands    th, tmp, bh, LSR #4     @ get exponent of b, and test
 
5945
+        tstne   ah, tmp, LSL #4         @   for zeros/denorms ...
 
5946
+        beq     dmul_zerodenorm         @   go and renormalise if we got any
 
5947
+dmul_normalised:
 
5948
+        add     ex_m, ex_m, th              @ calculate exponent of result
 
5949
+        sub     ex_m, ex_m, #0x3FC0000      @ rebias exponent mostly
 
5950
+        bic     ah, ah, tmp, LSL #5     @ clear sign and all but lo bit of exp
 
5951
+        bic     bh, bh, tmp, LSL #5
 
5952
+        orr     ah, ah, #1<<20          @ set leading bit on mantissa
 
5953
+        orr     bh, bh, #1<<20          @ set leading bit on mantissa
 
5954
+dmul_mantmul:
 
5955
+        umull   ul, uh, ah, bl
 
5956
+        umull   tl, th, al, bh
 
5957
+        adds    tl, tl, ul
 
5958
+        adcs    th, th, uh              @ carry from here is used below
 
5959
+        umull   ul, uh, ah, bh          @ uh:ul is top part
 
5960
+        adc     bh, uh, #0              @ get carry from above addition
 
5961
+        umull   ah, uh, al, bl          @ uh:ah is bottom part
 
5962
+        adds    tl, tl, uh
 
5963
+        adcs    th, th, ul
 
5964
+        adcs    bh, bh, #0
 
5965
+        tst     ah, ah
 
5966
+        orrne   tl, tl, #1              @ don't lose sticky bit
 
5967
+        mov     bl, #-4
 
5968
+        mov     uh, #32-12              @ uh will be corresponding right shift
 
5969
+        cmp     bh, #0x200              @ C set if it's 11 bits
 
5970
+        adc     uh, uh, #0
 
5971
+        adc     bl, bl, ex_m, ASR #16     @ increment exponent correspondingly
 
5972
+        rsb     ul, uh, #32             @ ul is left shift
 
5973
+        mov     ah, bh, LSL ul
 
5974
+        mov     al, th, LSL ul
 
5975
+        orr     ah, ah, th, LSR uh
 
5976
+        orr     al, al, tl, LSR uh
 
5977
+        add     ah, ah, bl, LSL #20 @ put exponent back on (may wrap
 
5978
+        eor     ah, ah, ex_m, LSL #31 @ put sign back on (with EOR so that
 
5979
+        movs    rs, tl, LSL ul          @ compute the round word
 
5980
+        beq     dmul_exact
 
5981
+        movs    uh, rs, LSL #1          @ rs is already in place
 
5982
+        movcc   rs, #-INX_bit           @ direction indicator: rounded down
 
5983
+        bcc     dmul_rounded
 
5984
+        orreq   bh, bh, #1<<31          @ save the round-to-even bit
 
5985
+        adcs    al, al, #0          @ round up if necessary
 
5986
+        adc     ah, ah, #0
 
5987
+        mov     rs, #INX_bit            @ direction indicator: rounded up
 
5988
+        tst     al, bh, LSR #31       @ does RTE do anything?
 
5989
+        bic     al, al, bh, LSR #31 @ perform RTE
 
5990
+        movne   rs, #-INX_bit           @ if RTE had effect, we rounded down
 
5991
+dmul_exact:
 
5992
+dmul_rounded:
 
5993
+        teq     ah, ex_m, LSL #31       @ do the signs agree?
 
5994
+        ldr     uh, =0x7FF00000         @ even if so, need to test exp 0/7FF
 
5995
+        bmi     dmul_outflow            @ if not, UFL or OFL
 
5996
+        tst     ah, uh
 
5997
+        bicnes  uh, uh, ah            @ is exp 0 or 7FF?
 
5998
+        beq     dmul_outflow
 
5999
+dmul_exit:
 
6000
+       ldrb    ip, [java_pc, #1]!
 
6001
+       ldmia   sp!, {r4, r5}
 
6002
+       ldr     ip, [itos_table, ip, lsl #2]
 
6003
+       PUSH(ah)
 
6004
+       mov     pc, ip
 
6005
+
 
6006
+dmul_rdirect:
 
6007
+        movs    ul, ex_m, LSL #31         @ put sign bit in N
 
6008
+        tstpl   uh, #2 << 22        @ if +ve: EQ iff round up. Keeps PL
 
6009
+        tstmi   uh, #1 << 22         @ if -ve: EQ iff round up.
 
6010
+        moveq   rs, #INX_bit            @ rounded up
 
6011
+        movne   rs, #-INX_bit           @ rounded down
 
6012
+        addeqs  al, al, #1          @ may set C
 
6013
+        adc     ah, ah, #0
 
6014
+        b       dmul_rounded
 
6015
+
 
6016
+dmul_outflow:
 
6017
+        cmp     ex_m, #0x400<<16          @ Which ballpark are we in?
 
6018
+        addle   ah, ah, #0x60000000 @ Bias up if underflow
 
6019
+        subge   ah, ah, #0x60000000 @ Bias down if overflow
 
6020
+       mov     ip, rs
 
6021
+       ldmia   sp!, {r4, r5}
 
6022
+        ble     __dunder                @ underflow
 
6023
+       b       return_double_Inf
 
6024
+
 
6025
+dmul_zerodenorm:
 
6026
+        orrs    ul, al, ah, LSL #1      @ is a zero?
 
6027
+        orrnes  ul, bl, bh, LSL #1      @ or is b zero?
 
6028
+        beq     dmul_zero               @ Return zero if so
 
6029
+
 
6030
+        tst     th, th                  @ is b denormal?
 
6031
+        beq     dmul_renorm_op2
 
6032
+dmul_done_op2:
 
6033
+        bics    ul, ex_m, #1              @ is a denormal? (careful of sign bit)
 
6034
+        beq     dmul_renorm_op1
 
6035
+        b       dmul_normalised
 
6036
+dmul_zero:
 
6037
+        mov     al, #0                  @ clear low word
 
6038
+        mov     ah, ex_m, LSL #31         @ get sign of result and clear hi word
 
6039
+       b       dmul_exit
 
6040
+
 
6041
+dmul_renorm_op1:
 
6042
+        add     ex_m, ex_m, #1<<16          @ correct the exponent
 
6043
+        bic     ah, ah, #0x80000000       @ this will get in our way
 
6044
+        orrs    tl, ah, al, LSR #12    @ is highest set bit in low twelve?
 
6045
+        moveq   al, al, LSL #20         @ if so, move it up
 
6046
+        subeq   ex_m, ex_m, #20<<16       @ and adjust exponent
 
6047
+        tst     ah, ah                  @ is highest set bit in low word?
 
6048
+        moveq   ah, al, LSR #12         @ if so, move up by 20
 
6049
+        moveq   al, al, LSL #20
 
6050
+        subeq   ex_m, ex_m, #20<<16       @ and adjust exponent
 
6051
+        mov     ul, #0                 @ shift of top word
 
6052
+        movs    tl, ah, LSR #(21-16)   @ is highest set bit within 16 of top?
 
6053
+        moveq   ah, ah, LSL #16         @ if not, move up
 
6054
+        addeq   ul, ul, #16           @ and adjust exponent
 
6055
+        movs    tl, ah, LSR #(21-8)   @ is highest set bit within 8 of top?
 
6056
+        moveq   ah, ah, LSL #8         @ if not, move up
 
6057
+        addeq   ul, ul, #8           @ and adjust exponent
 
6058
+        movs    tl, ah, LSR #(21-4)   @ is highest set bit within 4 of top?
 
6059
+        moveq   ah, ah, LSL #4         @ if not, move up
 
6060
+        addeq   ul, ul, #4           @ and adjust exponent
 
6061
+        movs    tl, ah, LSR #(21-2)   @ is highest set bit within 2 of top?
 
6062
+        moveq   ah, ah, LSL #2         @ if not, move up
 
6063
+        addeq   ul, ul, #2           @ and adjust exponent
 
6064
+        movs    tl, ah, LSR #(21-1)   @ is highest set bit within 1 of top?
 
6065
+        moveq   ah, ah, LSL #1         @ if not, move up
 
6066
+        addeq   ul, ul, #1           @ and adjust exponent
 
6067
+
 
6068
+        sub     ex_m, ex_m, ul, LSL #16  @ calculate final pseudo exponent
 
6069
+        mov     tl, al, LSL ul        @ shift low word up by same amout
 
6070
+        rsb     ul, ul, #32           @ compute reverse shift for al
 
6071
+        orr     ah, ah, al, LSR ul     @ put in high end of low word
 
6072
+        mov     al, tl
 
6073
+
 
6074
+@ ECN: Reload tmp
 
6075
+       mov     tmp, #0x7f00000
 
6076
+       orr     tmp, tmp, #0x00f0000
 
6077
+
 
6078
+        b       dmul_normalised
 
6079
+
 
6080
+dmul_renorm_op2:
 
6081
+        add     th, th, #1<<16          @ correct the exponent
 
6082
+        bic     bh, bh, #0x80000000       @ this will get in our way
 
6083
+        orrs    tl, bh, bl, LSR #12    @ is highest set bit in low twelve?
 
6084
+        moveq   bl, bl, LSL #20         @ if so, move it up
 
6085
+        subeq   th, th, #20<<16       @ and adjust exponent
 
6086
+        tst     bh, bh                  @ is highest set bit in low word?
 
6087
+        moveq   bh, bl, LSR #12         @ if so, move up by 20
 
6088
+        moveq   bl, bl, LSL #20
 
6089
+        subeq   th, th, #20<<16       @ and adjust exponent
 
6090
+        mov     ul, #0                 @ shift of top word
 
6091
+        movs    tl, bh, LSR #(21-16)   @ is highest set bit within 16 of top?
 
6092
+        moveq   bh, bh, LSL #16         @ if not, move up
 
6093
+        addeq   ul, ul, #16           @ and adjust exponent
 
6094
+        movs    tl, bh, LSR #(21-8)   @ is highest set bit within 8 of top?
 
6095
+        moveq   bh, bh, LSL #8         @ if not, move up
 
6096
+        addeq   ul, ul, #8           @ and adjust exponent
 
6097
+        movs    tl, bh, LSR #(21-4)   @ is highest set bit within 4 of top?
 
6098
+        moveq   bh, bh, LSL #4         @ if not, move up
 
6099
+        addeq   ul, ul, #4           @ and adjust exponent
 
6100
+        movs    tl, bh, LSR #(21-2)   @ is highest set bit within 2 of top?
 
6101
+        moveq   bh, bh, LSL #2         @ if not, move up
 
6102
+        addeq   ul, ul, #2           @ and adjust exponent
 
6103
+        movs    tl, bh, LSR #(21-1)   @ is highest set bit within 1 of top?
 
6104
+        moveq   bh, bh, LSL #1         @ if not, move up
 
6105
+        addeq   ul, ul, #1           @ and adjust exponent
 
6106
+
 
6107
+        sub     th, th, ul, LSL #16  @ calculate final pseudo exponent
 
6108
+        mov     tl, bl, LSL ul        @ shift low word up by same amout
 
6109
+        rsb     ul, ul, #32           @ compute reverse shift for bl
 
6110
+        orr     bh, bh, bl, LSR ul     @ put in high end of low word
 
6111
+        mov     bl, tl
 
6112
+
 
6113
+@ ECN: Reload tmp
 
6114
+       mov     tmp, #0x7f00000
 
6115
+       orr     tmp, tmp, #0x00f0000
 
6116
+
 
6117
+        b       dmul_done_op2
 
6118
+
 
6119
+dmul_naninf:
 
6120
+        mov     uh, ah, LSL #1          @ discard sign bit on a
 
6121
+        mov     ul, bh, LSL #1          @ and on b
 
6122
+        cmp     uh, tmp, LSL #5         @ HI if ah shows a to be NaN
 
6123
+        cmpeq   al, #0                  @ now HI if a is NaN
 
6124
+        cmpls   ul, tmp, LSL #5         @ another chance to set HI ...
 
6125
+        cmpeq   bl, #0                  @  ... if b is NaN
 
6126
+        bhi     dmul_ivo
 
6127
+        orrs    ul, al, ah, LSL #1      @ is a zero?
 
6128
+        orrnes  ul, bl, bh, LSL #1      @ or is b zero?
 
6129
+        beq     dmul_ivo
 
6130
+        eor     ah, ah, bh
 
6131
+        mov     al, #0
 
6132
+        and     ah, ah, #0x80000000
 
6133
+        orr     ah, ah, tmp, LSL #4
 
6134
+       b       dmul_exit
 
6135
+
 
6136
+dmul_ivo:
 
6137
+       ldmia   sp!, {r4, r5}
 
6138
+       b       return_double_NaN
 
6139
+
 
6140
+#endif
 
6141
+
 
6142
+       .align  2
 
6143
+       .size   _ZN19BytecodeInterpreter7run_optEPS_, .-_ZN19BytecodeInterpreter7run_optEPS_
 
6144
+
 
6145
+
 
6146
+       .section        .data.rel.ro.local,"aw",%progbits
 
6147
+       .align  2
 
6148
+
 
6149
+       .global execute_opt
 
6150
+       .section        .rodata
 
6151
+       .type   execute_opt, %object
 
6152
+       .size   execute_opt, 256
 
6153
+execute_opt:
 
6154
+       .byte   1       @ nop           0x00
 
6155
+       .byte   1       @ aconst_null
 
6156
+       .byte   1       @ iconst_m1
 
6157
+       .byte   1       @ iconst_0
 
6158
+       .byte   1       @ iconst_1
 
6159
+       .byte   1       @ iconst_2
 
6160
+       .byte   1       @ iconst_3
 
6161
+       .byte   1       @ iconst_4
 
6162
+       .byte   1       @ iconst_5
 
6163
+       .byte   1       @ lconst_0
 
6164
+       .byte   1       @ lconst_1
 
6165
+       .byte   1       @ fconst_0
 
6166
+       .byte   1       @ fconst_1
 
6167
+       .byte   1       @ fconst_2
 
6168
+       .byte   1       @ dconst_0
 
6169
+       .byte   1       @ dconst_1
 
6170
+       .byte   1       @ 0x10
 
6171
+       .byte   1
 
6172
+       .byte   1
 
6173
+       .byte   1
 
6174
+       .byte   1
 
6175
+       .byte   1
 
6176
+       .byte   1
 
6177
+       .byte   1
 
6178
+       .byte   1
 
6179
+       .byte   1
 
6180
+       .byte   1
 
6181
+       .byte   1
 
6182
+       .byte   1
 
6183
+       .byte   1
 
6184
+       .byte   1
 
6185
+       .byte   1
 
6186
+       .byte   1       @ 0x20
 
6187
+       .byte   1
 
6188
+       .byte   1
 
6189
+       .byte   1
 
6190
+       .byte   1
 
6191
+       .byte   1
 
6192
+       .byte   1
 
6193
+       .byte   1
 
6194
+       .byte   1
 
6195
+       .byte   1
 
6196
+       .byte   1
 
6197
+       .byte   1
 
6198
+       .byte   1
 
6199
+       .byte   1
 
6200
+       .byte   1
 
6201
+       .byte   1
 
6202
+       .byte   1       @ 0x30
 
6203
+       .byte   1
 
6204
+       .byte   1
 
6205
+       .byte   1
 
6206
+       .byte   1
 
6207
+       .byte   1
 
6208
+       .byte   1
 
6209
+       .byte   1
 
6210
+       .byte   1
 
6211
+       .byte   1
 
6212
+       .byte   1
 
6213
+       .byte   1
 
6214
+       .byte   1
 
6215
+       .byte   1
 
6216
+       .byte   1
 
6217
+       .byte   1
 
6218
+       .byte   1       @ 0x40
 
6219
+       .byte   1
 
6220
+       .byte   1
 
6221
+       .byte   1
 
6222
+       .byte   1
 
6223
+       .byte   1
 
6224
+       .byte   1
 
6225
+       .byte   1
 
6226
+       .byte   1
 
6227
+       .byte   1
 
6228
+       .byte   1
 
6229
+       .byte   1
 
6230
+       .byte   1
 
6231
+       .byte   1
 
6232
+       .byte   1
 
6233
+       .byte   1
 
6234
+       .byte   1       @ 0x50
 
6235
+       .byte   1
 
6236
+       .byte   1
 
6237
+       .byte   0
 
6238
+       .byte   1
 
6239
+       .byte   1
 
6240
+       .byte   1
 
6241
+       .byte   1
 
6242
+       .byte   1
 
6243
+       .byte   1
 
6244
+       .byte   1
 
6245
+       .byte   1
 
6246
+       .byte   1
 
6247
+       .byte   1
 
6248
+       .byte   1
 
6249
+       .byte   1
 
6250
+       .byte   1       @ 0x60
 
6251
+       .byte   1
 
6252
+       .byte   1
 
6253
+       .byte   1
 
6254
+       .byte   1
 
6255
+       .byte   1
 
6256
+       .byte   1
 
6257
+       .byte   1
 
6258
+       .byte   1
 
6259
+       .byte   1
 
6260
+       .byte   1
 
6261
+       .byte   1
 
6262
+       .byte   1
 
6263
+       .byte   1
 
6264
+       .byte   1
 
6265
+       .byte   1
 
6266
+       .byte   1       @ 0x70
 
6267
+       .byte   1
 
6268
+       .byte   1
 
6269
+       .byte   1
 
6270
+       .byte   1
 
6271
+       .byte   1
 
6272
+       .byte   1
 
6273
+       .byte   1
 
6274
+       .byte   1
 
6275
+       .byte   1
 
6276
+       .byte   1
 
6277
+       .byte   1
 
6278
+       .byte   1
 
6279
+       .byte   1
 
6280
+       .byte   1
 
6281
+       .byte   1
 
6282
+       .byte   1       @ 0x80
 
6283
+       .byte   1
 
6284
+       .byte   1
 
6285
+       .byte   1
 
6286
+       .byte   1
 
6287
+       .byte   1
 
6288
+       .byte   1
 
6289
+       .byte   1
 
6290
+       .byte   1
 
6291
+       .byte   1
 
6292
+       .byte   1
 
6293
+       .byte   1
 
6294
+       .byte   1
 
6295
+       .byte   1
 
6296
+       .byte   1
 
6297
+       .byte   1
 
6298
+       .byte   1       @ 0x90
 
6299
+       .byte   1
 
6300
+       .byte   1
 
6301
+       .byte   1
 
6302
+       .byte   1
 
6303
+       .byte   1
 
6304
+       .byte   1
 
6305
+       .byte   1
 
6306
+       .byte   1
 
6307
+       .byte   1
 
6308
+       .byte   1
 
6309
+       .byte   1
 
6310
+       .byte   1
 
6311
+       .byte   1
 
6312
+       .byte   1
 
6313
+       .byte   1
 
6314
+       .byte   1       @ 0xA0
 
6315
+       .byte   1
 
6316
+       .byte   1
 
6317
+       .byte   1
 
6318
+       .byte   1
 
6319
+       .byte   1
 
6320
+       .byte   1
 
6321
+       .byte   1
 
6322
+       .byte   0       @ jsr
 
6323
+       .byte   0       @ ret
 
6324
+       .byte   1
 
6325
+       .byte   1
 
6326
+       .byte   0
 
6327
+       .byte   0
 
6328
+       .byte   0
 
6329
+       .byte   0
 
6330
+       .byte   0       @ 0xB0
 
6331
+       .byte   0
 
6332
+       .byte   1
 
6333
+       .byte   1
 
6334
+       .byte   1
 
6335
+       .byte   1
 
6336
+       .byte   0
 
6337
+       .byte   0
 
6338
+       .byte   0
 
6339
+       .byte   0
 
6340
+       .byte   0
 
6341
+       .byte   0
 
6342
+       .byte   0
 
6343
+       .byte   0
 
6344
+       .byte   1
 
6345
+       .byte   0
 
6346
+       .byte   0       @ 0xC0
 
6347
+       .byte   0
 
6348
+       .byte   0
 
6349
+       .byte   0
 
6350
+       .byte   0
 
6351
+       .byte   0
 
6352
+       .byte   1
 
6353
+       .byte   1
 
6354
+       .byte   0
 
6355
+       .byte   0
 
6356
+       .byte   0
 
6357
+       .byte   0
 
6358
+       .byte   0
 
6359
+       .byte   0
 
6360
+       .byte   0
 
6361
+       .byte   0
 
6362
+       .byte   0       @ 0xD0
 
6363
+       .byte   0
 
6364
+       .byte   0
 
6365
+       .byte   0
 
6366
+       .byte   0
 
6367
+       .byte   0
 
6368
+       .byte   0
 
6369
+       .byte   0
 
6370
+       .byte   0
 
6371
+       .byte   0
 
6372
+       .byte   0
 
6373
+       .byte   0
 
6374
+       .byte   0
 
6375
+       .byte   0
 
6376
+       .byte   0
 
6377
+       .byte   0
 
6378
+       .byte   0       @ 0xE0
 
6379
+       .byte   0
 
6380
+       .byte   0
 
6381
+       .byte   0
 
6382
+       .byte   0
 
6383
+       .byte   0
 
6384
+       .byte   0
 
6385
+       .byte   0
 
6386
+       .byte   0
 
6387
+       .byte   0
 
6388
+       .byte   0
 
6389
+       .byte   0
 
6390
+       .byte   0
 
6391
+       .byte   0
 
6392
+       .byte   0
 
6393
+       .byte   0
 
6394
+       .byte   0       @ 0xF0
 
6395
+       .byte   0
 
6396
+       .byte   0
 
6397
+       .byte   0
 
6398
+       .byte   0
 
6399
+       .byte   0
 
6400
+       .byte   0
 
6401
+       .byte   0
 
6402
+       .byte   0
 
6403
+       .byte   0
 
6404
+       .byte   0
 
6405
+       .byte   0
 
6406
+       .byte   0
 
6407
+       .byte   0
 
6408
+       .byte   0
 
6409
+       .byte   0
 
6410
+
 
6411
+       .ident  "GCC: (Debian 4.3.2-1.1) 4.3.2"
 
6412
+       .section        .note.GNU-stack,"",%progbits
 
6413
+
 
6414
+#endif
 
6415
diff -ruNE ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp
 
6416
--- ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp        2009-03-05 14:43:47.000000000 +0000
 
6417
+++ ports/hotspot/src/cpu/zero/vm/bytes_zero.hpp        2009-04-03 13:32:49.000000000 +0000
 
6418
@@ -40,10 +40,14 @@
 
6419
   // platform-specific byte ordering.
 
6420
 #ifdef VM_LITTLE_ENDIAN
 
6421
   static inline u2   get_native_u2(address p){
 
6422
+#ifdef HOTSPOT_OPT
 
6423
+    return ( u2(p[1]) << 8 ) | ( u2(p[0])      );
 
6424
+#else
 
6425
     return (intptr_t(p) & 1) == 0
 
6426
              ?   *(u2*)p
 
6427
              :   ( u2(p[1]) << 8 )
 
6428
                | ( u2(p[0])      );
 
6429
+#endif
 
6430
   }
 
6431
 
 
6432
   static inline u4   get_native_u4(address p) {
 
6433
@@ -135,10 +139,14 @@
 
6434
   }
 
6435
 #else
 
6436
   static inline u2   get_native_u2(address p){
 
6437
+#ifdef HOTSPOT_OPT
 
6438
+    return ( u2(p[0]) << 8 ) | ( u2(p[1])      );
 
6439
+#else
 
6440
     return (intptr_t(p) & 1) == 0
 
6441
              ?   *(u2*)p
 
6442
              :   ( u2(p[0]) << 8 )
 
6443
                | ( u2(p[1])      );
 
6444
+#endif
 
6445
   }
 
6446
 
 
6447
   static inline u4   get_native_u4(address p) {
 
6448
@@ -237,7 +245,11 @@
 
6449
   // Byte-order reversal is needed
 
6450
   static inline u2 get_Java_u2(address p)
 
6451
   {
 
6452
+#ifdef HOTSPOT_OPT
 
6453
+    return ( u2(p[0]) << 8 ) | ( u2(p[1])      );
 
6454
+#else
 
6455
     return swap_u2(get_native_u2(p));
 
6456
+#endif
 
6457
   }
 
6458
   static inline u4 get_Java_u4(address p)
 
6459
   {