Translation of function: 'initHeap' ******* Before register allocation ****** 2: entry: 4: rptr heapPtr = arg 2; 6: pint heapSize = arg 3; 8: pint $t_8 = icast_pint heapPtr; 12: pint $t_90 = mod_pint $t_8, pint:256; 14: bool $t_89 = eq_pint $t_90, pint:0; 16: if_bool $t_89 then call_res else if_false; 18: if_false: 20: pint $t_59 = sub_pint pint:256, $t_90; 22: rptr $t_60 = add_rptr_pint heapPtr, $t_59; 24: jump call_res; 26: call_res: 26: rptr phires = phi [$t_60 if_false], [heapPtr entry]; 28: ref ctx = icast_ref phires; 30: set_ctx_ref ctx; 32: store_rptr ctx, pint:48, phires; 34: rptr $t_94 = add_rptr_pint heapPtr, heapSize; 36: ref $t_7 = get_ctx; 38: box $t_133 = load_box $t_7, pint:36; 42: call , undefined, $t_133, heapSize; 44: box $t_137 = load_box $t_7, pint:36; 48: call , undefined, $t_137, heapPtr; 50: box $t_141 = load_box $t_7, pint:36; 54: call , undefined, $t_141, $t_94; 56: store_rptr ctx, pint:40, heapPtr; 58: store_rptr ctx, pint:44, $t_94; 60: box $t_181 = load_box $t_7, pint:36; 64: rptr $t_182 = call , undefined, $t_181, pint:96; 66: ref $t_183 = icast_ref $t_182; 68: store_u32 $t_183, pint:0, u32:2; 70: store_box $t_183, pint:36, null; 72: store_box $t_183, pint:52, null; 74: store_box $t_183, pint:56, null; 76: store_box $t_183, pint:60, null; 78: store_box $t_183, pint:64, null; 80: store_box $t_183, pint:68, null; 82: store_box $t_183, pint:72, null; 84: store_box $t_183, pint:76, null; 86: store_box $t_183, pint:80, null; 88: store_box $t_183, pint:84, null; 90: store_box $t_183, pint:88, null; 92: store_box $t_183, pint:92, null; 94: box $t_199 = load_box $t_7, pint:36; 98: box $t_200 = call , undefined, $t_199, null; 100: store_box $t_183, pint:36, $t_200; 102: box $t_206 = load_box $t_7, pint:36; 106: box $t_207 = call , undefined, $t_206; 108: ret_ref $t_183; ******* After register allocation ******* 2: entry: 4: EAX = arg 2; 6: ESI = arg 3; 8: EBX = icast_pint EAX; null: move EAX, EDI -- SSA Temp: heapPtr; 12: EDX = mod_pint EBX, pint:256; 14: EAX = eq_pint EDX, pint:0; 16: if_bool EAX then ssa_dec else if_false; ssa_dec: null: move EDI, EAX -- SSA Temp: phires; null: jump call_res; 18: if_false: 20: EAX = sub_pint pint:256, EDX; 22: EAX = add_rptr_pint EDI, EAX; 24: jump call_res; 26: call_res: 26: EAX = phi [EAX if_false], [EDI ssa_dec]; 28: EBX = icast_ref EAX; 30: set_ctx_ref EBX; 32: store_rptr EBX, pint:48, EAX; 34: EAX = add_rptr_pint EDI, ESI; 36: EDX = get_ctx; null: move EAX, mem(ESP) -- SSA Temp: $t_94; 38: EAX = load_box EDX, pint:36; null: move EDX, mem(4,ESP) -- SSA Temp: $t_7; null: move EBX, mem(12,ESP) -- SSA Temp: ctx; null: move EDI, mem(8,ESP) -- SSA Temp: heapPtr; 42: call , undefined, EAX, ESI; null: move mem(4,ESP), EAX -- SSA Temp: $t_7; 44: EBX = load_box EAX, pint:36; null: move EAX, mem(4,ESP) -- SSA Temp: $t_7; 48: call , undefined, EBX, mem(8,ESP); null: move mem(4,ESP), EAX -- SSA Temp: $t_7; 50: EBX = load_box EAX, pint:36; null: move EAX, mem(4,ESP) -- SSA Temp: $t_7; 54: call , undefined, EBX, mem(ESP); null: move mem(12,ESP), EBX -- SSA Temp: ctx; null: move mem(8,ESP), EAX -- SSA Temp: heapPtr; 56: store_rptr EBX, pint:40, EAX; null: move mem(ESP), EAX -- SSA Temp: $t_94; 58: store_rptr EBX, pint:44, EAX; null: move mem(4,ESP), EAX -- SSA Temp: $t_7; 60: EBX = load_box EAX, pint:36; null: move EAX, mem(4,ESP) -- SSA Temp: $t_7; 64: EAX = call , undefined, EBX, pint:96; 66: EAX = icast_ref EAX; 68: store_u32 EAX, pint:0, u32:2; 70: store_box EAX, pint:36, null; 72: store_box EAX, pint:52, null; 74: store_box EAX, pint:56, null; 76: store_box EAX, pint:60, null; 78: store_box EAX, pint:64, null; 80: store_box EAX, pint:68, null; 82: store_box EAX, pint:72, null; 84: store_box EAX, pint:76, null; 86: store_box EAX, pint:80, null; 88: store_box EAX, pint:84, null; 90: store_box EAX, pint:88, null; 92: store_box EAX, pint:92, null; null: move mem(4,ESP), EBX -- SSA Temp: $t_7; 94: EDX = load_box EBX, pint:36; null: move EAX, mem(16,ESP) -- SSA Temp: $t_183; null: move EBX, mem(4,ESP) -- SSA Temp: $t_7; 98: EAX = call , undefined, EDX, null; null: move mem(16,ESP), EBX -- SSA Temp: $t_183; 100: store_box EBX, pint:36, EAX; null: move mem(4,ESP), EAX -- SSA Temp: $t_7; 102: EAX = load_box EAX, pint:36; null: move EBX, mem(16,ESP) -- SSA Temp: $t_183; 106: null = call , undefined, EAX; null: move mem(16,ESP), EAX -- SSA Temp: $t_183; 108: ret_ref EAX; ***************************************** Number of spills: 5 Translation of function: 'initHeap2' ******* Before register allocation ****** 2: entry: 4: rptr heapPtr = arg 2; 6: ref $t_5 = icast_ref heapPtr; 8: ret_ref $t_5; ******* After register allocation ******* 2: entry: 4: EAX = arg 2; 6: EAX = icast_ref EAX; 8: ret_ref EAX; ***************************************** Number of spills: 0 Translation of function: 'getFloatObj' ******* Before register allocation ****** 2: entry: 4: ret undefined; ******* After register allocation ******* 2: entry: 4: ret undefined; ***************************************** Number of spills: 0 Translation of function: '' ******* Before register allocation ****** 2: entry: 6: box $t_3 = call , undefined, undefined, , pint:0; 10: box $t_4 = call , undefined, undefined, , pint:0; 14: box $t_5 = call , undefined, undefined, , pint:0; 16: ref $t_6 = get_ctx; 18: box global = load_box $t_6, pint:36; 22: box $t_9 = call , undefined, undefined, global, "getFloatObj", $t_5; 26: box $t_10 = call , undefined, undefined, global, "initHeap2", $t_4; 30: box $t_11 = call , undefined, undefined, global, "initHeap", $t_3; 32: ret undefined; ******* After register allocation ******* 2: entry: 6: EAX = call , undefined, undefined, , pint:0; null: move EAX, mem(ESP) -- SSA Temp: $t_3; 10: EAX = call , undefined, undefined, , pint:0; null: move EAX, mem(4,ESP) -- SSA Temp: $t_4; 14: EAX = call , undefined, undefined, , pint:0; 16: EBX = get_ctx; 18: EBX = load_box EBX, pint:36; null: move EBX, mem(8,ESP) -- SSA Temp: global; 22: null = call , undefined, undefined, EBX, "getFloatObj", EAX; 26: null = call , undefined, undefined, mem(8,ESP), "initHeap2", mem(4,ESP); 30: null = call , undefined, undefined, mem(8,ESP), "initHeap", mem(ESP); 32: ret undefined; ***************************************** Number of spills: 3 000000 000000 8b 79 04 movl 4(%ecx),%edi 000003 83 ef 04 subl $4,%edi 000006 85 ff testl %edi,%edi 000008 74 44 je L4373 00000a 83 ff 00 cmpl $0,%edi 00000d 7f 22 jg L4374 00000f bd 19 00 00 00 movl $25,%ebp 000014 8b 79 04 movl 4(%ecx),%edi 000017 83 ff 00 cmpl $0,%edi 00001a 0f 4e d5 cmovlel %ebp,%edx 00001d 83 ff 01 cmpl $1,%edi 000020 0f 4e dd cmovlel %ebp,%ebx 000023 83 ff 02 cmpl $2,%edi 000026 0f 4e c5 cmovlel %ebp,%eax 000029 83 ff 03 cmpl $3,%edi 00002c 0f 4e f5 cmovlel %ebp,%esi 00002f eb 1d jmp L4373 000031 L4374: 000031 89 41 0c movl %eax,12(%ecx) 000034 89 e5 movl %esp,%ebp 000036 L4376: 000036 39 e5 cmpl %esp,%ebp 000038 7c 0c jl L4375 00003a 8b 45 00 movl (%ebp),%eax 00003d 89 44 bd 00 movl %eax,(%ebp + %edi*4) 000041 83 ed 04 subl $4,%ebp 000044 eb f0 jmp L4376 000046 L4375: 000046 8b 41 0c movl 12(%ecx),%eax 000049 c1 e7 02 sall $2,%edi 00004c 01 fc addl %edi,%esp 00004e L4373: 00004e 83 ec 14 subl $20,%esp 000051 entry: 000051 89 c3 movl %eax,%ebx 000053 89 c7 movl %eax,%edi 000055 89 d8 movl %ebx,%eax 000057 bb 00 01 00 00 movl $256,%ebx 00005c 99 cdq 00005d f7 fb idivl %ebx 00005f 85 d2 testl %edx,%edx 000061 b8 00 00 00 00 movl $0,%eax 000066 0f 44 c4 cmovzl %esp,%eax 000069 85 c0 testl %eax,%eax 00006b 74 06 je if_false 00006d eb 00 jmp ssa_dec 00006f 00006f ssa_dec: 00006f 89 f8 movl %edi,%eax 000071 eb 0b jmp call_res 000073 000073 if_false: 000073 b8 00 01 00 00 movl $256,%eax 000078 29 d0 subl %edx,%eax 00007a 01 f8 addl %edi,%eax 00007c eb 00 jmp call_res 00007e 00007e call_res: 00007e 89 c3 movl %eax,%ebx 000080 89 d9 movl %ebx,%ecx 000082 89 43 30 movl %eax,48(%ebx) 000085 89 f8 movl %edi,%eax 000087 01 f0 addl %esi,%eax 000089 89 ca movl %ecx,%edx 00008b 89 c5 movl %eax,%ebp 00008d 89 2c 24 movl %ebp,(%esp) 000090 8b 42 24 movl 36(%edx),%eax 000093 89 d5 movl %edx,%ebp 000095 89 6c 24 04 movl %ebp,4(%esp) 000099 89 dd movl %ebx,%ebp 00009b 89 6c 24 0c movl %ebp,12(%esp) 00009f 89 fd movl %edi,%ebp 0000a1 89 6c 24 08 movl %ebp,8(%esp) 0000a5 bf 00 00 00 00 movl ,%edi 0000aa 89 c3 movl %eax,%ebx 0000ac 89 f0 movl %esi,%eax 0000ae ba 19 00 00 00 movl $25,%edx 0000b3 c7 41 04 03 00 00 00 movl $3,4(%ecx) 0000ba ff d7 call *%edi 0000bc 8b 44 24 04 movl 4(%esp),%eax 0000c0 8b 58 24 movl 36(%eax),%ebx 0000c3 89 c5 movl %eax,%ebp 0000c5 89 6c 24 04 movl %ebp,4(%esp) 0000c9 bf 00 00 00 00 movl ,%edi 0000ce 8b 44 24 08 movl 8(%esp),%eax 0000d2 ba 19 00 00 00 movl $25,%edx 0000d7 c7 41 04 03 00 00 00 movl $3,4(%ecx) 0000de ff d7 call *%edi 0000e0 8b 44 24 04 movl 4(%esp),%eax 0000e4 8b 58 24 movl 36(%eax),%ebx 0000e7 89 c5 movl %eax,%ebp 0000e9 89 6c 24 04 movl %ebp,4(%esp) 0000ed bf 00 00 00 00 movl ,%edi 0000f2 8b 04 24 movl (%esp),%eax 0000f5 ba 19 00 00 00 movl $25,%edx 0000fa c7 41 04 03 00 00 00 movl $3,4(%ecx) 000101 ff d7 call *%edi 000103 8b 5c 24 0c movl 12(%esp),%ebx 000107 8b 44 24 08 movl 8(%esp),%eax 00010b 89 43 28 movl %eax,40(%ebx) 00010e 8b 04 24 movl (%esp),%eax 000111 89 43 2c movl %eax,44(%ebx) 000114 8b 44 24 04 movl 4(%esp),%eax 000118 8b 58 24 movl 36(%eax),%ebx 00011b 89 c5 movl %eax,%ebp 00011d 89 6c 24 04 movl %ebp,4(%esp) 000121 bf 00 00 00 00 movl ,%edi 000126 b8 60 00 00 00 movl $96,%eax 00012b ba 19 00 00 00 movl $25,%edx 000130 c7 41 04 03 00 00 00 movl $3,4(%ecx) 000137 ff d7 call *%edi 000139 c7 00 02 00 00 00 movl $2,(%eax) 00013f c7 40 24 11 00 00 00 movl $17,36(%eax) 000146 c7 40 34 11 00 00 00 movl $17,52(%eax) 00014d c7 40 38 11 00 00 00 movl $17,56(%eax) 000154 c7 40 3c 11 00 00 00 movl $17,60(%eax) 00015b c7 40 40 11 00 00 00 movl $17,64(%eax) 000162 c7 40 44 11 00 00 00 movl $17,68(%eax) 000169 c7 40 48 11 00 00 00 movl $17,72(%eax) 000170 c7 40 4c 11 00 00 00 movl $17,76(%eax) 000177 c7 40 50 11 00 00 00 movl $17,80(%eax) 00017e c7 40 54 11 00 00 00 movl $17,84(%eax) 000185 c7 40 58 11 00 00 00 movl $17,88(%eax) 00018c c7 40 5c 11 00 00 00 movl $17,92(%eax) 000193 8b 5c 24 04 movl 4(%esp),%ebx 000197 8b 53 24 movl 36(%ebx),%edx 00019a 89 c5 movl %eax,%ebp 00019c 89 6c 24 10 movl %ebp,16(%esp) 0001a0 89 dd movl %ebx,%ebp 0001a2 89 6c 24 04 movl %ebp,4(%esp) 0001a6 bf 00 00 00 00 movl ,%edi 0001ab 89 d3 movl %edx,%ebx 0001ad ba 19 00 00 00 movl $25,%edx 0001b2 b8 11 00 00 00 movl $17,%eax 0001b7 c7 41 04 03 00 00 00 movl $3,4(%ecx) 0001be ff d7 call *%edi 0001c0 8b 5c 24 10 movl 16(%esp),%ebx 0001c4 89 43 24 movl %eax,36(%ebx) 0001c7 8b 44 24 04 movl 4(%esp),%eax 0001cb 8b 40 24 movl 36(%eax),%eax 0001ce 89 dd movl %ebx,%ebp 0001d0 89 6c 24 10 movl %ebp,16(%esp) 0001d4 bf 00 00 00 00 movl ,%edi 0001d9 89 c3 movl %eax,%ebx 0001db ba 19 00 00 00 movl $25,%edx 0001e0 c7 41 04 02 00 00 00 movl $2,4(%ecx) 0001e7 ff d7 call *%edi 0001e9 8b 44 24 10 movl 16(%esp),%eax 0001ed 83 c4 14 addl $20,%esp 0001f0 c2 00 00 ret $0 0001f3 0001f3 0001f3 8b 79 04 movl 4(%ecx),%edi 0001f6 83 ef 04 subl $4,%edi 0001f9 85 ff testl %edi,%edi 0001fb 74 44 je L4387 0001fd 83 ff 00 cmpl $0,%edi 000200 7f 22 jg L4388 000202 bd 19 00 00 00 movl $25,%ebp 000207 8b 79 04 movl 4(%ecx),%edi 00020a 83 ff 00 cmpl $0,%edi 00020d 0f 4e d5 cmovlel %ebp,%edx 000210 83 ff 01 cmpl $1,%edi 000213 0f 4e dd cmovlel %ebp,%ebx 000216 83 ff 02 cmpl $2,%edi 000219 0f 4e c5 cmovlel %ebp,%eax 00021c 83 ff 03 cmpl $3,%edi 00021f 0f 4e f5 cmovlel %ebp,%esi 000222 eb 1d jmp L4387 000224 L4388: 000224 89 41 0c movl %eax,12(%ecx) 000227 89 e5 movl %esp,%ebp 000229 L4390: 000229 39 e5 cmpl %esp,%ebp 00022b 7c 0c jl L4389 00022d 8b 45 00 movl (%ebp),%eax 000230 89 44 bd 00 movl %eax,(%ebp + %edi*4) 000234 83 ed 04 subl $4,%ebp 000237 eb f0 jmp L4390 000239 L4389: 000239 8b 41 0c movl 12(%ecx),%eax 00023c c1 e7 02 sall $2,%edi 00023f 01 fc addl %edi,%esp 000241 L4387: 000241 entry: 000241 c2 00 00 ret $0 000244 000244 000244 8b 79 04 movl 4(%ecx),%edi 000247 83 ef 03 subl $3,%edi 00024a 85 ff testl %edi,%edi 00024c 74 46 je L4395 00024e 83 ff 00 cmpl $0,%edi 000251 7f 1c jg L4396 000253 bd 19 00 00 00 movl $25,%ebp 000258 8b 79 04 movl 4(%ecx),%edi 00025b 83 ff 00 cmpl $0,%edi 00025e 0f 4e d5 cmovlel %ebp,%edx 000261 83 ff 01 cmpl $1,%edi 000264 0f 4e dd cmovlel %ebp,%ebx 000267 83 ff 02 cmpl $2,%edi 00026a 0f 4e c5 cmovlel %ebp,%eax 00026d eb 25 jmp L4395 00026f L4396: 00026f 89 41 0c movl %eax,12(%ecx) 000272 89 e5 movl %esp,%ebp 000274 83 ef 01 subl $1,%edi 000277 83 ff 00 cmpl $0,%edi 00027a 7e 18 jle L4395 00027c L4398: 00027c 39 e5 cmpl %esp,%ebp 00027e 7c 0c jl L4397 000280 8b 45 00 movl (%ebp),%eax 000283 89 44 bd 00 movl %eax,(%ebp + %edi*4) 000287 83 ed 04 subl $4,%ebp 00028a eb f0 jmp L4398 00028c L4397: 00028c 8b 41 0c movl 12(%ecx),%eax 00028f c1 e7 02 sall $2,%edi 000292 01 fc addl %edi,%esp 000294 L4395: 000294 entry: 000294 b8 19 00 00 00 movl $25,%eax 000299 c2 00 00 ret $0 00029c 00029c 00029c 8b 79 04 movl 4(%ecx),%edi 00029f 83 ef 02 subl $2,%edi 0002a2 85 ff testl %edi,%edi 0002a4 74 40 je L4403 0002a6 83 ff 00 cmpl $0,%edi 0002a9 7f 16 jg L4404 0002ab bd 19 00 00 00 movl $25,%ebp 0002b0 8b 79 04 movl 4(%ecx),%edi 0002b3 83 ff 00 cmpl $0,%edi 0002b6 0f 4e d5 cmovlel %ebp,%edx 0002b9 83 ff 01 cmpl $1,%edi 0002bc 0f 4e dd cmovlel %ebp,%ebx 0002bf eb 25 jmp L4403 0002c1 L4404: 0002c1 89 41 0c movl %eax,12(%ecx) 0002c4 89 e5 movl %esp,%ebp 0002c6 83 ef 02 subl $2,%edi 0002c9 83 ff 00 cmpl $0,%edi 0002cc 7e 18 jle L4403 0002ce L4406: 0002ce 39 e5 cmpl %esp,%ebp 0002d0 7c 0c jl L4405 0002d2 8b 45 00 movl (%ebp),%eax 0002d5 89 44 bd 00 movl %eax,(%ebp + %edi*4) 0002d9 83 ed 04 subl $4,%ebp 0002dc eb f0 jmp L4406 0002de L4405: 0002de 8b 41 0c movl 12(%ecx),%eax 0002e1 c1 e7 02 sall $2,%edi 0002e4 01 fc addl %edi,%esp 0002e6 L4403: 0002e6 83 ec 0c subl $12,%esp 0002e9 entry: 0002e9 bf 00 00 00 00 movl ,%edi 0002ee b8 00 00 00 00 movl ,%eax 0002f3 bb 19 00 00 00 movl $25,%ebx 0002f8 ba 19 00 00 00 movl $25,%edx 0002fd be 00 00 00 00 movl $0,%esi 000302 c7 41 04 04 00 00 00 movl $4,4(%ecx) 000309 ff d7 call *%edi 00030b 89 c5 movl %eax,%ebp 00030d 89 2c 24 movl %ebp,(%esp) 000310 bf 00 00 00 00 movl ,%edi 000315 b8 00 00 00 00 movl ,%eax 00031a bb 19 00 00 00 movl $25,%ebx 00031f ba 19 00 00 00 movl $25,%edx 000324 be 00 00 00 00 movl $0,%esi 000329 c7 41 04 04 00 00 00 movl $4,4(%ecx) 000330 ff d7 call *%edi 000332 89 c5 movl %eax,%ebp 000334 89 6c 24 04 movl %ebp,4(%esp) 000338 bf 00 00 00 00 movl ,%edi 00033d b8 00 00 00 00 movl ,%eax 000342 bb 19 00 00 00 movl $25,%ebx 000347 ba 19 00 00 00 movl $25,%edx 00034c be 00 00 00 00 movl $0,%esi 000351 c7 41 04 04 00 00 00 movl $4,4(%ecx) 000358 ff d7 call *%edi 00035a 89 cb movl %ecx,%ebx 00035c 8b 5b 24 movl 36(%ebx),%ebx 00035f 89 dd movl %ebx,%ebp 000361 89 6c 24 08 movl %ebp,8(%esp) 000365 bf 00 00 00 00 movl ,%edi 00036a 83 ec 04 subl $4,%esp 00036d 89 04 24 movl %eax,(%esp) 000370 be 00 00 00 00 movl <"getFloatObj">,%esi 000375 89 d8 movl %ebx,%eax 000377 bb 19 00 00 00 movl $25,%ebx 00037c ba 19 00 00 00 movl $25,%edx 000381 c7 41 04 05 00 00 00 movl $5,4(%ecx) 000388 ff d7 call *%edi 00038a bf 00 00 00 00 movl ,%edi 00038f 83 ec 04 subl $4,%esp 000392 8b 6c 24 08 movl 8(%esp),%ebp 000396 89 2c 24 movl %ebp,(%esp) 000399 be 00 00 00 00 movl <"initHeap2">,%esi 00039e 8b 44 24 0c movl 12(%esp),%eax 0003a2 bb 19 00 00 00 movl $25,%ebx 0003a7 ba 19 00 00 00 movl $25,%edx 0003ac c7 41 04 05 00 00 00 movl $5,4(%ecx) 0003b3 ff d7 call *%edi 0003b5 bf 00 00 00 00 movl ,%edi 0003ba 83 ec 04 subl $4,%esp 0003bd 8b 6c 24 04 movl 4(%esp),%ebp 0003c1 89 2c 24 movl %ebp,(%esp) 0003c4 be 00 00 00 00 movl <"initHeap">,%esi 0003c9 8b 44 24 0c movl 12(%esp),%eax 0003cd bb 19 00 00 00 movl $25,%ebx 0003d2 ba 19 00 00 00 movl $25,%edx 0003d7 c7 41 04 05 00 00 00 movl $5,4(%ecx) 0003de ff d7 call *%edi 0003e0 83 c4 0c addl $12,%esp 0003e3 b8 19 00 00 00 movl $25,%eax 0003e8 c2 00 00 ret $0 0003eb