Skip to content

Instantly share code, notes, and snippets.

@ntc2
Last active December 25, 2015 13:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ntc2/6986500 to your computer and use it in GitHub Desktop.
Save ntc2/6986500 to your computer and use it in GitHub Desktop.
GHC optimization confusion. See http://stackoverflow.com/a/19372414/470844.
module Main where
import Unique
main = do
print $ newUnique ()
print $ newUnique ()
all: view-regular view-opt view-opt-no-cse view-opt-no-cse-no-full-laziness
regular: clean-hs
ghc -O0 Main.hs && ./Main
view-regular: clean-hs
ghc-core -- -O0 Main.hs | tee $@.core
opt: clean-hs
ghc -O Main.hs && ./Main
view-opt: clean-hs
ghc-core -- -O Main.hs | tee $@.core
opt-no-cse: clean-hs
ghc -O -fno-cse Main.hs && ./Main
# Important to put the -fno-cse after the -O!
view-opt-no-cse: clean-hs
ghc-core -- -O -fno-cse Main.hs | tee $@.core
opt-no-cse-no-full-laziness: clean-hs
ghc -O -fno-cse -fno-full-laziness Main.hs && ./Main
view-opt-no-cse-no-full-laziness: clean-hs
ghc-core -- -O -fno-cse -fno-full-laziness Main.hs | tee $@.core
clean-hs:
-rm *.hi *o Main
clean: clean-hs
-rm *.core
# I want the color, but it doesn't display correctly in on github.
remove-color:
ls *.core | xargs sed -i -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
module Unique (newUnique) where
import Data.IORef
import System.IO.Unsafe (unsafePerformIO)
-- Type to represent a unique thing.
-- Show is derived just for testing purposes.
newtype Unique = U Integer
deriving Show
{-# NOINLINE counter #-}
counter :: IORef Integer
counter = unsafePerformIO $ newIORef 0
newUnique' :: IO Unique
newUnique' = do { x <- readIORef counter
; writeIORef counter (x+1)
; return $ U x }
{-# NOINLINE newUnique #-}
newUnique :: () -> Unique
newUnique () = unsafePerformIO newUnique'
[1 of 2] Compiling Unique ( Unique.hs, Unique.o )
==================== Tidy Core ====================
Result size of Tidy Core = {terms: 100, types: 93, coercions: 16}
counter_rfj :: IORef Type.Integer
counter_rfj =
unsafeDupablePerformIO
@ (IORef Type.Integer)
((\ (s_as1 :: State# RealWorld) ->
case noDuplicate# s_as1 of s'_as2 { __DEFAULT ->
case newMutVar#
@ Type.Integer
@ RealWorld
(__integer 0)
s'_as2
of _ { (# ipv_auo, ipv1_aup #) ->
(# ipv_auo,
(STRef
@ RealWorld @ Type.Integer ipv1_aup)
`cast` (Sym <(NTCo:IORef)> <Type.Integer>
:: STRef RealWorld Type.Integer
~#
IORef Type.Integer) #)
}
})
`cast` (Sym
<(NTCo:IO <IORef Type.Integer>)>
:: (State# RealWorld
-> (# State# RealWorld,
IORef Type.Integer #))
~#
IO (IORef Type.Integer)))
Unique.$w$cshowsPrec
:: Int# -> Unique.Unique -> ShowS
[GblId,
Arity=2,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [0 0] 251 120}]
Unique.$w$cshowsPrec =
\ (ww_sxN :: Int#) (w_sxP :: Unique.Unique) ->
let {
a_suD [Dmd=Just L] :: [Char]
a_suD = unpackCString# "U " } in
case >=# ww_sxN 11 of _ {
False ->
\ (x_asA :: String) ->
++
@ Char
a_suD
($w$cshowsPrec
11
(w_sxP
`cast` (<Unique.NTCo:Unique>
:: Unique.Unique ~# Type.Integer))
x_asA);
True ->
\ (x_asb :: String) ->
:
@ Char
shows11
(++
@ Char
a_suD
($w$cshowsPrec
11
(w_sxP
`cast` (<Unique.NTCo:Unique>
:: Unique.Unique ~# Type.Integer))
(: @ Char shows10 x_asb)))
}
Unique.$fShowUnique_$cshowsPrec [InlPrag=INLINE[0]]
:: Int -> Unique.Unique -> ShowS
[GblId,
Arity=2,
Unf=Unf{Src=Worker=Unique.$w$cshowsPrec, TopLvl=True, Arity=2,
Value=True, ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_sxL [Occ=Once!] :: Int)
(w1_sxP [Occ=Once] :: Unique.Unique) ->
case w_sxL of _ { I# ww_sxN [Occ=Once] ->
Unique.$w$cshowsPrec ww_sxN w1_sxP
}}]
Unique.$fShowUnique_$cshowsPrec =
\ (w_sxL :: Int) (w1_sxP :: Unique.Unique) ->
case w_sxL of _ { I# ww_sxN ->
Unique.$w$cshowsPrec ww_sxN w1_sxP
}
Unique.$fShowUnique1 :: Unique.Unique -> ShowS
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [0] 30 0}]
Unique.$fShowUnique1 =
\ (w_sxP :: Unique.Unique) -> Unique.$w$cshowsPrec 0 w_sxP
Unique.$fShowUnique_$cshowList :: [Unique.Unique] -> ShowS
[GblId,
Arity=2,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [] 20 60}]
Unique.$fShowUnique_$cshowList =
showList__ @ Unique.Unique Unique.$fShowUnique1
Unique.$fShowUnique_$cshow :: Unique.Unique -> String
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [0] 40 0}]
Unique.$fShowUnique_$cshow =
\ (x_atg :: Unique.Unique) ->
Unique.$w$cshowsPrec 0 x_atg ([] @ Char)
Unique.$fShowUnique [InlPrag=[ALWAYS] CONLIKE]
:: Show Unique.Unique
[GblId[DFunId],
Unf=DFun(arity=0) D:Show [{Unique.$fShowUnique_$cshowsPrec},
{Unique.$fShowUnique_$cshow}, {Unique.$fShowUnique_$cshowList}]]
Unique.$fShowUnique =
D:Show
@ Unique.Unique
Unique.$fShowUnique_$cshowsPrec
Unique.$fShowUnique_$cshow
Unique.$fShowUnique_$cshowList
Unique.newUnique [InlPrag=NOINLINE] :: () -> Unique.Unique
Unique.newUnique =
\ (ds_drR :: ()) ->
case ds_drR of _ { () ->
unsafeDupablePerformIO
@ Unique.Unique
((\ (s_as1 :: State# RealWorld) ->
case noDuplicate# s_as1 of s'_as2 { __DEFAULT ->
case counter_rfj
`cast` (<NTCo:IORef> <Type.Integer>
:: IORef Type.Integer
~#
STRef RealWorld Type.Integer)
of _ { STRef var#_avI ->
case readMutVar#
@ RealWorld @ Type.Integer var#_avI s'_as2
of _ { (# ipv_avz, ipv1_avA #) ->
case writeMutVar#
@ RealWorld
@ Type.Integer
var#_avI
(Type.plusInteger ipv1_avA (__integer 1))
ipv_avz
of s2#_aw2 { __DEFAULT ->
(# s2#_aw2,
ipv1_avA
`cast` (Sym <(Unique.NTCo:Unique)>
:: Type.Integer ~# Unique.Unique) #)
}
}
}
})
`cast` (Sym <(NTCo:IO <Unique.Unique>)>
:: (State# RealWorld
-> (# State# RealWorld, Unique.Unique #))
~#
IO Unique.Unique))
}
==================== Asm code ====================
.data
.align 4
.align 1
.globl __stginit_main:Unique
.type __stginit_main:Unique, @object
__stginit_main:Unique:
.data
.align 4
.align 1
sat_szi_closure:
.long sat_szi_info
.text
.align 4,0x90
.long 0
.long 32
szA_info:
_czS:
addl $8,%edi
cmpl 92(%ebx),%edi
ja _czX
movl $STRef_con_info,-4(%edi)
movl %esi,0(%edi)
leal -3(%edi),%esi
addl $4,%ebp
jmp *0(%ebp)
_czX:
movl $8,116(%ebx)
_czV:
movl $254,32(%ebx)
jmp stg_gc_ut
.size szA_info, .-szA_info
.text
.align 4,0x90
.long 0
.long 32
syy_info:
_cA1:
addl $8,%edi
cmpl 92(%ebx),%edi
ja _cA5
movl $Type.S#_con_info,-4(%edi)
movl $0,0(%edi)
leal -3(%edi),%esi
movl $szA_info,0(%ebp)
jmp stg_newMutVar#
_cA5:
movl $8,116(%ebx)
jmp stg_gc_noregs
.size syy_info, .-syy_info
.text
.align 4,0x90
.long 65539
.long 0
.long 15
sat_szi_info:
_cA9:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cAb
movl $syy_info,-4(%ebp)
addl $-4,%ebp
jmp stg_noDuplicate#
_cAb:
movl $sat_szi_closure,%esi
jmp *-4(%ebx)
.size sat_szi_info, .-sat_szi_info
.section .data
.align 4
.align 1
counter_rfj_srt:
.long sat_szi_closure
.data
.align 4
.align 1
counter_rfj_closure:
.long counter_rfj_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long counter_rfj_srt-(counter_rfj_info)+0
.long 0
.long 65558
counter_rfj_info:
_cAq:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cAs
addl $8,%edi
cmpl 92(%ebx),%edi
ja _cAu
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je _cAv
_cAw:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $sat_szi_closure+1,-12(%ebp)
addl $-12,%ebp
jmp unsafeDupablePerformIO_info
_cAu:
movl $8,116(%ebx)
_cAs:
jmp *-8(%ebx)
_cAv:
jmp *(%esi)
.size counter_rfj_info, .-counter_rfj_info
.section .data
.align 4
.align 1
Unique.$w$cshowsPrec_srt:
.long $w$cshowsPrec_closure
.data
.align 4
.align 1
.globl Unique.$w$cshowsPrec_closure
.type Unique.$w$cshowsPrec_closure, @object
Unique.$w$cshowsPrec_closure:
.long Unique.$w$cshowsPrec_info
.long 0
.section .rodata
.align 4
.align 1
cAY_str:
.byte 85
.byte 32
.byte 0
.text
.align 4,0x90
.long 0
.long 16
a_syJ_info:
_cB2:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cB4
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $cAY_str,-12(%ebp)
addl $-12,%ebp
jmp unpackCString#_info
_cB4:
jmp *-8(%ebx)
.size a_syJ_info, .-a_syJ_info
.text
.align 4,0x90
.long Unique.$w$cshowsPrec_srt-(sat_syQ_info)+0
.long 2
.long 65555
sat_syQ_info:
_cBh:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cBj
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl 12(%esi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $11,-20(%ebp)
addl $-20,%ebp
jmp $w$cshowsPrec_info
_cBj:
jmp *-8(%ebx)
.size sat_syQ_info, .-sat_syQ_info
.text
.align 4,0x90
.long Unique.$w$cshowsPrec_srt-(sat_sAE_info)+0
.long 65541
.long 2
.long 65548
sat_sAE_info:
_cBq:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cBs
addl $16,%edi
cmpl 92(%ebx),%edi
ja _cBu
movl $sat_syQ_info,-12(%edi)
movl 7(%esi),%eax
movl %eax,-4(%edi)
movl 0(%ebp),%eax
movl %eax,0(%edi)
leal -12(%edi),%eax
movl %eax,0(%ebp)
movl 3(%esi),%eax
movl %eax,-4(%ebp)
addl $-4,%ebp
jmp ++_info
_cBu:
movl $16,116(%ebx)
_cBs:
jmp *-4(%ebx)
.size sat_sAE_info, .-sat_sAE_info
.text
.align 4,0x90
.long Unique.$w$cshowsPrec_srt-(sat_syX_info)+0
.long 2
.long 65555
sat_syX_info:
_cBM:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cBO
addl $12,%edi
cmpl 92(%ebx),%edi
ja _cBQ
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $:_con_info,-8(%edi)
movl $shows10_closure,-4(%edi)
movl 12(%esi),%eax
movl %eax,0(%edi)
leal -6(%edi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $11,-20(%ebp)
addl $-20,%ebp
jmp $w$cshowsPrec_info
_cBQ:
movl $12,116(%ebx)
_cBO:
jmp *-8(%ebx)
.size sat_syX_info, .-sat_syX_info
.text
.align 4,0x90
.long Unique.$w$cshowsPrec_srt-(sat_syZ_info)+0
.long 3
.long 65552
sat_syZ_info:
_cBZ:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cC1
addl $16,%edi
cmpl 92(%ebx),%edi
ja _cC3
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $sat_syX_info,-12(%edi)
movl 12(%esi),%eax
movl %eax,-4(%edi)
movl 16(%esi),%eax
movl %eax,0(%edi)
leal -12(%edi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
addl $-16,%ebp
jmp ++_info
_cC3:
movl $16,116(%ebx)
_cC1:
jmp *-8(%ebx)
.size sat_syZ_info, .-sat_syZ_info
.text
.align 4,0x90
.long Unique.$w$cshowsPrec_srt-(sat_sAF_info)+0
.long 65541
.long 2
.long 65548
sat_sAF_info:
_cCc:
addl $32,%edi
cmpl 92(%ebx),%edi
ja _cCg
movl $sat_syZ_info,-28(%edi)
movl 3(%esi),%eax
movl %eax,-20(%edi)
movl 7(%esi),%eax
movl %eax,-16(%edi)
movl 0(%ebp),%eax
movl %eax,-12(%edi)
movl $:_con_info,-8(%edi)
movl $shows11_closure,-4(%edi)
leal -28(%edi),%eax
movl %eax,0(%edi)
leal -6(%edi),%esi
addl $4,%ebp
jmp *0(%ebp)
_cCg:
movl $32,116(%ebx)
_cCe:
jmp *-4(%ebx)
.size sat_sAF_info, .-sat_sAF_info
.text
.align 4,0x90
.long Unique.$w$cshowsPrec_srt-(Unique.$w$cshowsPrec_info)+0
.long 131082
.long 0
.long 65551
.globl Unique.$w$cshowsPrec_info
.type Unique.$w$cshowsPrec_info, @object
Unique.$w$cshowsPrec_info:
_cCo:
addl $20,%edi
cmpl 92(%ebx),%edi
ja _cCs
movl $a_syJ_info,-16(%edi)
cmpl $11,0(%ebp)
jge _cCu
movl $sat_sAE_info,-8(%edi)
leal -16(%edi),%eax
movl %eax,-4(%edi)
movl 4(%ebp),%eax
movl %eax,0(%edi)
leal -7(%edi),%esi
addl $8,%ebp
jmp *0(%ebp)
_cCs:
movl $20,116(%ebx)
_cCq:
movl $Unique.$w$cshowsPrec_closure,%esi
jmp *-4(%ebx)
_cCu:
movl $sat_sAF_info,-8(%edi)
leal -16(%edi),%eax
movl %eax,-4(%edi)
movl 4(%ebp),%eax
movl %eax,0(%edi)
leal -7(%edi),%esi
addl $8,%ebp
jmp *0(%ebp)
.size Unique.$w$cshowsPrec_info, .-Unique.$w$cshowsPrec_info
.section .data
.align 4
.align 1
Unique.$fShowUnique_$cshowsPrec_srt:
.long $w$cshowsPrec_closure
.data
.align 4
.align 1
.globl Unique.$fShowUnique_$cshowsPrec_closure
.type Unique.$fShowUnique_$cshowsPrec_closure, @object
Unique.$fShowUnique_$cshowsPrec_closure:
.long Unique.$fShowUnique_$cshowsPrec_info
.long 0
.text
.align 4,0x90
.long Unique.$fShowUnique_$cshowsPrec_srt-(sCB_info)+0
.long 1
.long 65568
sCB_info:
_cCP:
movl 3(%esi),%eax
movl %eax,0(%ebp)
jmp Unique.$w$cshowsPrec_info
.size sCB_info, .-sCB_info
.text
.align 4,0x90
.long Unique.$fShowUnique_$cshowsPrec_srt-(Unique.$fShowUnique_$cshowsPrec_info)+0
.long 131084
.long 0
.long 65551
.globl Unique.$fShowUnique_$cshowsPrec_info
.type Unique.$fShowUnique_$cshowsPrec_info, @object
Unique.$fShowUnique_$cshowsPrec_info:
_cCU:
movl 0(%ebp),%esi
movl $sCB_info,0(%ebp)
testl $3,%esi
jne sCB_info
jmp *(%esi)
.size Unique.$fShowUnique_$cshowsPrec_info, .-Unique.$fShowUnique_$cshowsPrec_info
.section .data
.align 4
.align 1
Unique.$fShowUnique1_srt:
.long $w$cshowsPrec_closure
.data
.align 4
.align 1
.globl Unique.$fShowUnique1_closure
.type Unique.$fShowUnique1_closure, @object
Unique.$fShowUnique1_closure:
.long Unique.$fShowUnique1_info
.long 0
.text
.align 4,0x90
.long Unique.$fShowUnique1_srt-(Unique.$fShowUnique1_info)+0
.long 65541
.long 0
.long 65551
.globl Unique.$fShowUnique1_info
.type Unique.$fShowUnique1_info, @object
Unique.$fShowUnique1_info:
_cD7:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cDa
movl $0,-4(%ebp)
addl $-4,%ebp
jmp Unique.$w$cshowsPrec_info
_cDa:
movl $Unique.$fShowUnique1_closure,%esi
jmp *-4(%ebx)
.size Unique.$fShowUnique1_info, .-Unique.$fShowUnique1_info
.section .data
.align 4
.align 1
Unique.$fShowUnique_$cshowList_srt:
.long $w$cshowsPrec_closure
.data
.align 4
.align 1
.globl Unique.$fShowUnique_$cshowList_closure
.type Unique.$fShowUnique_$cshowList_closure, @object
Unique.$fShowUnique_$cshowList_closure:
.long Unique.$fShowUnique_$cshowList_info
.long 0
.text
.align 4,0x90
.long Unique.$fShowUnique_$cshowList_srt-(Unique.$fShowUnique_$cshowList_info)+0
.long 131084
.long 0
.long 65551
.globl Unique.$fShowUnique_$cshowList_info
.type Unique.$fShowUnique_$cshowList_info, @object
Unique.$fShowUnique_$cshowList_info:
_cDl:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cDo
movl $Unique.$fShowUnique1_closure+1,-4(%ebp)
addl $-4,%ebp
jmp showList___info
_cDo:
movl $Unique.$fShowUnique_$cshowList_closure,%esi
jmp *-4(%ebx)
.size Unique.$fShowUnique_$cshowList_info, .-Unique.$fShowUnique_$cshowList_info
.section .data
.align 4
.align 1
Unique.$fShowUnique_$cshow_srt:
.long $w$cshowsPrec_closure
.data
.align 4
.align 1
.globl Unique.$fShowUnique_$cshow_closure
.type Unique.$fShowUnique_$cshow_closure, @object
Unique.$fShowUnique_$cshow_closure:
.long Unique.$fShowUnique_$cshow_info
.long 0
.text
.align 4,0x90
.long Unique.$fShowUnique_$cshow_srt-(Unique.$fShowUnique_$cshow_info)+0
.long 65541
.long 0
.long 65551
.globl Unique.$fShowUnique_$cshow_info
.type Unique.$fShowUnique_$cshow_info, @object
Unique.$fShowUnique_$cshow_info:
_cDz:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cDC
movl $stg_ap_p_info,-4(%ebp)
movl 0(%ebp),%eax
movl %eax,-8(%ebp)
movl $[]_closure+1,0(%ebp)
movl $0,-12(%ebp)
addl $-12,%ebp
jmp Unique.$w$cshowsPrec_info
_cDC:
movl $Unique.$fShowUnique_$cshow_closure,%esi
jmp *-4(%ebx)
.size Unique.$fShowUnique_$cshow_info, .-Unique.$fShowUnique_$cshow_info
.data
.align 4
.align 1
.globl Unique.$fShowUnique_closure
.type Unique.$fShowUnique_closure, @object
Unique.$fShowUnique_closure:
.long D:Show_static_info
.long Unique.$fShowUnique_$cshowsPrec_closure+2
.long Unique.$fShowUnique_$cshow_closure+1
.long Unique.$fShowUnique_$cshowList_closure+2
.long 0
.section .data
.align 4
.align 1
Unique.newUnique_srt:
.long counter_rfj_closure
.data
.align 4
.align 1
.globl Unique.newUnique_closure
.type Unique.newUnique_closure, @object
Unique.newUnique_closure:
.long Unique.newUnique_info
.long 0
.text
.align 4,0x90
.long 1
.long 17
sat_sDJ_info:
_cEu:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cEw
addl $8,%edi
cmpl 92(%ebx),%edi
ja _cEy
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $Type.S#_con_info,-4(%edi)
movl $1,0(%edi)
leal -3(%edi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
addl $-16,%ebp
jmp Type.plusInteger_info
_cEy:
movl $8,116(%ebx)
_cEw:
jmp *-8(%ebx)
.size sat_sDJ_info, .-sat_sDJ_info
.text
.align 4,0x90
.long 0
.long 32
sDM_info:
_cEF:
addl $12,%edi
cmpl 92(%ebx),%edi
ja _cEJ
movl 3(%esi),%eax
movl 4(%eax),%eax
movl $sat_sDJ_info,-8(%edi)
movl %eax,0(%edi)
leal -8(%edi),%ecx
movl 3(%esi),%edx
movl %ecx,4(%edx)
movl %ebx,%ecx
movl 3(%esi),%edx
subl $4,%esp
pushl %edx
pushl %ecx
movl %eax,76(%esp)
call dirty_MUT_VAR
addl $12,%esp
movl 64(%esp),%eax
movl %eax,%esi
addl $4,%ebp
jmp *0(%ebp)
_cEJ:
movl $12,116(%ebx)
_cEH:
jmp *-8(%ebx)
.size sDM_info, .-sDM_info
.text
.align 4,0x90
.long Unique.newUnique_srt-(szm_info)+0
.long 0
.long 65568
szm_info:
_cEU:
movl $counter_rfj_closure,%esi
movl $sDM_info,0(%ebp)
testl $3,%esi
jne sDM_info
jmp *(%esi)
.size szm_info, .-szm_info
.text
.align 4,0x90
.long Unique.newUnique_srt-(sat_sDK_info)+0
.long 65539
.long 65536
.long 65547
sat_sDK_info:
_cF1:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb _cF3
movl $szm_info,-4(%ebp)
addl $-4,%ebp
jmp stg_noDuplicate#
_cF3:
jmp *-4(%ebx)
.size sat_sDK_info, .-sat_sDK_info
.text
.align 4,0x90
.long Unique.newUnique_srt-(sDN_info)+0
.long 0
.long 65568
sDN_info:
_cF8:
addl $8,%edi
cmpl 92(%ebx),%edi
ja _cFc
movl $sat_sDK_info,-4(%edi)
leal -3(%edi),%eax
movl %eax,0(%ebp)
jmp unsafeDupablePerformIO_info
_cFc:
movl $8,116(%ebx)
_cFa:
jmp *-8(%ebx)
.size sDN_info, .-sDN_info
.text
.align 4,0x90
.long Unique.newUnique_srt-(Unique.newUnique_info)+0
.long 65541
.long 0
.long 65551
.globl Unique.newUnique_info
.type Unique.newUnique_info, @object
Unique.newUnique_info:
_cFh:
movl 0(%ebp),%esi
movl $sDN_info,0(%ebp)
testl $3,%esi
jne sDN_info
jmp *(%esi)
.size Unique.newUnique_info, .-Unique.newUnique_info
[2 of 2] Compiling Main ( hs, o )
==================== Tidy Core ====================
Result size of Tidy Core = {terms: 32, types: 30, coercions: 9}
main1
:: State# RealWorld
-> (# State# RealWorld, () #)
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [0] 230 0}]
main1 =
\ (eta_B1 :: State# RealWorld) ->
case Handle.Text.hPutStr2
Handle.FD.stdout
(Unique.$w$cshowsPrec
0 (Unique.newUnique ()) ([] @ Char))
True
eta_B1
of _ { (# ipv_avz, _ #) ->
Handle.Text.hPutStr2
Handle.FD.stdout
(Unique.$w$cshowsPrec
0 (Unique.newUnique ()) ([] @ Char))
True
ipv_avz
}
main :: IO ()
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
main =
main1
`cast` (Sym <(NTCo:IO <()>)>
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ())
main2
:: State# RealWorld
-> (# State# RealWorld, () #)
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, WorkFree=True, Expandable=True,
Guidance=IF_ARGS [0] 30 0}]
main2 =
\ (eta_Xb :: State# RealWorld) ->
runMainIO1
@ ()
(main1
`cast` (Sym <(NTCo:IO <()>)>
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ()))
eta_Xb
:main :: IO ()
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
:main =
main2
`cast` (Sym <(NTCo:IO <()>)>
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ())
==================== Asm code ====================
.data
.align 4
.align 1
.globl __stginit_main:Main
.type __stginit_main:Main, @object
__stginit_main:Main:
.globl __stginit_main::Main
.type __stginit_main::Main, @object
__stginit_main::Main:
.section .data
.align 4
.align 1
main1_srt:
.long Unique.$w$cshowsPrec_closure
.long Unique.newUnique_closure
.long Handle.FD.stdout_closure
.long Handle.Text.hPutStr2_closure
.data
.align 4
.align 1
.globl main1_closure
.type main1_closure, @object
main1_closure:
.long main1_info
.long 0
.text
.align 4,0x90
.long main1_srt-(sat_s1X1_info)+4
.long 0
.long 65552
sat_s1X1_info:
_c1Xv:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb _c1Xx
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $()_closure+1,-12(%ebp)
addl $-12,%ebp
jmp Unique.newUnique_info
_c1Xx:
jmp *-8(%ebx)
.size sat_s1X1_info, .-sat_s1X1_info
.text
.align 4,0x90
.long main1_srt-(sat_s1Xe_info)+0
.long 0
.long 196624
sat_s1Xe_info:
_c1XD:
leal -24(%ebp),%eax
cmpl 84(%ebx),%eax
jb _c1XF
addl $8,%edi
cmpl 92(%ebx),%edi
ja _c1XH
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $sat_s1X1_info,-4(%edi)
movl $[]_closure+1,-12(%ebp)
movl $stg_ap_p_info,-16(%ebp)
leal -4(%edi),%eax
movl %eax,-20(%ebp)
movl $0,-24(%ebp)
addl $-24,%ebp
jmp Unique.$w$cshowsPrec_info
_c1XH:
movl $8,116(%ebx)
_c1XF:
jmp *-8(%ebx)
.size sat_s1Xe_info, .-sat_s1Xe_info
.text
.align 4,0x90
.long main1_srt-(sat_s1X8_info)+4
.long 0
.long 65552
sat_s1X8_info:
_c1XV:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb _c1XX
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $()_closure+1,-12(%ebp)
addl $-12,%ebp
jmp Unique.newUnique_info
_c1XX:
jmp *-8(%ebx)
.size sat_s1X8_info, .-sat_s1X8_info
.text
.align 4,0x90
.long main1_srt-(sat_s1Xd_info)+0
.long 0
.long 196624
sat_s1Xd_info:
_c1Y3:
leal -24(%ebp),%eax
cmpl 84(%ebx),%eax
jb _c1Y5
addl $8,%edi
cmpl 92(%ebx),%edi
ja _c1Y7
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $sat_s1X8_info,-4(%edi)
movl $[]_closure+1,-12(%ebp)
movl $stg_ap_p_info,-16(%ebp)
leal -4(%edi),%eax
movl %eax,-20(%ebp)
movl $0,-24(%ebp)
addl $-24,%ebp
jmp Unique.$w$cshowsPrec_info
_c1Y7:
movl $8,116(%ebx)
_c1Y5:
jmp *-8(%ebx)
.size sat_s1Xd_info, .-sat_s1Xd_info
.text
.align 4,0x90
.long main1_srt-(s1Xg_info)+0
.long 0
.long 983072
s1Xg_info:
_c1Yd:
addl $8,%edi
cmpl 92(%ebx),%edi
ja _c1Yh
movl $sat_s1Xd_info,-4(%edi)
movl $True_closure+2,0(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $Handle.FD.stdout_closure,-8(%ebp)
addl $-8,%ebp
jmp Handle.Text.hPutStr2_info
_c1Yh:
movl $8,116(%ebx)
_c1Yf:
movl $254,32(%ebx)
jmp stg_gc_ut
.size s1Xg_info, .-s1Xg_info
.text
.align 4,0x90
.long main1_srt-(main1_info)+0
.long 65539
.long 0
.long 983055
.globl main1_info
.type main1_info, @object
main1_info:
_c1Ym:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb _c1Yo
addl $8,%edi
cmpl 92(%ebx),%edi
ja _c1Yq
movl $sat_s1Xe_info,-4(%edi)
movl $True_closure+2,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-12(%ebp)
movl $Handle.FD.stdout_closure,-16(%ebp)
movl $s1Xg_info,-4(%ebp)
addl $-16,%ebp
jmp Handle.Text.hPutStr2_info
_c1Yq:
movl $8,116(%ebx)
_c1Yo:
movl $main1_closure,%esi
jmp *-4(%ebx)
.size main1_info, .-main1_info
.section .data
.align 4
.align 1
main_srt:
.long main1_closure
.data
.align 4
.align 1
.globl main_closure
.type main_closure, @object
main_closure:
.long main_info
.long 0
.text
.align 4,0x90
.long main_srt-(main_info)+0
.long 65539
.long 0
.long 65551
.globl main_info
.type main_info, @object
main_info:
_c1YC:
jmp main1_info
.size main_info, .-main_info
.section .data
.align 4
.align 1
main2_srt:
.long runMainIO1_closure
.long main1_closure
.data
.align 4
.align 1
.globl main2_closure
.type main2_closure, @object
main2_closure:
.long main2_info
.long 0
.text
.align 4,0x90
.long main2_srt-(main2_info)+0
.long 65539
.long 0
.long 196623
.globl main2_info
.type main2_info, @object
main2_info:
_c1YM:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb _c1YP
movl $main1_closure+1,-4(%ebp)
addl $-4,%ebp
jmp runMainIO1_info
_c1YP:
movl $main2_closure,%esi
jmp *-4(%ebx)
.size main2_info, .-main2_info
.section .data
.align 4
.align 1
:main_srt:
.long main2_closure
.data
.align 4
.align 1
.globl :main_closure
.type :main_closure, @object
:main_closure:
.long :main_info
.long 0
.text
.align 4,0x90
.long :main_srt-(:main_info)+0
.long 65539
.long 0
.long 65551
.globl :main_info
.type :main_info, @object
:main_info:
_c1Z0:
jmp main2_info
.size :main_info, .-:main_info
Linking Main ...
[1 of 2] Compiling Unique ( Unique.hs, Unique.o )
==================== Tidy Core ====================
Result size = 179
lvl_rvf :: Type.Integer
[GblId]
lvl_rvf = __integer 0
lvl1_rvg
:: State# RealWorld
-> (# State# RealWorld,
IORef Type.Integer #)
[GblId, Arity=1]
lvl1_rvg =
\ (s_aqi :: State# RealWorld) ->
case noDuplicate# s_aqi of s'_aqj { __DEFAULT ->
case newMutVar#
@ Type.Integer @ RealWorld lvl_rvf s'_aqj
of _ { (# s2#_asL, var#_asM #) ->
(# s2#_asL,
(STRef
@ RealWorld @ Type.Integer var#_asM)
`cast` (Sym (NTCo:IORef) <Type.Integer>
:: STRef RealWorld Type.Integer
~#
IORef Type.Integer) #)
}
}
counter_rag :: IORef Type.Integer
counter_rag =
unsafeDupablePerformIO
@ (IORef Type.Integer)
(lvl1_rvg
`cast` (Sym
(NTCo:IO <IORef Type.Integer>)
:: (State# RealWorld
-> (# State# RealWorld,
IORef Type.Integer #))
~#
IO (IORef Type.Integer)))
Unique.$fShowUnique1 :: [Char]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 40 0}]
Unique.$fShowUnique1 = unpackCString# "U "
Unique.$w$cshowsPrec
:: Int#
-> Unique.Unique -> String -> [Char]
[GblId,
Arity=3,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=3, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0 0 0] 181 120}]
Unique.$w$cshowsPrec =
\ (ww_suY :: Int#)
(w_sv0 :: Unique.Unique)
(w1_sv1 :: String) ->
case >=# ww_suY 11 of _ {
False ->
++
@ Char
Unique.$fShowUnique1
($w$cshowsPrec
11
(w_sv0
`cast` (Unique.NTCo:Unique
:: Unique.Unique ~# Type.Integer))
w1_sv1);
True ->
:
@ Char
shows2
(++
@ Char
Unique.$fShowUnique1
($w$cshowsPrec
11
(w_sv0
`cast` (Unique.NTCo:Unique
:: Unique.Unique ~# Type.Integer))
(: @ Char shows1 w1_sv1)))
}
Unique.$fShowUnique_$cshowsPrec [InlPrag=INLINE[0]]
:: Int -> Unique.Unique -> ShowS
[GblId,
Arity=3,
Unf=Unf{Src=Worker=Unique.$w$cshowsPrec, TopLvl=True, Arity=3,
Value=True, ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_suW [Occ=Once!] :: Int)
(w1_sv0 [Occ=Once] :: Unique.Unique)
(w2_sv1 [Occ=Once] :: String) ->
case w_suW of _ { I# ww_suY [Occ=Once] ->
Unique.$w$cshowsPrec ww_suY w1_sv0 w2_sv1
}}]
Unique.$fShowUnique_$cshowsPrec =
\ (w_suW :: Int)
(w1_sv0 :: Unique.Unique)
(w2_sv1 :: String) ->
case w_suW of _ { I# ww_suY ->
Unique.$w$cshowsPrec ww_suY w1_sv0 w2_sv1
}
Unique.$fShowUnique_$cshowList :: [Unique.Unique] -> ShowS
[GblId,
Arity=2,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [80 0] 270 120}]
Unique.$fShowUnique_$cshowList =
\ (ds1_ar6 :: [Unique.Unique]) (s_ar7 :: String) ->
case ds1_ar6 of _ {
[] -> unpackAppendCString# "[]" s_ar7;
: x_arc xs_ard ->
:
@ Char
showList__3
(Unique.$w$cshowsPrec
0
x_arc
(let {
lvl22_arf :: [Char]
lvl22_arf =
: @ Char showList__2 s_ar7 } in
letrec {
showl_arg [Occ=LoopBreaker] :: [Unique.Unique] -> [Char]
showl_arg =
\ (ds2_arh :: [Unique.Unique]) ->
case ds2_arh of _ {
[] -> lvl22_arf;
: y_arm ys_arn ->
:
@ Char
showList__1
(Unique.$w$cshowsPrec 0 y_arm (showl_arg ys_arn))
}; } in
showl_arg xs_ard))
}
Unique.$fShowUnique_$cshow :: Unique.Unique -> String
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 40 0}]
Unique.$fShowUnique_$cshow =
\ (x_arx :: Unique.Unique) ->
Unique.$w$cshowsPrec 0 x_arx ([] @ Char)
Unique.$fShowUnique [InlPrag=[ALWAYS] CONLIKE]
:: Show Unique.Unique
[GblId[DFunId],
Unf=DFun(arity=0) D:Show [Unique.$fShowUnique_$cshowsPrec,
Unique.$fShowUnique_$cshow, Unique.$fShowUnique_$cshowList]]
Unique.$fShowUnique =
D:Show
@ Unique.Unique
Unique.$fShowUnique_$cshowsPrec
Unique.$fShowUnique_$cshow
Unique.$fShowUnique_$cshowList
lvl2_rvh :: Type.Integer
[GblId]
lvl2_rvh = __integer 1
lvl3_rvi
:: State# RealWorld
-> (# State# RealWorld, Unique.Unique #)
[GblId, Arity=1]
lvl3_rvi =
\ (s_aqi :: State# RealWorld) ->
case noDuplicate# s_aqi of s'_aqj { __DEFAULT ->
case counter_rag
`cast` (NTCo:IORef <Type.Integer>
:: IORef Type.Integer
~#
STRef RealWorld Type.Integer)
of _ { STRef var#_au4 ->
case readMutVar#
@ RealWorld @ Type.Integer var#_au4 s'_aqj
of _ { (# new_s_atV, a_atW #) ->
case writeMutVar#
@ RealWorld
@ Type.Integer
var#_au4
(Type.plusInteger a_atW lvl2_rvh)
new_s_atV
of s2#_auo { __DEFAULT ->
(# s2#_auo,
a_atW
`cast` (Sym (Unique.NTCo:Unique)
:: Type.Integer ~# Unique.Unique) #)
}
}
}
}
lvl4_rvj :: Unique.Unique
lvl4_rvj =
unsafeDupablePerformIO
@ Unique.Unique
(lvl3_rvi
`cast` (Sym (NTCo:IO <Unique.Unique>)
:: (State# RealWorld
-> (# State# RealWorld, Unique.Unique #))
~#
IO Unique.Unique))
Unique.newUnique [InlPrag=NOINLINE] :: () -> Unique.Unique
Unique.newUnique =
\ (ds_dq8 :: ()) -> case ds_dq8 of _ { () -> lvl4_rvj }
==================== Asm code ====================
.data
.align 4
.align 1
.globl __stginit_Unique
.type __stginit_Unique, @object
__stginit_Unique:
.data
.align 4
.align 1
rvf_closure:
.long integerzmgmp_GHCziIntegerziType_Szh_static_info
.long 0
.section .data
.align 4
.align 1
rvg_srt:
.long rvf_closure
.data
.align 4
.align 1
rvg_closure:
.long rvg_info
.long 0
.text
.align 4,0x90
.long 0
.long 32
swN_info:
.Lcx6:
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lcxb
movl $base_GHCziSTRef_STRef_con_info,-4(%edi)
movl %esi,0(%edi)
leal -3(%edi),%esi
addl $4,%ebp
jmp *0(%ebp)
.Lcxb:
movl $8,116(%ebx)
.Lcx9:
movl $254,32(%ebx)
jmp stg_gc_ut
.size swN_info, .-swN_info
.text
.align 4,0x90
.long rvg_srt-(svn_info)+0
.long 0
.long 65568
svn_info:
.Lcxf:
movl $rvf_closure+1,%esi
movl $swN_info,0(%ebp)
jmp stg_newMutVarzh
.size svn_info, .-svn_info
.text
.align 4,0x90
.long rvg_srt-(rvg_info)+0
.long 65539
.long 0
.long 65551
rvg_info:
.Lcxj:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcxl
movl $svn_info,-4(%ebp)
addl $-4,%ebp
jmp stg_noDuplicatezh
.Lcxl:
movl $rvg_closure,%esi
jmp *-4(%ebx)
.size rvg_info, .-rvg_info
.section .data
.align 4
.align 1
rag_srt:
.long rvf_closure
.data
.align 4
.align 1
rag_closure:
.long rag_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long rag_srt-(rag_info)+0
.long 0
.long 65558
rag_info:
.Lcxz:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcxB
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcxD
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcxE
.LcxF:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $rvg_closure+1,-12(%ebp)
addl $-12,%ebp
jmp base_GHCziIO_unsafeDupablePerformIO_info
.LcxD:
movl $8,116(%ebx)
.LcxB:
jmp *-8(%ebx)
.LcxE:
jmp *(%esi)
.size rag_info, .-rag_info
.data
.align 4
.align 1
.globl Unique_zdfShowUnique1_closure
.type Unique_zdfShowUnique1_closure, @object
Unique_zdfShowUnique1_closure:
.long Unique_zdfShowUnique1_info
.long 0
.long 0
.long 0
.section .rodata
.align 4
.align 1
cxV_str:
.byte 85
.byte 32
.byte 0
.text
.align 4,0x90
.long 0
.long 22
.globl Unique_zdfShowUnique1_info
.type Unique_zdfShowUnique1_info, @object
Unique_zdfShowUnique1_info:
.LcxZ:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcy1
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lcy3
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lcy4
.Lcy5:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $cxV_str,-12(%ebp)
addl $-12,%ebp
jmp ghczmprim_GHCziCString_unpackCStringzh_info
.Lcy3:
movl $8,116(%ebx)
.Lcy1:
jmp *-8(%ebx)
.Lcy4:
jmp *(%esi)
.size Unique_zdfShowUnique1_info, .-Unique_zdfShowUnique1_info
.section .data
.align 4
.align 1
Unique_zdwzdcshowsPrec_srt:
.long base_GHCziShow_zdwzdcshowsPrec_closure
.long Unique_zdfShowUnique1_closure
.data
.align 4
.align 1
.globl Unique_zdwzdcshowsPrec_closure
.type Unique_zdwzdcshowsPrec_closure, @object
Unique_zdwzdcshowsPrec_closure:
.long Unique_zdwzdcshowsPrec_info
.long 0
.text
.align 4,0x90
.long Unique_zdwzdcshowsPrec_srt-(swE_info)+0
.long 2
.long 65555
swE_info:
.Lcyq:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcys
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl 12(%esi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $11,-20(%ebp)
addl $-20,%ebp
jmp base_GHCziShow_zdwzdcshowsPrec_info
.Lcys:
jmp *-8(%ebx)
.size swE_info, .-swE_info
.text
.align 4,0x90
.long Unique_zdwzdcshowsPrec_srt-(svF_info)+0
.long 2
.long 65555
svF_info:
.LcyF:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcyH
addl $12,%edi
cmpl 92(%ebx),%edi
ja .LcyJ
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZC_con_info,-8(%edi)
movl $base_GHCziShow_shows1_closure,-4(%edi)
movl 12(%esi),%eax
movl %eax,0(%edi)
leal -6(%edi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $11,-20(%ebp)
addl $-20,%ebp
jmp base_GHCziShow_zdwzdcshowsPrec_info
.LcyJ:
movl $12,116(%ebx)
.LcyH:
jmp *-8(%ebx)
.size svF_info, .-svF_info
.text
.align 4,0x90
.long Unique_zdwzdcshowsPrec_srt-(swL_info)+0
.long 2
.long 196627
swL_info:
.LcyS:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcyU
addl $16,%edi
cmpl 92(%ebx),%edi
ja .LcyW
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $svF_info,-12(%edi)
movl 8(%esi),%eax
movl %eax,-4(%edi)
movl 12(%esi),%eax
movl %eax,0(%edi)
leal -12(%edi),%eax
movl %eax,-12(%ebp)
movl $Unique_zdfShowUnique1_closure,-16(%ebp)
addl $-16,%ebp
jmp base_GHCziBase_zpzp_info
.LcyW:
movl $16,116(%ebx)
.LcyU:
jmp *-8(%ebx)
.size swL_info, .-swL_info
.text
.align 4,0x90
.long Unique_zdwzdcshowsPrec_srt-(Unique_zdwzdcshowsPrec_info)+0
.long 196624
.long 0
.long 196623
.globl Unique_zdwzdcshowsPrec_info
.type Unique_zdwzdcshowsPrec_info, @object
Unique_zdwzdcshowsPrec_info:
.Lcz4:
addl $28,%edi
cmpl 92(%ebx),%edi
ja .Lcz8
cmpl $11,0(%ebp)
jge .Lcza
movl $swE_info,-24(%edi)
movl 4(%ebp),%eax
movl %eax,-16(%edi)
movl 8(%ebp),%eax
movl %eax,-12(%edi)
leal -24(%edi),%eax
movl %eax,8(%ebp)
movl $Unique_zdfShowUnique1_closure,4(%ebp)
addl $4,%ebp
addl $-12,%edi
jmp base_GHCziBase_zpzp_info
.Lcz8:
movl $28,116(%ebx)
.Lcz6:
movl $Unique_zdwzdcshowsPrec_closure,%esi
jmp *-4(%ebx)
.Lcza:
movl $swL_info,-24(%edi)
movl 4(%ebp),%eax
movl %eax,-16(%edi)
movl 8(%ebp),%eax
movl %eax,-12(%edi)
movl $ghczmprim_GHCziTypes_ZC_con_info,-8(%edi)
movl $base_GHCziShow_shows2_closure,-4(%edi)
leal -24(%edi),%eax
movl %eax,0(%edi)
leal -6(%edi),%esi
addl $12,%ebp
jmp *0(%ebp)
.size Unique_zdwzdcshowsPrec_info, .-Unique_zdwzdcshowsPrec_info
.section .data
.align 4
.align 1
Unique_zdfShowUniquezuzdcshowsPrec_srt:
.long Unique_zdwzdcshowsPrec_closure
.data
.align 4
.align 1
.globl Unique_zdfShowUniquezuzdcshowsPrec_closure
.type Unique_zdfShowUniquezuzdcshowsPrec_closure, @object
Unique_zdfShowUniquezuzdcshowsPrec_closure:
.long Unique_zdfShowUniquezuzdcshowsPrec_info
.long 0
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowsPrec_srt-(swJ_info)+0
.long 2
.long 65568
swJ_info:
.Lczt:
movl 3(%esi),%eax
movl %eax,0(%ebp)
jmp Unique_zdwzdcshowsPrec_info
.size swJ_info, .-swJ_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowsPrec_srt-(Unique_zdfShowUniquezuzdcshowsPrec_info)+0
.long 196628
.long 0
.long 65551
.globl Unique_zdfShowUniquezuzdcshowsPrec_info
.type Unique_zdfShowUniquezuzdcshowsPrec_info, @object
Unique_zdfShowUniquezuzdcshowsPrec_info:
.Lczy:
movl 0(%ebp),%esi
movl $swJ_info,0(%ebp)
testl $3,%esi
jne swJ_info
jmp *(%esi)
.size Unique_zdfShowUniquezuzdcshowsPrec_info, .-Unique_zdfShowUniquezuzdcshowsPrec_info
.section .data
.align 4
.align 1
Unique_zdfShowUniquezuzdcshowList_srt:
.long Unique_zdwzdcshowsPrec_closure
.data
.align 4
.align 1
.globl Unique_zdfShowUniquezuzdcshowList_closure
.type Unique_zdfShowUniquezuzdcshowList_closure, @object
Unique_zdfShowUniquezuzdcshowList_closure:
.long Unique_zdfShowUniquezuzdcshowList_info
.long 0
.section .rodata
.align 4
.align 1
czP_str:
.byte 91
.byte 93
.byte 0
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swG_info)+0
.long 3
.long 65552
swG_info:
.LcA9:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAb
addl $16,%edi
cmpl 92(%ebx),%edi
ja .LcAd
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $stg_ap_2_upd_info,-12(%edi)
movl 16(%esi),%eax
movl %eax,-4(%edi)
movl 12(%esi),%eax
movl %eax,0(%edi)
leal -12(%edi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $0,-20(%ebp)
addl $-20,%ebp
jmp Unique_zdwzdcshowsPrec_info
.LcAd:
movl $16,116(%ebx)
.LcAb:
jmp *-8(%ebx)
.size swG_info, .-swG_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swI_info)+0
.long 2
.long 65568
swI_info:
.LcAo:
movl %esi,%eax
andl $3,%eax
cmpl $2,%eax
jae .LcAp
movl 8(%ebp),%esi
addl $12,%ebp
jmp *0(%ebp)
.LcAp:
addl $32,%edi
cmpl 92(%ebx),%edi
ja .LcAt
movl $swG_info,-28(%edi)
movl 2(%esi),%eax
movl %eax,-20(%edi)
movl 6(%esi),%eax
movl %eax,-16(%edi)
movl 4(%ebp),%eax
movl %eax,-12(%edi)
movl $ghczmprim_GHCziTypes_ZC_con_info,-8(%edi)
movl $base_GHCziShow_showListzuzu1_closure,-4(%edi)
leal -28(%edi),%eax
movl %eax,0(%edi)
leal -6(%edi),%esi
addl $12,%ebp
jmp *0(%ebp)
.LcAt:
movl $32,116(%ebx)
.LcAr:
jmp *-8(%ebx)
.size swI_info, .-swI_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(sw8_info)+0
.long 65541
.long 1
.long 65546
sw8_info:
.LcAE:
leal -8(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAG
movl %esi,-4(%ebp)
movl 0(%ebp),%eax
movl 3(%esi),%ecx
movl %ecx,0(%ebp)
movl %eax,%esi
movl $swI_info,-8(%ebp)
addl $-8,%ebp
testl $3,%esi
jne swI_info
jmp *(%esi)
.LcAG:
jmp *-4(%ebx)
.size sw8_info, .-sw8_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swe_info)+0
.long 2
.long 65555
swe_info:
.LcAS:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAU
addl $20,%edi
cmpl 92(%ebx),%edi
ja .LcAW
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZC_con_info,-16(%edi)
movl $base_GHCziShow_showListzuzu2_closure,-12(%edi)
movl 8(%esi),%eax
movl %eax,-8(%edi)
movl $sw8_info,-4(%edi)
leal -14(%edi),%eax
movl %eax,0(%edi)
movl 12(%esi),%eax
movl %eax,-12(%ebp)
leal -3(%edi),%esi
addl $-12,%ebp
jmp sw8_info
.LcAW:
movl $20,116(%ebx)
.LcAU:
jmp *-8(%ebx)
.size swe_info, .-swe_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swH_info)+0
.long 3
.long 65552
swH_info:
.LcB5:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcB7
addl $16,%edi
cmpl 92(%ebx),%edi
ja .LcB9
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $swe_info,-12(%edi)
movl 8(%esi),%eax
movl %eax,-4(%edi)
movl 16(%esi),%eax
movl %eax,0(%edi)
leal -12(%edi),%eax
movl %eax,-12(%ebp)
movl 12(%esi),%eax
movl %eax,-16(%ebp)
movl $0,-20(%ebp)
addl $-20,%ebp
jmp Unique_zdwzdcshowsPrec_info
.LcB9:
movl $16,116(%ebx)
.LcB7:
jmp *-8(%ebx)
.size swH_info, .-swH_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swF_info)+0
.long 1
.long 65568
swF_info:
.LcBk:
movl %esi,%eax
andl $3,%eax
cmpl $2,%eax
jae .LcBl
movl $czP_str,0(%ebp)
jmp ghczmprim_GHCziCString_unpackAppendCStringzh_info
.LcBl:
addl $32,%edi
cmpl 92(%ebx),%edi
ja .LcBp
movl $swH_info,-28(%edi)
movl 4(%ebp),%eax
movl %eax,-20(%edi)
movl 2(%esi),%eax
movl %eax,-16(%edi)
movl 6(%esi),%eax
movl %eax,-12(%edi)
movl $ghczmprim_GHCziTypes_ZC_con_info,-8(%edi)
movl $base_GHCziShow_showListzuzu3_closure,-4(%edi)
leal -28(%edi),%eax
movl %eax,0(%edi)
leal -6(%edi),%esi
addl $8,%ebp
jmp *0(%ebp)
.LcBp:
movl $32,116(%ebx)
.LcBn:
jmp *-8(%ebx)
.size swF_info, .-swF_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(Unique_zdfShowUniquezuzdcshowList_info)+0
.long 131084
.long 0
.long 65551
.globl Unique_zdfShowUniquezuzdcshowList_info
.type Unique_zdfShowUniquezuzdcshowList_info, @object
Unique_zdfShowUniquezuzdcshowList_info:
.LcBA:
movl 0(%ebp),%esi
movl $swF_info,0(%ebp)
testl $3,%esi
jne swF_info
jmp *(%esi)
.size Unique_zdfShowUniquezuzdcshowList_info, .-Unique_zdfShowUniquezuzdcshowList_info
.section .data
.align 4
.align 1
Unique_zdfShowUniquezuzdcshow_srt:
.long Unique_zdwzdcshowsPrec_closure
.data
.align 4
.align 1
.globl Unique_zdfShowUniquezuzdcshow_closure
.type Unique_zdfShowUniquezuzdcshow_closure, @object
Unique_zdfShowUniquezuzdcshow_closure:
.long Unique_zdfShowUniquezuzdcshow_info
.long 0
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshow_srt-(Unique_zdfShowUniquezuzdcshow_info)+0
.long 65541
.long 0
.long 65551
.globl Unique_zdfShowUniquezuzdcshow_info
.type Unique_zdfShowUniquezuzdcshow_info, @object
Unique_zdfShowUniquezuzdcshow_info:
.LcBM:
leal -8(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcBP
movl 0(%ebp),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZMZN_closure+1,0(%ebp)
movl $0,-8(%ebp)
addl $-8,%ebp
jmp Unique_zdwzdcshowsPrec_info
.LcBP:
movl $Unique_zdfShowUniquezuzdcshow_closure,%esi
jmp *-4(%ebx)
.size Unique_zdfShowUniquezuzdcshow_info, .-Unique_zdfShowUniquezuzdcshow_info
.data
.align 4
.align 1
.globl Unique_zdfShowUnique_closure
.type Unique_zdfShowUnique_closure, @object
Unique_zdfShowUnique_closure:
.long base_GHCziShow_DZCShow_static_info
.long Unique_zdfShowUniquezuzdcshowsPrec_closure+3
.long Unique_zdfShowUniquezuzdcshow_closure+1
.long Unique_zdfShowUniquezuzdcshowList_closure+2
.long 0
.data
.align 4
.align 1
rvh_closure:
.long integerzmgmp_GHCziIntegerziType_Szh_static_info
.long 1
.section .data
.align 4
.align 1
rvi_srt:
.long rag_closure
.long rvh_closure
.data
.align 4
.align 1
rvi_closure:
.long rvi_info
.long 0
.text
.align 4,0x90
.long rvi_srt-(swB_info)+4
.long 1
.long 65553
swB_info:
.LcCh:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcCj
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $rvh_closure+1,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
addl $-16,%ebp
jmp integerzmgmp_GHCziIntegerziType_plusInteger_info
.LcCj:
jmp *-8(%ebx)
.size swB_info, .-swB_info
.text
.align 4,0x90
.long rvi_srt-(swD_info)+4
.long 0
.long 65568
swD_info:
.LcCp:
addl $12,%edi
cmpl 92(%ebx),%edi
ja .LcCt
movl 3(%esi),%eax
movl 4(%eax),%eax
movl $swB_info,-8(%edi)
movl %eax,0(%edi)
leal -8(%edi),%ecx
movl 3(%esi),%edx
movl %ecx,4(%edx)
movl %ebx,%ecx
movl 3(%esi),%edx
subl $4,%esp
pushl %edx
pushl %ecx
movl %eax,76(%esp)
call dirty_MUT_VAR
addl $12,%esp
movl 64(%esp),%eax
movl %eax,%esi
addl $4,%ebp
jmp *0(%ebp)
.LcCt:
movl $12,116(%ebx)
.LcCr:
jmp *-8(%ebx)
.size swD_info, .-swD_info
.text
.align 4,0x90
.long rvi_srt-(swo_info)+0
.long 0
.long 196640
swo_info:
.LcCE:
movl $rag_closure,%esi
movl $swD_info,0(%ebp)
testl $3,%esi
jne swD_info
jmp *(%esi)
.size swo_info, .-swo_info
.text
.align 4,0x90
.long rvi_srt-(rvi_info)+0
.long 65539
.long 0
.long 196623
rvi_info:
.LcCL:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcCN
movl $swo_info,-4(%ebp)
addl $-4,%ebp
jmp stg_noDuplicatezh
.LcCN:
movl $rvi_closure,%esi
jmp *-4(%ebx)
.size rvi_info, .-rvi_info
.section .data
.align 4
.align 1
rvj_srt:
.long rvi_closure
.data
.align 4
.align 1
rvj_closure:
.long rvj_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long rvj_srt-(rvj_info)+0
.long 0
.long 65558
rvj_info:
.LcD1:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcD3
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcD5
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcD6
.LcD7:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $rvi_closure+1,-12(%ebp)
addl $-12,%ebp
jmp base_GHCziIO_unsafeDupablePerformIO_info
.LcD5:
movl $8,116(%ebx)
.LcD3:
jmp *-8(%ebx)
.LcD6:
jmp *(%esi)
.size rvj_info, .-rvj_info
.section .data
.align 4
.align 1
Unique_newUnique_srt:
.long rvj_closure
.data
.align 4
.align 1
.globl Unique_newUnique_closure
.type Unique_newUnique_closure, @object
Unique_newUnique_closure:
.long Unique_newUnique_info
.long 0
.text
.align 4,0x90
.long Unique_newUnique_srt-(swA_info)+0
.long 0
.long 65568
swA_info:
.LcDo:
movl $rvj_closure,%esi
addl $4,%ebp
andl $-4,%esi
jmp *(%esi)
.size swA_info, .-swA_info
.text
.align 4,0x90
.long Unique_newUnique_srt-(Unique_newUnique_info)+0
.long 65541
.long 0
.long 65551
.globl Unique_newUnique_info
.type Unique_newUnique_info, @object
Unique_newUnique_info:
.LcDt:
movl 0(%ebp),%esi
movl $swA_info,0(%ebp)
testl $3,%esi
jne swA_info
jmp *(%esi)
.size Unique_newUnique_info, .-Unique_newUnique_info
[2 of 2] Compiling Main ( hs, o )
==================== Tidy Core ====================
Result size = 47
main3 :: Unique.Unique
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 20 0}]
main3 = Unique.newUnique ()
main2 :: [Char]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 40 0}]
main2 =
Unique.$w$cshowsPrec 0 main3 ([] @ Char)
main5 :: Unique.Unique
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 20 0}]
main5 = Unique.newUnique ()
main4 :: [Char]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 40 0}]
main4 =
Unique.$w$cshowsPrec 0 main5 ([] @ Char)
main1
:: State# RealWorld
-> (# State# RealWorld, () #)
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 110 0}]
main1 =
\ (eta_B1 :: State# RealWorld) ->
case Handle.Text.hPutStr2
Handle.FD.stdout main4 True eta_B1
of _ { (# new_s_atV, _ #) ->
Handle.Text.hPutStr2
Handle.FD.stdout main2 True new_s_atV
}
main :: IO ()
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
main =
main1
`cast` (Sym (NTCo:IO <()>)
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ())
main6
:: State# RealWorld
-> (# State# RealWorld, () #)
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 30 0}]
main6 =
\ (eta_Xb :: State# RealWorld) ->
runMainIO1
@ ()
(main1
`cast` (Sym (NTCo:IO <()>)
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ()))
eta_Xb
:main :: IO ()
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
:main =
main6
`cast` (Sym (NTCo:IO <()>)
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ())
==================== Asm code ====================
.data
.align 4
.align 1
.globl __stginit_Main
.type __stginit_Main, @object
__stginit_Main:
.globl __stginit_ZCMain
.type __stginit_ZCMain, @object
__stginit_ZCMain:
.section .data
.align 4
.align 1
Main_main3_srt:
.long Unique_newUnique_closure
.data
.align 4
.align 1
.globl Main_main3_closure
.type Main_main3_closure, @object
Main_main3_closure:
.long Main_main3_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long Main_main3_srt-(Main_main3_info)+0
.long 0
.long 65558
.globl Main_main3_info
.type Main_main3_info, @object
Main_main3_info:
.Lc1Ye:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1Yg
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lc1Yi
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lc1Yj
.Lc1Yk:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTuple_Z0T_closure+1,-12(%ebp)
addl $-12,%ebp
jmp Unique_newUnique_info
.Lc1Yi:
movl $8,116(%ebx)
.Lc1Yg:
jmp *-8(%ebx)
.Lc1Yj:
jmp *(%esi)
.size Main_main3_info, .-Main_main3_info
.section .data
.align 4
.align 1
Main_main2_srt:
.long Unique_zdwzdcshowsPrec_closure
.long Main_main3_closure
.data
.align 4
.align 1
.globl Main_main2_closure
.type Main_main2_closure, @object
Main_main2_closure:
.long Main_main2_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long Main_main2_srt-(Main_main2_info)+0
.long 0
.long 196630
.globl Main_main2_info
.type Main_main2_info, @object
Main_main2_info:
.Lc1YC:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1YE
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lc1YG
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lc1YH
.Lc1YI:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZMZN_closure+1,-12(%ebp)
movl $Main_main3_closure,-16(%ebp)
movl $0,-20(%ebp)
addl $-20,%ebp
jmp Unique_zdwzdcshowsPrec_info
.Lc1YG:
movl $8,116(%ebx)
.Lc1YE:
jmp *-8(%ebx)
.Lc1YH:
jmp *(%esi)
.size Main_main2_info, .-Main_main2_info
.section .data
.align 4
.align 1
Main_main5_srt:
.long Unique_newUnique_closure
.data
.align 4
.align 1
.globl Main_main5_closure
.type Main_main5_closure, @object
Main_main5_closure:
.long Main_main5_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long Main_main5_srt-(Main_main5_info)+0
.long 0
.long 65558
.globl Main_main5_info
.type Main_main5_info, @object
Main_main5_info:
.Lc1Z0:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1Z2
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lc1Z4
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lc1Z5
.Lc1Z6:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTuple_Z0T_closure+1,-12(%ebp)
addl $-12,%ebp
jmp Unique_newUnique_info
.Lc1Z4:
movl $8,116(%ebx)
.Lc1Z2:
jmp *-8(%ebx)
.Lc1Z5:
jmp *(%esi)
.size Main_main5_info, .-Main_main5_info
.section .data
.align 4
.align 1
Main_main4_srt:
.long Unique_zdwzdcshowsPrec_closure
.long Main_main5_closure
.data
.align 4
.align 1
.globl Main_main4_closure
.type Main_main4_closure, @object
Main_main4_closure:
.long Main_main4_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long Main_main4_srt-(Main_main4_info)+0
.long 0
.long 196630
.globl Main_main4_info
.type Main_main4_info, @object
Main_main4_info:
.Lc1Zo:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1Zq
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lc1Zs
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lc1Zt
.Lc1Zu:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZMZN_closure+1,-12(%ebp)
movl $Main_main5_closure,-16(%ebp)
movl $0,-20(%ebp)
addl $-20,%ebp
jmp Unique_zdwzdcshowsPrec_info
.Lc1Zs:
movl $8,116(%ebx)
.Lc1Zq:
jmp *-8(%ebx)
.Lc1Zt:
jmp *(%esi)
.size Main_main4_info, .-Main_main4_info
.section .data
.align 4
.align 1
Main_main1_srt:
.long Main_main2_closure
.long Main_main4_closure
.long base_GHCziIOziHandleziFD_stdout_closure
.long base_GHCziIOziHandleziText_hPutStr2_closure
.data
.align 4
.align 1
.globl Main_main1_closure
.type Main_main1_closure, @object
Main_main1_closure:
.long Main_main1_info
.long 0
.text
.align 4,0x90
.long Main_main1_srt-(s1XZ_info)+0
.long 0
.long 852000
s1XZ_info:
.Lc1ZL:
movl $ghczmprim_GHCziTypes_True_closure+2,0(%ebp)
movl $Main_main2_closure,-4(%ebp)
movl $base_GHCziIOziHandleziFD_stdout_closure,-8(%ebp)
addl $-8,%ebp
jmp base_GHCziIOziHandleziText_hPutStr2_info
.size s1XZ_info, .-s1XZ_info
.text
.align 4,0x90
.long Main_main1_srt-(Main_main1_info)+0
.long 65539
.long 0
.long 983055
.globl Main_main1_info
.type Main_main1_info, @object
Main_main1_info:
.Lc1ZP:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1ZR
movl $ghczmprim_GHCziTypes_True_closure+2,-8(%ebp)
movl $Main_main4_closure,-12(%ebp)
movl $base_GHCziIOziHandleziFD_stdout_closure,-16(%ebp)
movl $s1XZ_info,-4(%ebp)
addl $-16,%ebp
jmp base_GHCziIOziHandleziText_hPutStr2_info
.Lc1ZR:
movl $Main_main1_closure,%esi
jmp *-4(%ebx)
.size Main_main1_info, .-Main_main1_info
.section .data
.align 4
.align 1
Main_main_srt:
.long Main_main1_closure
.data
.align 4
.align 1
.globl Main_main_closure
.type Main_main_closure, @object
Main_main_closure:
.long Main_main_info
.long 0
.text
.align 4,0x90
.long Main_main_srt-(Main_main_info)+0
.long 65539
.long 0
.long 65551
.globl Main_main_info
.type Main_main_info, @object
Main_main_info:
.Lc201:
jmp Main_main1_info
.size Main_main_info, .-Main_main_info
.section .data
.align 4
.align 1
Main_main6_srt:
.long base_GHCziTopHandler_runMainIO1_closure
.long Main_main1_closure
.data
.align 4
.align 1
.globl Main_main6_closure
.type Main_main6_closure, @object
Main_main6_closure:
.long Main_main6_info
.long 0
.text
.align 4,0x90
.long Main_main6_srt-(Main_main6_info)+0
.long 65539
.long 0
.long 196623
.globl Main_main6_info
.type Main_main6_info, @object
Main_main6_info:
.Lc20a:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc20d
movl $Main_main1_closure+1,-4(%ebp)
addl $-4,%ebp
jmp base_GHCziTopHandler_runMainIO1_info
.Lc20d:
movl $Main_main6_closure,%esi
jmp *-4(%ebx)
.size Main_main6_info, .-Main_main6_info
.section .data
.align 4
.align 1
ZCMain_main_srt:
.long Main_main6_closure
.data
.align 4
.align 1
.globl ZCMain_main_closure
.type ZCMain_main_closure, @object
ZCMain_main_closure:
.long ZCMain_main_info
.long 0
.text
.align 4,0x90
.long ZCMain_main_srt-(ZCMain_main_info)+0
.long 65539
.long 0
.long 65551
.globl ZCMain_main_info
.type ZCMain_main_info, @object
ZCMain_main_info:
.Lc20n:
jmp Main_main6_info
.size ZCMain_main_info, .-ZCMain_main_info
Linking Main ...
[1 of 2] Compiling Unique ( Unique.hs, Unique.o )
==================== Tidy Core ====================
Result size = 179
lvl_rvf :: Type.Integer
[GblId]
lvl_rvf = __integer 0
lvl1_rvg
:: State# RealWorld
-> (# State# RealWorld,
IORef Type.Integer #)
[GblId, Arity=1]
lvl1_rvg =
\ (s_aqi :: State# RealWorld) ->
case noDuplicate# s_aqi of s'_aqj { __DEFAULT ->
case newMutVar#
@ Type.Integer @ RealWorld lvl_rvf s'_aqj
of _ { (# s2#_asL, var#_asM #) ->
(# s2#_asL,
(STRef
@ RealWorld @ Type.Integer var#_asM)
`cast` (Sym (NTCo:IORef) <Type.Integer>
:: STRef RealWorld Type.Integer
~#
IORef Type.Integer) #)
}
}
counter_rag :: IORef Type.Integer
counter_rag =
unsafeDupablePerformIO
@ (IORef Type.Integer)
(lvl1_rvg
`cast` (Sym
(NTCo:IO <IORef Type.Integer>)
:: (State# RealWorld
-> (# State# RealWorld,
IORef Type.Integer #))
~#
IO (IORef Type.Integer)))
Unique.$fShowUnique1 :: [Char]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 40 0}]
Unique.$fShowUnique1 = unpackCString# "U "
Unique.$w$cshowsPrec
:: Int#
-> Unique.Unique -> String -> [Char]
[GblId,
Arity=3,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=3, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0 0 0] 181 120}]
Unique.$w$cshowsPrec =
\ (ww_suY :: Int#)
(w_sv0 :: Unique.Unique)
(w1_sv1 :: String) ->
case >=# ww_suY 11 of _ {
False ->
++
@ Char
Unique.$fShowUnique1
($w$cshowsPrec
11
(w_sv0
`cast` (Unique.NTCo:Unique
:: Unique.Unique ~# Type.Integer))
w1_sv1);
True ->
:
@ Char
shows2
(++
@ Char
Unique.$fShowUnique1
($w$cshowsPrec
11
(w_sv0
`cast` (Unique.NTCo:Unique
:: Unique.Unique ~# Type.Integer))
(: @ Char shows1 w1_sv1)))
}
Unique.$fShowUnique_$cshowsPrec [InlPrag=INLINE[0]]
:: Int -> Unique.Unique -> ShowS
[GblId,
Arity=3,
Unf=Unf{Src=Worker=Unique.$w$cshowsPrec, TopLvl=True, Arity=3,
Value=True, ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
Tmpl= \ (w_suW [Occ=Once!] :: Int)
(w1_sv0 [Occ=Once] :: Unique.Unique)
(w2_sv1 [Occ=Once] :: String) ->
case w_suW of _ { I# ww_suY [Occ=Once] ->
Unique.$w$cshowsPrec ww_suY w1_sv0 w2_sv1
}}]
Unique.$fShowUnique_$cshowsPrec =
\ (w_suW :: Int)
(w1_sv0 :: Unique.Unique)
(w2_sv1 :: String) ->
case w_suW of _ { I# ww_suY ->
Unique.$w$cshowsPrec ww_suY w1_sv0 w2_sv1
}
Unique.$fShowUnique_$cshowList :: [Unique.Unique] -> ShowS
[GblId,
Arity=2,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [80 0] 270 120}]
Unique.$fShowUnique_$cshowList =
\ (ds1_ar6 :: [Unique.Unique]) (s_ar7 :: String) ->
case ds1_ar6 of _ {
[] -> unpackAppendCString# "[]" s_ar7;
: x_arc xs_ard ->
:
@ Char
showList__3
(Unique.$w$cshowsPrec
0
x_arc
(let {
lvl22_arf :: [Char]
lvl22_arf =
: @ Char showList__2 s_ar7 } in
letrec {
showl_arg [Occ=LoopBreaker] :: [Unique.Unique] -> [Char]
showl_arg =
\ (ds2_arh :: [Unique.Unique]) ->
case ds2_arh of _ {
[] -> lvl22_arf;
: y_arm ys_arn ->
:
@ Char
showList__1
(Unique.$w$cshowsPrec 0 y_arm (showl_arg ys_arn))
}; } in
showl_arg xs_ard))
}
Unique.$fShowUnique_$cshow :: Unique.Unique -> String
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 40 0}]
Unique.$fShowUnique_$cshow =
\ (x_arx :: Unique.Unique) ->
Unique.$w$cshowsPrec 0 x_arx ([] @ Char)
Unique.$fShowUnique [InlPrag=[ALWAYS] CONLIKE]
:: Show Unique.Unique
[GblId[DFunId],
Unf=DFun(arity=0) D:Show [Unique.$fShowUnique_$cshowsPrec,
Unique.$fShowUnique_$cshow, Unique.$fShowUnique_$cshowList]]
Unique.$fShowUnique =
D:Show
@ Unique.Unique
Unique.$fShowUnique_$cshowsPrec
Unique.$fShowUnique_$cshow
Unique.$fShowUnique_$cshowList
lvl2_rvh :: Type.Integer
[GblId]
lvl2_rvh = __integer 1
lvl3_rvi
:: State# RealWorld
-> (# State# RealWorld, Unique.Unique #)
[GblId, Arity=1]
lvl3_rvi =
\ (s_aqi :: State# RealWorld) ->
case noDuplicate# s_aqi of s'_aqj { __DEFAULT ->
case counter_rag
`cast` (NTCo:IORef <Type.Integer>
:: IORef Type.Integer
~#
STRef RealWorld Type.Integer)
of _ { STRef var#_au4 ->
case readMutVar#
@ RealWorld @ Type.Integer var#_au4 s'_aqj
of _ { (# new_s_atV, a_atW #) ->
case writeMutVar#
@ RealWorld
@ Type.Integer
var#_au4
(Type.plusInteger a_atW lvl2_rvh)
new_s_atV
of s2#_auo { __DEFAULT ->
(# s2#_auo,
a_atW
`cast` (Sym (Unique.NTCo:Unique)
:: Type.Integer ~# Unique.Unique) #)
}
}
}
}
lvl4_rvj :: Unique.Unique
lvl4_rvj =
unsafeDupablePerformIO
@ Unique.Unique
(lvl3_rvi
`cast` (Sym (NTCo:IO <Unique.Unique>)
:: (State# RealWorld
-> (# State# RealWorld, Unique.Unique #))
~#
IO Unique.Unique))
Unique.newUnique [InlPrag=NOINLINE] :: () -> Unique.Unique
Unique.newUnique =
\ (ds_dq8 :: ()) -> case ds_dq8 of _ { () -> lvl4_rvj }
==================== Asm code ====================
.data
.align 4
.align 1
.globl __stginit_Unique
.type __stginit_Unique, @object
__stginit_Unique:
.data
.align 4
.align 1
rvf_closure:
.long integerzmgmp_GHCziIntegerziType_Szh_static_info
.long 0
.section .data
.align 4
.align 1
rvg_srt:
.long rvf_closure
.data
.align 4
.align 1
rvg_closure:
.long rvg_info
.long 0
.text
.align 4,0x90
.long 0
.long 32
swN_info:
.Lcx6:
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lcxb
movl $base_GHCziSTRef_STRef_con_info,-4(%edi)
movl %esi,0(%edi)
leal -3(%edi),%esi
addl $4,%ebp
jmp *0(%ebp)
.Lcxb:
movl $8,116(%ebx)
.Lcx9:
movl $254,32(%ebx)
jmp stg_gc_ut
.size swN_info, .-swN_info
.text
.align 4,0x90
.long rvg_srt-(svn_info)+0
.long 0
.long 65568
svn_info:
.Lcxf:
movl $rvf_closure+1,%esi
movl $swN_info,0(%ebp)
jmp stg_newMutVarzh
.size svn_info, .-svn_info
.text
.align 4,0x90
.long rvg_srt-(rvg_info)+0
.long 65539
.long 0
.long 65551
rvg_info:
.Lcxj:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcxl
movl $svn_info,-4(%ebp)
addl $-4,%ebp
jmp stg_noDuplicatezh
.Lcxl:
movl $rvg_closure,%esi
jmp *-4(%ebx)
.size rvg_info, .-rvg_info
.section .data
.align 4
.align 1
rag_srt:
.long rvf_closure
.data
.align 4
.align 1
rag_closure:
.long rag_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long rag_srt-(rag_info)+0
.long 0
.long 65558
rag_info:
.Lcxz:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcxB
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcxD
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcxE
.LcxF:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $rvg_closure+1,-12(%ebp)
addl $-12,%ebp
jmp base_GHCziIO_unsafeDupablePerformIO_info
.LcxD:
movl $8,116(%ebx)
.LcxB:
jmp *-8(%ebx)
.LcxE:
jmp *(%esi)
.size rag_info, .-rag_info
.data
.align 4
.align 1
.globl Unique_zdfShowUnique1_closure
.type Unique_zdfShowUnique1_closure, @object
Unique_zdfShowUnique1_closure:
.long Unique_zdfShowUnique1_info
.long 0
.long 0
.long 0
.section .rodata
.align 4
.align 1
cxV_str:
.byte 85
.byte 32
.byte 0
.text
.align 4,0x90
.long 0
.long 22
.globl Unique_zdfShowUnique1_info
.type Unique_zdfShowUnique1_info, @object
Unique_zdfShowUnique1_info:
.LcxZ:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcy1
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lcy3
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lcy4
.Lcy5:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $cxV_str,-12(%ebp)
addl $-12,%ebp
jmp ghczmprim_GHCziCString_unpackCStringzh_info
.Lcy3:
movl $8,116(%ebx)
.Lcy1:
jmp *-8(%ebx)
.Lcy4:
jmp *(%esi)
.size Unique_zdfShowUnique1_info, .-Unique_zdfShowUnique1_info
.section .data
.align 4
.align 1
Unique_zdwzdcshowsPrec_srt:
.long base_GHCziShow_zdwzdcshowsPrec_closure
.long Unique_zdfShowUnique1_closure
.data
.align 4
.align 1
.globl Unique_zdwzdcshowsPrec_closure
.type Unique_zdwzdcshowsPrec_closure, @object
Unique_zdwzdcshowsPrec_closure:
.long Unique_zdwzdcshowsPrec_info
.long 0
.text
.align 4,0x90
.long Unique_zdwzdcshowsPrec_srt-(swE_info)+0
.long 2
.long 65555
swE_info:
.Lcyq:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcys
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl 12(%esi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $11,-20(%ebp)
addl $-20,%ebp
jmp base_GHCziShow_zdwzdcshowsPrec_info
.Lcys:
jmp *-8(%ebx)
.size swE_info, .-swE_info
.text
.align 4,0x90
.long Unique_zdwzdcshowsPrec_srt-(svF_info)+0
.long 2
.long 65555
svF_info:
.LcyF:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcyH
addl $12,%edi
cmpl 92(%ebx),%edi
ja .LcyJ
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZC_con_info,-8(%edi)
movl $base_GHCziShow_shows1_closure,-4(%edi)
movl 12(%esi),%eax
movl %eax,0(%edi)
leal -6(%edi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $11,-20(%ebp)
addl $-20,%ebp
jmp base_GHCziShow_zdwzdcshowsPrec_info
.LcyJ:
movl $12,116(%ebx)
.LcyH:
jmp *-8(%ebx)
.size svF_info, .-svF_info
.text
.align 4,0x90
.long Unique_zdwzdcshowsPrec_srt-(swL_info)+0
.long 2
.long 196627
swL_info:
.LcyS:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcyU
addl $16,%edi
cmpl 92(%ebx),%edi
ja .LcyW
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $svF_info,-12(%edi)
movl 8(%esi),%eax
movl %eax,-4(%edi)
movl 12(%esi),%eax
movl %eax,0(%edi)
leal -12(%edi),%eax
movl %eax,-12(%ebp)
movl $Unique_zdfShowUnique1_closure,-16(%ebp)
addl $-16,%ebp
jmp base_GHCziBase_zpzp_info
.LcyW:
movl $16,116(%ebx)
.LcyU:
jmp *-8(%ebx)
.size swL_info, .-swL_info
.text
.align 4,0x90
.long Unique_zdwzdcshowsPrec_srt-(Unique_zdwzdcshowsPrec_info)+0
.long 196624
.long 0
.long 196623
.globl Unique_zdwzdcshowsPrec_info
.type Unique_zdwzdcshowsPrec_info, @object
Unique_zdwzdcshowsPrec_info:
.Lcz4:
addl $28,%edi
cmpl 92(%ebx),%edi
ja .Lcz8
cmpl $11,0(%ebp)
jge .Lcza
movl $swE_info,-24(%edi)
movl 4(%ebp),%eax
movl %eax,-16(%edi)
movl 8(%ebp),%eax
movl %eax,-12(%edi)
leal -24(%edi),%eax
movl %eax,8(%ebp)
movl $Unique_zdfShowUnique1_closure,4(%ebp)
addl $4,%ebp
addl $-12,%edi
jmp base_GHCziBase_zpzp_info
.Lcz8:
movl $28,116(%ebx)
.Lcz6:
movl $Unique_zdwzdcshowsPrec_closure,%esi
jmp *-4(%ebx)
.Lcza:
movl $swL_info,-24(%edi)
movl 4(%ebp),%eax
movl %eax,-16(%edi)
movl 8(%ebp),%eax
movl %eax,-12(%edi)
movl $ghczmprim_GHCziTypes_ZC_con_info,-8(%edi)
movl $base_GHCziShow_shows2_closure,-4(%edi)
leal -24(%edi),%eax
movl %eax,0(%edi)
leal -6(%edi),%esi
addl $12,%ebp
jmp *0(%ebp)
.size Unique_zdwzdcshowsPrec_info, .-Unique_zdwzdcshowsPrec_info
.section .data
.align 4
.align 1
Unique_zdfShowUniquezuzdcshowsPrec_srt:
.long Unique_zdwzdcshowsPrec_closure
.data
.align 4
.align 1
.globl Unique_zdfShowUniquezuzdcshowsPrec_closure
.type Unique_zdfShowUniquezuzdcshowsPrec_closure, @object
Unique_zdfShowUniquezuzdcshowsPrec_closure:
.long Unique_zdfShowUniquezuzdcshowsPrec_info
.long 0
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowsPrec_srt-(swJ_info)+0
.long 2
.long 65568
swJ_info:
.Lczt:
movl 3(%esi),%eax
movl %eax,0(%ebp)
jmp Unique_zdwzdcshowsPrec_info
.size swJ_info, .-swJ_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowsPrec_srt-(Unique_zdfShowUniquezuzdcshowsPrec_info)+0
.long 196628
.long 0
.long 65551
.globl Unique_zdfShowUniquezuzdcshowsPrec_info
.type Unique_zdfShowUniquezuzdcshowsPrec_info, @object
Unique_zdfShowUniquezuzdcshowsPrec_info:
.Lczy:
movl 0(%ebp),%esi
movl $swJ_info,0(%ebp)
testl $3,%esi
jne swJ_info
jmp *(%esi)
.size Unique_zdfShowUniquezuzdcshowsPrec_info, .-Unique_zdfShowUniquezuzdcshowsPrec_info
.section .data
.align 4
.align 1
Unique_zdfShowUniquezuzdcshowList_srt:
.long Unique_zdwzdcshowsPrec_closure
.data
.align 4
.align 1
.globl Unique_zdfShowUniquezuzdcshowList_closure
.type Unique_zdfShowUniquezuzdcshowList_closure, @object
Unique_zdfShowUniquezuzdcshowList_closure:
.long Unique_zdfShowUniquezuzdcshowList_info
.long 0
.section .rodata
.align 4
.align 1
czP_str:
.byte 91
.byte 93
.byte 0
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swG_info)+0
.long 3
.long 65552
swG_info:
.LcA9:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAb
addl $16,%edi
cmpl 92(%ebx),%edi
ja .LcAd
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $stg_ap_2_upd_info,-12(%edi)
movl 16(%esi),%eax
movl %eax,-4(%edi)
movl 12(%esi),%eax
movl %eax,0(%edi)
leal -12(%edi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $0,-20(%ebp)
addl $-20,%ebp
jmp Unique_zdwzdcshowsPrec_info
.LcAd:
movl $16,116(%ebx)
.LcAb:
jmp *-8(%ebx)
.size swG_info, .-swG_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swI_info)+0
.long 2
.long 65568
swI_info:
.LcAo:
movl %esi,%eax
andl $3,%eax
cmpl $2,%eax
jae .LcAp
movl 8(%ebp),%esi
addl $12,%ebp
jmp *0(%ebp)
.LcAp:
addl $32,%edi
cmpl 92(%ebx),%edi
ja .LcAt
movl $swG_info,-28(%edi)
movl 2(%esi),%eax
movl %eax,-20(%edi)
movl 6(%esi),%eax
movl %eax,-16(%edi)
movl 4(%ebp),%eax
movl %eax,-12(%edi)
movl $ghczmprim_GHCziTypes_ZC_con_info,-8(%edi)
movl $base_GHCziShow_showListzuzu1_closure,-4(%edi)
leal -28(%edi),%eax
movl %eax,0(%edi)
leal -6(%edi),%esi
addl $12,%ebp
jmp *0(%ebp)
.LcAt:
movl $32,116(%ebx)
.LcAr:
jmp *-8(%ebx)
.size swI_info, .-swI_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(sw8_info)+0
.long 65541
.long 1
.long 65546
sw8_info:
.LcAE:
leal -8(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAG
movl %esi,-4(%ebp)
movl 0(%ebp),%eax
movl 3(%esi),%ecx
movl %ecx,0(%ebp)
movl %eax,%esi
movl $swI_info,-8(%ebp)
addl $-8,%ebp
testl $3,%esi
jne swI_info
jmp *(%esi)
.LcAG:
jmp *-4(%ebx)
.size sw8_info, .-sw8_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swe_info)+0
.long 2
.long 65555
swe_info:
.LcAS:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAU
addl $20,%edi
cmpl 92(%ebx),%edi
ja .LcAW
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZC_con_info,-16(%edi)
movl $base_GHCziShow_showListzuzu2_closure,-12(%edi)
movl 8(%esi),%eax
movl %eax,-8(%edi)
movl $sw8_info,-4(%edi)
leal -14(%edi),%eax
movl %eax,0(%edi)
movl 12(%esi),%eax
movl %eax,-12(%ebp)
leal -3(%edi),%esi
addl $-12,%ebp
jmp sw8_info
.LcAW:
movl $20,116(%ebx)
.LcAU:
jmp *-8(%ebx)
.size swe_info, .-swe_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swH_info)+0
.long 3
.long 65552
swH_info:
.LcB5:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcB7
addl $16,%edi
cmpl 92(%ebx),%edi
ja .LcB9
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $swe_info,-12(%edi)
movl 8(%esi),%eax
movl %eax,-4(%edi)
movl 16(%esi),%eax
movl %eax,0(%edi)
leal -12(%edi),%eax
movl %eax,-12(%ebp)
movl 12(%esi),%eax
movl %eax,-16(%ebp)
movl $0,-20(%ebp)
addl $-20,%ebp
jmp Unique_zdwzdcshowsPrec_info
.LcB9:
movl $16,116(%ebx)
.LcB7:
jmp *-8(%ebx)
.size swH_info, .-swH_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(swF_info)+0
.long 1
.long 65568
swF_info:
.LcBk:
movl %esi,%eax
andl $3,%eax
cmpl $2,%eax
jae .LcBl
movl $czP_str,0(%ebp)
jmp ghczmprim_GHCziCString_unpackAppendCStringzh_info
.LcBl:
addl $32,%edi
cmpl 92(%ebx),%edi
ja .LcBp
movl $swH_info,-28(%edi)
movl 4(%ebp),%eax
movl %eax,-20(%edi)
movl 2(%esi),%eax
movl %eax,-16(%edi)
movl 6(%esi),%eax
movl %eax,-12(%edi)
movl $ghczmprim_GHCziTypes_ZC_con_info,-8(%edi)
movl $base_GHCziShow_showListzuzu3_closure,-4(%edi)
leal -28(%edi),%eax
movl %eax,0(%edi)
leal -6(%edi),%esi
addl $8,%ebp
jmp *0(%ebp)
.LcBp:
movl $32,116(%ebx)
.LcBn:
jmp *-8(%ebx)
.size swF_info, .-swF_info
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshowList_srt-(Unique_zdfShowUniquezuzdcshowList_info)+0
.long 131084
.long 0
.long 65551
.globl Unique_zdfShowUniquezuzdcshowList_info
.type Unique_zdfShowUniquezuzdcshowList_info, @object
Unique_zdfShowUniquezuzdcshowList_info:
.LcBA:
movl 0(%ebp),%esi
movl $swF_info,0(%ebp)
testl $3,%esi
jne swF_info
jmp *(%esi)
.size Unique_zdfShowUniquezuzdcshowList_info, .-Unique_zdfShowUniquezuzdcshowList_info
.section .data
.align 4
.align 1
Unique_zdfShowUniquezuzdcshow_srt:
.long Unique_zdwzdcshowsPrec_closure
.data
.align 4
.align 1
.globl Unique_zdfShowUniquezuzdcshow_closure
.type Unique_zdfShowUniquezuzdcshow_closure, @object
Unique_zdfShowUniquezuzdcshow_closure:
.long Unique_zdfShowUniquezuzdcshow_info
.long 0
.text
.align 4,0x90
.long Unique_zdfShowUniquezuzdcshow_srt-(Unique_zdfShowUniquezuzdcshow_info)+0
.long 65541
.long 0
.long 65551
.globl Unique_zdfShowUniquezuzdcshow_info
.type Unique_zdfShowUniquezuzdcshow_info, @object
Unique_zdfShowUniquezuzdcshow_info:
.LcBM:
leal -8(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcBP
movl 0(%ebp),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZMZN_closure+1,0(%ebp)
movl $0,-8(%ebp)
addl $-8,%ebp
jmp Unique_zdwzdcshowsPrec_info
.LcBP:
movl $Unique_zdfShowUniquezuzdcshow_closure,%esi
jmp *-4(%ebx)
.size Unique_zdfShowUniquezuzdcshow_info, .-Unique_zdfShowUniquezuzdcshow_info
.data
.align 4
.align 1
.globl Unique_zdfShowUnique_closure
.type Unique_zdfShowUnique_closure, @object
Unique_zdfShowUnique_closure:
.long base_GHCziShow_DZCShow_static_info
.long Unique_zdfShowUniquezuzdcshowsPrec_closure+3
.long Unique_zdfShowUniquezuzdcshow_closure+1
.long Unique_zdfShowUniquezuzdcshowList_closure+2
.long 0
.data
.align 4
.align 1
rvh_closure:
.long integerzmgmp_GHCziIntegerziType_Szh_static_info
.long 1
.section .data
.align 4
.align 1
rvi_srt:
.long rag_closure
.long rvh_closure
.data
.align 4
.align 1
rvi_closure:
.long rvi_info
.long 0
.text
.align 4,0x90
.long rvi_srt-(swB_info)+4
.long 1
.long 65553
swB_info:
.LcCh:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcCj
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $rvh_closure+1,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
addl $-16,%ebp
jmp integerzmgmp_GHCziIntegerziType_plusInteger_info
.LcCj:
jmp *-8(%ebx)
.size swB_info, .-swB_info
.text
.align 4,0x90
.long rvi_srt-(swD_info)+4
.long 0
.long 65568
swD_info:
.LcCp:
addl $12,%edi
cmpl 92(%ebx),%edi
ja .LcCt
movl 3(%esi),%eax
movl 4(%eax),%eax
movl $swB_info,-8(%edi)
movl %eax,0(%edi)
leal -8(%edi),%ecx
movl 3(%esi),%edx
movl %ecx,4(%edx)
movl %ebx,%ecx
movl 3(%esi),%edx
subl $4,%esp
pushl %edx
pushl %ecx
movl %eax,76(%esp)
call dirty_MUT_VAR
addl $12,%esp
movl 64(%esp),%eax
movl %eax,%esi
addl $4,%ebp
jmp *0(%ebp)
.LcCt:
movl $12,116(%ebx)
.LcCr:
jmp *-8(%ebx)
.size swD_info, .-swD_info
.text
.align 4,0x90
.long rvi_srt-(swo_info)+0
.long 0
.long 196640
swo_info:
.LcCE:
movl $rag_closure,%esi
movl $swD_info,0(%ebp)
testl $3,%esi
jne swD_info
jmp *(%esi)
.size swo_info, .-swo_info
.text
.align 4,0x90
.long rvi_srt-(rvi_info)+0
.long 65539
.long 0
.long 196623
rvi_info:
.LcCL:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcCN
movl $swo_info,-4(%ebp)
addl $-4,%ebp
jmp stg_noDuplicatezh
.LcCN:
movl $rvi_closure,%esi
jmp *-4(%ebx)
.size rvi_info, .-rvi_info
.section .data
.align 4
.align 1
rvj_srt:
.long rvi_closure
.data
.align 4
.align 1
rvj_closure:
.long rvj_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long rvj_srt-(rvj_info)+0
.long 0
.long 65558
rvj_info:
.LcD1:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcD3
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcD5
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcD6
.LcD7:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $rvi_closure+1,-12(%ebp)
addl $-12,%ebp
jmp base_GHCziIO_unsafeDupablePerformIO_info
.LcD5:
movl $8,116(%ebx)
.LcD3:
jmp *-8(%ebx)
.LcD6:
jmp *(%esi)
.size rvj_info, .-rvj_info
.section .data
.align 4
.align 1
Unique_newUnique_srt:
.long rvj_closure
.data
.align 4
.align 1
.globl Unique_newUnique_closure
.type Unique_newUnique_closure, @object
Unique_newUnique_closure:
.long Unique_newUnique_info
.long 0
.text
.align 4,0x90
.long Unique_newUnique_srt-(swA_info)+0
.long 0
.long 65568
swA_info:
.LcDo:
movl $rvj_closure,%esi
addl $4,%ebp
andl $-4,%esi
jmp *(%esi)
.size swA_info, .-swA_info
.text
.align 4,0x90
.long Unique_newUnique_srt-(Unique_newUnique_info)+0
.long 65541
.long 0
.long 65551
.globl Unique_newUnique_info
.type Unique_newUnique_info, @object
Unique_newUnique_info:
.LcDt:
movl 0(%ebp),%esi
movl $swA_info,0(%ebp)
testl $3,%esi
jne swA_info
jmp *(%esi)
.size Unique_newUnique_info, .-Unique_newUnique_info
[2 of 2] Compiling Main ( hs, o )
==================== Tidy Core ====================
Result size = 44
main3 :: Unique.Unique
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 20 0}]
main3 = Unique.newUnique ()
main2 :: [Char]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 40 0}]
main2 =
Unique.$w$cshowsPrec 0 main3 ([] @ Char)
main4 :: [Char]
[GblId,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=False,
ConLike=False, Cheap=False, Expandable=False,
Guidance=IF_ARGS [] 40 0}]
main4 =
Unique.$w$cshowsPrec 0 main3 ([] @ Char)
main1
:: State# RealWorld
-> (# State# RealWorld, () #)
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 110 0}]
main1 =
\ (eta_B1 :: State# RealWorld) ->
case Handle.Text.hPutStr2
Handle.FD.stdout main4 True eta_B1
of _ { (# new_s_atV, _ #) ->
Handle.Text.hPutStr2
Handle.FD.stdout main2 True new_s_atV
}
main :: IO ()
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
main =
main1
`cast` (Sym (NTCo:IO <()>)
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ())
main5
:: State# RealWorld
-> (# State# RealWorld, () #)
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=1, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=IF_ARGS [0] 30 0}]
main5 =
\ (eta_Xb :: State# RealWorld) ->
runMainIO1
@ ()
(main1
`cast` (Sym (NTCo:IO <()>)
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ()))
eta_Xb
:main :: IO ()
[GblId,
Arity=1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
ConLike=True, Cheap=True, Expandable=True,
Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=True)}]
:main =
main5
`cast` (Sym (NTCo:IO <()>)
:: (State# RealWorld
-> (# State# RealWorld, () #))
~#
IO ())
==================== Asm code ====================
.data
.align 4
.align 1
.globl __stginit_Main
.type __stginit_Main, @object
__stginit_Main:
.globl __stginit_ZCMain
.type __stginit_ZCMain, @object
__stginit_ZCMain:
.section .data
.align 4
.align 1
Main_main3_srt:
.long Unique_newUnique_closure
.data
.align 4
.align 1
.globl Main_main3_closure
.type Main_main3_closure, @object
Main_main3_closure:
.long Main_main3_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long Main_main3_srt-(Main_main3_info)+0
.long 0
.long 65558
.globl Main_main3_info
.type Main_main3_info, @object
Main_main3_info:
.Lc1Yd:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1Yf
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lc1Yh
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lc1Yi
.Lc1Yj:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTuple_Z0T_closure+1,-12(%ebp)
addl $-12,%ebp
jmp Unique_newUnique_info
.Lc1Yh:
movl $8,116(%ebx)
.Lc1Yf:
jmp *-8(%ebx)
.Lc1Yi:
jmp *(%esi)
.size Main_main3_info, .-Main_main3_info
.section .data
.align 4
.align 1
Main_main2_srt:
.long Unique_zdwzdcshowsPrec_closure
.long Main_main3_closure
.data
.align 4
.align 1
.globl Main_main2_closure
.type Main_main2_closure, @object
Main_main2_closure:
.long Main_main2_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long Main_main2_srt-(Main_main2_info)+0
.long 0
.long 196630
.globl Main_main2_info
.type Main_main2_info, @object
Main_main2_info:
.Lc1YB:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1YD
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lc1YF
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lc1YG
.Lc1YH:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZMZN_closure+1,-12(%ebp)
movl $Main_main3_closure,-16(%ebp)
movl $0,-20(%ebp)
addl $-20,%ebp
jmp Unique_zdwzdcshowsPrec_info
.Lc1YF:
movl $8,116(%ebx)
.Lc1YD:
jmp *-8(%ebx)
.Lc1YG:
jmp *(%esi)
.size Main_main2_info, .-Main_main2_info
.section .data
.align 4
.align 1
Main_main4_srt:
.long Unique_zdwzdcshowsPrec_closure
.long Main_main3_closure
.data
.align 4
.align 1
.globl Main_main4_closure
.type Main_main4_closure, @object
Main_main4_closure:
.long Main_main4_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long Main_main4_srt-(Main_main4_info)+0
.long 0
.long 196630
.globl Main_main4_info
.type Main_main4_info, @object
Main_main4_info:
.Lc1YZ:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1Z1
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lc1Z3
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lc1Z4
.Lc1Z5:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $ghczmprim_GHCziTypes_ZMZN_closure+1,-12(%ebp)
movl $Main_main3_closure,-16(%ebp)
movl $0,-20(%ebp)
addl $-20,%ebp
jmp Unique_zdwzdcshowsPrec_info
.Lc1Z3:
movl $8,116(%ebx)
.Lc1Z1:
jmp *-8(%ebx)
.Lc1Z4:
jmp *(%esi)
.size Main_main4_info, .-Main_main4_info
.section .data
.align 4
.align 1
Main_main1_srt:
.long Main_main2_closure
.long Main_main4_closure
.long base_GHCziIOziHandleziFD_stdout_closure
.long base_GHCziIOziHandleziText_hPutStr2_closure
.data
.align 4
.align 1
.globl Main_main1_closure
.type Main_main1_closure, @object
Main_main1_closure:
.long Main_main1_info
.long 0
.text
.align 4,0x90
.long Main_main1_srt-(s1XY_info)+0
.long 0
.long 852000
s1XY_info:
.Lc1Zm:
movl $ghczmprim_GHCziTypes_True_closure+2,0(%ebp)
movl $Main_main2_closure,-4(%ebp)
movl $base_GHCziIOziHandleziFD_stdout_closure,-8(%ebp)
addl $-8,%ebp
jmp base_GHCziIOziHandleziText_hPutStr2_info
.size s1XY_info, .-s1XY_info
.text
.align 4,0x90
.long Main_main1_srt-(Main_main1_info)+0
.long 65539
.long 0
.long 983055
.globl Main_main1_info
.type Main_main1_info, @object
Main_main1_info:
.Lc1Zq:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1Zs
movl $ghczmprim_GHCziTypes_True_closure+2,-8(%ebp)
movl $Main_main4_closure,-12(%ebp)
movl $base_GHCziIOziHandleziFD_stdout_closure,-16(%ebp)
movl $s1XY_info,-4(%ebp)
addl $-16,%ebp
jmp base_GHCziIOziHandleziText_hPutStr2_info
.Lc1Zs:
movl $Main_main1_closure,%esi
jmp *-4(%ebx)
.size Main_main1_info, .-Main_main1_info
.section .data
.align 4
.align 1
Main_main_srt:
.long Main_main1_closure
.data
.align 4
.align 1
.globl Main_main_closure
.type Main_main_closure, @object
Main_main_closure:
.long Main_main_info
.long 0
.text
.align 4,0x90
.long Main_main_srt-(Main_main_info)+0
.long 65539
.long 0
.long 65551
.globl Main_main_info
.type Main_main_info, @object
Main_main_info:
.Lc1ZC:
jmp Main_main1_info
.size Main_main_info, .-Main_main_info
.section .data
.align 4
.align 1
Main_main5_srt:
.long base_GHCziTopHandler_runMainIO1_closure
.long Main_main1_closure
.data
.align 4
.align 1
.globl Main_main5_closure
.type Main_main5_closure, @object
Main_main5_closure:
.long Main_main5_info
.long 0
.text
.align 4,0x90
.long Main_main5_srt-(Main_main5_info)+0
.long 65539
.long 0
.long 196623
.globl Main_main5_info
.type Main_main5_info, @object
Main_main5_info:
.Lc1ZL:
leal -4(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lc1ZO
movl $Main_main1_closure+1,-4(%ebp)
addl $-4,%ebp
jmp base_GHCziTopHandler_runMainIO1_info
.Lc1ZO:
movl $Main_main5_closure,%esi
jmp *-4(%ebx)
.size Main_main5_info, .-Main_main5_info
.section .data
.align 4
.align 1
ZCMain_main_srt:
.long Main_main5_closure
.data
.align 4
.align 1
.globl ZCMain_main_closure
.type ZCMain_main_closure, @object
ZCMain_main_closure:
.long ZCMain_main_info
.long 0
.text
.align 4,0x90
.long ZCMain_main_srt-(ZCMain_main_info)+0
.long 65539
.long 0
.long 65551
.globl ZCMain_main_info
.type ZCMain_main_info, @object
ZCMain_main_info:
.Lc1ZY:
jmp Main_main5_info
.size ZCMain_main_info, .-ZCMain_main_info
Linking Main ...
[1 of 2] Compiling Unique ( Unique.hs, Unique.o )
==================== Tidy Core ====================
Result size = 91
counter_ra4 :: IORef Type.Integer
[GblId]
counter_ra4 =
$
@ (IO (IORef Type.Integer))
@ (IORef Type.Integer)
(unsafePerformIO
@ (IORef Type.Integer))
(newIORef @ Type.Integer (__integer 0))
$cshowsPrec_rq9 :: Int -> Unique.Unique -> ShowS
[GblId, Arity=2]
$cshowsPrec_rq9 =
\ (a_afc :: Int) (ds_dq5 :: Unique.Unique) ->
showParen
(>=
@ Int $fOrdInt a_afc (I# 11))
(.
@ String
@ String
@ String
(showString (unpackCString# "U "))
(showsPrec
@ Type.Integer
$fShowInteger
(I# 11)
(ds_dq5
`cast` (Unique.NTCo:Unique
:: Unique.Unique ~# Type.Integer))))
Unique.$fShowUnique [InlPrag=[ALWAYS] CONLIKE]
:: Show Unique.Unique
[GblId[DFunId]]
Unique.$fShowUnique =
D:Show
@ Unique.Unique $cshowsPrec_rq9 $cshow_rqb $cshowList_rqa
$cshowList_rqa :: [Unique.Unique] -> ShowS
[GblId]
$cshowList_rqa =
showList__
@ Unique.Unique
(showsPrec
@ Unique.Unique Unique.$fShowUnique (I# 0))
$cshow_rqb :: Unique.Unique -> String
[GblId]
$cshow_rqb = $dmshow @ Unique.Unique Unique.$fShowUnique
newUnique'_ra5 :: IO Unique.Unique
[GblId]
newUnique'_ra5 =
>>=
@ IO
$fMonadIO
@ Type.Integer
@ Unique.Unique
(readIORef @ Type.Integer counter_ra4)
(\ (x_aa7 :: Type.Integer) ->
>>
@ IO
$fMonadIO
@ ()
@ Unique.Unique
(writeIORef
@ Type.Integer
counter_ra4
(+
@ Type.Integer
$fNumInteger
x_aa7
(__integer 1)))
($
@ Unique.Unique
@ (IO Unique.Unique)
(return @ IO $fMonadIO @ Unique.Unique)
(x_aa7
`cast` (Sym (Unique.NTCo:Unique)
:: Type.Integer ~# Unique.Unique))))
Unique.newUnique [InlPrag=NOINLINE] :: () -> Unique.Unique
[GblId, Arity=1]
Unique.newUnique =
\ (ds_dq3 :: ()) ->
case ds_dq3 of _ { () ->
unsafePerformIO @ Unique.Unique newUnique'_ra5
}
==================== Asm code ====================
.data
.align 4
.align 1
.globl __stginit_Unique
.type __stginit_Unique, @object
__stginit_Unique:
.section .data
.align 4
.align 1
sqy_srt:
.long base_GHCziIORef_newIORef_closure
.data
.align 4
.align 1
sqy_closure:
.long sqy_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long sqy_srt-(sqy_info)+0
.long 0
.long 65558
sqy_info:
.Lcrk:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcrm
addl $16,%edi
cmpl 92(%ebx),%edi
ja .Lcro
movl $stg_CAF_BLACKHOLE_info,-12(%edi)
movl 100(%ebx),%eax
movl %eax,-8(%edi)
leal -12(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lcrp
.Lcrq:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -12(%edi),%eax
movl %eax,-4(%ebp)
movl $integerzmgmp_GHCziIntegerziType_Szh_con_info,-4(%edi)
movl $0,0(%edi)
movl $base_GHCziIORef_newIORef_closure,%esi
leal -3(%edi),%eax
movl %eax,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.Lcro:
movl $16,116(%ebx)
.Lcrm:
jmp *-8(%ebx)
.Lcrp:
jmp *(%esi)
.size sqy_info, .-sqy_info
.section .data
.align 4
.align 1
ra4_srt:
.long base_GHCziBase_zd_closure
.long base_GHCziIO_unsafePerformIO_closure
.long sqy_closure
.data
.align 4
.align 1
ra4_closure:
.long ra4_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long ra4_srt-(ra4_info)+0
.long 0
.long 458774
ra4_info:
.LcrJ:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcrL
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcrN
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcrO
.LcrP:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $base_GHCziBase_zd_closure,%esi
movl $sqy_closure,-12(%ebp)
movl $base_GHCziIO_unsafePerformIO_closure,-16(%ebp)
addl $-16,%ebp
jmp stg_ap_pp_fast
.LcrN:
movl $8,116(%ebx)
.LcrL:
jmp *-8(%ebx)
.LcrO:
jmp *(%esi)
.size ra4_info, .-ra4_info
.section .data
.align 4
.align 1
rq9_srt:
.long ghczmprim_GHCziCString_unpackCStringzh_closure
.long base_GHCziShow_showString_closure
.long base_GHCziShow_showParen_closure
.long base_GHCziBase_zi_closure
.long base_GHCziShow_zdfShowInteger_closure
.long ghczmprim_GHCziClasses_zdfOrdInt_closure
.data
.align 4
.align 1
rq9_closure:
.long rq9_info
.long 0
.text
.align 4,0x90
.long rq9_srt-(sqs_info)+16
.long 1
.long 65553
sqs_info:
.Lcs9:
leal -24(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcsb
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl 8(%esi),%eax
movl %eax,-12(%ebp)
movl $stg_INTLIKE_closure+217,-16(%ebp)
movl $stg_ap_pp_info,-20(%ebp)
movl $base_GHCziShow_zdfShowInteger_closure,-24(%ebp)
addl $-24,%ebp
jmp base_GHCziShow_showsPrec_info
.Lcsb:
jmp *-8(%ebx)
.size sqs_info, .-sqs_info
.section .rodata
.align 4
.align 1
csl_str:
.byte 85
.byte 32
.byte 0
.text
.align 4,0x90
.long rq9_srt-(sqm_info)+0
.long 0
.long 65552
sqm_info:
.Lcsp:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcsr
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $ghczmprim_GHCziCString_unpackCStringzh_closure,%esi
movl $csl_str,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_n_fast
.Lcsr:
jmp *-8(%ebx)
.size sqm_info, .-sqm_info
.text
.align 4,0x90
.long rq9_srt-(sqt_info)+0
.long 0
.long 196624
sqt_info:
.Lcsx:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcsz
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcsB
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $sqm_info,-4(%edi)
movl $base_GHCziShow_showString_closure,%esi
leal -4(%edi),%eax
movl %eax,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.LcsB:
movl $8,116(%ebx)
.Lcsz:
jmp *-8(%ebx)
.size sqt_info, .-sqt_info
.text
.align 4,0x90
.long rq9_srt-(sqU_info)+0
.long 1
.long 1769489
sqU_info:
.LcsI:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcsK
addl $20,%edi
cmpl 92(%ebx),%edi
ja .LcsM
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $sqs_info,-16(%edi)
movl 8(%esi),%eax
movl %eax,-8(%edi)
movl $sqt_info,-4(%edi)
movl $base_GHCziBase_zi_closure,%esi
leal -16(%edi),%eax
movl %eax,-12(%ebp)
leal -4(%edi),%eax
movl %eax,-16(%ebp)
addl $-16,%ebp
jmp stg_ap_pp_fast
.LcsM:
movl $20,116(%ebx)
.LcsK:
jmp *-8(%ebx)
.size sqU_info, .-sqU_info
.text
.align 4,0x90
.long rq9_srt-(sqV_info)+20
.long 1
.long 65553
sqV_info:
.LcsX:
leal -24(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcsZ
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $stg_INTLIKE_closure+217,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $stg_ap_pp_info,-20(%ebp)
movl $ghczmprim_GHCziClasses_zdfOrdInt_closure,-24(%ebp)
addl $-24,%ebp
jmp ghczmprim_GHCziClasses_zgze_info
.LcsZ:
jmp *-8(%ebx)
.size sqV_info, .-sqV_info
.text
.align 4,0x90
.long rq9_srt-(rq9_info)+0
.long 131084
.long 0
.long 4128783
rq9_info:
.Lct5:
addl $24,%edi
cmpl 92(%ebx),%edi
ja .Lct9
movl $sqU_info,-20(%edi)
movl 4(%ebp),%eax
movl %eax,-12(%edi)
movl $sqV_info,-8(%edi)
movl 0(%ebp),%eax
movl %eax,0(%edi)
movl $base_GHCziShow_showParen_closure,%esi
leal -20(%edi),%eax
movl %eax,4(%ebp)
leal -8(%edi),%eax
movl %eax,0(%ebp)
jmp stg_ap_pp_fast
.Lct9:
movl $24,116(%ebx)
.Lct7:
movl $rq9_closure,%esi
jmp *-4(%ebx)
.size rq9_info, .-rq9_info
.section .data
.align 4
.align 1
sqR_srt:
.long Unique_zdfShowUnique_closure
.section .data
.align 4
.align 1
rqa_srt:
.long base_GHCziShow_showListzuzu_closure
.long sqR_closure
.section .data
.align 4
.align 1
rqb_srt:
.long base_GHCziShow_zddmshow_closure
.long Unique_zdfShowUnique_closure
.data
.align 4
.align 1
sqR_closure:
.long sqR_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long sqR_srt-(sqR_info)+0
.long 0
.long 65558
sqR_info:
.Lcts:
leal -20(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lctu
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lctw
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lctx
.Lcty:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $stg_INTLIKE_closure+129,-12(%ebp)
movl $stg_ap_p_info,-16(%ebp)
movl $Unique_zdfShowUnique_closure+1,-20(%ebp)
addl $-20,%ebp
jmp base_GHCziShow_showsPrec_info
.Lctw:
movl $8,116(%ebx)
.Lctu:
jmp *-8(%ebx)
.Lctx:
jmp *(%esi)
.size sqR_info, .-sqR_info
.data
.align 4
.align 1
.globl Unique_zdfShowUnique_closure
.type Unique_zdfShowUnique_closure, @object
Unique_zdfShowUnique_closure:
.long base_GHCziShow_DZCShow_static_info
.long rq9_closure+2
.long rqb_closure
.long rqa_closure
.long 0
.data
.align 4
.align 1
rqa_closure:
.long rqa_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long rqa_srt-(rqa_info)+0
.long 0
.long 196630
rqa_info:
.LctR:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LctT
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LctV
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LctW
.LctX:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $base_GHCziShow_showListzuzu_closure,%esi
movl $sqR_closure,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.LctV:
movl $8,116(%ebx)
.LctT:
jmp *-8(%ebx)
.LctW:
jmp *(%esi)
.size rqa_info, .-rqa_info
.data
.align 4
.align 1
rqb_closure:
.long rqb_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long rqb_srt-(rqb_info)+0
.long 0
.long 196630
rqb_info:
.Lcue:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcug
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lcui
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lcuj
.Lcuk:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $base_GHCziShow_zddmshow_closure,%esi
movl $Unique_zdfShowUnique_closure+1,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.Lcui:
movl $8,116(%ebx)
.Lcug:
jmp *-8(%ebx)
.Lcuj:
jmp *(%esi)
.size rqb_info, .-rqb_info
.section .data
.align 4
.align 1
sqO_srt:
.long base_GHCziBase_zd_closure
.long base_GHCziIORef_writeIORef_closure
.long base_GHCziBase_zdfMonadIO_closure
.long ra4_closure
.long base_GHCziNum_zdfNumInteger_closure
.data
.align 4
.align 1
sqO_closure:
.long sqO_info
.long 0
.text
.align 4,0x90
.long sqO_srt-(sqI_info)+8
.long 0
.long 65552
sqI_info:
.LcuE:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcuG
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $base_GHCziBase_zdfMonadIO_closure,-12(%ebp)
addl $-12,%ebp
jmp base_GHCziBase_return_info
.LcuG:
jmp *-8(%ebx)
.size sqI_info, .-sqI_info
.text
.align 4,0x90
.long sqO_srt-(sqS_info)+0
.long 1
.long 327697
sqS_info:
.LcuM:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcuO
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcuQ
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $sqI_info,-4(%edi)
movl 8(%esi),%eax
movl %eax,-12(%ebp)
movl $base_GHCziBase_zd_closure,%esi
leal -4(%edi),%eax
movl %eax,-16(%ebp)
addl $-16,%ebp
jmp stg_ap_pp_fast
.LcuQ:
movl $8,116(%ebx)
.LcuO:
jmp *-8(%ebx)
.size sqS_info, .-sqS_info
.text
.align 4,0x90
.long sqO_srt-(sqF_info)+16
.long 1
.long 65553
sqF_info:
.Lcv2:
leal -24(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcv4
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lcv6
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $integerzmgmp_GHCziIntegerziType_Szh_con_info,-4(%edi)
movl $1,0(%edi)
leal -3(%edi),%eax
movl %eax,-12(%ebp)
movl 8(%esi),%eax
movl %eax,-16(%ebp)
movl $stg_ap_pp_info,-20(%ebp)
movl $base_GHCziNum_zdfNumInteger_closure,-24(%ebp)
addl $-24,%ebp
jmp base_GHCziNum_zp_info
.Lcv6:
movl $8,116(%ebx)
.Lcv4:
jmp *-8(%ebx)
.size sqF_info, .-sqF_info
.text
.align 4,0x90
.long sqO_srt-(sqT_info)+4
.long 1
.long 851985
sqT_info:
.Lcve:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcvg
addl $12,%edi
cmpl 92(%ebx),%edi
ja .Lcvi
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $sqF_info,-8(%edi)
movl 8(%esi),%eax
movl %eax,0(%edi)
movl $base_GHCziIORef_writeIORef_closure,%esi
leal -8(%edi),%eax
movl %eax,-12(%ebp)
movl $ra4_closure,-16(%ebp)
addl $-16,%ebp
jmp stg_ap_pp_fast
.Lcvi:
movl $12,116(%ebx)
.Lcvg:
jmp *-8(%ebx)
.size sqT_info, .-sqT_info
.text
.align 4,0x90
.long sqO_srt-(sqO_info)+0
.long 65541
.long 0
.long 2031631
sqO_info:
.Lcvp:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcvr
addl $24,%edi
cmpl 92(%ebx),%edi
ja .Lcvt
movl $sqS_info,-20(%edi)
movl 0(%ebp),%eax
movl %eax,-12(%edi)
movl $sqT_info,-8(%edi)
movl 0(%ebp),%eax
movl %eax,0(%edi)
leal -20(%edi),%eax
movl %eax,0(%ebp)
leal -8(%edi),%eax
movl %eax,-4(%ebp)
movl $stg_ap_pp_info,-8(%ebp)
movl $base_GHCziBase_zdfMonadIO_closure,-12(%ebp)
addl $-12,%ebp
jmp base_GHCziBase_zgzg_info
.Lcvt:
movl $24,116(%ebx)
.Lcvr:
movl $sqO_closure,%esi
jmp *-4(%ebx)
.size sqO_info, .-sqO_info
.section .data
.align 4
.align 1
sqP_srt:
.long base_GHCziIORef_readIORef_closure
.long ra4_closure
.data
.align 4
.align 1
sqP_closure:
.long sqP_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long sqP_srt-(sqP_info)+0
.long 0
.long 196630
sqP_info:
.LcvL:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcvN
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcvP
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcvQ
.LcvR:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $base_GHCziIORef_readIORef_closure,%esi
movl $ra4_closure,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.LcvP:
movl $8,116(%ebx)
.LcvN:
jmp *-8(%ebx)
.LcvQ:
jmp *(%esi)
.size sqP_info, .-sqP_info
.section .data
.align 4
.align 1
ra5_srt:
.long base_GHCziBase_zdfMonadIO_closure
.long sqO_closure
.long sqP_closure
.data
.align 4
.align 1
ra5_closure:
.long ra5_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long ra5_srt-(ra5_info)+0
.long 0
.long 458774
ra5_info:
.Lcw9:
leal -24(%ebp),%eax
cmpl 84(%ebx),%eax
jb .Lcwb
addl $8,%edi
cmpl 92(%ebx),%edi
ja .Lcwd
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .Lcwe
.Lcwf:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $sqO_closure+1,-12(%ebp)
movl $sqP_closure,-16(%ebp)
movl $stg_ap_pp_info,-20(%ebp)
movl $base_GHCziBase_zdfMonadIO_closure,-24(%ebp)
addl $-24,%ebp
jmp base_GHCziBase_zgzgze_info
.Lcwd:
movl $8,116(%ebx)
.Lcwb:
jmp *-8(%ebx)
.Lcwe:
jmp *(%esi)
.size ra5_info, .-ra5_info
.section .data
.align 4
.align 1
Unique_newUnique_srt:
.long base_GHCziIO_unsafePerformIO_closure
.long ra5_closure
.data
.align 4
.align 1
.globl Unique_newUnique_closure
.type Unique_newUnique_closure, @object
Unique_newUnique_closure:
.long Unique_newUnique_info
.long 0
.text
.align 4,0x90
.long Unique_newUnique_srt-(sqQ_info)+0
.long 0
.long 196640
sqQ_info:
.Lcww:
movl $base_GHCziIO_unsafePerformIO_closure,%esi
movl $ra5_closure,0(%ebp)
jmp stg_ap_p_fast
.size sqQ_info, .-sqQ_info
.text
.align 4,0x90
.long Unique_newUnique_srt-(Unique_newUnique_info)+0
.long 65541
.long 0
.long 196623
.globl Unique_newUnique_info
.type Unique_newUnique_info, @object
Unique_newUnique_info:
.LcwA:
movl 0(%ebp),%esi
movl $sqQ_info,0(%ebp)
testl $3,%esi
jne .LcwD
jmp *(%esi)
.LcwD:
jmp sqQ_info
.size Unique_newUnique_info, .-Unique_newUnique_info
[2 of 2] Compiling Main ( hs, o )
==================== Tidy Core ====================
Result size = 26
main :: IO ()
[GblId]
main =
>>
@ IO
$fMonadIO
@ ()
@ ()
($
@ Unique.Unique
@ (IO ())
(System.IO.print @ Unique.Unique Unique.$fShowUnique)
(Unique.newUnique ()))
($
@ Unique.Unique
@ (IO ())
(System.IO.print @ Unique.Unique Unique.$fShowUnique)
(Unique.newUnique ()))
:main :: IO ()
[GblId]
:main = runMainIO @ () main
==================== Asm code ====================
.data
.align 4
.align 1
.globl __stginit_Main
.type __stginit_Main, @object
__stginit_Main:
.globl __stginit_ZCMain
.type __stginit_ZCMain, @object
__stginit_ZCMain:
.section .data
.align 4
.align 1
sAd_srt:
.long base_SystemziIO_print_closure
.long base_GHCziBase_zd_closure
.long Unique_newUnique_closure
.long Unique_zdfShowUnique_closure
.data
.align 4
.align 1
sAd_closure:
.long sAd_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long sAd_srt-(sAa_info)+8
.long 0
.long 65552
sAa_info:
.LcAu:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAw
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $Unique_newUnique_closure,%esi
movl $ghczmprim_GHCziTuple_Z0T_closure+1,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.LcAw:
jmp *-8(%ebx)
.size sAa_info, .-sAa_info
.text
.align 4,0x90
.long sAd_srt-(sAb_info)+0
.long 0
.long 589840
sAb_info:
.LcAE:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAG
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $base_SystemziIO_print_closure,%esi
movl $Unique_zdfShowUnique_closure,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.LcAG:
jmp *-8(%ebx)
.size sAb_info, .-sAb_info
.text
.align 4,0x90
.long sAd_srt-(sAd_info)+0
.long 0
.long 983062
sAd_info:
.LcAM:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcAO
addl $24,%edi
cmpl 92(%ebx),%edi
ja .LcAQ
movl $stg_CAF_BLACKHOLE_info,-20(%edi)
movl 100(%ebx),%eax
movl %eax,-16(%edi)
leal -20(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcAR
.LcAS:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -20(%edi),%eax
movl %eax,-4(%ebp)
movl $sAa_info,-12(%edi)
movl $sAb_info,-4(%edi)
movl $base_GHCziBase_zd_closure,%esi
leal -12(%edi),%eax
movl %eax,-12(%ebp)
leal -4(%edi),%eax
movl %eax,-16(%ebp)
addl $-16,%ebp
jmp stg_ap_pp_fast
.LcAQ:
movl $24,116(%ebx)
.LcAO:
jmp *-8(%ebx)
.LcAR:
jmp *(%esi)
.size sAd_info, .-sAd_info
.section .data
.align 4
.align 1
sAe_srt:
.long base_SystemziIO_print_closure
.long base_GHCziBase_zd_closure
.long Unique_newUnique_closure
.long Unique_zdfShowUnique_closure
.data
.align 4
.align 1
sAe_closure:
.long sAe_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long sAe_srt-(sA5_info)+8
.long 0
.long 65552
sA5_info:
.LcBe:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcBg
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $Unique_newUnique_closure,%esi
movl $ghczmprim_GHCziTuple_Z0T_closure+1,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.LcBg:
jmp *-8(%ebx)
.size sA5_info, .-sA5_info
.text
.align 4,0x90
.long sAe_srt-(sA6_info)+0
.long 0
.long 589840
sA6_info:
.LcBo:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcBq
movl $stg_upd_frame_info,-8(%ebp)
movl %esi,-4(%ebp)
movl $base_SystemziIO_print_closure,%esi
movl $Unique_zdfShowUnique_closure,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.LcBq:
jmp *-8(%ebx)
.size sA6_info, .-sA6_info
.text
.align 4,0x90
.long sAe_srt-(sAe_info)+0
.long 0
.long 983062
sAe_info:
.LcBw:
leal -16(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcBy
addl $24,%edi
cmpl 92(%ebx),%edi
ja .LcBA
movl $stg_CAF_BLACKHOLE_info,-20(%edi)
movl 100(%ebx),%eax
movl %eax,-16(%edi)
leal -20(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcBB
.LcBC:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -20(%edi),%eax
movl %eax,-4(%ebp)
movl $sA5_info,-12(%edi)
movl $sA6_info,-4(%edi)
movl $base_GHCziBase_zd_closure,%esi
leal -12(%edi),%eax
movl %eax,-12(%ebp)
leal -4(%edi),%eax
movl %eax,-16(%ebp)
addl $-16,%ebp
jmp stg_ap_pp_fast
.LcBA:
movl $24,116(%ebx)
.LcBy:
jmp *-8(%ebx)
.LcBB:
jmp *(%esi)
.size sAe_info, .-sAe_info
.section .data
.align 4
.align 1
Main_main_srt:
.long base_GHCziBase_zdfMonadIO_closure
.long sAd_closure
.long sAe_closure
.data
.align 4
.align 1
.globl Main_main_closure
.type Main_main_closure, @object
Main_main_closure:
.long Main_main_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long Main_main_srt-(Main_main_info)+0
.long 0
.long 458774
.globl Main_main_info
.type Main_main_info, @object
Main_main_info:
.LcBW:
leal -24(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcBY
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcC0
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcC1
.LcC2:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $sAd_closure,-12(%ebp)
movl $sAe_closure,-16(%ebp)
movl $stg_ap_pp_info,-20(%ebp)
movl $base_GHCziBase_zdfMonadIO_closure,-24(%ebp)
addl $-24,%ebp
jmp base_GHCziBase_zgzg_info
.LcC0:
movl $8,116(%ebx)
.LcBY:
jmp *-8(%ebx)
.LcC1:
jmp *(%esi)
.size Main_main_info, .-Main_main_info
.section .data
.align 4
.align 1
ZCMain_main_srt:
.long base_GHCziTopHandler_runMainIO_closure
.long Main_main_closure
.data
.align 4
.align 1
.globl ZCMain_main_closure
.type ZCMain_main_closure, @object
ZCMain_main_closure:
.long ZCMain_main_info
.long 0
.long 0
.long 0
.text
.align 4,0x90
.long ZCMain_main_srt-(ZCMain_main_info)+0
.long 0
.long 196630
.globl ZCMain_main_info
.type ZCMain_main_info, @object
ZCMain_main_info:
.LcCk:
leal -12(%ebp),%eax
cmpl 84(%ebx),%eax
jb .LcCm
addl $8,%edi
cmpl 92(%ebx),%edi
ja .LcCo
movl $stg_CAF_BLACKHOLE_info,-4(%edi)
movl 100(%ebx),%eax
movl %eax,0(%edi)
leal -4(%edi),%eax
pushl %eax
pushl %esi
pushl %ebx
call newCAF
addl $12,%esp
testl %eax,%eax
je .LcCp
.LcCq:
movl $stg_bh_upd_frame_info,-8(%ebp)
leal -4(%edi),%eax
movl %eax,-4(%ebp)
movl $base_GHCziTopHandler_runMainIO_closure,%esi
movl $Main_main_closure,-12(%ebp)
addl $-12,%ebp
jmp stg_ap_p_fast
.LcCo:
movl $8,116(%ebx)
.LcCm:
jmp *-8(%ebx)
.LcCp:
jmp *(%esi)
.size ZCMain_main_info, .-ZCMain_main_info
Linking Main ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment