length of module name affecting performance??

Hi While trying to see if I could make some code run faster I stumbled upon something that looks weird to me: 2x-3x performance loss when a module is renamed to a longer name! Here's what I see with the attached examples: #diff long-modname-ver.hs short-modname-ver.hs 2c2 < import VeryLongModuleName ---
import ShortM
#diff VeryLongModuleName.hs ShortM.hs 1c1 < module VeryLongModuleName ---
module ShortM
#ghc --make -O2 -Wall long-modname-ver.hs #ghc --make -O2 -Wall short-modname-ver.hs #time -p ./long-modname-ver > /dev/null real 55.90 user 55.17 sys 0.51 #time -p ./short-modname-ver > /dev/null real 22.23 user 21.97 sys 0.10 I'm using GHC 6.10.1 on OS X. Any ideas on what may be going on? Thanks Daniel

dgorin:
Hi
While trying to see if I could make some code run faster I stumbled upon something that looks weird to me: 2x-3x performance loss when a module is renamed to a longer name!
Here's what I see with the attached examples:
#diff long-modname-ver.hs short-modname-ver.hs 2c2 < import VeryLongModuleName ---
import ShortM
#diff VeryLongModuleName.hs ShortM.hs 1c1 < module VeryLongModuleName ---
module ShortM
#ghc --make -O2 -Wall long-modname-ver.hs
#ghc --make -O2 -Wall short-modname-ver.hs
#time -p ./long-modname-ver > /dev/null real 55.90 user 55.17 sys 0.51
#time -p ./short-modname-ver > /dev/null real 22.23 user 21.97 sys 0.10
I'm using GHC 6.10.1 on OS X. Any ideas on what may be going on?
Wow. Awesome bug! Got lots of discussion at Galois :) I can confirm a difference in running time, we also tested with 6.8.x and 6.10, with similar results. ./short-modname-ver > /dev/null 21.55s user 0.02s system 99% cpu 21.573 total ./long-modname-ver > /dev/null 53.79s user 0.14s system 99% cpu 54.113 total $ diff -a short-modname-ver.hs long-modname-ver.hs 2c2 < import ShortM --- > import VeryLongModuleName $ diff -u ShortM.hs VeryLongModuleName.hs --- ShortM.hs 2008-12-15 12:00:53.000000000 -0800 +++ VeryLongModuleName.hs 2008-12-15 12:39:33.000000000 -0800 @@ -1,4 +1,4 @@ -module ShortM +module VeryLongModuleName where Looking at the core (GHC has a hard time with that huge constant), we don't see anything, but the assembly is surprisingly different! http://galois.com/~dons/tmp/asm.diff The interesting parts are the indirect jumps that appear, and some extra indirection closures are constructed: +VeryLongModuleName_zdsadd_srt: + .quad VeryLongModuleName_lvl2_closure + .quad VeryLongModuleName_zdsadd_closure + .quad VeryLongModuleName_lvl_closure + .quad VeryLongModuleName_lvl1_closure + .quad VeryLongModuleName_zdsadd1_closure + .quad VeryLongModuleName_lvl3_closure +.section .data + .align 8 +VeryLongModuleName_zdsadd1_srt: + .quad VeryLongModuleName_lvl2_closure + .quad VeryLongModuleName_zdsadd_closure + .quad VeryLongModuleName_lvl_closure + .quad VeryLongModuleName_lvl1_closure + .quad VeryLongModuleName_zdsadd1_closure + .quad VeryLongModuleName_lvl3_closure And - movq 24(%rbp),%rbx - addq $40,%rbp - andq $-8,%rbx - jmp *(%rbx) + movq 16(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_right_info So we get some indirection through an info table that we didn't have before. My guess is there's some jump table heuristic/cost function that for some reason includes the size of data in those error strings? The error strings which go over the limit, when they've big strings in them This is a job for Simon^2. -- Don ------------------------------------------------------------------------ Attached below is the asm diffs: --- /tmp/ghc5331_0/ghc5331_0.s 2008-12-15 13:28:36.000000000 -0800 +++ /tmp/ghc5324_0/ghc5324_0.s 2008-12-15 13:28:22.000000000 -0800 @@ -1,13 +1,13 @@ .section .data .align 8 -ShortM_lvl_srt: +VeryLongModuleName_lvl_srt: .quad base_ControlziExceptionziBase_recSelError_closure .data .align 8 -.globl ShortM_lvl_closure -.type ShortM_lvl_closure, @object -ShortM_lvl_closure: - .quad ShortM_lvl_info +.globl VeryLongModuleName_lvl_closure +.type VeryLongModuleName_lvl_closure, @object +VeryLongModuleName_lvl_closure: + .quad VeryLongModuleName_lvl_info .quad 0 .quad 0 .quad 0 @@ -42,12 +42,24 @@ .byte 111 .byte 114 .byte 32 - .byte 83 - .byte 104 - .byte 111 + .byte 86 + .byte 101 .byte 114 - .byte 116 + .byte 121 + .byte 76 + .byte 111 + .byte 110 + .byte 103 .byte 77 + .byte 111 + .byte 100 + .byte 117 + .byte 108 + .byte 101 + .byte 78 + .byte 97 + .byte 109 + .byte 101 .byte 46 .byte 110 .byte 101 @@ -56,13 +68,13 @@ .byte 0 .text .align 8 - .long ShortM_lvl_srt-(ShortM_lvl_info)+0 + .long VeryLongModuleName_lvl_srt-(VeryLongModuleName_lvl_info)+0 .long 0 .quad 0 .quad 4294967318 -.globl ShortM_lvl_info -.type ShortM_lvl_info, @object -ShortM_lvl_info: +.globl VeryLongModuleName_lvl_info +.type VeryLongModuleName_lvl_info, @object +VeryLongModuleName_lvl_info: .L: leaq -16(%rbp),%rax cmpq %r14,%rax @@ -88,14 +100,14 @@ jmp *-16(%r13) .section .data .align 8 -ShortM_lvl1_srt: +VeryLongModuleName_lvl1_srt: .quad base_ControlziExceptionziBase_recSelError_closure .data .align 8 -.globl ShortM_lvl1_closure -.type ShortM_lvl1_closure, @object -ShortM_lvl1_closure: - .quad ShortM_lvl1_info +.globl VeryLongModuleName_lvl1_closure +.type VeryLongModuleName_lvl1_closure, @object +VeryLongModuleName_lvl1_closure: + .quad VeryLongModuleName_lvl1_info .quad 0 .quad 0 .quad 0 @@ -130,12 +142,24 @@ .byte 111 .byte 114 .byte 32 - .byte 83 - .byte 104 - .byte 111 + .byte 86 + .byte 101 .byte 114 - .byte 116 + .byte 121 + .byte 76 + .byte 111 + .byte 110 + .byte 103 .byte 77 + .byte 111 + .byte 100 + .byte 117 + .byte 108 + .byte 101 + .byte 78 + .byte 97 + .byte 109 + .byte 101 .byte 46 .byte 114 .byte 105 @@ -145,13 +169,13 @@ .byte 0 .text .align 8 - .long ShortM_lvl1_srt-(ShortM_lvl1_info)+0 + .long VeryLongModuleName_lvl1_srt-(VeryLongModuleName_lvl1_info)+0 .long 0 .quad 0 .quad 4294967318 -.globl ShortM_lvl1_info -.type ShortM_lvl1_info, @object -ShortM_lvl1_info: +.globl VeryLongModuleName_lvl1_info +.type VeryLongModuleName_lvl1_info, @object +VeryLongModuleName_lvl1_info: .L: leaq -16(%rbp),%rax cmpq %r14,%rax @@ -177,14 +201,14 @@ jmp *-16(%r13) .section .data .align 8 -ShortM_lvl2_srt: +VeryLongModuleName_lvl2_srt: .quad base_ControlziExceptionziBase_recSelError_closure .data .align 8 -.globl ShortM_lvl2_closure -.type ShortM_lvl2_closure, @object -ShortM_lvl2_closure: - .quad ShortM_lvl2_info +.globl VeryLongModuleName_lvl2_closure +.type VeryLongModuleName_lvl2_closure, @object +VeryLongModuleName_lvl2_closure: + .quad VeryLongModuleName_lvl2_info .quad 0 .quad 0 .quad 0 @@ -219,12 +243,24 @@ .byte 111 .byte 114 .byte 32 - .byte 83 - .byte 104 - .byte 111 + .byte 86 + .byte 101 .byte 114 - .byte 116 + .byte 121 + .byte 76 + .byte 111 + .byte 110 + .byte 103 .byte 77 + .byte 111 + .byte 100 + .byte 117 + .byte 108 + .byte 101 + .byte 78 + .byte 97 + .byte 109 + .byte 101 .byte 46 .byte 108 .byte 101 @@ -233,13 +269,13 @@ .byte 0 .text .align 8 - .long ShortM_lvl2_srt-(ShortM_lvl2_info)+0 + .long VeryLongModuleName_lvl2_srt-(VeryLongModuleName_lvl2_info)+0 .long 0 .quad 0 .quad 4294967318 -.globl ShortM_lvl2_info -.type ShortM_lvl2_info, @object -ShortM_lvl2_info: +.globl VeryLongModuleName_lvl2_info +.type VeryLongModuleName_lvl2_info, @object +VeryLongModuleName_lvl2_info: .L: leaq -16(%rbp),%rax cmpq %r14,%rax @@ -265,14 +301,14 @@ jmp *-16(%r13) .section .data .align 8 -ShortM_lvl3_srt: +VeryLongModuleName_lvl3_srt: .quad base_ControlziExceptionziBase_recSelError_closure .data .align 8 -.globl ShortM_lvl3_closure -.type ShortM_lvl3_closure, @object -ShortM_lvl3_closure: - .quad ShortM_lvl3_info +.globl VeryLongModuleName_lvl3_closure +.type VeryLongModuleName_lvl3_closure, @object +VeryLongModuleName_lvl3_closure: + .quad VeryLongModuleName_lvl3_info .quad 0 .quad 0 .quad 0 @@ -307,12 +343,24 @@ .byte 111 .byte 114 .byte 32 - .byte 83 - .byte 104 - .byte 111 + .byte 86 + .byte 101 .byte 114 - .byte 116 + .byte 121 + .byte 76 + .byte 111 + .byte 110 + .byte 103 .byte 77 + .byte 111 + .byte 100 + .byte 117 + .byte 108 + .byte 101 + .byte 78 + .byte 97 + .byte 109 + .byte 101 .byte 46 .byte 118 .byte 97 @@ -320,13 +368,13 @@ .byte 0 .text .align 8 - .long ShortM_lvl3_srt-(ShortM_lvl3_info)+0 + .long VeryLongModuleName_lvl3_srt-(VeryLongModuleName_lvl3_info)+0 .long 0 .quad 0 .quad 4294967318 -.globl ShortM_lvl3_info -.type ShortM_lvl3_info, @object -ShortM_lvl3_info: +.globl VeryLongModuleName_lvl3_info +.type VeryLongModuleName_lvl3_info, @object +VeryLongModuleName_lvl3_info: .L: leaq -16(%rbp),%rax cmpq %r14,%rax @@ -352,10 +400,10 @@ jmp *-16(%r13) .data .align 8 -.globl ShortM_zdWNode_closure -.type ShortM_zdWNode_closure, @object -ShortM_zdWNode_closure: - .quad ShortM_zdWNode_info +.globl VeryLongModuleName_zdWNode_closure +.type VeryLongModuleName_zdWNode_closure, @object +VeryLongModuleName_zdWNode_closure: + .quad VeryLongModuleName_zdWNode_info .text .align 8 .quad 259 @@ -365,7 +413,7 @@ addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq 16(%rbp),%rax movq %rax,-24(%r12) movq 8(%rbp),%rax @@ -424,9 +472,9 @@ .quad 17179869205 .quad 0 .quad 15 -.globl ShortM_zdWNode_info -.type ShortM_zdWNode_info, @object -ShortM_zdWNode_info: +.globl VeryLongModuleName_zdWNode_info +.type VeryLongModuleName_zdWNode_info, @object +VeryLongModuleName_zdWNode_info: .L: leaq -32(%rbp),%rax cmpq %r14,%rax @@ -441,78 +489,96 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_zdWNode_closure,%ebx + movl $VeryLongModuleName_zdWNode_closure,%ebx jmp *-8(%r13) +.section .data + .align 8 +VeryLongModuleName_nodeFor_srt: + .quad VeryLongModuleName_left_closure + .quad VeryLongModuleName_right_closure + .quad VeryLongModuleName_val_closure .data .align 8 -.globl ShortM_nodeFor_closure -.type ShortM_nodeFor_closure, @object -ShortM_nodeFor_closure: - .quad ShortM_nodeFor_info +.globl VeryLongModuleName_nodeFor_closure +.type VeryLongModuleName_nodeFor_closure, @object +VeryLongModuleName_nodeFor_closure: + .quad VeryLongModuleName_nodeFor_info + .quad 0 .text .align 8 - .quad 516 - .quad 34 + .long VeryLongModuleName_nodeFor_srt-(_info)+0 + .long 0 + .quad 66 + .quad 12884901922 _info: .L: - movq 7(%rbx),%rax - cmpq 32(%rbp),%rax + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax jl .L - movq 7(%rbx),%rax - cmpq 32(%rbp),%rax + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax je .L - movq 24(%rbp),%rbx - addq $40,%rbp - andq $-8,%rbx - jmp *(%rbx) + movq 16(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_right_info .L: - movq 8(%rbp),%rbx - addq $40,%rbp - andq $-8,%rbx - jmp *(%rbx) + movq 16(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_left_info .L: movq 16(%rbp),%rbx - addq $40,%rbp + addq $24,%rbp andq $-8,%rbx jmp *(%rbx) .text .align 8 + .long VeryLongModuleName_nodeFor_srt-(_info)+0 + .long 0 .quad 1 - .quad 34 + .quad 30064771106 +_info: +.L: + movq 7(%rbx),%rax + movq %rax,(%rbp) + movq 8(%rbp),%rsi + movq $_info,-8(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_val_info +.text + .align 8 + .long VeryLongModuleName_nodeFor_srt-(_info)+0 + .long 0 + .quad 1 + .quad 30064771106 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_Nil_closure+1,%ebx + movl $VeryLongModuleName_Nil_closure+1,%ebx addq $16,%rbp jmp *(%rbp) .L: - movq 6(%rbx),%rax - movq %rax,-16(%rbp) - movq %rbx,-8(%rbp) - movq 14(%rbx),%rax - movq %rax,(%rbp) movq 8(%rbp),%rax - movq 30(%rbx),%rcx - movq %rcx,8(%rbp) + movq %rbx,8(%rbp) movq %rax,%rbx - movq $_info,-24(%rbp) - addq $-24,%rbp + movq $_info,(%rbp) testq $7,%rbx jne _info jmp *(%rbx) .text .align 8 + .long VeryLongModuleName_nodeFor_srt-(VeryLongModuleName_nodeFor_info)+0 + .long 0 .quad 8589934604 .quad 0 - .quad 15 -.globl ShortM_nodeFor_info -.type ShortM_nodeFor_info, @object -ShortM_nodeFor_info: + .quad 30064771087 +.globl VeryLongModuleName_nodeFor_info +.type VeryLongModuleName_nodeFor_info, @object +VeryLongModuleName_nodeFor_info: .L: - leaq -40(%rbp),%rax + leaq -24(%rbp),%rax cmpq %r14,%rax jb .L movq %rsi,-8(%rbp) @@ -523,14 +589,14 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_nodeFor_closure,%ebx + movl $VeryLongModuleName_nodeFor_closure,%ebx jmp *-8(%r13) .data .align 8 -.globl ShortM_isNil_closure -.type ShortM_isNil_closure, @object -ShortM_isNil_closure: - .quad ShortM_isNil_info +.globl VeryLongModuleName_isNil_closure +.type VeryLongModuleName_isNil_closure, @object +VeryLongModuleName_isNil_closure: + .quad VeryLongModuleName_isNil_info .text .align 8 .quad 0 @@ -553,9 +619,9 @@ .quad 4294967301 .quad 0 .quad 15 -.globl ShortM_isNil_info -.type ShortM_isNil_info, @object -ShortM_isNil_info: +.globl VeryLongModuleName_isNil_info +.type VeryLongModuleName_isNil_info, @object +VeryLongModuleName_isNil_info: .L: leaq -8(%rbp),%rax cmpq %r14,%rax @@ -567,28 +633,28 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_isNil_closure,%ebx + movl $VeryLongModuleName_isNil_closure,%ebx jmp *-8(%r13) .data .align 8 -.globl ShortM_empty_closure -.type ShortM_empty_closure, @object -ShortM_empty_closure: - .quad ShortM_Nil_static_info +.globl VeryLongModuleName_empty_closure +.type VeryLongModuleName_empty_closure, @object +VeryLongModuleName_empty_closure: + .quad VeryLongModuleName_Nil_static_info .section .data .align 8 -ShortM_next_srt: - .quad ShortM_lvl_closure +VeryLongModuleName_val_srt: + .quad VeryLongModuleName_lvl3_closure .data .align 8 -.globl ShortM_next_closure -.type ShortM_next_closure, @object -ShortM_next_closure: - .quad ShortM_next_info +.globl VeryLongModuleName_val_closure +.type VeryLongModuleName_val_closure, @object +VeryLongModuleName_val_closure: + .quad VeryLongModuleName_val_info .quad 0 .text .align 8 - .long ShortM_next_srt-(_info)+0 + .long VeryLongModuleName_val_srt-(_info)+0 .long 0 .quad 0 .quad 4294967330 @@ -598,25 +664,33 @@ andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_lvl_closure,%ebx + movl $VeryLongModuleName_lvl3_closure,%ebx addq $8,%rbp andq $-8,%rbx jmp *(%rbx) .L: - movq 22(%rbx),%rbx + addq $16,%r12 + cmpq %r15,%r12 + ja .L + movq $ghczmprim_GHCziTypes_Izh_con_info,-8(%r12) + movq 30(%rbx),%rax + movq %rax,(%r12) + leaq -7(%r12),%rbx addq $8,%rbp - andq $-8,%rbx - jmp *(%rbx) + jmp *(%rbp) +.L: + movq $16,184(%r13) + jmp *-16(%r13) .text .align 8 - .long ShortM_next_srt-(ShortM_next_info)+0 + .long VeryLongModuleName_val_srt-(VeryLongModuleName_val_info)+0 .long 0 .quad 4294967301 .quad 0 .quad 4294967311 -.globl ShortM_next_info -.type ShortM_next_info, @object -ShortM_next_info: +.globl VeryLongModuleName_val_info +.type VeryLongModuleName_val_info, @object +VeryLongModuleName_val_info: .L: leaq -8(%rbp),%rax cmpq %r14,%rax @@ -628,22 +702,22 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_next_closure,%ebx + movl $VeryLongModuleName_val_closure,%ebx jmp *-8(%r13) .section .data .align 8 -ShortM_right_srt: - .quad ShortM_lvl1_closure +VeryLongModuleName_right_srt: + .quad VeryLongModuleName_lvl1_closure .data .align 8 -.globl ShortM_right_closure -.type ShortM_right_closure, @object -ShortM_right_closure: - .quad ShortM_right_info +.globl VeryLongModuleName_right_closure +.type VeryLongModuleName_right_closure, @object +VeryLongModuleName_right_closure: + .quad VeryLongModuleName_right_info .quad 0 .text .align 8 - .long ShortM_right_srt-(_info)+0 + .long VeryLongModuleName_right_srt-(_info)+0 .long 0 .quad 0 .quad 4294967330 @@ -653,7 +727,7 @@ andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_lvl1_closure,%ebx + movl $VeryLongModuleName_lvl1_closure,%ebx addq $8,%rbp andq $-8,%rbx jmp *(%rbx) @@ -664,14 +738,14 @@ jmp *(%rbx) .text .align 8 - .long ShortM_right_srt-(ShortM_right_info)+0 + .long VeryLongModuleName_right_srt-(VeryLongModuleName_right_info)+0 .long 0 .quad 4294967301 .quad 0 .quad 4294967311 -.globl ShortM_right_info -.type ShortM_right_info, @object -ShortM_right_info: +.globl VeryLongModuleName_right_info +.type VeryLongModuleName_right_info, @object +VeryLongModuleName_right_info: .L: leaq -8(%rbp),%rax cmpq %r14,%rax @@ -683,22 +757,22 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_right_closure,%ebx + movl $VeryLongModuleName_right_closure,%ebx jmp *-8(%r13) .section .data .align 8 -ShortM_left_srt: - .quad ShortM_lvl2_closure +VeryLongModuleName_next_srt: + .quad VeryLongModuleName_lvl_closure .data .align 8 -.globl ShortM_left_closure -.type ShortM_left_closure, @object -ShortM_left_closure: - .quad ShortM_left_info +.globl VeryLongModuleName_next_closure +.type VeryLongModuleName_next_closure, @object +VeryLongModuleName_next_closure: + .quad VeryLongModuleName_next_info .quad 0 .text .align 8 - .long ShortM_left_srt-(_info)+0 + .long VeryLongModuleName_next_srt-(_info)+0 .long 0 .quad 0 .quad 4294967330 @@ -708,25 +782,25 @@ andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_lvl2_closure,%ebx + movl $VeryLongModuleName_lvl_closure,%ebx addq $8,%rbp andq $-8,%rbx jmp *(%rbx) .L: - movq 6(%rbx),%rbx + movq 22(%rbx),%rbx addq $8,%rbp andq $-8,%rbx jmp *(%rbx) .text .align 8 - .long ShortM_left_srt-(ShortM_left_info)+0 + .long VeryLongModuleName_next_srt-(VeryLongModuleName_next_info)+0 .long 0 .quad 4294967301 .quad 0 .quad 4294967311 -.globl ShortM_left_info -.type ShortM_left_info, @object -ShortM_left_info: +.globl VeryLongModuleName_next_info +.type VeryLongModuleName_next_info, @object +VeryLongModuleName_next_info: .L: leaq -8(%rbp),%rax cmpq %r14,%rax @@ -738,22 +812,22 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_left_closure,%ebx + movl $VeryLongModuleName_next_closure,%ebx jmp *-8(%r13) .section .data .align 8 -ShortM_val_srt: - .quad ShortM_lvl3_closure +VeryLongModuleName_left_srt: + .quad VeryLongModuleName_lvl2_closure .data .align 8 -.globl ShortM_val_closure -.type ShortM_val_closure, @object -ShortM_val_closure: - .quad ShortM_val_info +.globl VeryLongModuleName_left_closure +.type VeryLongModuleName_left_closure, @object +VeryLongModuleName_left_closure: + .quad VeryLongModuleName_left_info .quad 0 .text .align 8 - .long ShortM_val_srt-(_info)+0 + .long VeryLongModuleName_left_srt-(_info)+0 .long 0 .quad 0 .quad 4294967330 @@ -763,33 +837,25 @@ andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_lvl3_closure,%ebx + movl $VeryLongModuleName_lvl2_closure,%ebx addq $8,%rbp andq $-8,%rbx jmp *(%rbx) .L: - addq $16,%r12 - cmpq %r15,%r12 - ja .L - movq $ghczmprim_GHCziTypes_Izh_con_info,-8(%r12) - movq 30(%rbx),%rax - movq %rax,(%r12) - leaq -7(%r12),%rbx + movq 6(%rbx),%rbx addq $8,%rbp - jmp *(%rbp) -.L: - movq $16,184(%r13) - jmp *-16(%r13) + andq $-8,%rbx + jmp *(%rbx) .text .align 8 - .long ShortM_val_srt-(ShortM_val_info)+0 + .long VeryLongModuleName_left_srt-(VeryLongModuleName_left_info)+0 .long 0 .quad 4294967301 .quad 0 .quad 4294967311 -.globl ShortM_val_info -.type ShortM_val_info, @object -ShortM_val_info: +.globl VeryLongModuleName_left_info +.type VeryLongModuleName_left_info, @object +VeryLongModuleName_left_info: .L: leaq -8(%rbp),%rax cmpq %r14,%rax @@ -801,14 +867,14 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_val_closure,%ebx + movl $VeryLongModuleName_left_closure,%ebx jmp *-8(%r13) .data .align 8 -.globl ShortM_go_closure -.type ShortM_go_closure, @object -ShortM_go_closure: - .quad ShortM_go_info +.globl VeryLongModuleName_go_closure +.type VeryLongModuleName_go_closure, @object +VeryLongModuleName_go_closure: + .quad VeryLongModuleName_go_info .text .align 8 .quad 65 @@ -818,9 +884,9 @@ addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) - movq $ShortM_Nil_closure+1,-24(%r12) - movq $ShortM_Nil_closure+1,-16(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq $VeryLongModuleName_Nil_closure+1,-24(%r12) + movq $VeryLongModuleName_Nil_closure+1,-16(%r12) movq %rbx,-8(%r12) movq 8(%rbp),%rax movq %rax,(%r12) @@ -840,7 +906,7 @@ movq 7(%rbx),%rax movq %rax,8(%rbp) movq $_info,(%rbp) - jmp ShortM_go_info + jmp VeryLongModuleName_go_info .text .align 8 .quad 0 @@ -851,7 +917,7 @@ andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_Nil_closure+1,%ebx + movl $VeryLongModuleName_Nil_closure+1,%ebx addq $8,%rbp jmp *(%rbp) .L: @@ -868,9 +934,9 @@ .quad 4294967301 .quad 0 .quad 15 -.globl ShortM_go_info -.type ShortM_go_info, @object -ShortM_go_info: +.globl VeryLongModuleName_go_info +.type VeryLongModuleName_go_info, @object +VeryLongModuleName_go_info: .L: leaq -16(%rbp),%rax cmpq %r14,%rax @@ -882,37 +948,87 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_go_closure,%ebx + movl $VeryLongModuleName_go_closure,%ebx jmp *-8(%r13) +.section .data + .align 8 +VeryLongModuleName_zdsadd_srt: + .quad VeryLongModuleName_lvl2_closure + .quad VeryLongModuleName_zdsadd_closure + .quad VeryLongModuleName_lvl_closure + .quad VeryLongModuleName_lvl1_closure + .quad VeryLongModuleName_zdsadd1_closure + .quad VeryLongModuleName_lvl3_closure +.section .data + .align 8 +VeryLongModuleName_zdsadd1_srt: + .quad VeryLongModuleName_lvl2_closure + .quad VeryLongModuleName_zdsadd_closure + .quad VeryLongModuleName_lvl_closure + .quad VeryLongModuleName_lvl1_closure + .quad VeryLongModuleName_zdsadd1_closure + .quad VeryLongModuleName_lvl3_closure .data .align 8 -.globl ShortM_zdsadd_closure -.type ShortM_zdsadd_closure, @object -ShortM_zdsadd_closure: - .quad ShortM_zdsadd_info +.globl VeryLongModuleName_zdsadd_closure +.type VeryLongModuleName_zdsadd_closure, @object +VeryLongModuleName_zdsadd_closure: + .quad VeryLongModuleName_zdsadd_info + .quad 0 .text .align 8 -.globl ShortM_zdsadd_slow -.type ShortM_zdsadd_slow, @object -ShortM_zdsadd_slow: +.globl VeryLongModuleName_zdsadd_slow +.type VeryLongModuleName_zdsadd_slow, @object +VeryLongModuleName_zdsadd_slow: .L: movq (%rbp),%rsi movq 8(%rbp),%rdi movq 16(%rbp),%r8 movq 24(%rbp),%r9 addq $32,%rbp - jmp ShortM_zdsadd_info + jmp VeryLongModuleName_zdsadd_info .text .align 8 - .quad 772 + .long VeryLongModuleName_zdsadd_srt-(_info)+24 + .long 0 + .quad 4294967299 + .quad 4294967312 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + addq $40,%r12 + cmpq %r15,%r12 + ja .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 16(%rbx),%rax + movq %rax,-24(%r12) + movq 24(%rbx),%rax + movq %rax,-16(%r12) + movq 32(%rbx),%rax + movq %rax,-8(%r12) + movq 40(%rbx),%rax + movq %rax,(%r12) + leaq -30(%r12),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_right_info +.L: + movq $40,184(%r13) + jmp *-16(%r13) +.text + .align 8 + .quad 644 .quad 34 _info: .L: addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) - movq 16(%rbp),%rax + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 24(%rbp),%rax movq %rax,-24(%r12) movq %rbx,-16(%r12) movq 8(%rbp),%rax @@ -934,10 +1050,10 @@ addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) - movq 8(%rbp),%rax - movq %rax,-24(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq 16(%rbp),%rax + movq %rax,-24(%r12) + movq 8(%rbp),%rax movq %rax,-16(%r12) movq %rbx,-8(%r12) movq 24(%rbp),%rax @@ -950,8 +1066,10 @@ jmp *-16(%r13) .text .align 8 - .quad 1157 - .quad 34 + .long VeryLongModuleName_zdsadd_srt-(_info)+8 + .long 0 + .quad 1029 + .quad 4294967330 _info: .L: movq %rbx,%rax @@ -961,12 +1079,13 @@ addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) - movq 24(%rbp),%rax - movq %rax,-24(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq 32(%rbp),%rax + movq %rax,-24(%r12) + movq 24(%rbp),%rax movq %rax,-16(%r12) - movq $ShortM_Nil_closure+1,-8(%r12) + movq 16(%rbp),%rax + movq %rax,-8(%r12) movq 40(%rbp),%rax movq %rax,(%r12) leaq -30(%r12),%rbx @@ -979,22 +1098,53 @@ movq 30(%rbx),%r9 movq $_info,16(%rbp) addq $8,%rbp - jmp ShortM_zdsadd_info + jmp VeryLongModuleName_zdsadd_info .L: movq $40,184(%r13) jmp *-16(%r13) .text .align 8 - .quad 644 + .long VeryLongModuleName_zdsadd_srt-(_info)+0 + .long 0 + .quad 4294967299 + .quad 4294967312 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + addq $40,%r12 + cmpq %r15,%r12 + ja .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 16(%rbx),%rax + movq %rax,-24(%r12) + movq 24(%rbx),%rax + movq %rax,-16(%r12) + movq 32(%rbx),%rax + movq %rax,-8(%r12) + movq 40(%rbx),%rax + movq %rax,(%r12) + leaq -30(%r12),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_left_info +.L: + movq $40,184(%r13) + jmp *-16(%r13) +.text + .align 8 + .quad 772 .quad 34 _info: .L: addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq %rbx,-24(%r12) - movq 24(%rbp),%rax + movq 16(%rbp),%rax movq %rax,-16(%r12) movq 8(%rbp),%rax movq %rax,-8(%r12) @@ -1008,46 +1158,112 @@ jmp *-16(%r13) .text .align 8 - .quad 1029 - .quad 34 + .long VeryLongModuleName_zdsadd_srt-(_info)+0 + .long 0 + .quad 2118 + .quad 133143986210 _info: .L: - movq 7(%rbx),%rax - cmpq 40(%rbp),%rax + addq $48,%r12 + cmpq %r15,%r12 + ja .L + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax jl .L - movq 7(%rbx),%rax - cmpq 40(%rbp),%rax + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax je .L - movq 32(%rbp),%rsi - movq 8(%rbp),%rdi - movq 7(%rbx),%r8 - movq $_info,8(%rbp) - addq $8,%rbp - jmp ShortM_zdsadd1_info + movq $_info,-40(%r12) + movq 40(%rbp),%rax + movq %rax,-24(%r12) + movq 32(%rbp),%rax + movq %rax,-16(%r12) + movq 24(%rbp),%rax + movq %rax,-8(%r12) + movq 48(%rbp),%rax + movq %rax,(%r12) + leaq -40(%r12),%rsi + movq 16(%rbp),%rdi + movq 8(%rbp),%r8 + movq $_info,16(%rbp) + addq $16,%rbp + jmp VeryLongModuleName_zdsadd1_info .L: - movq 24(%rbp),%rsi - movq 8(%rbp),%rdi - movq 7(%rbx),%r8 + movq $48,184(%r13) + jmp *-16(%r13) +.L: + movq $_info,-40(%r12) + movq 40(%rbp),%rax + movq %rax,-24(%r12) + movq 32(%rbp),%rax + movq %rax,-16(%r12) + movq 24(%rbp),%rax + movq %rax,-8(%r12) + movq 48(%rbp),%rax + movq %rax,(%r12) + leaq -40(%r12),%rsi + movq 16(%rbp),%rdi + movq 8(%rbp),%r8 + movq $_info,16(%rbp) + addq $16,%rbp + jmp VeryLongModuleName_zdsadd1_info +.L: + movq $VeryLongModuleName_Node_con_info,-40(%r12) + movq 40(%rbp),%rax + movq %rax,-32(%r12) + movq 32(%rbp),%rax + movq %rax,-24(%r12) + movq 24(%rbp),%rax + movq %rax,-16(%r12) + movq 48(%rbp),%rax + movq %rax,-8(%r12) + leaq -38(%r12),%rsi movq $_info,8(%rbp) addq $8,%rbp - jmp ShortM_zdsadd1_info -.L: - movq 16(%rbp),%rbx - movq $_info,(%rbp) - testq $7,%rbx - jne _info - jmp *(%rbx) + addq $-8,%r12 + jmp VeryLongModuleName_next_info +.text + .align 8 + .long VeryLongModuleName_zdsadd_srt-(_info)+0 + .long 0 + .quad 1029 + .quad 270582939682 +_info: +.L: + addq $40,%r12 + cmpq %r15,%r12 + ja .L + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 32(%rbp),%rax + movq %rax,-24(%r12) + movq 24(%rbp),%rax + movq %rax,-16(%r12) + movq 16(%rbp),%rax + movq %rax,-8(%r12) + movq 40(%rbp),%rax + movq %rax,(%r12) + movq 7(%rbx),%rax + movq %rax,(%rbp) + leaq -30(%r12),%rsi + movq $_info,-8(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_val_info +.L: + movq $40,184(%r13) + jmp *-16(%r13) .text .align 8 + .long VeryLongModuleName_zdsadd_srt-(_info)+0 + .long 0 .quad 516 - .quad 34 + .quad 270582939682 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_Nil_closure+1,%ebx + movl $VeryLongModuleName_Nil_closure+1,%ebx addq $40,%rbp jmp *(%rbp) .L: @@ -1061,23 +1277,24 @@ jmp *(%rbx) .text .align 8 - .long ShortM_zdsadd_slow-(ShortM_zdsadd_info)+0 + .long VeryLongModuleName_zdsadd_slow-(VeryLongModuleName_zdsadd_info)+0 .long 0 .quad 517 - .quad 0 + .long VeryLongModuleName_zdsadd_srt-(VeryLongModuleName_zdsadd_info)+0 + .long 0 .quad 21474836480 .quad 0 - .quad 15 -.globl ShortM_zdsadd_info -.type ShortM_zdsadd_info, @object -ShortM_zdsadd_info: + .quad 270582939663 +.globl VeryLongModuleName_zdsadd_info +.type VeryLongModuleName_zdsadd_info, @object +VeryLongModuleName_zdsadd_info: .L: - leaq -40(%rbp),%rax + leaq -48(%rbp),%rax cmpq %r14,%rax jb .L movq %rsi,-24(%rbp) - movq %r8,-16(%rbp) - movq %rdi,-8(%rbp) + movq %rdi,-16(%rbp) + movq %r8,-8(%rbp) movq (%rbp),%rbx movq %r9,(%rbp) movq $_info,-32(%rbp) @@ -1086,7 +1303,7 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_zdsadd_closure,%ebx + movl $VeryLongModuleName_zdsadd_closure,%ebx addq $-32,%rbp movq %rsi,(%rbp) movq %rdi,8(%rbp) @@ -1095,20 +1312,39 @@ jmp *-8(%r13) .data .align 8 -.globl ShortM_zdsadd1_closure -.type ShortM_zdsadd1_closure, @object -ShortM_zdsadd1_closure: - .quad ShortM_zdsadd1_info +.globl VeryLongModuleName_zdsadd1_closure +.type VeryLongModuleName_zdsadd1_closure, @object +VeryLongModuleName_zdsadd1_closure: + .quad VeryLongModuleName_zdsadd1_info + .quad 0 .text .align 8 - .quad 259 + .long VeryLongModuleName_zdsadd1_srt-(_info)+24 + .long 0 + .quad 1 + .quad 4294967313 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq 16(%rbx),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_right_info +.L: + jmp *-16(%r13) +.text + .align 8 + .quad 3846 .quad 34 _info: .L: addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq 16(%rbp),%rax movq %rax,-24(%r12) movq %rbx,-16(%r12) @@ -1117,84 +1353,150 @@ movq 24(%rbp),%rax movq %rax,(%r12) leaq -30(%r12),%rbx - addq $32,%rbp + addq $56,%rbp jmp *(%rbp) .L: movq $40,184(%r13) jmp *-16(%r13) .text .align 8 - .quad 772 + .quad 7815 .quad 34 _info: .L: addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) - movq 8(%rbp),%rax + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 24(%rbp),%rax movq %rax,-24(%r12) - movq 16(%rbp),%rax + movq 8(%rbp),%rax movq %rax,-16(%r12) movq %rbx,-8(%r12) movq 32(%rbp),%rax movq %rax,(%r12) leaq -30(%r12),%rbx - addq $40,%rbp + addq $64,%rbp jmp *(%rbp) .L: movq $40,184(%r13) jmp *-16(%r13) .text .align 8 - .quad 1029 - .quad 34 + .long VeryLongModuleName_zdsadd1_srt-(_info)+8 + .long 0 + .quad 4743 + .quad 4294967330 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movq 8(%rbp),%rbx - addq $48,%rbp + movq 40(%rbp),%rbx + addq $64,%rbp andq $-8,%rbx jmp *(%rbx) .L: - movq 32(%rbp),%rax - movq %rax,(%rbp) + movq 48(%rbp),%rax + movq %rax,-8(%rbp) movq 22(%rbx),%rsi movq 14(%rbx),%rdi movq 6(%rbx),%r8 movq 30(%rbx),%r9 - movq $_info,8(%rbp) - jmp ShortM_zdsadd_info + movq $_info,(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_zdsadd_info .text .align 8 - .quad 259 + .long VeryLongModuleName_zdsadd1_srt-(_info)+0 + .long 0 + .quad 1 + .quad 4294967313 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq 16(%rbx),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_left_info +.L: + jmp *-16(%r13) +.text + .align 8 + .quad 7943 .quad 34 _info: .L: addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq %rbx,-24(%r12) - movq 16(%rbp),%rax - movq %rax,-16(%r12) movq 8(%rbp),%rax + movq %rax,-16(%r12) + movq 16(%rbp),%rax movq %rax,-8(%r12) - movq 24(%rbp),%rax + movq 32(%rbp),%rax movq %rax,(%r12) leaq -30(%r12),%rbx - addq $32,%rbp + addq $64,%rbp jmp *(%rbp) .L: movq $40,184(%r13) jmp *-16(%r13) .text .align 8 + .long VeryLongModuleName_zdsadd1_srt-(_info)+0 + .long 0 + .quad 4615 + .quad 133143986210 +_info: +.L: + addq $24,%r12 + cmpq %r15,%r12 + ja .L + movq 56(%rbp),%rax + cmpq 7(%rbx),%rax + jl .L + movq 56(%rbp),%rax + cmpq 7(%rbx),%rax + je .L + movq $_info,-16(%r12) + movq 40(%rbp),%rax + movq %rax,(%r12) + leaq -16(%r12),%rsi + movq 48(%rbp),%rdi + movq 56(%rbp),%r8 + movq $_info,8(%rbp) + addq $8,%rbp + jmp VeryLongModuleName_zdsadd1_info +.L: + movq $24,184(%r13) + jmp *-16(%r13) +.L: + movq $_info,-16(%r12) + movq 40(%rbp),%rax + movq %rax,(%r12) + leaq -16(%r12),%rsi + movq 48(%rbp),%rdi + movq 56(%rbp),%r8 + movq $_info,(%rbp) + jmp VeryLongModuleName_zdsadd1_info +.L: + movq 40(%rbp),%rsi + movq $_info,(%rbp) + addq $-24,%r12 + jmp VeryLongModuleName_next_info +.text + .align 8 + .long VeryLongModuleName_zdsadd1_srt-(_info)+0 + .long 0 .quad 130 - .quad 34 + .quad 270582939682 _info: .L: movq %rbx,%rax @@ -1214,66 +1516,36 @@ movq %rax,(%r12) leaq -14(%r12),%rsi addq $24,%rbp - jmp ShortM_go_info + jmp VeryLongModuleName_go_info .L: - movq 16(%rbp),%rax - cmpq 30(%rbx),%rax - jl .L - movq 16(%rbp),%rax - cmpq 30(%rbx),%rax - je .L + movq 14(%rbx),%rax + movq %rax,-32(%rbp) movq 22(%rbx),%rax - movq %rax,(%rbp) - movq 14(%rbx),%rsi - movq 8(%rbp),%rdi + movq %rax,-24(%rbp) movq 6(%rbx),%rax - movq %rax,8(%rbp) - movq 16(%rbp),%r8 - movq 30(%rbx),%rax - movq %rax,16(%rbp) - movq $_info,-8(%rbp) - addq $-8,%rbp - jmp ShortM_zdsadd1_info -.L: - movq 22(%rbx),%rax - movq %rax,(%rbp) - movq 6(%rbx),%rsi - movq 8(%rbp),%rdi - movq 14(%rbx),%rax - movq %rax,8(%rbp) - movq 16(%rbp),%r8 + movq %rax,-16(%rbp) movq 30(%rbx),%rax - movq %rax,16(%rbp) - movq $_info,-8(%rbp) - addq $-8,%rbp - jmp ShortM_zdsadd1_info -.L: - movq %rbx,-16(%rbp) - movq 6(%rbx),%rax movq %rax,-8(%rbp) - movq 14(%rbx),%rax - movq %rax,(%rbp) - movq 30(%rbx),%rax - movq %rax,16(%rbp) - movq 22(%rbx),%rbx - movq $_info,-24(%rbp) - addq $-24,%rbp - testq $7,%rbx - jne _info - jmp *(%rbx) + movq %rbx,(%rbp) + movq %rbx,%rsi + movq $_info,-40(%rbp) + addq $-40,%rbp + jmp VeryLongModuleName_val_info .L: movq $40,184(%r13) jmp *-16(%r13) .text .align 8 + .long VeryLongModuleName_zdsadd1_srt-(VeryLongModuleName_zdsadd1_info)+0 + .long 0 .quad 12884901907 .quad 0 - .quad 15 -.globl ShortM_zdsadd1_info -.type ShortM_zdsadd1_info, @object -ShortM_zdsadd1_info: + .quad 270582939663 +.globl VeryLongModuleName_zdsadd1_info +.type VeryLongModuleName_zdsadd1_info, @object +VeryLongModuleName_zdsadd1_info: .L: - leaq -48(%rbp),%rax + leaq -72(%rbp),%rax cmpq %r14,%rax jb .L movq %rdi,-16(%rbp) @@ -1285,14 +1557,42 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_zdsadd1_closure,%ebx + movl $VeryLongModuleName_zdsadd1_closure,%ebx jmp *-8(%r13) +.section .data + .align 8 +VeryLongModuleName_add_srt: + .quad VeryLongModuleName_lvl2_closure + .quad VeryLongModuleName_zdsadd_closure + .quad VeryLongModuleName_lvl_closure + .quad VeryLongModuleName_lvl1_closure + .quad VeryLongModuleName_zdsadd1_closure + .quad VeryLongModuleName_lvl3_closure .data .align 8 -.globl ShortM_add_closure -.type ShortM_add_closure, @object -ShortM_add_closure: - .quad ShortM_add_info +.globl VeryLongModuleName_add_closure +.type VeryLongModuleName_add_closure, @object +VeryLongModuleName_add_closure: + .quad VeryLongModuleName_add_info + .quad 0 +.text + .align 8 + .long VeryLongModuleName_add_srt-(_info)+24 + .long 0 + .quad 1 + .quad 4294967313 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq 16(%rbx),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_right_info +.L: + jmp *-16(%r13) .text .align 8 .quad 1797 @@ -1302,13 +1602,13 @@ addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq 16(%rbp),%rax movq %rax,-24(%r12) movq %rbx,-16(%r12) movq 8(%rbp),%rax movq %rax,-8(%r12) - movq 40(%rbp),%rax + movq 32(%rbp),%rax movq %rax,(%r12) leaq -30(%r12),%rbx addq $48,%rbp @@ -1318,109 +1618,159 @@ jmp *-16(%r13) .text .align 8 - .quad 644 + .quad 3718 .quad 34 _info: .L: addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) - movq 8(%rbp),%rax - movq %rax,-24(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq 24(%rbp),%rax + movq %rax,-24(%r12) + movq 8(%rbp),%rax movq %rax,-16(%r12) movq %rbx,-8(%r12) - movq 32(%rbp),%rax + movq 40(%rbp),%rax movq %rax,(%r12) leaq -30(%r12),%rbx - addq $40,%rbp + addq $56,%rbp jmp *(%rbp) .L: movq $40,184(%r13) jmp *-16(%r13) .text .align 8 - .quad 2182 - .quad 34 + .long VeryLongModuleName_add_srt-(_info)+8 + .long 0 + .quad 1158 + .quad 4294967330 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movq 8(%rbp),%rbx + movq 48(%rbp),%rbx addq $56,%rbp andq $-8,%rbx jmp *(%rbx) .L: movq 32(%rbp),%rax - movq %rax,8(%rbp) + movq %rax,-8(%rbp) movq 22(%rbx),%rsi movq 14(%rbx),%rdi movq 6(%rbx),%r8 movq 30(%rbx),%r9 - movq $_info,16(%rbp) - addq $8,%rbp - jmp ShortM_zdsadd_info + movq $_info,(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_zdsadd_info +.text + .align 8 + .long VeryLongModuleName_add_srt-(_info)+0 + .long 0 + .quad 1 + .quad 4294967313 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq 16(%rbx),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_left_info +.L: + jmp *-16(%r13) .text .align 8 - .quad 1413 + .quad 3846 .quad 34 _info: .L: addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq %rbx,-24(%r12) - movq 32(%rbp),%rax - movq %rax,-16(%r12) movq 8(%rbp),%rax + movq %rax,-16(%r12) + movq 16(%rbp),%rax movq %rax,-8(%r12) movq 40(%rbp),%rax movq %rax,(%r12) leaq -30(%r12),%rbx - addq $48,%rbp + addq $56,%rbp jmp *(%rbp) .L: movq $40,184(%r13) jmp *-16(%r13) .text .align 8 - .quad 2054 - .quad 34 + .long VeryLongModuleName_add_srt-(_info)+0 + .long 0 + .quad 2119 + .quad 133143986210 _info: .L: - movq 7(%rbx),%rax - cmpq 48(%rbp),%rax + addq $24,%r12 + cmpq %r15,%r12 + ja .L + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax jl .L - movq 7(%rbx),%rax - cmpq 48(%rbp),%rax + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax je .L - movq 40(%rbp),%rsi - movq 32(%rbp),%rdi - movq 7(%rbx),%r8 + movq $_info,-16(%r12) + movq 56(%rbp),%rax + movq %rax,(%r12) + leaq -16(%r12),%rsi + movq 40(%rbp),%rdi + movq 8(%rbp),%r8 + movq $_info,16(%rbp) + addq $16,%rbp + jmp VeryLongModuleName_zdsadd1_info +.L: + movq $24,184(%r13) + jmp *-16(%r13) +.L: + movq $_info,-16(%r12) + movq 56(%rbp),%rax + movq %rax,(%r12) + leaq -16(%r12),%rsi + movq 40(%rbp),%rdi + movq 8(%rbp),%r8 movq $_info,8(%rbp) addq $8,%rbp - jmp ShortM_zdsadd1_info + jmp VeryLongModuleName_zdsadd1_info .L: - movq 24(%rbp),%rsi - movq 32(%rbp),%rdi - movq 7(%rbx),%r8 + movq 56(%rbp),%rsi movq $_info,8(%rbp) addq $8,%rbp - jmp ShortM_zdsadd1_info + addq $-24,%r12 + jmp VeryLongModuleName_next_info +.text + .align 8 + .long VeryLongModuleName_add_srt-(_info)+0 + .long 0 + .quad 1030 + .quad 270582939682 +_info: .L: - movq 16(%rbp),%rbx - movq $_info,(%rbp) - testq $7,%rbx - jne _info - jmp *(%rbx) + movq 7(%rbx),%rax + movq %rax,(%rbp) + movq 48(%rbp),%rsi + movq $_info,-8(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_val_info .text .align 8 + .long VeryLongModuleName_add_srt-(_info)+0 + .long 0 .quad 3 - .quad 34 + .quad 270582939682 _info: .L: movq %rbx,%rax @@ -1429,17 +1779,17 @@ jae .L movq 24(%rbp),%rsi addq $32,%rbp - jmp ShortM_go_info + jmp VeryLongModuleName_go_info .L: - movq %rbx,-16(%rbp) + movq 14(%rbx),%rax + movq %rax,-16(%rbp) movq 22(%rbx),%rax movq %rax,-8(%rbp) movq 6(%rbx),%rax movq %rax,(%rbp) - movq 30(%rbx),%rax - movq %rax,24(%rbp) + movq %rbx,24(%rbp) movq 16(%rbp),%rax - movq 14(%rbx),%rcx + movq 30(%rbx),%rcx movq %rcx,16(%rbp) movq %rax,%rbx movq $_info,-24(%rbp) @@ -1449,15 +1799,17 @@ jmp *(%rbx) .text .align 8 + .long VeryLongModuleName_add_srt-(_info)+0 + .long 0 .quad 1 - .quad 34 + .quad 270582939682 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_Nil_closure+1,%ebx + movl $VeryLongModuleName_Nil_closure+1,%ebx addq $16,%rbp jmp *(%rbp) .L: @@ -1475,14 +1827,16 @@ jmp *(%rbx) .text .align 8 + .long VeryLongModuleName_add_srt-(VeryLongModuleName_add_info)+0 + .long 0 .quad 8589934604 .quad 0 - .quad 15 -.globl ShortM_add_info -.type ShortM_add_info, @object -ShortM_add_info: + .quad 270582939663 +.globl VeryLongModuleName_add_info +.type VeryLongModuleName_add_info, @object +VeryLongModuleName_add_info: .L: - leaq -56(%rbp),%rax + leaq -64(%rbp),%rax cmpq %r14,%rax jb .L movq %rdi,-8(%rbp) @@ -1493,48 +1847,140 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_add_closure,%ebx + movl $VeryLongModuleName_add_closure,%ebx jmp *-8(%r13) -.data +.section .data .align 8 -.globl ShortM_zdssubsumes_closure -.type ShortM_zdssubsumes_closure, @object -ShortM_zdssubsumes_closure: - .quad ShortM_zdssubsumes_info +VeryLongModuleName_zdssubsumes_srt: + .quad VeryLongModuleName_zdssubsumes_closure + .quad VeryLongModuleName_zdssubsumes1_closure + .quad VeryLongModuleName_subsumes_closure + .quad VeryLongModuleName_lvl2_closure + .quad VeryLongModuleName_lvl_closure + .quad VeryLongModuleName_lvl1_closure + .quad VeryLongModuleName_lvl3_closure +.section .data + .align 8 +VeryLongModuleName_zdssubsumes1_srt: + .quad VeryLongModuleName_zdssubsumes_closure + .quad VeryLongModuleName_zdssubsumes1_closure + .quad VeryLongModuleName_subsumes_closure + .quad VeryLongModuleName_lvl2_closure + .quad VeryLongModuleName_lvl_closure + .quad VeryLongModuleName_lvl1_closure + .quad VeryLongModuleName_lvl3_closure +.section .data + .align 8 +VeryLongModuleName_subsumes_srt: + .quad VeryLongModuleName_zdssubsumes_closure + .quad VeryLongModuleName_zdssubsumes1_closure + .quad VeryLongModuleName_subsumes_closure + .quad VeryLongModuleName_lvl2_closure + .quad VeryLongModuleName_lvl_closure + .quad VeryLongModuleName_lvl1_closure + .quad VeryLongModuleName_lvl3_closure +.data + .align 8 +.globl VeryLongModuleName_zdssubsumes_closure +.type VeryLongModuleName_zdssubsumes_closure, @object +VeryLongModuleName_zdssubsumes_closure: + .quad VeryLongModuleName_zdssubsumes_info + .quad 0 .text .align 8 -.globl ShortM_zdssubsumes_slow -.type ShortM_zdssubsumes_slow, @object -ShortM_zdssubsumes_slow: +.globl VeryLongModuleName_zdssubsumes_slow +.type VeryLongModuleName_zdssubsumes_slow, @object +VeryLongModuleName_zdssubsumes_slow: .L: movq (%rbp),%rsi movq 8(%rbp),%rdi movq 16(%rbp),%r8 movq 24(%rbp),%r9 addq $32,%rbp - jmp ShortM_zdssubsumes_info + jmp VeryLongModuleName_zdssubsumes_info .text .align 8 - .quad 1413 - .quad 34 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+40 + .long 0 + .quad 4294967299 + .quad 4294967312 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + addq $40,%r12 + cmpq %r15,%r12 + ja .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 16(%rbx),%rax + movq %rax,-24(%r12) + movq 24(%rbx),%rax + movq %rax,-16(%r12) + movq 32(%rbx),%rax + movq %rax,-8(%r12) + movq 40(%rbx),%rax + movq %rax,(%r12) + leaq -30(%r12),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_right_info +.L: + movq $40,184(%r13) + jmp *-16(%r13) +.text + .align 8 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+16 + .long 0 + .quad 1925 + .quad 4294967330 +_info: +.L: + movq %rbx,%rsi + movq 8(%rbp),%rdi + addq $48,%rbp + jmp VeryLongModuleName_subsumes_info +.text + .align 8 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+16 + .long 0 + .quad 1029 + .quad 38654705698 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movq 32(%rbp),%rsi - movq 8(%rbp),%rdi - addq $48,%rbp - jmp ShortM_subsumes_info + addq $40,%r12 + cmpq %r15,%r12 + ja .L + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 32(%rbp),%rax + movq %rax,-24(%r12) + movq 24(%rbp),%rax + movq %rax,-16(%r12) + movq 16(%rbp),%rax + movq %rax,-8(%r12) + movq 40(%rbp),%rax + movq %rax,(%r12) + leaq -30(%r12),%rsi + movq $_info,(%rbp) + jmp VeryLongModuleName_right_info .L: movl $ghczmprim_GHCziBool_True_closure+2,%ebx addq $48,%rbp jmp *(%rbp) +.L: + movq $40,184(%r13) + jmp *-16(%r13) .text .align 8 - .quad 1413 - .quad 34 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+0 + .long 0 + .quad 1029 + .quad 158913789986 _info: .L: movq %rbx,%rax @@ -1553,65 +1999,94 @@ movq 6(%rbx),%r9 movq $_info,(%rbp) addq $-8,%rbp - jmp ShortM_zdssubsumes_info + jmp VeryLongModuleName_zdssubsumes_info .text .align 8 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+24 + .long 0 + .quad 130 + .quad 21474836514 +_info: +.L: + movq 16(%rbp),%rax + cmpq 7(%rbx),%rax + jl .L + movq 16(%rbp),%rax + cmpq 7(%rbx),%rax + je .L + movq 8(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_right_info +.L: + movq 8(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_left_info +.L: + movq 8(%rbp),%rbx + addq $24,%rbp + andq $-8,%rbx + jmp *(%rbx) +.text + .align 8 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+24 + .long 0 .quad 65 - .quad 34 + .quad 55834574882 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_Nil_closure+1,%ebx + movl $VeryLongModuleName_Nil_closure+1,%ebx addq $16,%rbp jmp stg_upd_frame_info .L: - movq 8(%rbp),%rax - cmpq 30(%rbx),%rax - jl .L - movq 8(%rbp),%rax - cmpq 30(%rbx),%rax - je .L - movq 14(%rbx),%rbx - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) -.L: - movq 6(%rbx),%rbx - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) -.L: - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) + movq %rbx,(%rbp) + movq %rbx,%rsi + movq $_info,-8(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_val_info .text .align 8 - .quad 4294967297 - .quad 20 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+24 + .long 0 + .quad 8589934595 + .quad 55834574864 _info: .L: - leaq -32(%rbp),%rax + leaq -40(%rbp),%rax cmpq %r14,%rax jb .L + addq $40,%r12 + cmpq %r15,%r12 + ja .L movq $stg_upd_frame_info,-16(%rbp) movq %rbx,-8(%rbp) + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 16(%rbx),%rax + movq %rax,-24(%r12) movq 24(%rbx),%rax + movq %rax,-16(%r12) + movq 32(%rbx),%rax + movq %rax,-8(%r12) + movq 40(%rbx),%rax + movq %rax,(%r12) + movq 48(%rbx),%rax movq %rax,-24(%rbp) - movq 16(%rbx),%rbx + leaq -30(%r12),%rsi movq $_info,-32(%rbp) addq $-32,%rbp - testq $7,%rbx - jne _info - jmp *(%rbx) + jmp VeryLongModuleName_left_info .L: + movq $40,184(%r13) jmp *-16(%r13) .text .align 8 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+0 + .long 0 .quad 1029 - .quad 34 + .quad 4294967330 _info: .L: movq %rbx,%rax @@ -1619,61 +2094,118 @@ cmpq $2,%rax jae .L movq 8(%rbp),%rsi - movq 24(%rbp),%rdi - movq 32(%rbp),%r8 - movq 16(%rbp),%r9 + movq 16(%rbp),%rdi + movq 24(%rbp),%r8 + movq 32(%rbp),%r9 addq $40,%rbp - jmp ShortM_zdssubsumes_info + jmp VeryLongModuleName_zdssubsumes_info .L: movl $ghczmprim_GHCziBool_True_closure+2,%ebx addq $48,%rbp jmp *(%rbp) .text .align 8 - .quad 1029 - .quad 34 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+0 + .long 0 + .quad 2118 + .quad 545460846626 _info: .L: - addq $32,%r12 + addq $56,%r12 cmpq %r15,%r12 ja .L - movq 7(%rbx),%rax - cmpq 40(%rbp),%rax + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax jl .L - movq 7(%rbx),%rax - cmpq 40(%rbp),%rax + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax je .L - movq 8(%rbp),%rsi - movq 7(%rbx),%rdi - movq 32(%rbp),%r8 - addq $48,%rbp - addq $-32,%r12 - jmp ShortM_zdssubsumes1_info + movq $_info,-48(%r12) + movq 40(%rbp),%rax + movq %rax,-32(%r12) + movq 32(%rbp),%rax + movq %rax,-24(%r12) + movq 24(%rbp),%rax + movq %rax,-16(%r12) + movq 48(%rbp),%rax + movq %rax,-8(%r12) + movq 16(%rbp),%rsi + movq 8(%rbp),%rdi + leaq -48(%r12),%r8 + addq $56,%rbp + addq $-8,%r12 + jmp VeryLongModuleName_zdssubsumes1_info .L: - movq $32,184(%r13) + movq $56,184(%r13) jmp *-16(%r13) .L: - movq $_info,-24(%r12) + movq $_info,-48(%r12) + movq 40(%rbp),%rax + movq %rax,-32(%r12) + movq 32(%rbp),%rax + movq %rax,-24(%r12) + movq 24(%rbp),%rax + movq %rax,-16(%r12) + movq 48(%rbp),%rax + movq %rax,-8(%r12) + movq 8(%rbp),%rax + movq %rax,(%r12) + movq 16(%rbp),%rsi + movq 8(%rbp),%rdi + leaq -48(%r12),%r8 + movq $_info,8(%rbp) + addq $8,%rbp + jmp VeryLongModuleName_zdssubsumes1_info +.L: + movq $VeryLongModuleName_Node_con_info,-48(%r12) + movq 40(%rbp),%rax + movq %rax,-40(%r12) + movq 32(%rbp),%rax + movq %rax,-32(%r12) + movq 24(%rbp),%rax + movq %rax,-24(%r12) + movq 48(%rbp),%rax + movq %rax,-16(%r12) + leaq -46(%r12),%rsi + movq $_info,8(%rbp) + addq $8,%rbp + addq $-16,%r12 + jmp VeryLongModuleName_next_info +.text + .align 8 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+0 + .long 0 + .quad 1029 + .quad 545460846626 +_info: +.L: + addq $40,%r12 + cmpq %r15,%r12 + ja .L + movq $VeryLongModuleName_Node_con_info,-32(%r12) + movq 32(%rbp),%rax + movq %rax,-24(%r12) + movq 24(%rbp),%rax + movq %rax,-16(%r12) movq 16(%rbp),%rax movq %rax,-8(%r12) - movq 7(%rbx),%rax + movq 40(%rbp),%rax movq %rax,(%r12) - movq 8(%rbp),%rsi - movq 7(%rbx),%rdi - leaq -24(%r12),%r8 - movq $_info,(%rbp) - jmp ShortM_zdssubsumes1_info + movq 7(%rbx),%rax + movq %rax,(%rbp) + leaq -30(%r12),%rsi + movq $_info,-8(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_val_info .L: - movq 24(%rbp),%rbx - movq $_info,(%rbp) - addq $-32,%r12 - testq $7,%rbx - jne _info - jmp *(%rbx) + movq $40,184(%r13) + jmp *-16(%r13) .text .align 8 + .long VeryLongModuleName_zdssubsumes_srt-(_info)+0 + .long 0 .quad 516 - .quad 34 + .quad 545460846626 _info: .L: movq %rbx,%rax @@ -1694,23 +2226,24 @@ jmp *(%rbx) .text .align 8 - .long ShortM_zdssubsumes_slow-(ShortM_zdssubsumes_info)+0 + .long VeryLongModuleName_zdssubsumes_slow-(VeryLongModuleName_zdssubsumes_info)+0 .long 0 .quad 1029 - .quad 0 + .long VeryLongModuleName_zdssubsumes_srt-(VeryLongModuleName_zdssubsumes_info)+0 + .long 0 .quad 21474836480 .quad 0 - .quad 15 -.globl ShortM_zdssubsumes_info -.type ShortM_zdssubsumes_info, @object -ShortM_zdssubsumes_info: + .quad 545460846607 +.globl VeryLongModuleName_zdssubsumes_info +.type VeryLongModuleName_zdssubsumes_info, @object +VeryLongModuleName_zdssubsumes_info: .L: leaq -48(%rbp),%rax cmpq %r14,%rax jb .L - movq %r9,-24(%rbp) - movq %rdi,-16(%rbp) - movq %r8,-8(%rbp) + movq %rdi,-24(%rbp) + movq %r8,-16(%rbp) + movq %r9,-8(%rbp) movq %rsi,%rbx movq $_info,-32(%rbp) addq $-32,%rbp @@ -1718,7 +2251,7 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_zdssubsumes_closure,%ebx + movl $VeryLongModuleName_zdssubsumes_closure,%ebx addq $-32,%rbp movq %rsi,(%rbp) movq %rdi,8(%rbp) @@ -1727,32 +2260,67 @@ jmp *-8(%r13) .data .align 8 -.globl ShortM_zdssubsumes1_closure -.type ShortM_zdssubsumes1_closure, @object -ShortM_zdssubsumes1_closure: - .quad ShortM_zdssubsumes1_info +.globl VeryLongModuleName_zdssubsumes1_closure +.type VeryLongModuleName_zdssubsumes1_closure, @object +VeryLongModuleName_zdssubsumes1_closure: + .quad VeryLongModuleName_zdssubsumes1_info + .quad 0 .text .align 8 - .quad 2 - .quad 34 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+40 + .long 0 + .quad 1 + .quad 4294967313 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq 16(%rbx),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_right_info +.L: + jmp *-16(%r13) +.text + .align 8 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+16 + .long 0 + .quad 130 + .quad 4294967330 +_info: +.L: + movq %rbx,%rsi + movq 8(%rbp),%rdi + addq $24,%rbp + jmp VeryLongModuleName_subsumes_info +.text + .align 8 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+16 + .long 0 + .quad 259 + .quad 38654705698 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movq 16(%rbp),%rsi - movq 8(%rbp),%rdi - addq $24,%rbp - jmp ShortM_subsumes_info + movq 8(%rbp),%rsi + movq $_info,8(%rbp) + addq $8,%rbp + jmp VeryLongModuleName_right_info .L: movl $ghczmprim_GHCziBool_True_closure+2,%ebx - addq $24,%rbp + addq $32,%rbp jmp *(%rbp) .text .align 8 - .quad 2 - .quad 34 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+0 + .long 0 + .quad 259 + .quad 158913789986 _info: .L: movq %rbx,%rax @@ -1760,96 +2328,162 @@ cmpq $2,%rax jae .L movl $ghczmprim_GHCziBool_True_closure+2,%ebx - addq $24,%rbp + addq $32,%rbp jmp *(%rbp) .L: movq 30(%rbx),%rax movq %rax,-8(%rbp) - movq 8(%rbp),%rsi + movq 16(%rbp),%rsi movq 22(%rbx),%rdi movq 14(%rbx),%r8 movq 6(%rbx),%r9 movq $_info,(%rbp) addq $-8,%rbp - jmp ShortM_zdssubsumes_info + jmp VeryLongModuleName_zdssubsumes_info .text .align 8 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+24 + .long 0 + .quad 130 + .quad 21474836514 +_info: +.L: + movq 16(%rbp),%rax + cmpq 7(%rbx),%rax + jl .L + movq 16(%rbp),%rax + cmpq 7(%rbx),%rax + je .L + movq 8(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_right_info +.L: + movq 8(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_left_info +.L: + movq 8(%rbp),%rbx + addq $24,%rbp + andq $-8,%rbx + jmp *(%rbx) +.text + .align 8 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+24 + .long 0 .quad 65 - .quad 34 + .quad 55834574882 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_Nil_closure+1,%ebx + movl $VeryLongModuleName_Nil_closure+1,%ebx addq $16,%rbp jmp stg_upd_frame_info .L: - movq 8(%rbp),%rax - cmpq 30(%rbx),%rax - jl .L - movq 8(%rbp),%rax - cmpq 30(%rbx),%rax - je .L - movq 14(%rbx),%rbx - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) -.L: - movq 6(%rbx),%rbx - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) -.L: - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) + movq %rbx,(%rbp) + movq %rbx,%rsi + movq $_info,-8(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_val_info .text .align 8 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+24 + .long 0 .quad 4294967297 - .quad 20 + .quad 55834574868 _info: .L: - leaq -32(%rbp),%rax + leaq -40(%rbp),%rax cmpq %r14,%rax jb .L movq $stg_upd_frame_info,-16(%rbp) movq %rbx,-8(%rbp) movq 24(%rbx),%rax movq %rax,-24(%rbp) - movq 16(%rbx),%rbx + movq 16(%rbx),%rsi movq $_info,-32(%rbp) addq $-32,%rbp - testq $7,%rbx - jne _info - jmp *(%rbx) + jmp VeryLongModuleName_left_info .L: jmp *-16(%r13) .text .align 8 - .quad 1029 - .quad 34 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+0 + .long 0 + .quad 5191 + .quad 4294967330 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movq 32(%rbp),%rsi - movq 16(%rbp),%rdi + movq 8(%rbp),%rax + movq %rax,56(%rbp) + movq 48(%rbp),%rsi + movq 32(%rbp),%rdi movq 24(%rbp),%r8 - movq 8(%rbp),%r9 - addq $40,%rbp - jmp ShortM_zdssubsumes_info + movq 16(%rbp),%r9 + addq $56,%rbp + jmp VeryLongModuleName_zdssubsumes_info +.L: + movl $ghczmprim_GHCziBool_True_closure+2,%ebx + addq $64,%rbp + jmp *(%rbp) +.text + .align 8 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+0 + .long 0 + .quad 4167 + .quad 545460846626 +_info: +.L: + addq $32,%r12 + cmpq %r15,%r12 + ja .L + movq 56(%rbp),%rax + cmpq 7(%rbx),%rax + jl .L + movq 56(%rbp),%rax + cmpq 7(%rbx),%rax + je .L + movq $_info,-24(%r12) + movq 40(%rbp),%rax + movq %rax,-8(%r12) + movq 48(%rbp),%rsi + movq 56(%rbp),%rdi + leaq -24(%r12),%r8 + addq $64,%rbp + addq $-8,%r12 + jmp VeryLongModuleName_zdssubsumes1_info +.L: + movq $32,184(%r13) + jmp *-16(%r13) +.L: + movq $_info,-24(%r12) + movq 40(%rbp),%rax + movq %rax,-8(%r12) + movq 56(%rbp),%rax + movq %rax,(%r12) + movq 48(%rbp),%rsi + movq 56(%rbp),%rdi + leaq -24(%r12),%r8 + movq $_info,(%rbp) + jmp VeryLongModuleName_zdssubsumes1_info .L: - movl $ghczmprim_GHCziBool_True_closure+2,%ebx - addq $48,%rbp - jmp *(%rbp) + movq 40(%rbp),%rsi + movq $_info,32(%rbp) + addq $32,%rbp + addq $-32,%r12 + jmp VeryLongModuleName_next_info .text .align 8 + .long VeryLongModuleName_zdssubsumes1_srt-(_info)+0 + .long 0 .quad 130 - .quad 34 + .quad 545460846626 _info: .L: movq %rbx,%rax @@ -1860,63 +2494,31 @@ addq $24,%rbp jmp *(%rbp) .L: - addq $32,%r12 - cmpq %r15,%r12 - ja .L - movq 16(%rbp),%rax - cmpq 30(%rbx),%rax - jl .L - movq 16(%rbp),%rax - cmpq 30(%rbx),%rax - je .L - movq 8(%rbp),%rsi - movq 16(%rbp),%rdi - movq 14(%rbx),%r8 - addq $24,%rbp - addq $-32,%r12 - jmp ShortM_zdssubsumes1_info -.L: - movq $32,184(%r13) - jmp *-16(%r13) -.L: - movq $_info,-24(%r12) - movq 6(%rbx),%rax - movq %rax,-8(%r12) - movq 16(%rbp),%rax - movq %rax,(%r12) + movq 30(%rbx),%rax + movq %rax,-32(%rbp) movq 6(%rbx),%rax + movq %rax,-24(%rbp) + movq 14(%rbx),%rax movq %rax,-16(%rbp) movq 22(%rbx),%rax movq %rax,-8(%rbp) - movq 14(%rbx),%rax - movq %rax,(%rbp) - movq 8(%rbp),%rsi - movq 16(%rbp),%rdi - movq 30(%rbx),%rax - movq %rax,16(%rbp) - leaq -24(%r12),%r8 - movq $_info,-24(%rbp) - addq $-24,%rbp - jmp ShortM_zdssubsumes1_info -.L: - movq 14(%rbx),%rax - movq %rax,16(%rbp) - movq 22(%rbx),%rbx - movq $_info,(%rbp) - addq $-32,%r12 - testq $7,%rbx - jne _info - jmp *(%rbx) + movq %rbx,(%rbp) + movq %rbx,%rsi + movq $_info,-40(%rbp) + addq $-40,%rbp + jmp VeryLongModuleName_val_info .text .align 8 + .long VeryLongModuleName_zdssubsumes1_srt-(VeryLongModuleName_zdssubsumes1_info)+0 + .long 0 .quad 12884901906 .quad 0 - .quad 15 -.globl ShortM_zdssubsumes1_info -.type ShortM_zdssubsumes1_info, @object -ShortM_zdssubsumes1_info: + .quad 545460846607 +.globl VeryLongModuleName_zdssubsumes1_info +.type VeryLongModuleName_zdssubsumes1_info, @object +VeryLongModuleName_zdssubsumes1_info: .L: - leaq -48(%rbp),%rax + leaq -64(%rbp),%rax cmpq %r14,%rax jb .L movq %rsi,-16(%rbp) @@ -1928,36 +2530,70 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_zdssubsumes1_closure,%ebx + movl $VeryLongModuleName_zdssubsumes1_closure,%ebx jmp *-8(%r13) .data .align 8 -.globl ShortM_subsumes_closure -.type ShortM_subsumes_closure, @object -ShortM_subsumes_closure: - .quad ShortM_subsumes_info +.globl VeryLongModuleName_subsumes_closure +.type VeryLongModuleName_subsumes_closure, @object +VeryLongModuleName_subsumes_closure: + .quad VeryLongModuleName_subsumes_info + .quad 0 .text .align 8 - .quad 1413 - .quad 34 + .long VeryLongModuleName_subsumes_srt-(_info)+40 + .long 0 + .quad 1 + .quad 4294967313 +_info: +.L: + leaq -16(%rbp),%rax + cmpq %r14,%rax + jb .L + movq $stg_upd_frame_info,-16(%rbp) + movq %rbx,-8(%rbp) + movq 16(%rbx),%rsi + addq $-16,%rbp + jmp VeryLongModuleName_right_info +.L: + jmp *-16(%r13) +.text + .align 8 + .long VeryLongModuleName_subsumes_srt-(_info)+16 + .long 0 + .quad 3974 + .quad 4294967330 +_info: +.L: + movq %rbx,%rsi + movq 8(%rbp),%rdi + addq $56,%rbp + jmp VeryLongModuleName_subsumes_info +.text + .align 8 + .long VeryLongModuleName_subsumes_srt-(_info)+16 + .long 0 + .quad 1926 + .quad 38654705698 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movq 32(%rbp),%rsi - movq 8(%rbp),%rdi - addq $48,%rbp - jmp ShortM_subsumes_info + movq 48(%rbp),%rsi + movq $_info,(%rbp) + jmp VeryLongModuleName_right_info .L: movl $ghczmprim_GHCziBool_True_closure+2,%ebx - addq $48,%rbp + addq $56,%rbp jmp *(%rbp) .text .align 8 - .quad 1413 - .quad 34 + .long VeryLongModuleName_subsumes_srt-(_info)+0 + .long 0 + .quad 1926 + .quad 158913789986 _info: .L: movq %rbx,%rax @@ -1965,7 +2601,7 @@ cmpq $2,%rax jae .L movl $ghczmprim_GHCziBool_True_closure+2,%ebx - addq $48,%rbp + addq $56,%rbp jmp *(%rbp) .L: movq 30(%rbx),%rax @@ -1976,127 +2612,166 @@ movq 6(%rbx),%r9 movq $_info,(%rbp) addq $-8,%rbp - jmp ShortM_zdssubsumes_info + jmp VeryLongModuleName_zdssubsumes_info +.text + .align 8 + .long VeryLongModuleName_subsumes_srt-(_info)+24 + .long 0 + .quad 130 + .quad 21474836514 +_info: +.L: + movq 16(%rbp),%rax + cmpq 7(%rbx),%rax + jl .L + movq 16(%rbp),%rax + cmpq 7(%rbx),%rax + je .L + movq 8(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_right_info +.L: + movq 8(%rbp),%rsi + addq $24,%rbp + jmp VeryLongModuleName_left_info +.L: + movq 8(%rbp),%rbx + addq $24,%rbp + andq $-8,%rbx + jmp *(%rbx) .text .align 8 + .long VeryLongModuleName_subsumes_srt-(_info)+24 + .long 0 .quad 65 - .quad 34 + .quad 55834574882 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L - movl $ShortM_Nil_closure+1,%ebx + movl $VeryLongModuleName_Nil_closure+1,%ebx addq $16,%rbp jmp stg_upd_frame_info .L: - movq 8(%rbp),%rax - cmpq 30(%rbx),%rax - jl .L - movq 8(%rbp),%rax - cmpq 30(%rbx),%rax - je .L - movq 14(%rbx),%rbx - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) -.L: - movq 6(%rbx),%rbx - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) -.L: - addq $16,%rbp - andq $-8,%rbx - jmp *(%rbx) + movq %rbx,(%rbp) + movq %rbx,%rsi + movq $_info,-8(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_val_info .text .align 8 + .long VeryLongModuleName_subsumes_srt-(_info)+24 + .long 0 .quad 4294967297 - .quad 20 + .quad 55834574868 _info: .L: - leaq -32(%rbp),%rax + leaq -40(%rbp),%rax cmpq %r14,%rax jb .L movq $stg_upd_frame_info,-16(%rbp) movq %rbx,-8(%rbp) movq 24(%rbx),%rax movq %rax,-24(%rbp) - movq 16(%rbx),%rbx + movq 16(%rbx),%rsi movq $_info,-32(%rbp) addq $-32,%rbp - testq $7,%rbx - jne _info - jmp *(%rbx) + jmp VeryLongModuleName_left_info .L: jmp *-16(%r13) .text .align 8 - .quad 1029 - .quad 34 + .long VeryLongModuleName_subsumes_srt-(_info)+0 + .long 0 + .quad 2182 + .quad 4294967330 _info: .L: movq %rbx,%rax andq $7,%rax cmpq $2,%rax jae .L + movq 16(%rbp),%rax + movq %rax,48(%rbp) movq 8(%rbp),%rsi - movq 24(%rbp),%rdi + movq 40(%rbp),%rdi movq 32(%rbp),%r8 - movq 16(%rbp),%r9 - addq $40,%rbp - jmp ShortM_zdssubsumes_info + movq 24(%rbp),%r9 + addq $48,%rbp + jmp VeryLongModuleName_zdssubsumes_info .L: movl $ghczmprim_GHCziBool_True_closure+2,%ebx - addq $48,%rbp + addq $56,%rbp jmp *(%rbp) .text .align 8 - .quad 1029 - .quad 34 + .long VeryLongModuleName_subsumes_srt-(_info)+0 + .long 0 + .quad 327 + .quad 545460846626 _info: .L: addq $32,%r12 cmpq %r15,%r12 ja .L - movq 7(%rbx),%rax - cmpq 40(%rbp),%rax + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax jl .L - movq 7(%rbx),%rax - cmpq 40(%rbp),%rax + movq 8(%rbp),%rax + cmpq 7(%rbx),%rax je .L - movq 8(%rbp),%rsi - movq 7(%rbx),%rdi - movq 32(%rbp),%r8 - addq $48,%rbp - addq $-32,%r12 - jmp ShortM_zdssubsumes1_info + movq $_info,-24(%r12) + movq 56(%rbp),%rax + movq %rax,-8(%r12) + movq 16(%rbp),%rsi + movq 8(%rbp),%rdi + leaq -24(%r12),%r8 + addq $64,%rbp + addq $-8,%r12 + jmp VeryLongModuleName_zdssubsumes1_info .L: movq $32,184(%r13) jmp *-16(%r13) .L: movq $_info,-24(%r12) - movq 16(%rbp),%rax + movq 56(%rbp),%rax movq %rax,-8(%r12) - movq 7(%rbx),%rax + movq 8(%rbp),%rax movq %rax,(%r12) - movq 8(%rbp),%rsi - movq 7(%rbx),%rdi + movq 16(%rbp),%rsi + movq 8(%rbp),%rdi leaq -24(%r12),%r8 - movq $_info,(%rbp) - jmp ShortM_zdssubsumes1_info + movq $_info,8(%rbp) + addq $8,%rbp + jmp VeryLongModuleName_zdssubsumes1_info .L: - movq 24(%rbp),%rbx - movq $_info,(%rbp) + movq 56(%rbp),%rsi + movq $_info,8(%rbp) + addq $8,%rbp addq $-32,%r12 - testq $7,%rbx - jne _info - jmp *(%rbx) + jmp VeryLongModuleName_next_info .text .align 8 - .quad 516 - .quad 34 + .long VeryLongModuleName_subsumes_srt-(_info)+0 + .long 0 + .quad 134 + .quad 545460846626 +_info: +.L: + movq 7(%rbx),%rax + movq %rax,(%rbp) + movq 48(%rbp),%rsi + movq $_info,-8(%rbp) + addq $-8,%rbp + jmp VeryLongModuleName_val_info +.text + .align 8 + .long VeryLongModuleName_subsumes_srt-(_info)+0 + .long 0 + .quad 69 + .quad 545460846626 _info: .L: movq %rbx,%rax @@ -2104,7 +2779,7 @@ cmpq $2,%rax jae .L movl $ghczmprim_GHCziBool_False_closure+1,%ebx - addq $40,%rbp + addq $48,%rbp jmp *(%rbp) .L: movq 14(%rbx),%rax @@ -2117,8 +2792,10 @@ jmp *(%rbx) .text .align 8 + .long VeryLongModuleName_subsumes_srt-(_info)+0 + .long 0 .quad 1 - .quad 34 + .quad 545460846626 _info: .L: movq %rbx,%rax @@ -2129,31 +2806,34 @@ addq $16,%rbp jmp *(%rbp) .L: + movq 30(%rbx),%rax + movq %rax,-24(%rbp) movq 6(%rbx),%rax movq %rax,-16(%rbp) - movq 22(%rbx),%rax - movq %rax,-8(%rbp) movq 14(%rbx),%rax + movq %rax,-8(%rbp) + movq 22(%rbx),%rax movq %rax,(%rbp) movq 8(%rbp),%rax - movq 30(%rbx),%rcx - movq %rcx,8(%rbp) + movq %rbx,8(%rbp) movq %rax,%rbx - movq $_info,-24(%rbp) - addq $-24,%rbp + movq $_info,-32(%rbp) + addq $-32,%rbp testq $7,%rbx jne _info jmp *(%rbx) .text .align 8 + .long VeryLongModuleName_subsumes_srt-(VeryLongModuleName_subsumes_info)+0 + .long 0 .quad 8589934604 .quad 0 - .quad 15 -.globl ShortM_subsumes_info -.type ShortM_subsumes_info, @object -ShortM_subsumes_info: + .quad 545460846607 +.globl VeryLongModuleName_subsumes_info +.type VeryLongModuleName_subsumes_info, @object +VeryLongModuleName_subsumes_info: .L: - leaq -56(%rbp),%rax + leaq -64(%rbp),%rax cmpq %r14,%rax jb .L movq %rdi,-8(%rbp) @@ -2164,49 +2844,49 @@ jne _info jmp *(%rbx) .L: - movl $ShortM_subsumes_closure,%ebx + movl $VeryLongModuleName_subsumes_closure,%ebx jmp *-8(%r13) .data .align 8 -.globl ShortM_Nil_closure -.type ShortM_Nil_closure, @object -ShortM_Nil_closure: - .quad ShortM_Nil_static_info +.globl VeryLongModuleName_Nil_closure +.type VeryLongModuleName_Nil_closure, @object +VeryLongModuleName_Nil_closure: + .quad VeryLongModuleName_Nil_static_info .data .align 8 -.globl ShortM_Node_closure -.type ShortM_Node_closure, @object -ShortM_Node_closure: - .quad ShortM_Node_info +.globl VeryLongModuleName_Node_closure +.type VeryLongModuleName_Node_closure, @object +VeryLongModuleName_Node_closure: + .quad VeryLongModuleName_Node_info .text .align 8 -.globl ShortM_Node_slow -.type ShortM_Node_slow, @object -ShortM_Node_slow: +.globl VeryLongModuleName_Node_slow +.type VeryLongModuleName_Node_slow, @object +VeryLongModuleName_Node_slow: .L: movq (%rbp),%rsi movq 8(%rbp),%rdi movq 16(%rbp),%r8 movq 24(%rbp),%r9 addq $32,%rbp - jmp ShortM_Node_info + jmp VeryLongModuleName_Node_info .text .align 8 - .long ShortM_Node_slow-(ShortM_Node_info)+0 + .long VeryLongModuleName_Node_slow-(VeryLongModuleName_Node_info)+0 .long 0 .quad 68 .quad 0 .quad 17179869184 .quad 0 .quad 15 -.globl ShortM_Node_info -.type ShortM_Node_info, @object -ShortM_Node_info: +.globl VeryLongModuleName_Node_info +.type VeryLongModuleName_Node_info, @object +VeryLongModuleName_Node_info: .L: addq $40,%r12 cmpq %r15,%r12 ja .L - movq $ShortM_Node_con_info,-32(%r12) + movq $VeryLongModuleName_Node_con_info,-32(%r12) movq %rdi,-24(%r12) movq %r8,-16(%r12) movq %r9,-8(%r12) @@ -2215,7 +2895,7 @@ jmp *(%rbp) .L: movq $40,184(%r13) - movl $ShortM_Node_closure,%ebx + movl $VeryLongModuleName_Node_closure,%ebx addq $-32,%rbp movq %rsi,(%rbp) movq %rdi,8(%rbp) @@ -2230,12 +2910,24 @@ .byte 105 .byte 110 .byte 58 - .byte 83 - .byte 104 - .byte 111 + .byte 86 + .byte 101 .byte 114 - .byte 116 + .byte 121 + .byte 76 + .byte 111 + .byte 110 + .byte 103 .byte 77 + .byte 111 + .byte 100 + .byte 117 + .byte 108 + .byte 101 + .byte 78 + .byte 97 + .byte 109 + .byte 101 .byte 46 .byte 78 .byte 105 @@ -2243,13 +2935,13 @@ .byte 0 .text .align 8 - .long _str-(ShortM_Nil_static_info)+0 + .long _str-(VeryLongModuleName_Nil_static_info)+0 .long 0 .quad 0 .quad 8 -.globl ShortM_Nil_static_info -.type ShortM_Nil_static_info, @object -ShortM_Nil_static_info: +.globl VeryLongModuleName_Nil_static_info +.type VeryLongModuleName_Nil_static_info, @object +VeryLongModuleName_Nil_static_info: .L: incq %rbx jmp *(%rbp) @@ -2261,12 +2953,24 @@ .byte 105 .byte 110 .byte 58 - .byte 83 - .byte 104 - .byte 111 + .byte 86 + .byte 101 .byte 114 - .byte 116 + .byte 121 + .byte 76 + .byte 111 + .byte 110 + .byte 103 .byte 77 + .byte 111 + .byte 100 + .byte 117 + .byte 108 + .byte 101 + .byte 78 + .byte 97 + .byte 109 + .byte 101 .byte 46 .byte 78 .byte 111 @@ -2275,13 +2979,13 @@ .byte 0 .text .align 8 - .long _str-(ShortM_Node_con_info)+0 + .long _str-(VeryLongModuleName_Node_con_info)+0 .long 0 .quad 4294967299 .quad 4294967297 -.globl ShortM_Node_con_info -.type ShortM_Node_con_info, @object -ShortM_Node_con_info: +.globl VeryLongModuleName_Node_con_info +.type VeryLongModuleName_Node_con_info, @object +VeryLongModuleName_Node_con_info: .L: addq $2,%rbx jmp *(%rbp) @@ -2293,12 +2997,24 @@ .byte 105 .byte 110 .byte 58 - .byte 83 - .byte 104 - .byte 111 + .byte 86 + .byte 101 .byte 114 - .byte 116 + .byte 121 + .byte 76 + .byte 111 + .byte 110 + .byte 103 .byte 77 + .byte 111 + .byte 100 + .byte 117 + .byte 108 + .byte 101 + .byte 78 + .byte 97 + .byte 109 + .byte 101 .byte 46 .byte 78 .byte 111 @@ -2307,13 +3023,13 @@ .byte 0 .text .align 8 - .long _str-(ShortM_Node_static_info)+0 + .long _str-(VeryLongModuleName_Node_static_info)+0 .long 0 .quad 4294967299 .quad 4294967303 -.globl ShortM_Node_static_info -.type ShortM_Node_static_info, @object -ShortM_Node_static_info: +.globl VeryLongModuleName_Node_static_info +.type VeryLongModuleName_Node_static_info, @object +VeryLongModuleName_Node_static_info: .L: addq $2,%rbx jmp *(%rbp) @@ -2323,9 +3039,9 @@ .quad 0 .text .align 8 -.globl __stginit_ShortM_ -.type __stginit_ShortM_, @object -__stginit_ShortM_: +.globl __stginit_VeryLongModuleName_ +.type __stginit_VeryLongModuleName_, @object +__stginit_VeryLongModuleName_: .L: cmpq $0,_module_registered jne .L @@ -2338,10 +3054,10 @@ jmp *-8(%rbp) .text .align 8 -.globl __stginit_ShortM -.type __stginit_ShortM, @object -__stginit_ShortM: +.globl __stginit_VeryLongModuleName +.type __stginit_VeryLongModuleName, @object +__stginit_VeryLongModuleName: .L: - jmp __stginit_ShortM_ + jmp __stginit_VeryLongModuleName_ .section .note.GNU-stack,"",@progbits .ident "GHC 6.10.1"

Hi
I'm using GHC 6.10.1 on OS X. Any ideas on what may be going on?
Wow. Awesome bug! Got lots of discussion at Galois :)
I can confirm a difference in running time, we also tested with 6.8.x and 6.10, with similar results.
Is -O2 implying -fvia-C? If so, could it be the evil mangler? Is there a non-alpha rename difference in the Core? Very cool bug :-) Thanks Neil

Running time as a function of module name length, http://galois.com/~dons/images/results.png 10 is the magic threshold, where indirections start creeping in. Codegen cost heuristic fail? -- Don

dons:
Running time as a function of module name length,
http://galois.com/~dons/images/results.png
10 is the magic threshold, where indirections start creeping in.
Codegen cost heuristic fail?
Given this, could you open a bug ticket for it, with all the info we have, http://hackage.haskell.org/trac/ghc/newticket?type=bug E.g. the graph, the code, the asm diff. Cheers, Don

That's a truly awesome feature! I'll shorten all my module names to
single letters tomorrow.
-- Lennart
On Tue, Dec 16, 2008 at 12:43 AM, Don Stewart
dons:
Running time as a function of module name length,
http://galois.com/~dons/images/results.png
10 is the magic threshold, where indirections start creeping in.
Codegen cost heuristic fail?
Given this, could you open a bug ticket for it, with all the info we have,
http://hackage.haskell.org/trac/ghc/newticket?type=bug
E.g. the graph, the code, the asm diff.
Cheers, Don _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Ditto. Can I claim the [A-Z].* hierarchies as belonging to me? :-) --sigbjorn "putting them up on eBay afterwards...maybe" On 12/15/2008 18:00, Lennart Augustsson wrote:
That's a truly awesome feature! I'll shorten all my module names to single letters tomorrow.
-- Lennart
On Tue, Dec 16, 2008 at 12:43 AM, Don Stewart
wrote: dons:
Running time as a function of module name length,
http://galois.com/~dons/images/results.png
10 is the magic threshold, where indirections start creeping in.
Codegen cost heuristic fail?
Given this, could you open a bug ticket for it, with all the info we have,
http://hackage.haskell.org/trac/ghc/newticket?type=bug
E.g. the graph, the code, the asm diff.
Cheers, Don _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
_______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

| Subject: Re: length of module name affecting performance?? | | That's a truly awesome feature! I'll shorten all my module names to | single letters tomorrow. Awesome indeed :-). Try shortening all your variable names to single letters to, to see if that helps. Oh, and delete all comments. I recall that you and Thomas followed both these precepts rigorously when writing the LML compiler. I well remember trying to understand the lambda lifter, which was a miracle of compact programming: it did a *lot* in a single page of code, but all function definitions were equally impenetrable f x p l g i n = (g l [p], h i (i+p)) What a great bug -- I would never have predicted it, but in retrospect it makes perfect sense. Record selectors had better get fixed. Simon

Am Montag, 29. Dezember 2008 12:54 schrieb Simon Peyton-Jones:
What a great bug -- I would never have predicted it, but in retrospect it makes perfect sense. Record selectors had better get fixed.
Can I read somewhere about what caused this bug? What is its trac URL? Best wishes, Wolfgang

http://hackage.haskell.org/trac/ghc/ticket/2884 On Feb 9, 2009, at 10:53 AM, Wolfgang Jeltsch wrote:
Am Montag, 29. Dezember 2008 12:54 schrieb Simon Peyton-Jones:
What a great bug -- I would never have predicted it, but in retrospect it makes perfect sense. Record selectors had better get fixed.
Can I read somewhere about what caused this bug? What is its trac URL?
Best wishes, Wolfgang _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

On Dec 15, 2008, at 10:43 PM, Don Stewart wrote:
dons:
Running time as a function of module name length,
http://galois.com/~dons/images/results.png
10 is the magic threshold, where indirections start creeping in.
Codegen cost heuristic fail?
Given this, could you open a bug ticket for it, with all the info we have,
http://hackage.haskell.org/trac/ghc/newticket?type=bug
E.g. the graph, the code, the asm diff.
Cheers, Don
done! http://hackage.haskell.org/trac/ghc/ticket/2884 thanks, daniel

Daniel Gorín wrote:
On Dec 15, 2008, at 10:43 PM, Don Stewart wrote:
dons:
Running time as a function of module name length,
http://galois.com/~dons/images/results.png
10 is the magic threshold, where indirections start creeping in.
Codegen cost heuristic fail?
Given this, could you open a bug ticket for it, with all the info we have,
http://hackage.haskell.org/trac/ghc/newticket?type=bug
E.g. the graph, the code, the asm diff.
Cheers, Don
I followed up on the ticket. Basically the problem is to do with inlining of record selectors: when the module name is too long, none of the record selectors get inlined. Cheers, Simon

I suddenly wonder if renaming "Text.ParserCombinators.Parsec.Combinator" would be a performance hack.... -- C
participants (9)
-
Chris Kuklewicz
-
Daniel Gorín
-
Don Stewart
-
Lennart Augustsson
-
Neil Mitchell
-
Sigbjorn Finne
-
Simon Marlow
-
Simon Peyton-Jones
-
Wolfgang Jeltsch