================================================================================ STG syntax: a{-r5u,x-} = [] \r [$x0_s1iK] case $x0_s1iK ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-} of { -- lvs: [$x0_s1iK]; rhs lvs: []; uniq: c1pz STBase.S#{-5D,w-}{i} $x1_s1jb -> case _ccall_ a [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-})]# [$x1_s1jb] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-} of { -- lvs: [$x1_s1jb]; rhs lvs: []; uniq: c1pA STBase.StateAndInt#{-5v,w-}{i} $x2_s1jl $x3_s1ja -> let { $x4_s1jL = PrelBase.I#{-5b,w-}{i}! [$x3_s1ja]; } in let { $x5_s1jK = STBase.S#{-5D,w-}{i}! [$x2_s1jl]; } in PrelTup.(,){-62,w-}{i}! [$x4_s1jL $x5_s1jK]; }; }; b{-r5v,x-} = [] \r [$x0_s1jJ] case $x0_s1jJ ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-} of { -- lvs: [$x0_s1jJ]; rhs lvs: []; uniq: c1pB STBase.S#{-5D,w-}{i} $x1_s1kc -> case _ccall_ b [(Foreign.StateAndStablePtr#{-3J,W-} GHC.RealWorld{-3s,W-} PrelBase.Int{-3g,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-})]# [$x1_s1kc] ::Foreign.StateAndStablePtr#{-3J,W-} GHC.RealWorld{-3s,W-} PrelBase.Int{-3g,W-} of { -- lvs: [$x1_s1kc]; rhs lvs: []; uniq: c1pC Foreign.StateAndStablePtr#{-5B,w-}{i} $x2_s1km $x3_s1kb -> let { $x4_s1kO = Foreign.StablePtr{-5o,w-}{i}! [$x3_s1kb]; } in let { $x5_s1kN = STBase.S#{-5D,w-}{i}! [$x2_s1km]; } in PrelTup.(,){-62,w-}{i}! [$x4_s1kO $x5_s1kN]; }; }; c{-r5w,x-} = [] \r [$x0_s1kX] let { stg_c1oM = (False, True, False, False, True) [$x0_s1kX] \r [$x1_s1kM] case $x1_s1kM{-lvs:$x0_s1kX-} ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-} of { -- lvs: [$x1_s1kM $x0_s1kX]; rhs lvs: [$x0_s1kX]; uniq: c1pD STBase.S#{-5D,w-}{i} $x2_s1kY -> case $x0_s1kX{-lvs:$x2_s1kY-} ::Foreign.ForeignObj{-3l,W-} of { -- lvs: [$x0_s1kX $x2_s1kY]; rhs lvs: [$x2_s1kY]; uniq: c1pE Foreign.ForeignObj{-5f,w-}{i} $x3_s1lo -> case _ccall_ c [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) GHC.ForeignObj#{-3k,W-}]# [$x2_s1kY $x3_s1lo] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-} of { -- lvs: [$x2_s1kY $x3_s1lo]; rhs lvs: []; uniq: c1pF STBase.StateAndInt#{-5v,w-}{i} $x4_s1lz $x5_s1lp -> let { $x6_s1m3 = PrelBase.I#{-5b,w-}{i}! [$x5_s1lp]; } in let { $x7_s1m2 = STBase.S#{-5D,w-}{i}! [$x4_s1lz]; } in PrelTup.(,){-62,w-}{i}! [$x6_s1m3 $x7_s1m2]; }; }; }; } in stg_c1oM; d{-r5x,x-} = [] \r [$x0_s1mc] let { stg_c1oc = (False, True, False, False, True) [$x0_s1mc] \r [$x1_s1m1] case $x1_s1m1{-lvs:$x0_s1mc-} ::STBase.State{-3M,W-} GHC.RealWorld{-3s,W-} of { -- lvs: [$x1_s1m1 $x0_s1mc]; rhs lvs: [$x0_s1mc]; uniq: c1pG STBase.S#{-5D,w-}{i} $x2_s1md -> case $x0_s1mc{-lvs:$x2_s1md-} ::Foreign.StablePtr{-3w,W-} PrelBase.Int{-3g,W-} of { -- lvs: [$x0_s1mc $x2_s1md]; rhs lvs: [$x2_s1md]; uniq: c1pH Foreign.StablePtr{-5o,w-}{i} $x3_s1mD -> case _ccall_ d [(STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-}) (GHC.State#{-3L,W-} GHC.RealWorld{-3s,W-}) (GHC.StablePtr#{-3v,W-} PrelBase.Int{-3g,W-})]# [$x2_s1md $x3_s1mD] ::STBase.StateAndInt#{-3D,W-} GHC.RealWorld{-3s,W-} of { -- lvs: [$x2_s1md $x3_s1mD]; rhs lvs: []; uniq: c1pI STBase.StateAndInt#{-5v,w-}{i} $x4_s1mO $x5_s1mE -> let { $x6_s1n5 = PrelBase.I#{-5b,w-}{i}! [$x5_s1mE]; } in let { $x7_s1n6 = STBase.S#{-5D,w-}{i}! [$x4_s1mO]; } in PrelTup.(,){-62,w-}{i}! [$x6_s1n5 $x7_s1n6]; }; }; }; } in stg_c1oc; ================================================================================ Flat Abstract C: IFN_(ret_c1pz) { ED_RO_(PrelBase_IZh_con_info); ED_(STBase_SZh_static_closure); ED_RO_(PrelTup_Z40Z44Z41_inregs_info); I_ s1ja_; FB_ HEAP_CHK(0,(_FHS+1),0); { I_ _ccall_result; CALLER_SAVE_Base CALLER_SAVE_SpA CALLER_SAVE_SuA CALLER_SAVE_SpB CALLER_SAVE_SuB CALLER_SAVE_Ret CALLER_SAVE_Hp CALLER_SAVE_HpLim _ccall_result = (a()); CALLER_RESTORE_Base CALLER_RESTORE_SpA CALLER_RESTORE_SuA CALLER_RESTORE_SpB CALLER_RESTORE_SuB CALLER_RESTORE_Ret CALLER_RESTORE_Hp CALLER_RESTORE_HpLim CALLER_RESTORE_StdUpdRetVec CALLER_RESTORE_StkStub s1ja_=_ccall_result; } SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0); *Hp=(W_)(s1ja_); R4.p=STBase_SZh_static_closure; R3.p=Hp-_FHS; SpB=SpB-1; R2.d=PrelTup_Z40Z44Z41_inregs_info; GRAN_EXEC(10,2,21,22,0); JMP_(DIRECT((StgRetAddr)(SpB[1]))); FE_ } UNVECTBL(static,vtbl_c1pz,ret_c1pz) STATIC_ITBL(Test_a_info,Test_a_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0); FN_(Test_a_entry) { ED_(Test_a_closure); EF_(Test_a_fast1); FB_ ARGS_CHK_A_LOAD_NODE(1,Test_a_closure); R1.p=*SpA; SpA=SpA+1; GRAN_EXEC(5,2,1,0,0); JMP_(Test_a_fast1); FE_ } FN_(Test_a_fast1) { FB_ STK_CHK(1,0,1,0,0,0,0); SpB[1]=(W_)(RetReg); RetReg=(StgRetAddr)UNVEC(ret_c1pz,vtbl_c1pz); SpB=SpB+1; ENT_VIA_NODE(); GRAN_EXEC(3,1,1,1,0); JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p))))); FE_ } SET_STATIC_HDR(Test_a_closure,Test_a_info,0,,ED_RO_) }; IFN_(ret_c1pB) { ED_RO_(Foreign_StablePtr_con_info); ED_(STBase_SZh_static_closure); ED_RO_(PrelTup_Z40Z44Z41_inregs_info); StgStablePtr s1kb_; FB_ HEAP_CHK(0,(_FHS+1),0); { StgStablePtr _ccall_result; CALLER_SAVE_Base CALLER_SAVE_SpA CALLER_SAVE_SuA CALLER_SAVE_SpB CALLER_SAVE_SuB CALLER_SAVE_Ret CALLER_SAVE_Hp CALLER_SAVE_HpLim _ccall_result = (b()); CALLER_RESTORE_Base CALLER_RESTORE_SpA CALLER_RESTORE_SuA CALLER_RESTORE_SpB CALLER_RESTORE_SuB CALLER_RESTORE_Ret CALLER_RESTORE_Hp CALLER_RESTORE_HpLim CALLER_RESTORE_StdUpdRetVec CALLER_RESTORE_StkStub s1kb_=_ccall_result; } SET_SPEC_HDR(Hp-_FHS,Foreign_StablePtr_con_info,0,1,0); *Hp=(W_)(s1kb_); R4.p=STBase_SZh_static_closure; R3.p=Hp-_FHS; SpB=SpB-1; R2.d=PrelTup_Z40Z44Z41_inregs_info; GRAN_EXEC(10,2,21,22,0); JMP_(DIRECT((StgRetAddr)(SpB[1]))); FE_ } UNVECTBL(static,vtbl_c1pB,ret_c1pB) STATIC_ITBL(Test_b_info,Test_b_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0); FN_(Test_b_entry) { ED_(Test_b_closure); EF_(Test_b_fast1); FB_ ARGS_CHK_A_LOAD_NODE(1,Test_b_closure); R1.p=*SpA; SpA=SpA+1; GRAN_EXEC(5,2,1,0,0); JMP_(Test_b_fast1); FE_ } FN_(Test_b_fast1) { FB_ STK_CHK(1,0,1,0,0,0,0); SpB[1]=(W_)(RetReg); RetReg=(StgRetAddr)UNVEC(ret_c1pB,vtbl_c1pB); SpB=SpB+1; ENT_VIA_NODE(); GRAN_EXEC(3,1,1,1,0); JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p))))); FE_ } SET_STATIC_HDR(Test_b_closure,Test_b_info,0,,ED_RO_) }; IFN_(ret_c1pE) { ED_RO_(PrelBase_IZh_con_info); ED_(STBase_SZh_static_closure); ED_RO_(PrelTup_Z40Z44Z41_inregs_info); I_ s1lp_; FB_ HEAP_CHK(4,(_FHS+1),0); { I_ _ccall_result; StgForeignObj _ccall_arg1=ForeignObj_CLOSURE_DATA(R3.p); CALLER_SAVE_Base CALLER_SAVE_SpA CALLER_SAVE_SuA CALLER_SAVE_SpB CALLER_SAVE_SuB CALLER_SAVE_Ret CALLER_SAVE_Hp CALLER_SAVE_HpLim _ccall_result = (c((_ccall_arg1))); CALLER_RESTORE_Base CALLER_RESTORE_SpA CALLER_RESTORE_SuA CALLER_RESTORE_SpB CALLER_RESTORE_SuB CALLER_RESTORE_Ret CALLER_RESTORE_Hp CALLER_RESTORE_HpLim CALLER_RESTORE_StdUpdRetVec CALLER_RESTORE_StkStub s1lp_=_ccall_result; } SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0); *Hp=(W_)(s1lp_); R4.p=STBase_SZh_static_closure; R3.p=Hp-_FHS; SpB=SpB-1; R2.d=PrelTup_Z40Z44Z41_inregs_info; GRAN_EXEC(10,2,22,22,0); JMP_(DIRECT((StgRetAddr)(SpB[1]))); FE_ } UNVECTBL(static,vtbl_c1pE,ret_c1pE) IFN_(ret_c1pD) { FB_ RetReg=(StgRetAddr)UNVEC(ret_c1pE,vtbl_c1pE); R1.p=*SpA; SpA=SpA+1; ENT_VIA_NODE(); GRAN_EXEC(3,1,2,1,0); JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p))))); FE_ } UNVECTBL(static,vtbl_c1pD,ret_c1pD) SPEC_N_ITBL(c1oM_info,c1oM_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0); IFN_(c1oM_entry) { IF_(c1oM_fast1); FB_ ARGS_CHK_A(1); R2.p=*SpA; SpA=SpA+1; GRAN_EXEC(5,2,1,0,0); JMP_(c1oM_fast1); FE_ } IFN_(c1oM_fast1) { FB_ STK_CHK(3,1,1,0,0,0,1); SpB[1]=(W_)(RetReg); RetReg=(StgRetAddr)UNVEC(ret_c1pD,vtbl_c1pD); SpA[-1]=(P_)(R1.p[_FHS]); R1=R2; SpA=SpA-1; SpB=SpB+1; ENT_VIA_NODE(); GRAN_EXEC(5,1,2,2,0); JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p))))); FE_ } STATIC_ITBL(Test_c_info,Test_c_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0); FN_(Test_c_entry) { ED_(Test_c_closure); EF_(Test_c_fast1); FB_ ARGS_CHK_A_LOAD_NODE(1,Test_c_closure); R1.p=*SpA; SpA=SpA+1; GRAN_EXEC(5,2,1,0,0); JMP_(Test_c_fast1); FE_ } FN_(Test_c_fast1) { ID_RO_(c1oM_info); IF_(c1oM_entry); FB_ HEAP_CHK(1,(_FHS+1),0); SET_SPEC_HDR(Hp-_FHS,c1oM_info,0,1,1); *Hp=(W_)(R1.p); R1.p=Hp-_FHS; GRAN_EXEC(5,2,0,2,0); JMP_(c1oM_entry); FE_ } SET_STATIC_HDR(Test_c_closure,Test_c_info,0,,ED_RO_) }; IFN_(ret_c1pH) { ED_RO_(PrelBase_IZh_con_info); ED_(STBase_SZh_static_closure); ED_RO_(PrelTup_Z40Z44Z41_inregs_info); I_ s1mE_; FB_ HEAP_CHK(0,(_FHS+1),0); { I_ _ccall_result; StgStablePtr _ccall_arg1=R3.i; CALLER_SAVE_Base CALLER_SAVE_SpA CALLER_SAVE_SuA CALLER_SAVE_SpB CALLER_SAVE_SuB CALLER_SAVE_Ret CALLER_SAVE_Hp CALLER_SAVE_HpLim _ccall_result = (d((_ccall_arg1))); CALLER_RESTORE_Base CALLER_RESTORE_SpA CALLER_RESTORE_SuA CALLER_RESTORE_SpB CALLER_RESTORE_SuB CALLER_RESTORE_Ret CALLER_RESTORE_Hp CALLER_RESTORE_HpLim CALLER_RESTORE_StdUpdRetVec CALLER_RESTORE_StkStub s1mE_=_ccall_result; } SET_SPEC_HDR(Hp-_FHS,PrelBase_IZh_con_info,0,1,0); *Hp=(W_)(s1mE_); R4.p=STBase_SZh_static_closure; R3.p=Hp-_FHS; SpB=SpB-1; R2.d=PrelTup_Z40Z44Z41_inregs_info; GRAN_EXEC(10,2,22,22,0); JMP_(DIRECT((StgRetAddr)(SpB[1]))); FE_ } UNVECTBL(static,vtbl_c1pH,ret_c1pH) IFN_(ret_c1pG) { FB_ RetReg=(StgRetAddr)UNVEC(ret_c1pH,vtbl_c1pH); R1.p=*SpA; SpA=SpA+1; ENT_VIA_NODE(); GRAN_EXEC(3,1,2,1,0); JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p))))); FE_ } UNVECTBL(static,vtbl_c1pG,ret_c1pG) SPEC_N_ITBL(c1oc_info,c1oc_entry,StdErrorCode,1,-1,1,1,static const,IF_,0,0,0); IFN_(c1oc_entry) { IF_(c1oc_fast1); FB_ ARGS_CHK_A(1); R2.p=*SpA; SpA=SpA+1; GRAN_EXEC(5,2,1,0,0); JMP_(c1oc_fast1); FE_ } IFN_(c1oc_fast1) { FB_ STK_CHK(3,1,1,0,0,0,1); SpB[1]=(W_)(RetReg); RetReg=(StgRetAddr)UNVEC(ret_c1pG,vtbl_c1pG); SpA[-1]=(P_)(R1.p[_FHS]); R1=R2; SpA=SpA-1; SpB=SpB+1; ENT_VIA_NODE(); GRAN_EXEC(5,1,2,2,0); JMP_((P_)(ENTRY_CODE((D_)(INFO_PTR(R1.p))))); FE_ } STATIC_ITBL(Test_d_info,Test_d_entry,StdErrorCode,1,-1,STATIC_VHS,0,const,EF_,0,0,0); FN_(Test_d_entry) { ED_(Test_d_closure); EF_(Test_d_fast1); FB_ ARGS_CHK_A_LOAD_NODE(1,Test_d_closure); R1.p=*SpA; SpA=SpA+1; GRAN_EXEC(5,2,1,0,0); JMP_(Test_d_fast1); FE_ } FN_(Test_d_fast1) { ID_RO_(c1oc_info); IF_(c1oc_entry); FB_ HEAP_CHK(1,(_FHS+1),0); SET_SPEC_HDR(Hp-_FHS,c1oc_info,0,1,1); *Hp=(W_)(R1.p); R1.p=Hp-_FHS; GRAN_EXEC(5,2,0,2,0); JMP_(c1oc_entry); FE_ } SET_STATIC_HDR(Test_d_closure,Test_d_info,0,,ED_RO_) }; ghc: module version changed to 1; reason: no old .hi file