Shark’s first method

This is what Shark makes of java.lang.Thread.Thread(ThreadGroup group, String name) on 32-bit ppc:

0xd04c2010:     mflr    r0
0xd04c2014:     stw     r0,4(r1)
0xd04c2018:     stwu    r1,-48(r1)
0xd04c201c:     stw     r24,44(r1)
0xd04c2020:     stw     r25,40(r1)
0xd04c2024:     stw     r26,36(r1)
0xd04c2028:     stw     r27,32(r1)
0xd04c202c:     stw     r28,28(r1)
0xd04c2030:     stw     r29,24(r1)
0xd04c2034:     stw     r30,20(r1)
 abi frame setup
0xd04c2038:     lwz     r5,712(r4)
0xd04c203c:     lwz     r6,704(r4)
0xd04c2040:     addi    r30,r5,-36
0xd04c2044:     cmplw   r30,r6
0xd04c2048:     mr      r29,r4
0xd04c204c:     addi    r28,r4,712
0xd04c2050:     addi    r27,r4,716
0xd04c2054:     blt-    0xd04c23a4
0xd04c2058:     stw     r30,0(r28)
0xd04c205c:     stw     r3,24(r30)
0xd04c2060:     li      r4,3
0xd04c2064:     stw     r4,28(r30)
0xd04c2068:     lwz     r4,0(r27)
0xd04c206c:     addi    r5,r30,32
0xd04c2070:     stw     r4,32(r30)
0xd04c2074:     stw     r5,0(r27)
 zero frame setup
0xd04c2078:     lwz     r4,44(r30)
 0: aload_0
0xd04c207c:     addi    r26,r30,20
0xd04c2080:     stw     r4,20(r30)
0xd04c2084:     cmplwi  r4,0
0xd04c2088:     addi    r25,r30,24
0xd04c208c:     beq-    0xd04c23b4
0xd04c2090:     lwz     r3,12(r3)
0xd04c2094:     lwz     r3,16(r3)
0xd04c2098:     lwz     r4,640(r3)
0xd04c209c:     addi    r24,r3,640
0xd04c20a0:     rlwinm  r3,r4,16,24,31
0xd04c20a4:     cmplwi  r3,183
0xd04c20a8:     beq-    0xd04c20bc
0xd04c20ac:     lis     r3,3999
0xd04c20b0:     li      r4,438
0xd04c20b4:     ori     r3,r3,58324
0xd04c20b8:     bl      0xd04c1fd8
0xd04c20bc:     lwz     r3,4(r24)
0xd04c20c0:     lwz     r24,0(r28)
0xd04c20c4:     lwz     r5,80(r3)
0xd04c20c8:     stw     r26,0(r28)
0xd04c20cc:     mr      r4,r29
0xd04c20d0:     mtctr   r5
0xd04c20d4:     bctrl
0xd04c20d8:     lwz     r26,0(r25)
0xd04c20dc:     lwz     r3,0(r28)
0xd04c20e0:     stw     r24,0(r28)
0xd04c20e4:     lwz     r4,4(r29)
0xd04c20e8:     cmplwi  r4,0
0xd04c20ec:     bne-    0xd04c23c4
 1: invokespecial <Method java.lang.Object.<init> ()void>
0xd04c20f0:     lwz     r4,44(r30)
 4: aload_0
0xd04c20f4:     li      r5,0
0xd04c20f8:     stw     r4,-4(r3)
0xd04c20fc:     stw     r5,-8(r3)
 5: iconst_0
0xd04c2100:     lwz     r4,-4(r3)
0xd04c2104:     cmplwi  r4,0
0xd04c2108:     beq-    0xd04c23b4
0xd04c210c:     stw     r5,49(r4)
 6: putfield <Field java.lang.Thread.daemon boolean>
0xd04c2110:     lwz     r4,44(r30)
 9: aload_0
0xd04c2114:     li      r5,0
0xd04c2118:     stw     r4,-4(r3)
0xd04c211c:     stw     r5,-8(r3)
10: iconst_0
0xd04c2120:     lwz     r4,-4(r3)
0xd04c2124:     cmplwi  r4,0
0xd04c2128:     beq-    0xd04c23b4
0xd04c212c:     stw     r5,50(r4)
11: putfield <Field java.lang.Thread.stillborn boolean>
0xd04c2130:     lwz     r4,44(r30)
14: aload_0
0xd04c2134:     li      r5,0
0xd04c2138:     stw     r4,-4(r3)
0xd04c213c:     stw     r5,-8(r3)
15: aconst_null
0xd04c2140:     lwz     r4,-4(r3)
0xd04c2144:     cmplwi  r4,0
0xd04c2148:     beq-    0xd04c23b4
0xd04c214c:     lis     r6,-11934
0xd04c2150:     addi    r7,r4,76
0xd04c2154:     stw     r5,76(r4)
0xd04c2158:     li      r4,0
0xd04c215c:     ori     r5,r6,384
0xd04c2160:     rlwinm  r6,r7,23,9,31
0xd04c2164:     stbx    r4,r6,r5
16: putfield <Field java.lang.Thread.threadLocals java.lang.ThreadLocal$ThreadLocalMap>
0xd04c2168:     lwz     r5,44(r30)
0xd04c216c:     stw     r5,-4(r3)
19: aload_0
0xd04c2170:     stw     r4,-8(r3)
0xd04c2174:     nop
20: aconst_null
0xd04c2178:     lwz     r5,-4(r3)
0xd04c217c:     cmplwi  r5,0
0xd04c2180:     beq-    0xd04c23b4
0xd04c2184:     lis     r6,-11934
0xd04c2188:     addi    r7,r5,80
0xd04c218c:     stw     r4,80(r5)
0xd04c2190:     li      r4,0
0xd04c2194:     ori     r5,r6,384
0xd04c2198:     rlwinm  r6,r7,23,9,31
0xd04c219c:     stbx    r4,r6,r5
21: putfield <Field java.lang.Thread.inheritableThreadLocals java.lang.ThreadLocal$ThreadLocalMap>
0xd04c21a0:     lwz     r5,44(r30)
0xd04c21a4:     stw     r5,-4(r3)
24: aload_0
0xd04c21a8:     stw     r4,-8(r3)
0xd04c21ac:     nop
25: iconst_0
0xd04c21b0:     lwz     r5,-4(r3)
0xd04c21b4:     cmplwi  r5,0
0xd04c21b8:     beq-    0xd04c23b4
0xd04c21bc:     stw     r4,44(r5)
26: putfield <Field java.lang.Thread.threadStatus int>
0xd04c21c0:     lwz     r4,44(r30)
29: aload_0
0xd04c21c4:     addi    r24,r3,-4
0xd04c21c8:     stw     r4,-4(r3)
0xd04c21cc:     lwz     r3,68(r29)
0xd04c21d0:     lwz     r4,76(r29)
0xd04c21d4:     addi    r5,r3,8
0xd04c21d8:     cmplw   r5,r4
0xd04c21dc:     addi    r4,r29,68
0xd04c21e0:     ble-    0xd04c23d4
0xd04c21e4:     lis     r3,3999
0xd04c21e8:     li      r4,392
0xd04c21ec:     ori     r3,r3,60456
0xd04c21f0:     bl      0xd04c1fd8
0xd04c21f4:     lwz     r3,148(r29)
0xd04c21f8:     cmplwi  r3,0
0xd04c21fc:     bne-    0xd04c23d8
0xd04c2200:     lis     r3,3999
0xd04c2204:     li      r4,469
0xd04c2208:     ori     r3,r3,60456
0xd04c220c:     bl      0xd04c1fd8
0xd04c2210:     lwz     r3,8(r29)
0xd04c2214:     stw     r3,-4(r24)
30: new <Class java.lang.Object>

 (part 1 of 2)
0xd04c2218:     stw     r3,-8(r24)
33: dup
0xd04c221c:     cmplwi  r3,0
0xd04c2220:     addi    r24,r24,-8
0xd04c2224:     beq-    0xd04c23b4
0xd04c2228:     lwz     r3,12(r26)
0xd04c222c:     lwz     r3,16(r3)
0xd04c2230:     lwz     r4,640(r3)
0xd04c2234:     addi    r26,r3,640
0xd04c2238:     rlwinm  r3,r4,16,24,31
0xd04c223c:     cmplwi  r3,183
0xd04c2240:     beq-    0xd04c2254
0xd04c2244:     lis     r3,3999
0xd04c2248:     li      r4,438
0xd04c224c:     ori     r3,r3,58324
0xd04c2250:     bl      0xd04c1fd8
0xd04c2254:     lwz     r3,4(r26)
0xd04c2258:     lwz     r26,0(r28)
0xd04c225c:     lwz     r5,80(r3)
0xd04c2260:     stw     r24,0(r28)
0xd04c2264:     mr      r4,r29
0xd04c2268:     mtctr   r5
0xd04c226c:     bctrl
0xd04c2270:     lwz     r3,0(r25)
0xd04c2274:     lwz     r4,0(r28)
0xd04c2278:     stw     r26,0(r28)
0xd04c227c:     lwz     r5,4(r29)
0xd04c2280:     cmplwi  r5,0
0xd04c2284:     bne-    0xd04c23c4
34: invokespecial <Method java.lang.Object.<init> ()void>
0xd04c2288:     lwz     r5,4(r4)
0xd04c228c:     lwz     r6,0(r4)
0xd04c2290:     cmplwi  r5,0
37: putfield <Field java.lang.Thread.blockerLock java.lang.Object>
0xd04c2294:     addi    r4,r4,8
0xd04c2298:     beq-    0xd04c23b4
0xd04c229c:     lis     r7,-11934
0xd04c22a0:     addi    r8,r5,92
0xd04c22a4:     stw     r6,92(r5)
0xd04c22a8:     li      r5,0
0xd04c22ac:     ori     r6,r7,384
0xd04c22b0:     rlwinm  r7,r8,23,9,31
0xd04c22b4:     stbx    r5,r7,r6
0xd04c22b8:     lwz     r6,44(r30)
0xd04c22bc:     addi    r26,r4,-24
0xd04c22c0:     stw     r6,-4(r4)
40: aload_0
0xd04c22c4:     lwz     r6,40(r30)
0xd04c22c8:     stw     r6,-8(r4)
41: aload_1
0xd04c22cc:     stw     r5,-12(r4)
42: aconst_null
0xd04c22d0:     lwz     r6,36(r30)
0xd04c22d4:     stw     r6,-16(r4)
43: aload_2
0xd04c22d8:     stw     r5,-24(r4)
0xd04c22dc:     stw     r5,-20(r4)
44: lconst_0
0xd04c22e0:     lwz     r4,-4(r4)
0xd04c22e4:     cmplwi  r4,0
0xd04c22e8:     beq-    0xd04c23b4
0xd04c22ec:     lwz     r3,12(r3)
0xd04c22f0:     lwz     r3,16(r3)
0xd04c22f4:     lwz     r4,768(r3)
0xd04c22f8:     addi    r30,r3,768
0xd04c22fc:     rlwinm  r3,r4,16,24,31
0xd04c2300:     cmplwi  r3,183
0xd04c2304:     beq-    0xd04c2318
0xd04c2308:     lis     r3,3999
0xd04c230c:     li      r4,438
0xd04c2310:     ori     r3,r3,58324
0xd04c2314:     bl      0xd04c1fd8
0xd04c2318:     lwz     r3,4(r30)
0xd04c231c:     lwz     r30,0(r28)
0xd04c2320:     lwz     r5,80(r3)
0xd04c2324:     stw     r26,0(r28)
0xd04c2328:     mr      r4,r29
0xd04c232c:     mtctr   r5
0xd04c2330:     bctrl
0xd04c2334:     stw     r30,0(r28)
0xd04c2338:     lwz     r3,4(r29)
0xd04c233c:     cmplwi  r3,0
0xd04c2340:     bne-    0xd04c23c4
45: invokespecial <Method java.lang.Thread.init (java.lang.ThreadGroup,java.lang.Runnable,java.lang.String,long)void>
0xd04c2344:     lis     r3,4031
0xd04c2348:     lwz     r3,-8400(r3)
0xd04c234c:     cmplwi  r3,1
0xd04c2350:     bne-    0xd04c2364
0xd04c2354:     lis     r3,3999
0xd04c2358:     li      r4,465
0xd04c235c:     ori     r3,r3,58324
0xd04c2360:     bl      0xd04c1fd8
48: return
0xd04c2364:     lwz     r3,0(r27)
0xd04c2368:     addi    r4,r3,16
0xd04c236c:     stw     r4,0(r28)
0xd04c2370:     lwz     r3,0(r3)
0xd04c2374:     stw     r3,0(r27)
zero frame teardown
0xd04c2378:     lwz     r30,20(r1)
0xd04c237c:     lwz     r29,24(r1)
0xd04c2380:     lwz     r28,28(r1)
0xd04c2384:     lwz     r27,32(r1)
0xd04c2388:     lwz     r26,36(r1)
0xd04c238c:     lwz     r25,40(r1)
0xd04c2390:     lwz     r24,44(r1)
0xd04c2394:     addi    r1,r1,48
0xd04c2398:     lwz     r0,4(r1)
0xd04c239c:     mtlr    r0
0xd04c23a0:     blr
abi frame teardown
0xd04c23a4:     lis     r28,3999
0xd04c23a8:     li      r4,272
0xd04c23ac:     ori     r3,r28,58324
0xd04c23b0:     bl      0xd04c1fd8
stack overflow handler
0xd04c23b4:     lis     r28,3999
0xd04c23b8:     li      r4,281
0xd04c23bc:     ori     r3,r28,58324
0xd04c23c0:     bl      0xd04c1fd8
null pointer handler
0xd04c23c4:     lis     r28,3999
0xd04c23c8:     li      r4,289
0xd04c23cc:     ori     r3,r28,58324
0xd04c23d0:     bl      0xd04c1fd8
exception handler
0xd04c23d4:     stw     r5,0(r4)
0xd04c23d8:     li      r4,0
0xd04c23dc:     stw     r4,0(r3)
0xd04c23e0:     stw     r4,4(r3)
0xd04c23e4:     li      r4,1
0xd04c23e8:     stw     r4,0(r3)
0xd04c23ec:     lwz     r4,12(r26)
0xd04c23f0:     lwz     r4,40(r4)
0xd04c23f4:     stw     r4,4(r3)
0xd04c23f8:     b       0xd04c2214
30: new <Class java.lang.Object>

 (part 2 of 2)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.