diff --git a/src/fsharp/AugmentWithHashCompare.fs b/src/fsharp/AugmentWithHashCompare.fs index a431caf4d6..aa69ea0805 100644 --- a/src/fsharp/AugmentWithHashCompare.fs +++ b/src/fsharp/AugmentWithHashCompare.fs @@ -157,10 +157,10 @@ let mkCompareTestConjuncts g m exprs = (a, b) ||> List.foldBack (fun e acc -> let nv, ne = mkCompGenLocal m "n" g.int_ty mkCompGenLet m nv e - (mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.int_ty + (mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.int_ty (mkClt g m ne (mkZero g m)) ne - (mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.int_ty + (mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.int_ty (mkCgt g m ne (mkZero g m)) ne acc))) @@ -171,7 +171,7 @@ let mkEqualsTestConjuncts g m exprs = | [h] -> h | l -> let a, b = List.frontAndBack l - List.foldBack (fun e acc -> mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.bool_ty e acc (mkFalse g m)) a b + List.foldBack (fun e acc -> mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.bool_ty e acc (mkFalse g m)) a b let mkMinimalTy (g: TcGlobals) (tcref: TyconRef) = if tcref.Deref.IsExceptionDecl then [], g.exn_ty @@ -303,9 +303,9 @@ let mkExnEquality (g: TcGlobals) exnref (exnc: Tycon) = let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) let cases = [ mkCase(DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []), - mbuilder.AddResultTarget(expr, DebugPointForTarget.No)) ] - let dflt = Some(mbuilder.AddResultTarget(mkFalse g m, DebugPointForTarget.No)) - let dtree = TDSwitch(thate, cases, dflt, m) + mbuilder.AddResultTarget(expr, DebugPointAtTarget.No)) ] + let dflt = Some(mbuilder.AddResultTarget(mkFalse g m, DebugPointAtTarget.No)) + let dtree = TDSwitch(DebugPointAtSwitch.No, thate, cases, dflt, m) mbuilder.Close(dtree, m, g.bool_ty) let expr = mkBindThatNullEquals g m thise thate expr @@ -326,9 +326,9 @@ let mkExnEqualityWithComparer g exnref (exnc: Tycon) (_thisv, thise) thatobje (t let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) let cases = [ mkCase(DecisionTreeTest.IsInst(g.exn_ty, mkAppTy exnref []), - mbuilder.AddResultTarget(expr, DebugPointForTarget.No)) ] - let dflt = mbuilder.AddResultTarget(mkFalse g m, DebugPointForTarget.No) - let dtree = TDSwitch(thate, cases, Some dflt, m) + mbuilder.AddResultTarget(expr, DebugPointAtTarget.No)) ] + let dflt = mbuilder.AddResultTarget(mkFalse g m, DebugPointAtTarget.No) + let dtree = TDSwitch(DebugPointAtSwitch.No, thate, cases, Some dflt, m) mbuilder.Close(dtree, m, g.bool_ty) let expr = mkBindThatAddr g m g.exn_ty thataddrv thatv thate expr let expr = mkIsInstConditional g m g.exn_ty thatobje thatv expr (mkFalse g m) @@ -366,19 +366,19 @@ let mkUnionCompare g tcref (tycon: Tycon) = mkCompGenLet m thisucv (mkUnionCaseProof (thise, cref, tinst, m)) (mkCompGenLet m thatucv (mkUnionCaseProof (thataddre, cref, tinst, m)) (mkCompareTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) - Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test, DebugPointForTarget.No))) + Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test, DebugPointAtTarget.No))) let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) if isNil nonNullary then mkZero g m else let cases = nonNullary |> List.map (function Some c -> c | None -> failwith "mkUnionCompare") - let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m, DebugPointForTarget.No)) - let dtree = TDSwitch(thise, cases, dflt, m) + let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m, DebugPointAtTarget.No)) + let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m) mbuilder.Close(dtree, m, g.int_ty) let expr = if ucases.Length = 1 then expr else let tagsEqTested = - mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.int_ty + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.int_ty (mkILAsmCeq g m thistage thattage) expr (mkAsmExpr ([ AI_sub ], [], [thistage; thattage], [g.int_ty], m))in @@ -427,19 +427,19 @@ let mkUnionCompareWithComparer g tcref (tycon: Tycon) (_thisv, thise) (_thatobjv (mkCompGenLet m thatucv (mkUnionCaseProof (thataddre, cref, tinst, m)) (mkCompareTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) - Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test, DebugPointForTarget.No))) + Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test, DebugPointAtTarget.No))) let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) if isNil nonNullary then mkZero g m else let cases = nonNullary |> List.map (function Some c -> c | None -> failwith "mkUnionCompare") - let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m, DebugPointForTarget.No)) - let dtree = TDSwitch(thise, cases, dflt, m) + let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkZero g m, DebugPointAtTarget.No)) + let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m) mbuilder.Close(dtree, m, g.int_ty) let expr = if ucases.Length = 1 then expr else let tagsEqTested = - mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.int_ty + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.int_ty (mkILAsmCeq g m thistage thattage) expr (mkAsmExpr ([ AI_sub ], [], [thistage; thattage], [g.int_ty], m)) @@ -487,19 +487,19 @@ let mkUnionEquality g tcref (tycon: Tycon) = (mkCompGenLet m thatucv (mkUnionCaseProof (thataddre, cref, tinst, m)) (mkEqualsTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) - Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test, DebugPointForTarget.No))) + Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget(test, DebugPointAtTarget.No))) let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) if isNil nonNullary then mkTrue g m else let cases = List.map (function Some c -> c | None -> failwith "mkUnionEquality") nonNullary - let dflt = (if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m, DebugPointForTarget.No))) - let dtree = TDSwitch(thise, cases, dflt, m) + let dflt = (if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m, DebugPointAtTarget.No))) + let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m) mbuilder.Close(dtree, m, g.bool_ty) let expr = if ucases.Length = 1 then expr else let tagsEqTested = - mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.bool_ty + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.bool_ty (mkILAsmCeq g m thistage thattage) expr (mkFalse g m) @@ -549,19 +549,19 @@ let mkUnionEqualityWithComparer g tcref (tycon: Tycon) (_thisv, thise) thatobje (mkCompGenLet m thatucv (mkUnionCaseProof (thataddre, cref, tinst, m)) (mkEqualsTestConjuncts g m (List.mapi (mkTest thisucve thatucve) rfields))) - Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget (test, DebugPointForTarget.No))) + Some (mkCase(DecisionTreeTest.UnionCase(cref, tinst), mbuilder.AddResultTarget (test, DebugPointAtTarget.No))) let nullary, nonNullary = List.partition Option.isNone (List.map mkCase ucases) if isNil nonNullary then mkTrue g m else let cases = List.map (function Some c -> c | None -> failwith "mkUnionEquality") nonNullary - let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m, DebugPointForTarget.No)) - let dtree = TDSwitch(thise, cases, dflt, m) + let dflt = if isNil nullary then None else Some (mbuilder.AddResultTarget(mkTrue g m, DebugPointAtTarget.No)) + let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m) mbuilder.Close(dtree, m, g.bool_ty) let expr = if ucases.Length = 1 then expr else let tagsEqTested = - mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.bool_ty + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.bool_ty (mkILAsmCeq g m thistage thattage) expr (mkFalse g m) @@ -648,7 +648,7 @@ let mkUnionHashWithComparer g tcref (tycon: Tycon) compe = (mkCompGenSequential m (mkValSet m (mkLocalValRef accv) (mkInt g m i)) (mkCombineHashGenerators g m (List.mapi (mkHash ucve) ucase1.RecdFields) (mkLocalValRef accv) acce)) - Some(mkCase(DecisionTreeTest.UnionCase(c1ref, tinst), mbuilder.AddResultTarget(test, DebugPointForTarget.No))) + Some(mkCase(DecisionTreeTest.UnionCase(c1ref, tinst), mbuilder.AddResultTarget(test, DebugPointAtTarget.No))) let nullary, nonNullary = ucases |> List.mapi mkCase @@ -657,8 +657,8 @@ let mkUnionHashWithComparer g tcref (tycon: Tycon) compe = let dflt = if isNil nullary then None else let tag = mkUnionCaseTagGetViaExprAddr (thise, tcref, tinst, m) - Some(mbuilder.AddResultTarget(tag, DebugPointForTarget.No)) - let dtree = TDSwitch(thise, cases, dflt, m) + Some(mbuilder.AddResultTarget(tag, DebugPointAtTarget.No)) + let dtree = TDSwitch(DebugPointAtSwitch.No, thise, cases, dflt, m) let stmt = mbuilder.Close(dtree, m, g.int_ty) let expr = mkCompGenLet m accv (mkZero g m) stmt let expr = if tycon.IsStructOrEnumTycon then expr else mkBindNullHash g m thise expr diff --git a/src/fsharp/CheckComputationExpressions.fs b/src/fsharp/CheckComputationExpressions.fs index e93ac84709..22a37e6417 100644 --- a/src/fsharp/CheckComputationExpressions.fs +++ b/src/fsharp/CheckComputationExpressions.fs @@ -945,7 +945,7 @@ let TcComputationExpression cenv env (overallTy: OverallTy) tpenv (mWhole, inter Some (trans CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill -> - translatedCtxt (mkSynCall "For" mFor [wrappedSourceExpr; SynExpr.MatchLambda (false, sourceExpr.Range, [SynMatchClause(pat, None, None, holeFill, mPat, DebugPointForTarget.Yes)], spBind, mFor) ])) ) + translatedCtxt (mkSynCall "For" mFor [wrappedSourceExpr; SynExpr.MatchLambda (false, sourceExpr.Range, [SynMatchClause(pat, None, None, holeFill, mPat, DebugPointAtTarget.Yes)], spBind, mFor) ])) ) | SynExpr.For (spBind, id, start, dir, finish, innerComp, m) -> let mFor = match spBind with DebugPointAtFor.Yes m -> m.NoteDebugPoint(RangeDebugPointKind.For) | _ -> m @@ -1119,7 +1119,7 @@ let TcComputationExpression cenv env (overallTy: OverallTy) tpenv (mWhole, inter let bindRange = match spBind with DebugPointAtBinding.Yes m -> m | _ -> rhsExpr.Range if isQuery then error(Error(FSComp.SR.tcUseMayNotBeUsedInQueries(), bindRange)) let innerCompRange = innerComp.Range - let consumeExpr = SynExpr.MatchLambda(false, innerCompRange, [SynMatchClause(pat, None, None, transNoQueryOps innerComp, innerCompRange, DebugPointForTarget.Yes)], spBind, innerCompRange) + let consumeExpr = SynExpr.MatchLambda(false, innerCompRange, [SynMatchClause(pat, None, None, transNoQueryOps innerComp, innerCompRange, DebugPointAtTarget.Yes)], spBind, innerCompRange) if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env bindRange ad "Using" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Using"), bindRange)) Some (translatedCtxt (mkSynCall "Using" bindRange [rhsExpr; consumeExpr ])) @@ -1155,9 +1155,9 @@ let TcComputationExpression cenv env (overallTy: OverallTy) tpenv (mWhole, inter if isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env bindRange ad "Bind" builderTy) then error(Error(FSComp.SR.tcRequireBuilderMethod("Bind"), bindRange)) - let consumeExpr = SynExpr.MatchLambda(false, bindRange, [SynMatchClause(pat, None, None, transNoQueryOps innerComp, innerComp.Range, DebugPointForTarget.Yes)], spBind, bindRange) + let consumeExpr = SynExpr.MatchLambda(false, bindRange, [SynMatchClause(pat, None, None, transNoQueryOps innerComp, innerComp.Range, DebugPointAtTarget.Yes)], spBind, bindRange) let consumeExpr = mkSynCall "Using" bindRange [SynExpr.Ident(id); consumeExpr ] - let consumeExpr = SynExpr.MatchLambda(false, bindRange, [SynMatchClause(pat, None, None, consumeExpr, id.idRange, DebugPointForTarget.Yes)], spBind, bindRange) + let consumeExpr = SynExpr.MatchLambda(false, bindRange, [SynMatchClause(pat, None, None, consumeExpr, id.idRange, DebugPointAtTarget.Yes)], spBind, bindRange) let rhsExpr = mkSourceExprConditional isFromSource rhsExpr // TODO: consider allowing translation to BindReturn Some(translatedCtxt (mkSynCall "Bind" bindRange [rhsExpr; consumeExpr])) @@ -1510,7 +1510,7 @@ let TcComputationExpression cenv env (overallTy: OverallTy) tpenv (mWhole, inter // Build the `BindReturn` call let dataCompPriorToOp = - let consumeExpr = SynExpr.MatchLambda(false, consumePat.Range, [SynMatchClause(consumePat, None, None, innerExpr, innerRange, DebugPointForTarget.Yes)], spBind, innerRange) + let consumeExpr = SynExpr.MatchLambda(false, consumePat.Range, [SynMatchClause(consumePat, None, None, innerExpr, innerRange, DebugPointAtTarget.Yes)], spBind, innerRange) translatedCtxt (mkSynCall bindName bindRange (bindArgs @ [consumeExpr])) match customOpInfo with @@ -1526,7 +1526,7 @@ let TcComputationExpression cenv env (overallTy: OverallTy) tpenv (mWhole, inter // Build the `Bind` call trans CompExprTranslationPass.Initial q varSpace innerComp (fun holeFill -> - let consumeExpr = SynExpr.MatchLambda(false, consumePat.Range, [SynMatchClause(consumePat, None, None, holeFill, innerRange, DebugPointForTarget.Yes)], spBind, innerRange) + let consumeExpr = SynExpr.MatchLambda(false, consumePat.Range, [SynMatchClause(consumePat, None, None, holeFill, innerRange, DebugPointAtTarget.Yes)], spBind, innerRange) translatedCtxt (mkSynCall bindName bindRange (bindArgs @ [consumeExpr]))) and convertSimpleReturnToExpr varSpace innerComp = @@ -1692,7 +1692,7 @@ let mkSeqFinally (cenv: cenv) env m genTy e1 e2 = mkCallSeqFinally cenv.g m genResultTy e1 e2 let mkSeqExprMatchClauses (pat', vspecs) innerExpr = - [TClause(pat', None, TTarget(vspecs, innerExpr, DebugPointForTarget.Yes, None), pat'.Range) ] + [TClause(pat', None, TTarget(vspecs, innerExpr, DebugPointAtTarget.Yes, None), pat'.Range) ] let compileSeqExprMatchClauses (cenv: cenv) env inputExprMark (pat: Pattern, vspecs) innerExpr inputExprOpt bindPatTy genInnerTy = let patMark = pat.Range @@ -1828,7 +1828,7 @@ let TcSequenceExpression (cenv: cenv) env tpenv comp (overallTy: OverallTy) m = let thenExpr, tpenv = tcSequenceExprBody env genOuterTy tpenv thenComp let elseComp = (match elseCompOpt with Some c -> c | None -> SynExpr.ImplicitZero mIfToThen) let elseExpr, tpenv = tcSequenceExprBody env genOuterTy tpenv elseComp - Some(mkCond spIfToThen DebugPointForTarget.Yes mIfToEndOfElseBranch genOuterTy guardExpr' thenExpr elseExpr, tpenv) + Some(mkCond spIfToThen DebugPointAtTarget.Yes mIfToEndOfElseBranch genOuterTy guardExpr' thenExpr elseExpr, tpenv) // 'let x = expr in expr' | SynExpr.LetOrUse (_, false (* not a 'use' binding *), _, _, _) -> diff --git a/src/fsharp/CheckExpressions.fs b/src/fsharp/CheckExpressions.fs index 0604513be5..eb0ebc1602 100644 --- a/src/fsharp/CheckExpressions.fs +++ b/src/fsharp/CheckExpressions.fs @@ -3449,7 +3449,7 @@ let EliminateInitializationGraphs and CheckBinding st (TBind(_, e, _)) = CheckExpr st e and CheckDecisionTree st = function - | TDSwitch(e1, csl, dflt, _) -> CheckExpr st e1; List.iter (fun (TCase(_, d)) -> CheckDecisionTree st d) csl; Option.iter (CheckDecisionTree st) dflt + | TDSwitch(_, e1, csl, dflt, _) -> CheckExpr st e1; List.iter (fun (TCase(_, d)) -> CheckDecisionTree st d) csl; Option.iter (CheckDecisionTree st) dflt | TDSuccess (es, _) -> es |> List.iter (CheckExpr st) | TDBind(bind, e) -> CheckBinding st bind; CheckDecisionTree st e @@ -5838,7 +5838,7 @@ and TcExprUndelayed cenv (overallTy: OverallTy) env tpenv (synExpr: SynExpr) = synWithClauses |> List.map (fun clause -> let (SynMatchClause(pat, optWhenExpr, arrow, _, m, _)) = clause let oneExpr = SynExpr.Const (SynConst.Int32 1, m) - SynMatchClause(pat, optWhenExpr, arrow, oneExpr, m, DebugPointForTarget.No)) + SynMatchClause(pat, optWhenExpr, arrow, oneExpr, m, DebugPointAtTarget.No)) let checkedFilterClauses, tpenv = TcMatchClauses cenv cenv.g.exn_ty (MustEqual cenv.g.int_ty) env tpenv filterClauses let checkedHandlerClauses, tpenv = TcMatchClauses cenv cenv.g.exn_ty overallTy env tpenv synWithClauses let v1, filterExpr = CompilePatternForMatchClauses cenv env mWithToLast mWithToLast true FailFilter None cenv.g.exn_ty cenv.g.int_ty checkedFilterClauses @@ -7396,7 +7396,7 @@ and TcForEachExpr cenv overallTy env tpenv (pat, enumSynExpr, bodySynExpr, mWhol let valsDefinedByMatching = ListSet.remove valEq elemVar vspecs CompilePatternForMatch cenv env enumSynExpr.Range pat.Range false IgnoreWithWarning (elemVar, [], None) - [TClause(pat, None, TTarget(valsDefinedByMatching, bodyExpr, DebugPointForTarget.Yes, None), mForLoopStart)] + [TClause(pat, None, TTarget(valsDefinedByMatching, bodyExpr, DebugPointAtTarget.Yes, None), mForLoopStart)] enumElemTy overallTy.Commit @@ -9352,15 +9352,15 @@ and TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr expr cont = match synElseExprOpt with | None -> let elseExpr = mkUnit cenv.g mIfToThen - let spElse = DebugPointForTarget.No // the fake 'unit' value gets exactly the same range as spIfToThen - let overallExpr = primMkCond spIfToThen DebugPointForTarget.Yes spElse m overallTy.Commit boolExpr thenExpr elseExpr + let spElse = DebugPointAtTarget.No // the fake 'unit' value gets exactly the same range as spIfToThen + let overallExpr = primMkCond spIfToThen DebugPointAtTarget.Yes spElse m overallTy.Commit boolExpr thenExpr elseExpr cont (overallExpr, tpenv) | Some synElseExpr -> let env = { env with eContextInfo = ContextInfo.ElseBranchResult synElseExpr.Range } // tailcall TcLinearExprs bodyChecker cenv env overallTy tpenv isCompExpr synElseExpr (fun (elseExpr, tpenv) -> - let resExpr = primMkCond spIfToThen DebugPointForTarget.Yes DebugPointForTarget.Yes m overallTy.Commit boolExpr thenExpr elseExpr + let resExpr = primMkCond spIfToThen DebugPointAtTarget.Yes DebugPointAtTarget.Yes m overallTy.Commit boolExpr thenExpr elseExpr cont (resExpr, tpenv)) | _ -> @@ -9376,14 +9376,14 @@ and TcMatchPattern cenv inputTy env tpenv (pat: SynPat, optWhenExpr: SynExpr opt let m = pat.Range let patf', (tpenv, names, _) = TcPat WarnOnUpperCase cenv env None (ValInline.Optional, permitInferTypars, noArgOrRetAttribs, false, None, false) (tpenv, Map.empty, Set.empty) inputTy pat let envinner, values, vspecMap = MakeAndPublishSimpleValsForMergedScope cenv env m names - let optWhenExpr', tpenv = + let optWhenExprR, tpenv = match optWhenExpr with | Some whenExpr -> let guardEnv = { envinner with eContextInfo = ContextInfo.PatternMatchGuard whenExpr.Range } - let whenExpr', tpenv = TcExpr cenv (MustEqual cenv.g.bool_ty) guardEnv tpenv whenExpr - Some whenExpr', tpenv + let whenExprR, tpenv = TcExpr cenv (MustEqual cenv.g.bool_ty) guardEnv tpenv whenExpr + Some whenExprR, tpenv | None -> None, tpenv - patf' (TcPatPhase2Input (values, true)), optWhenExpr', NameMap.range vspecMap, envinner, tpenv + patf' (TcPatPhase2Input (values, true)), optWhenExprR, NameMap.range vspecMap, envinner, tpenv and TcMatchClauses cenv inputTy (resultTy: OverallTy) env tpenv clauses = let mutable first = true @@ -9392,10 +9392,10 @@ and TcMatchClauses cenv inputTy (resultTy: OverallTy) env tpenv clauses = and TcMatchClause cenv inputTy (resultTy: OverallTy) env isFirst tpenv synMatchClause = let (SynMatchClause(pat, optWhenExpr, _, e, patm, spTgt)) = synMatchClause - let pat', optWhenExpr', vspecs, envinner, tpenv = TcMatchPattern cenv inputTy env tpenv (pat, optWhenExpr) + let pat', optWhenExprR, vspecs, envinner, tpenv = TcMatchPattern cenv inputTy env tpenv (pat, optWhenExpr) let resultEnv = if isFirst then envinner else { envinner with eContextInfo = ContextInfo.FollowingPatternMatchClause e.Range } let e', tpenv = TcExprThatCanBeCtorBody cenv resultTy resultEnv tpenv e - TClause(pat', optWhenExpr', TTarget(vspecs, e', spTgt, None), patm), tpenv + TClause(pat', optWhenExprR, TTarget(vspecs, e', spTgt, None), patm), tpenv and TcStaticOptimizationConstraint cenv env tpenv c = match c with @@ -10079,7 +10079,7 @@ and TcLetBinding cenv isUse env containerInfo declKind tpenv (synBinds, synBinds // Add the compilation of the pattern to the bodyExpr we get from mkCleanup let mkPatBind (bodyExpr, bodyExprTy) = let valsDefinedByMatching = ListSet.remove valEq patternInputTmp allValsDefinedByPattern - let clauses = [TClause(checkedPat2, None, TTarget(valsDefinedByMatching, bodyExpr, DebugPointForTarget.No, None), m)] + let clauses = [TClause(checkedPat2, None, TTarget(valsDefinedByMatching, bodyExpr, DebugPointAtTarget.No, None), m)] let matchx = CompilePatternForMatch cenv env m m true ThrowIncompleteMatchException (patternInputTmp, generalizedTypars, Some rhsExpr) clauses tauTy bodyExprTy let matchx = if (DeclKind.ConvertToLinearBindings declKind) then LinearizeTopMatch cenv.g altActualParent matchx else matchx matchx, bodyExprTy diff --git a/src/fsharp/FindUnsolved.fs b/src/fsharp/FindUnsolved.fs index a4d284e879..35b9724b34 100644 --- a/src/fsharp/FindUnsolved.fs +++ b/src/fsharp/FindUnsolved.fs @@ -177,7 +177,7 @@ and accDTree cenv env x = match x with | TDSuccess (es, _n) -> accExprs cenv env es | TDBind(bind, rest) -> accBind cenv env bind; accDTree cenv env rest - | TDSwitch (e, cases, dflt, m) -> accSwitch cenv env (e, cases, dflt, m) + | TDSwitch (_, e, cases, dflt, m) -> accSwitch cenv env (e, cases, dflt, m) and accSwitch cenv env (e, cases, dflt, _m) = accExpr cenv env e diff --git a/src/fsharp/IlxGen.fs b/src/fsharp/IlxGen.fs index e1cd687dee..974e3457b7 100644 --- a/src/fsharp/IlxGen.fs +++ b/src/fsharp/IlxGen.fs @@ -1852,13 +1852,13 @@ type CodeGenBuffer(m: range, | true, l -> lab2pc (n + 1) l | _ -> codeLabelToPC.[lbl] - let mutable lastSeqPoint = None + let mutable lastDebugPoint = None - // Add a nop to make way for the first sequence point. + // Add a nop to make way for the first debug point. do if mgbuf.cenv.opts.generateDebugSymbols then let doc = g.memoize_file m.FileIndex let i = FeeFeeInstr mgbuf.cenv doc - codebuf.Add i // for the FeeFee or a better sequence point + codebuf.Add i // for the FeeFee or a better debug point member _.DoPushes (pushes: Pushes) = for ty in pushes do @@ -1898,10 +1898,10 @@ type CodeGenBuffer(m: range, is |> List.iter codebuf.Add member _.GetLastDebugPoint() = - lastSeqPoint + lastDebugPoint member private _.EnsureNopBetweenDebugPoints() = - // Always add a nop between sequence points to help .NET get the stepping right + // Always add a nop between debug points to help .NET get the stepping right // Don't do this after a FeeFee marker for hidden code if (codebuf.Count > 0 && (match codebuf.[codebuf.Count-1] with @@ -1910,23 +1910,27 @@ type CodeGenBuffer(m: range, codebuf.Add(AI_nop) - member cgbuf.EmitSeqPoint src = + member cgbuf.EmitDebugPoint src = if mgbuf.cenv.opts.generateDebugSymbols then let attr = GenILSourceMarker g src let i = I_seqpoint attr hasDebugPoints <- true - // Replace the FeeFee seqpoint at the entry with a better sequence point - if codebuf.Count = 1 then - assert (match codebuf.[0] with I_seqpoint _ -> true | _ -> false) - codebuf.[0] <- i + // Replace a FeeFee seqpoint with a better debug point + let n = codebuf.Count + let isSingleFeeFee = + match codebuf.[n-1] with + | I_seqpoint sm -> (sm.Line = FeeFee mgbuf.cenv) + | _ -> false + if isSingleFeeFee then + codebuf.[n-1] <- i else cgbuf.EnsureNopBetweenDebugPoints() codebuf.Add i - // Save the last sequence point away so we can make a decision graph look consistent (i.e. reassert the sequence point at each target) - lastSeqPoint <- Some src + // Save the last debug point away so we can make a decision graph look consistent (i.e. reassert the debug point at each target) + lastDebugPoint <- Some src anyDocument <- Some attr.Document // Emit FeeFee breakpoints for hidden code, see https://blogs.msdn.microsoft.com/jmstall/2005/06/19/line-hidden-and-0xfeefee-sequence-points/ @@ -1937,9 +1941,13 @@ type CodeGenBuffer(m: range, hasDebugPoints <- true // don't emit just after another FeeFee - match codebuf.[codebuf.Count-1] with - | I_seqpoint sm when sm.Line = FeeFee mgbuf.cenv -> () - | _ -> + let n = codebuf.Count + let isSingleFeeFee = + match codebuf.[n-1] with + | I_seqpoint sm -> (sm.Line = FeeFee mgbuf.cenv) + | _ -> false + + if not isSingleFeeFee then cgbuf.EnsureNopBetweenDebugPoints() codebuf.Add i @@ -2017,11 +2025,11 @@ type CodeGenBuffer(m: range, let instrs = codebuf.ToArray() - // Fixup the first instruction to be a FeeFee sequence point if needed + // Fixup the first instruction to be a FeeFee debug point if needed let instrs = instrs |> Array.mapi (fun idx i2 -> if idx = 0 && (match i2 with AI_nop -> true | _ -> false) && anyDocument.IsSome then - // This special dummy sequence point says skip the start of the method + // This special dummy debug point says skip the start of the method hasDebugPoints <- true FeeFeeInstr mgbuf.cenv anyDocument.Value else @@ -2038,7 +2046,7 @@ type CodeGenBuffer(m: range, module CG = let EmitInstr (cgbuf: CodeGenBuffer) pops pushes i = cgbuf.EmitInstr(pops, pushes, i) let EmitInstrs (cgbuf: CodeGenBuffer) pops pushes is = cgbuf.EmitInstrs(pops, pushes, is) - let EmitSeqPoint (cgbuf: CodeGenBuffer) src = cgbuf.EmitSeqPoint src + let EmitDebugPoint (cgbuf: CodeGenBuffer) src = cgbuf.EmitDebugPoint src let GenerateDelayMark (cgbuf: CodeGenBuffer) nm = cgbuf.GenerateDelayMark nm let SetMark (cgbuf: CodeGenBuffer) m1 m2 = cgbuf.SetMark(m1, m2) let SetMarkToHere (cgbuf: CodeGenBuffer) m1 = cgbuf.SetMarkToHere m1 @@ -2137,8 +2145,8 @@ let CodeGenMethod cenv mgbuf (entryPointInfo, methodName, eenv, alreadyUsedArgs, let code = buildILCode methodName lab2pc instrs exns localDebugSpecs - // Attach a source range to the method. Only do this is it has some sequence points, because .NET 2.0/3.5 - // ILDASM has issues if you emit symbols with a source range but without any sequence points + // Attach a source range to the method. Only do this is it has some debug points, because .NET 2.0/3.5 + // ILDASM has issues if you emit symbols with a source range but without any debug points let sourceRange = if hasDebugPoints then GenPossibleILSourceMarker cenv m else None // The old union erasure phase increased maxstack by 2 since the code pushes some items, we do the same here @@ -2171,18 +2179,18 @@ let compileStateMachineExpressions = true // try (System.Environment.GetEnvironm //------------------------------------------------------------------------- type EmitDebugPointState = - /// Indicates that we need a sequence point at first opportunity. Used on entrance to a method + /// Indicates that we need a debug point at first opportunity. Used on entrance to a method /// and whenever we drop into an expression within the stepping control structure. | SPAlways - /// Indicates we are not forced to emit a sequence point + /// Indicates we are not forced to emit a debug point | SPSuppress /// Determines if any code at all will be emitted for a binding let BindingEmitsNoCode g (b: Binding) = IsFSharpValCompiledAsMethod g b.Var -/// Determines what sequence point should be emitted when generating the r.h.s of a binding. -/// For example, if the r.h.s is a lambda then no sequence point is emitted. +/// Determines what debug point should be emitted when generating the r.h.s of a binding. +/// For example, if the r.h.s is a lambda then no debug point is emitted. /// /// Returns (isSticky, sequencePointForBind, sequencePointGenerationFlagForRhsOfBind) let ComputeDebugPointForBinding g (TBind(_, e, spBind) as bind) = @@ -2194,13 +2202,13 @@ let ComputeDebugPointForBinding g (TBind(_, e, spBind) as bind) = | DebugPointAtBinding.NoneAtSticky, _ -> true, None, SPSuppress | DebugPointAtBinding.NoneAtDo, _ -> false, None, SPAlways | DebugPointAtBinding.NoneAtLet, _ -> false, None, SPSuppress - // Don't emit sequence points for lambdas. + // Don't emit debug points for lambdas. // SEQUENCE POINT REVIEW: don't emit for lazy either, nor any builder expressions, nor interface-implementing object expressions | _, (Expr.Lambda _ | Expr.TyLambda _) -> false, None, SPSuppress | DebugPointAtBinding.Yes m, _ -> false, Some m, SPSuppress -/// Determines if a sequence will be emitted when we generate the code for a binding. +/// Determines if a debug point will be emitted when we generate the code for a binding. /// /// False for Lambdas, BindingEmitsNoCode, DebugPointAtBinding.NoneAtSticky, DebugPointAtBinding.NoneAtInvisible, and DebugPointAtBinding.NoneAtLet. /// True for DebugPointAtBinding.Yes, DebugPointAtBinding.NoneAtDo. @@ -2220,8 +2228,8 @@ let BindingEmitsHiddenCode (TBind(_, e, spBind)) = | _, (Expr.Lambda _ | Expr.TyLambda _) -> true | _ -> false -/// Determines if generating the code for a compound expression will emit a sequence point as the first instruction -/// through the processing of the constituent parts. Used to prevent the generation of sequence points for +/// Determines if generating the code for a compound expression will emit a debug point as the first instruction +/// through the processing of the constituent parts. Used to prevent the generation of debug points for /// compound expressions. let rec FirstEmittedCodeWillBeDebugPoint g sp expr = match sp with @@ -2247,6 +2255,7 @@ let rec FirstEmittedCodeWillBeDebugPoint g sp expr = | DebugPointAtSequential.SuppressStmt -> FirstEmittedCodeWillBeDebugPoint g sp expr1 | DebugPointAtSequential.SuppressBoth -> false | Expr.Match (DebugPointAtBinding.Yes _, _, _, _, _, _) -> true + | Expr.Match (_, _, TDSwitch(DebugPointAtSwitch.Yes _, _, _, _, _), _, _, _) -> true | Expr.Op ((TOp.TryWith (DebugPointAtTry.Yes _, _) | TOp.TryFinally (DebugPointAtTry.Yes _, _) | TOp.For (DebugPointAtFor.Yes _, _) @@ -2256,7 +2265,7 @@ let rec FirstEmittedCodeWillBeDebugPoint g sp expr = | SPSuppress -> false -/// Suppress sequence points for some compound expressions - though not all - even if "SPAlways" is set. +/// Suppress debug points for some compound expressions - though not all - even if "SPAlways" is set. /// /// Note this is only used when FirstEmittedCodeWillBeDebugPoint is false. let EmitDebugPointForWholeExpr g sp expr = @@ -2265,44 +2274,48 @@ let EmitDebugPointForWholeExpr g sp expr = | SPAlways -> match stripExpr expr with - // In some cases, we emit sequence points for the 'whole' of a 'let' expression. + // In some cases, we emit debug points for the 'whole' of a 'let' expression. // Specifically, when - // + SPAlways (i.e. a sequence point is required as soon as meaningful) + // + SPAlways (i.e. a debug point is required as soon as meaningful) // + binding is DebugPointAtBinding.NoneAtSticky, or DebugPointAtBinding.NoneAtLet. // + not FirstEmittedCodeWillBeDebugPoint // For example if we start with // let someCode () = f x // and by inlining 'f' the expression becomes // let someCode () = (let sticky = x in y) - // then we place the sequence point for the whole TAST expression 'let sticky = x in y', i.e. textual range 'f x' in the source code, but + // then we place the debug point for the whole TAST expression 'let sticky = x in y', i.e. textual range 'f x' in the source code, but // _before_ the evaluation of 'x'. This will only happen for sticky 'let' introduced by inlining and other code generation // steps. We do _not_ do this for 'invisible' let which can be skipped. | Expr.Let (bind, _, _, _) when BindingIsInvisible bind -> false | Expr.LetRec (binds, _, _, _) when binds |> List.forall BindingIsInvisible -> false - // If the binding is a lambda then we don't emit a sequence point. + // If the binding is a lambda then we don't emit a debug point. | Expr.Let (bind, _, _, _) when BindingEmitsHiddenCode bind -> false | Expr.LetRec (binds, _, _, _) when binds |> List.forall BindingEmitsHiddenCode -> false - // If the binding is represented by a top-level generated constant value then we don't emit a sequence point. + // If the binding is represented by a top-level generated constant value then we don't emit a debug point. | Expr.Let (bind, _, _, _) when BindingEmitsNoCode g bind -> false | Expr.LetRec (binds, _, _, _) when binds |> List.forall (BindingEmitsNoCode g) -> false - // Suppress sequence points for the whole 'a;b' and do it at 'a' instead. + // Suppress debug points for the whole 'a;b' and do it at 'a' instead. | Expr.Sequential _ -> false - // Suppress sequence points at labels and gotos, it makes no sense to emit sequence points at these. We emit FeeFee instead + // Suppress debug points at labels and gotos, it makes no sense to emit debug points at these. We emit FeeFee instead | Expr.Op (TOp.Label _, _, _, _) -> false | Expr.Op (TOp.Goto _, _, _, _) -> false - // We always suppress at the whole 'match'/'try'/... expression because we do it at the individual parts. + // We suppress at 'match' with DebugPointAtBinding.NoneAtInvisible because + // it is the result of a typical 'match' compilation. For example, + // match expr with + // becomes + // let tmp = expr // generates a debug point, BEFORE tmp is evaluated + // match tmp with // a match marked with DebugPointAtBinding.NoneAtInvisible + // // decision tree accessing 'tmp' + // + // So since the 'let tmp = expr' has a debug point, then no debug point is needed for the 'match'. // - // These cases need documenting. For example, a typical 'match' gets compiled to - // let tmp = expr // generates a sequence point, BEFORE tmp is evaluated - // match tmp with // a match marked with NoDebugPointAtInvisibleLetBinding - // So since the 'let tmp = expr' has a sequence point, then no sequence point is needed for the 'match'. But the processing - // of the 'let' requests SPAlways for the body. - | Expr.Match _ -> false + // Code 'a && b' and 'a || b' gets compiled to match with DebugPointAtBinding.NoneAtSticky + | Expr.Match (DebugPointAtBinding.NoneAtInvisible, _, _, _, _, _) -> false | Expr.Op (TOp.TryWith _, _, _, _) -> false | Expr.Op (TOp.TryFinally _, _, _, _) -> false | Expr.Op (TOp.For _, _, _, _) -> false @@ -2342,7 +2355,7 @@ let rec RangeOfDebugPointForWholeExpr g expr = | Expr.Sequential (expr1, _, NormalSeq, _, _) -> RangeOfDebugPointForWholeExpr g expr1 | _ -> expr.Range -/// Used to avoid emitting multiple sequence points in decision tree generation +/// Used to avoid emitting multiple debug points in decision tree generation let DoesGenExprStartWithDebugPoint g sp expr = FirstEmittedCodeWillBeDebugPoint g sp expr || EmitDebugPointForWholeExpr g sp expr @@ -2351,7 +2364,7 @@ let ProcessDebugPointForExpr (cenv: cenv) (cgbuf: CodeGenBuffer) sp expr = let g = cenv.g if not (FirstEmittedCodeWillBeDebugPoint g sp expr) then if EmitDebugPointForWholeExpr g sp expr then - CG.EmitSeqPoint cgbuf (RangeOfDebugPointForWholeExpr g expr) + CG.EmitDebugPoint cgbuf (RangeOfDebugPointForWholeExpr g expr) elif EmitHiddenCodeMarkerForWholeExpr g sp expr then cgbuf.EmitStartOfHiddenCode() @@ -2659,12 +2672,14 @@ and GenSequel cenv cloc cgbuf sequel = | EndLocalScope _ -> failwith "EndLocalScope unexpected" | Br x -> // Emit a NOP in debug code in case the branch instruction gets eliminated - // because it is a "branch to next instruction". This prevents two unrelated sequence points + // because it is a "branch to next instruction". This prevents two unrelated debug points // (the one before the branch and the one after) being coalesced together if cgbuf.mgbuf.cenv.opts.generateDebugSymbols then cgbuf.EmitStartOfHiddenCode() CG.EmitInstr cgbuf (pop 0) Push0 AI_nop + CG.EmitInstr cgbuf (pop 0) Push0 (I_br x.CodeLabel) + | LeaveHandler (isFinally, whereToSaveResultOpt, afterHandler, hasResult) -> if hasResult then if isFinally then @@ -2676,6 +2691,7 @@ and GenSequel cenv cloc cgbuf sequel = | Some (whereToSaveResult, _) -> EmitSetLocal cgbuf whereToSaveResult CG.EmitInstr cgbuf (pop 0) Push0 (if isFinally then I_endfinally else I_leave(afterHandler.CodeLabel)) + | EndFilter -> CG.EmitInstr cgbuf (pop 1) Push0 I_endfilter ) @@ -2816,7 +2832,7 @@ and GenLinearExpr cenv cgbuf eenv sp expr sequel preSteps (contf: FakeUnit -> Fa // Process the debug point and see if there's a replacement technique to process this expression if preSteps && GenExprPreSteps cenv cgbuf eenv sp expr sequel then contf Fake else - // Compiler generated sequential executions result in suppressions of sequence points on both + // Compiler generated sequential executions result in suppressions of debug points on both // left and right of the sequence let spStmt, spExpr = (match spSeq with @@ -2846,15 +2862,15 @@ and GenLinearExpr cenv cgbuf eenv sp expr sequel preSteps (contf: FakeUnit -> Fa if preSteps && GenExprPreSteps cenv cgbuf eenv sp expr sequel then contf Fake else // This case implemented here to get a guaranteed tailcall - // Make sure we generate the sequence point outside the scope of the variable + // Make sure we generate the debug point outside the scope of the variable let startScope, endScope as scopeMarks = StartDelayedLocalScope "let" cgbuf let eenv = AllocStorageForBind cenv cgbuf scopeMarks eenv bind let spBind = GenDebugPointForBind cenv cgbuf bind GenBindingAfterDebugPoint cenv cgbuf eenv spBind bind false (Some startScope) - // Work out if we need a sequence point for the body. For any "user" binding then the body gets SPAlways. + // Work out if we need a debug point for the body. For any "user" binding then the body gets SPAlways. // For invisible compiler-generated bindings we just use "sp", unless its body is another invisible binding - // For sticky bindings arising from inlining we suppress any immediate sequence point in the body + // For sticky bindings arising from inlining we suppress any immediate debug point in the body let spBody = match bind.DebugPoint with | DebugPointAtBinding.Yes _ @@ -2871,26 +2887,12 @@ and GenLinearExpr cenv cgbuf eenv sp expr sequel preSteps (contf: FakeUnit -> Fa if preSteps && GenExprPreSteps cenv cgbuf eenv sp expr sequel then contf Fake else match spBind with - | DebugPointAtBinding.Yes m -> CG.EmitSeqPoint cgbuf m + | DebugPointAtBinding.Yes m -> CG.EmitDebugPoint cgbuf m | DebugPointAtBinding.NoneAtDo | DebugPointAtBinding.NoneAtLet | DebugPointAtBinding.NoneAtInvisible | DebugPointAtBinding.NoneAtSticky -> () - // The target of branch needs a sequence point. - // If we don't give it one it will get entirely the wrong sequence point depending on earlier codegen - // Note we're not interested in having pattern matching and decision trees reveal their inner working. - // Hence at each branch target we 'reassert' the overall sequence point that was active as we came into the match. - // - // NOTE: sadly this causes multiple sequence points to appear for the "initial" location of an if/then/else or match. - let activeSP = cgbuf.GetLastDebugPoint() - let repeatSP() = - match activeSP with - | None -> () - | Some src -> - if activeSP <> cgbuf.GetLastDebugPoint() then - CG.EmitSeqPoint cgbuf src - // First try the common cases where we don't need a join point. match tree with | TDSuccess _ -> @@ -2905,7 +2907,7 @@ and GenLinearExpr cenv cgbuf eenv sp expr sequel preSteps (contf: FakeUnit -> Fa // match-testing (dtrees) should not contribute to the stack. // Each branch-RHS (targets) may contribute to the stack, leaving it in the "stackAfterJoin" state, for the join point. // Since code is branching and joining, the cgbuf stack is maintained manually. - GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets repeatSP sequelOnBranches (contf << (fun Fake -> + GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets sequelOnBranches (contf << (fun Fake -> CG.SetMarkToHere cgbuf afterJoin //assert(cgbuf.GetCurrentStack() = stackAfterJoin) // REVIEW: Since gen_dtree* now sets stack, stack should be stackAfterJoin at this point... @@ -3816,7 +3818,7 @@ and GenTry cenv cgbuf eenv scopeMarks (e1, m, resultTy, spTry) = let g = cenv.g let sp = match spTry with - | DebugPointAtTry.Yes m -> CG.EmitSeqPoint cgbuf m; SPAlways + | DebugPointAtTry.Yes m -> CG.EmitDebugPoint cgbuf m; SPAlways | DebugPointAtTry.Body -> SPAlways | DebugPointAtTry.No -> SPSuppress @@ -3843,10 +3845,10 @@ and GenTry cenv cgbuf eenv scopeMarks (e1, m, resultTy, spTry) = let exitSequel = LeaveHandler (false, whereToSaveOpt, afterHandler, true) let eenvinner = {eenvinner with withinSEH = true; exitSequel = exitSequel} - // Generate the body of the try. In the normal case (DebugPointAtTry.Yes) we generate a sequence point + // Generate the body of the try. In the normal case (DebugPointAtTry.Yes) we generate a debug point // both on the 'try' keyword and on the start of the expression in the 'try'. For inlined code and // compiler generated 'try' blocks (i.e. DebugPointAtTry.No, used for the try/finally implicit - // in a 'use' or 'foreach'), we suppress the sequence point + // in a 'use' or 'foreach'), we suppress the debug point GenExpr cenv cgbuf eenvinner sp e1 exitSequel CG.SetMarkToHere cgbuf endTryMark let tryMarks = (startTryMark.CodeLabel, endTryMark.CodeLabel) @@ -3868,17 +3870,17 @@ and GenTryWith cenv cgbuf eenv (e1, vf: Val, ef, vh: Val, eh, m, resty, spTry, s let afterFilter = CG.GenerateDelayMark cgbuf "afterFilter" let sequelOnBranches, afterJoin, stackAfterJoin, sequelAfterJoin = GenJoinPoint cenv cgbuf "filter" eenv g.int_ty m EndFilter let eenvinner = { eenvinner with exitSequel = sequelOnBranches } - // We emit the sequence point for the 'with' keyword span on the start of the filter + // We emit the debug point for the 'with' keyword span on the start of the filter // block. However the targets of the filter block pattern matching should not get any - // sequence points (they will be 'true'/'false' values indicating if the exception has been + // debug points (they will be 'true'/'false' values indicating if the exception has been // caught or not). // - // The targets of the handler block DO get sequence points. Thus the expected behaviour + // The targets of the handler block DO get debug points. Thus the expected behaviour // for a try/with with a complex pattern is that we hit the "with" before the filter is run // and then jump to the handler for the successful catch (or continue with exception handling // if the filter fails) match spWith with - | DebugPointAtWith.Yes m -> CG.EmitSeqPoint cgbuf m + | DebugPointAtWith.Yes m -> CG.EmitDebugPoint cgbuf m | DebugPointAtWith.No -> () @@ -3888,7 +3890,7 @@ and GenTryWith cenv cgbuf eenv (e1, vf: Val, ef, vh: Val, eh, m, resty, spTry, s GenStoreVal cenv cgbuf eenvinner vf.Range vf - // Why SPSuppress? Because we do not emit a sequence point at the start of the List.filter - we've already put one on + // Why SPSuppress? Because we do not emit a debug point at the start of the List.filter - we've already put one on // the 'with' keyword above GenExpr cenv cgbuf eenvinner SPSuppress ef sequelOnBranches CG.SetMarkToHere cgbuf afterJoin @@ -3915,7 +3917,7 @@ and GenTryWith cenv cgbuf eenv (e1, vf: Val, ef, vh: Val, eh, m, resty, spTry, s let startOfHandler = CG.GenerateMark cgbuf "startOfHandler" match spWith with - | DebugPointAtWith.Yes m -> CG.EmitSeqPoint cgbuf m + | DebugPointAtWith.Yes m -> CG.EmitDebugPoint cgbuf m | DebugPointAtWith.No -> () CG.SetStack cgbuf [g.ilg.typ_Object] @@ -3941,8 +3943,8 @@ and GenTryWith cenv cgbuf eenv (e1, vf: Val, ef, vh: Val, eh, m, resty, spTry, s cgbuf.EmitStartOfHiddenCode() - (* Restore the stack and load the result *) - EmitRestoreStack cgbuf stack (* RESTORE *) + // Restore the stack and load the result + EmitRestoreStack cgbuf stack match whereToSaveOpt with | Some (whereToSave, ilResultTy) -> @@ -3966,7 +3968,7 @@ and GenTryFinally cenv cgbuf eenv (bodyExpr, handlerExpr, m, resty, spTry, spFin let sp = match spFinally with - | DebugPointAtFinally.Yes m -> CG.EmitSeqPoint cgbuf m; SPAlways + | DebugPointAtFinally.Yes m -> CG.EmitDebugPoint cgbuf m; SPAlways | DebugPointAtFinally.Body -> SPAlways | DebugPointAtFinally.No -> SPSuppress @@ -4029,7 +4031,7 @@ and GenForLoop cenv cgbuf eenv (spFor, v, e1, dir, e2, loopBody, m) sequel = let _, eenvinner = AllocLocalVal cenv cgbuf v eenvinner None (start, finish) match spFor with - | DebugPointAtFor.Yes spStart -> CG.EmitSeqPoint cgbuf spStart + | DebugPointAtFor.Yes spStart -> CG.EmitDebugPoint cgbuf spStart | DebugPointAtFor.No -> () GenExpr cenv cgbuf eenv SPSuppress e1 Continue @@ -4062,8 +4064,8 @@ and GenForLoop cenv cgbuf eenv (spFor, v, e1, dir, e2, loopBody, m) sequel = // FSharpForLoopDown: if v <> e2 - 1 then goto .inner // CSharpStyle: if v < e2 then goto .inner match spFor with - | DebugPointAtFor.Yes spStart -> CG.EmitSeqPoint cgbuf spStart - | DebugPointAtFor.No -> () //CG.EmitSeqPoint cgbuf e2.Range + | DebugPointAtFor.Yes spStart -> CG.EmitDebugPoint cgbuf spStart + | DebugPointAtFor.No -> () //CG.EmitDebugPoint cgbuf e2.Range GenGetLocalVal cenv cgbuf eenvinner e2.Range v None @@ -4096,16 +4098,16 @@ and GenWhileLoop cenv cgbuf eenv (spWhile, condExpr, bodyExpr, m) sequel = let spCondition = match spWhile with - | DebugPointAtWhile.Yes spStart -> CG.EmitSeqPoint cgbuf spStart; SPSuppress + | DebugPointAtWhile.Yes spStart -> CG.EmitDebugPoint cgbuf spStart; SPSuppress | DebugPointAtWhile.No -> SPSuppress - // SEQUENCE POINTS: Emit a sequence point to cover all of 'while e do' + // SEQUENCE POINTS: Emit a debug point to cover all of 'while e do' GenExpr cenv cgbuf eenv spCondition condExpr (CmpThenBrOrContinue (pop 1, [ I_brcmp(BI_brfalse, finish.CodeLabel) ])) GenExpr cenv cgbuf eenv SPAlways bodyExpr (DiscardThen (Br startTest)) CG.SetMarkToHere cgbuf finish - // SEQUENCE POINTS: Emit a sequence point to cover 'done' if present + // SEQUENCE POINTS: Emit a debug point to cover 'done' if present GenUnitThenSequel cenv eenv m eenv.cloc cgbuf sequel //-------------------------------------------------------------------------- @@ -4991,19 +4993,19 @@ and GenSequenceExpr |> AddNonUserCompilerGeneratedAttribs g let closeMethod = - // Note: We suppress the first sequence point in the body of this method since it is the initial state machine jump + // Note: We suppress the first debug point in the body of this method since it is the initial state machine jump let spReq = SPSuppress let ilCode = CodeGenMethodForExpr cenv cgbuf.mgbuf (spReq, [], "Close", eenvinner, 1, closeExpr, discardAndReturnVoid) mkILNonGenericVirtualMethod("Close", ILMemberAccess.Public, [], mkILReturn ILType.Void, MethodBody.IL (lazy ilCode)) let checkCloseMethod = - // Note: We suppress the first sequence point in the body of this method since it is the initial state machine jump + // Note: We suppress the first debug point in the body of this method since it is the initial state machine jump let spReq = SPSuppress let ilCode = CodeGenMethodForExpr cenv cgbuf.mgbuf (spReq, [], "get_CheckClose", eenvinner, 1, checkCloseExpr, Return) mkILNonGenericVirtualMethod("get_CheckClose", ILMemberAccess.Public, [], mkILReturn g.ilg.typ_Bool, MethodBody.IL (lazy ilCode)) let generateNextMethod = - // Note: We suppress the first sequence point in the body of this method since it is the initial state machine jump + // Note: We suppress the first debug point in the body of this method since it is the initial state machine jump let spReq = SPSuppress // the 'next enumerator' byref arg is at arg position 1 let eenvinner = eenvinner |> AddStorageForLocalVals g [ (nextEnumeratorValRef.Deref, Arg 1) ] @@ -5548,10 +5550,10 @@ and GenJoinPoint cenv cgbuf pos eenv ty m sequel = Br afterJoin, afterJoin, stackAfterJoin, sequel // Accumulate the decision graph as we go -and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets repeatSP sequel contf = +and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets sequel contf = let targetCounts = accTargetsOfDecisionTree tree [] |> List.countBy id |> Dictionary.ofList let targetNext = ref 0 // used to make sure we generate the targets in-order, postponing if necessary - GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv tree targets (targetNext, targetCounts) repeatSP (IntMap.empty()) sequel (fun targetInfos -> + GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv tree targets (targetNext, targetCounts) (IntMap.empty()) sequel (fun targetInfos -> let sortedTargetInfos = targetInfos |> Seq.sortBy (fun (KeyValue(targetIdx, _)) -> targetIdx) @@ -5574,7 +5576,7 @@ and GenPostponedDecisionTreeTargets cenv cgbuf targetInfos stackAtTargets sequel /// /// When inplabOpt is "Some inplab", we are assuming an existing branch to "inplab" and can optionally /// set inplab to point to another location if no codegen is required. -and GenDecisionTreeAndTargetsInner cenv cgbuf inplabOpt stackAtTargets eenv tree targets targetCounts repeatSP targetInfos sequel (contf: Zmap<_,_> -> FakeUnit) = +and GenDecisionTreeAndTargetsInner cenv cgbuf inplabOpt stackAtTargets eenv tree targets targetCounts targetInfos sequel (contf: Zmap<_,_> -> FakeUnit) = CG.SetStack cgbuf stackAtTargets // Set the expected initial stack. match tree with | TDBind(bind, rest) -> @@ -5587,18 +5589,24 @@ and GenDecisionTreeAndTargetsInner cenv cgbuf inplabOpt stackAtTargets eenv tree // we effectively lose an EndLocalScope for all dtrees that go to the same target // So we just pretend that the variable goes out of scope here. CG.SetMarkToHere cgbuf endScope - GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv rest targets targetCounts repeatSP targetInfos sequel contf + GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv rest targets targetCounts targetInfos sequel contf | TDSuccess(es, targetIdx) -> - let targetInfos, genTargetInfoOpt = GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targets targetCounts repeatSP targetInfos sequel + let targetInfos, genTargetInfoOpt = GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targets targetCounts targetInfos sequel match genTargetInfoOpt with | Some (eenvAtTarget, spExprAtTarget, exprAtTarget, sequelAtTarget) -> GenLinearExpr cenv cgbuf eenvAtTarget spExprAtTarget exprAtTarget sequelAtTarget true (fun Fake -> contf targetInfos) | _ -> contf targetInfos - | TDSwitch(e, cases, dflt, m) -> - GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases dflt m targets targetCounts repeatSP targetInfos sequel contf + | TDSwitch(sp, e, cases, dflt, m) -> + + // Emit the debug point + match sp with + | DebugPointAtSwitch.Yes dpm -> CG.EmitDebugPoint cgbuf dpm + | DebugPointAtSwitch.No -> () + + GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases dflt m targets targetCounts targetInfos sequel contf and GetTarget (targets:_[]) n = if n >= targets.Length then failwith "GetTarget: target not found in decision tree" @@ -5607,12 +5615,12 @@ and GetTarget (targets:_[]) n = /// Generate a success node of a decision tree, binding the variables and going to the target /// If inplabOpt is present, this label must get set to the first logical place to execute. /// For example, if no variables get bound this can just be set to jump straight to the target. -and GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targets (targetNext: int ref, targetCounts: Dictionary) repeatSP targetInfos sequel = +and GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targets (targetNext: int ref, targetCounts: Dictionary) targetInfos sequel = let (TTarget(vs, successExpr, spTarget, flags)) = GetTarget targets targetIdx match IntMap.tryFind targetIdx targetInfos with | Some (targetInfo, isTargetPostponed) -> - let (targetMarkBeforeBinds, targetMarkAfterBinds: Mark, eenvAtTarget, _, _, _, _, _, _, _, _) = targetInfo + let (targetMarkBeforeBinds, targetMarkAfterBinds: Mark, eenvAtTarget, _, _, _, _, _, _, _) = targetInfo // We have encountered this target before. See if we should generate it now let targetCount = targetCounts.[targetIdx] @@ -5626,7 +5634,7 @@ and GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx cgbuf.SetMarkOrEmitBranchIfNecessary (inplabOpt, targetMarkBeforeBinds) else cgbuf.SetMarkToHereIfNecessary inplabOpt - repeatSP() + cgbuf.EmitStartOfHiddenCode() (vs, es) ||> List.iter2 (fun v e -> @@ -5668,7 +5676,7 @@ and GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx |||> List.zip3 |> List.choose (fun (v, e, flag) -> if flag then None else Some (mkInvisibleBind v e)) let eenvAtTarget = AllocStorageForBinds cenv cgbuf scopeMarks eenv binds - let targetInfo = (targetMarkBeforeBinds, targetMarkAfterBinds, eenvAtTarget, successExpr, spTarget, repeatSP, vs, es, flags, startScope, endScope) + let targetInfo = (targetMarkBeforeBinds, targetMarkAfterBinds, eenvAtTarget, successExpr, spTarget, vs, es, flags, startScope, endScope) let targetCount = targetCounts.[targetIdx] @@ -5694,22 +5702,11 @@ and GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targetInfos, genTargetInfoOpt and GenDecisionTreeTarget cenv cgbuf stackAtTargets targetInfo sequel = - let targetMarkBeforeBinds, targetMarkAfterBinds, eenvAtTarget, successExpr, spTarget, repeatSP, vs, es, flags, startScope, endScope = targetInfo + let targetMarkBeforeBinds, targetMarkAfterBinds, eenvAtTarget, successExpr, spTarget, vs, es, flags, startScope, endScope = targetInfo CG.SetMarkToHere cgbuf targetMarkBeforeBinds - let spExpr = (match spTarget with DebugPointForTarget.Yes -> SPAlways | DebugPointForTarget.No _ -> SPSuppress) + let spExpr = (match spTarget with DebugPointAtTarget.Yes -> SPAlways | DebugPointAtTarget.No _ -> SPSuppress) - // Repeat the sequence point to make sure each target branch has some sequence point (instead of inheriting - // a random sequence point from the previously generated IL code from the previous block. See comment on - // repeatSP() above. - // - // Only repeat the sequence point if we really have to, i.e. if the target expression doesn't start with a - // sequence point anyway - if isNil vs && DoesGenExprStartWithDebugPoint cenv.g spExpr successExpr then - () - else - match spTarget with - | DebugPointForTarget.Yes -> repeatSP() - | DebugPointForTarget.No -> cgbuf.EmitStartOfHiddenCode() + cgbuf.EmitStartOfHiddenCode() CG.SetMarkToHere cgbuf startScope let binds = mkInvisibleBinds vs es @@ -5718,22 +5715,17 @@ and GenDecisionTreeTarget cenv cgbuf stackAtTargets targetInfo sequel = CG.SetStack cgbuf stackAtTargets (eenvAtTarget, spExpr, successExpr, (EndLocalScope(sequel, endScope))) -and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defaultTargetOpt switchm targets targetCounts repeatSP targetInfos sequel contf = +and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defaultTargetOpt switchm targets targetCounts targetInfos sequel contf = let g = cenv.g let m = e.Range cgbuf.SetMarkToHereIfNecessary inplabOpt - repeatSP() + cgbuf.EmitStartOfHiddenCode() match cases with // optimize a test against a boolean value, i.e. the all-important if-then-else | TCase(DecisionTreeTest.Const(Const.Bool b), successTree) :: _ -> let failureTree = (match defaultTargetOpt with None -> cases.Tail.Head.CaseTree | Some d -> d) - GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e None false eenv (if b then successTree else failureTree) (if b then failureTree else successTree) targets targetCounts repeatSP targetInfos sequel contf - - // // Remove a single test for a union case . Union case tests are always exa - //| [ TCase(DecisionTreeTest.UnionCase _, successTree) ] when (defaultTargetOpt.IsNone) -> - // GenDecisionTreeAndTargetsInner cenv cgbuf inplabOpt stackAtTargets eenv successTree targets repeatSP targetInfos sequel - // //GenDecisionTree cenv eenv.cloc cgbuf stackAtTargets e (Some (pop 1, Push [g.ilg.typ_Bool], Choice1Of2 (avoidHelpers, cuspec, idx))) eenv successTree failureTree targets repeatSP targetInfos sequel + GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e None false eenv (if b then successTree else failureTree) (if b then failureTree else successTree) targets targetCounts targetInfos sequel contf // Optimize a single test for a union case to an "isdata" test - much // more efficient code, and this case occurs in the generated equality testers where perf is important @@ -5746,7 +5738,7 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau let idx = c.Index let avoidHelpers = entityRefInThisAssembly g.compilingFslib c.TyconRef let tester = (Some (pop 1, Push [g.ilg.typ_Bool], Choice1Of2 (avoidHelpers, cuspec, idx))) - GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e tester false eenv successTree failureTree targets targetCounts repeatSP targetInfos sequel contf + GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e tester false eenv successTree failureTree targets targetCounts targetInfos sequel contf // Use GenDecisionTreeTest to generate a single test for null (when no box required) where the success // is going to the immediate first node in the tree @@ -5757,7 +5749,7 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau match defaultTargetOpt with | None -> rest.Head.CaseTree | Some tg -> tg - GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e None true eenv successTree failureTree targets targetCounts repeatSP targetInfos sequel contf + GenDecisionTreeTest cenv eenv.cloc cgbuf stackAtTargets e None true eenv successTree failureTree targets targetCounts targetInfos sequel contf | _ -> let caseLabels = List.map (fun _ -> CG.GenerateDelayMark cgbuf "switch_case") cases @@ -5788,7 +5780,7 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau BI_brtrue | _ -> failwith "internal error: GenDecisionTreeSwitch" CG.EmitInstr cgbuf (pop 1) Push0 (I_brcmp (bi, (List.head caseLabels).CodeLabel)) - GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets targetCounts repeatSP targetInfos sequel caseLabels cases contf + GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets targetCounts targetInfos sequel caseLabels cases contf | DecisionTreeTest.ActivePatternCase _ -> error(InternalError("internal error in codegen: DecisionTreeTest.ActivePatternCase", switchm)) | DecisionTreeTest.UnionCase (hdc, tyargs) -> @@ -5804,7 +5796,7 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau let avoidHelpers = entityRefInThisAssembly g.compilingFslib hdc.TyconRef EraseUnions.emitDataSwitch g.ilg (UnionCodeGen cgbuf) (avoidHelpers, cuspec, dests) CG.EmitInstrs cgbuf (pop 1) Push0 [ ] // push/pop to match the line above - GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets targetCounts repeatSP targetInfos sequel caseLabels cases contf + GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets targetCounts targetInfos sequel caseLabels cases contf | DecisionTreeTest.Const c -> GenExpr cenv cgbuf eenv SPSuppress e Continue @@ -5847,22 +5839,22 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau CG.EmitInstr cgbuf (pop 1) Push0 (I_switch destinationLabels) else error(InternalError("non-dense integer matches not implemented in codegen - these should have been removed by the pattern match compiler", switchm)) - GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets targetCounts repeatSP targetInfos sequel caseLabels cases contf + GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets targetCounts targetInfos sequel caseLabels cases contf | _ -> error(InternalError("these matches should never be needed", switchm)) | DecisionTreeTest.Error m -> error(InternalError("Trying to compile error recovery branch", m)) -and GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets targetCounts repeatSP targetInfos sequel caseLabels cases (contf: Zmap<_,_> -> FakeUnit) = +and GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets targetCounts targetInfos sequel caseLabels cases (contf: Zmap<_,_> -> FakeUnit) = match defaultTargetOpt with | Some defaultTarget -> - GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv defaultTarget targets targetCounts repeatSP targetInfos sequel (fun targetInfos -> - GenDecisionTreeCases cenv cgbuf stackAtTargets eenv None targets targetCounts repeatSP targetInfos sequel caseLabels cases contf + GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv defaultTarget targets targetCounts targetInfos sequel (fun targetInfos -> + GenDecisionTreeCases cenv cgbuf stackAtTargets eenv None targets targetCounts targetInfos sequel caseLabels cases contf ) | None -> match caseLabels, cases with | caseLabel :: caseLabelsTail, TCase(_, caseTree) :: casesTail -> - GenDecisionTreeAndTargetsInner cenv cgbuf (Some caseLabel) stackAtTargets eenv caseTree targets targetCounts repeatSP targetInfos sequel (fun targetInfos -> - GenDecisionTreeCases cenv cgbuf stackAtTargets eenv None targets targetCounts repeatSP targetInfos sequel caseLabelsTail casesTail contf + GenDecisionTreeAndTargetsInner cenv cgbuf (Some caseLabel) stackAtTargets eenv caseTree targets targetCounts targetInfos sequel (fun targetInfos -> + GenDecisionTreeCases cenv cgbuf stackAtTargets eenv None targets targetCounts targetInfos sequel caseLabelsTail casesTail contf ) | _ -> contf targetInfos @@ -5870,7 +5862,7 @@ and GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets // Used for the peephole optimization below and (|BoolExpr|_|) = function Expr.Const (Const.Bool b1, _, _) -> Some b1 | _ -> None -and GenDecisionTreeTest cenv cloc cgbuf stackAtTargets e tester isNullTest eenv successTree failureTree targets targetCounts repeatSP targetInfos sequel contf = +and GenDecisionTreeTest cenv cloc cgbuf stackAtTargets e tester isNullTest eenv successTree failureTree targets targetCounts targetInfos sequel contf = let g = cenv.g match successTree, failureTree with @@ -5919,8 +5911,8 @@ and GenDecisionTreeTest cenv cloc cgbuf stackAtTargets e tester isNullTest eenv let success = CG.GenerateDelayMark cgbuf "testSuccess" let testForSuccess = if isNullTest then BI_brfalse else BI_brtrue GenExpr cenv cgbuf eenv SPSuppress e (CmpThenBrOrContinue(pop 1, [ I_brcmp (testForSuccess, success.CodeLabel) ])) - GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv failureTree targets targetCounts repeatSP targetInfos sequel (fun targetInfos -> - GenDecisionTreeAndTargetsInner cenv cgbuf (Some success) stackAtTargets eenv successTree targets targetCounts repeatSP targetInfos sequel contf + GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv failureTree targets targetCounts targetInfos sequel (fun targetInfos -> + GenDecisionTreeAndTargetsInner cenv cgbuf (Some success) stackAtTargets eenv successTree targets targetCounts targetInfos sequel contf ) | _ -> @@ -5931,8 +5923,8 @@ and GenDecisionTreeTest cenv cloc cgbuf stackAtTargets e tester isNullTest eenv let failure = CG.GenerateDelayMark cgbuf "testFailure" let testForFailure = if isNullTest then BI_brtrue else BI_brfalse GenExpr cenv cgbuf eenv SPSuppress e (CmpThenBrOrContinue(pop 1, [ I_brcmp (testForFailure, failure.CodeLabel) ])) - GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv successTree targets targetCounts repeatSP targetInfos sequel (fun targetInfos -> - GenDecisionTreeAndTargetsInner cenv cgbuf (Some failure) stackAtTargets eenv failureTree targets targetCounts repeatSP targetInfos sequel contf + GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv successTree targets targetCounts targetInfos sequel (fun targetInfos -> + GenDecisionTreeAndTargetsInner cenv cgbuf (Some failure) stackAtTargets eenv failureTree targets targetCounts targetInfos sequel contf ) // Turn 'isdata' tests that branch into EI_brisdata tests @@ -5940,8 +5932,8 @@ and GenDecisionTreeTest cenv cloc cgbuf stackAtTargets e tester isNullTest eenv let failure = CG.GenerateDelayMark cgbuf "testFailure" GenExpr cenv cgbuf eenv SPSuppress e (CmpThenBrOrContinue(pop 1, EraseUnions.mkBrIsData g.ilg false (avoidHelpers, cuspec, idx, failure.CodeLabel))) - GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv successTree targets targetCounts repeatSP targetInfos sequel (fun targetInfos -> - GenDecisionTreeAndTargetsInner cenv cgbuf (Some failure) stackAtTargets eenv failureTree targets targetCounts repeatSP targetInfos sequel contf + GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv successTree targets targetCounts targetInfos sequel (fun targetInfos -> + GenDecisionTreeAndTargetsInner cenv cgbuf (Some failure) stackAtTargets eenv failureTree targets targetCounts targetInfos sequel contf ) | Some (pops, pushes, i) -> @@ -5952,8 +5944,8 @@ and GenDecisionTreeTest cenv cloc cgbuf stackAtTargets e tester isNullTest eenv | Choice2Of2 i -> CG.EmitInstr cgbuf pops pushes i CG.EmitInstr cgbuf (pop 1) Push0 (I_brcmp (BI_brfalse, failure.CodeLabel)) - GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv successTree targets targetCounts repeatSP targetInfos sequel (fun targetInfos -> - GenDecisionTreeAndTargetsInner cenv cgbuf (Some failure) stackAtTargets eenv failureTree targets targetCounts repeatSP targetInfos sequel contf + GenDecisionTreeAndTargetsInner cenv cgbuf None stackAtTargets eenv successTree targets targetCounts targetInfos sequel (fun targetInfos -> + GenDecisionTreeAndTargetsInner cenv cgbuf (Some failure) stackAtTargets eenv failureTree targets targetCounts targetInfos sequel contf ) /// Generate fixups for letrec bindings @@ -6033,7 +6025,7 @@ and GenLetRec cenv cgbuf eenv (binds, body, m) sequel = and GenDebugPointForBind cenv cgbuf bind = let _, pt, sp = ComputeDebugPointForBinding cenv.g bind - pt |> Option.iter (CG.EmitSeqPoint cgbuf) + pt |> Option.iter (CG.EmitDebugPoint cgbuf) sp and GenBinding cenv cgbuf eenv (bind: Binding) (isStateVar: bool) = @@ -7505,7 +7497,7 @@ and GenImplFile cenv (mgbuf: AssemblyBuilder) mainInfoOpt eenv (implFile: TypedI let doesSomething = CheckCodeDoesSomething topCode.Code // Make a FEEFEE instruction to mark hidden code regions - // We expect the first instruction to be a sequence point when generating debug symbols + // We expect the first instruction to be a debug point when generating debug symbols let feefee, seqpt = if topInstrs.Length > 1 then match topInstrs.[0] with diff --git a/src/fsharp/InnerLambdasToTopLevelFuncs.fs b/src/fsharp/InnerLambdasToTopLevelFuncs.fs index 6b08832a7e..36f6e8bd08 100644 --- a/src/fsharp/InnerLambdasToTopLevelFuncs.fs +++ b/src/fsharp/InnerLambdasToTopLevelFuncs.fs @@ -1283,7 +1283,7 @@ module Pass4_RewriteAssembly = let bind, z = TransBindingRhs penv z bind let rest, z = TransDecisionTree penv z rest TDBind(bind, rest), z - | TDSwitch (e, cases, dflt, m) -> + | TDSwitch (sp, e, cases, dflt, m) -> let e, z = TransExpr penv z e let TransDecisionTreeCase penv z (TCase (discrim, dtree)) = let dtree, z = TransDecisionTree penv z dtree @@ -1291,7 +1291,7 @@ module Pass4_RewriteAssembly = let cases, z = List.mapFold (TransDecisionTreeCase penv) z cases let dflt, z = Option.mapFold (TransDecisionTree penv) z dflt - TDSwitch (e, cases, dflt, m), z + TDSwitch (sp, e, cases, dflt, m), z and TransDecisionTreeTarget penv z (TTarget(vs, e, spTarget, flags)) = let z = EnterInner z diff --git a/src/fsharp/LowerCallsAndSeqs.fs b/src/fsharp/LowerCallsAndSeqs.fs index 8d3fb8c288..82cdbd2c23 100644 --- a/src/fsharp/LowerCallsAndSeqs.fs +++ b/src/fsharp/LowerCallsAndSeqs.fs @@ -683,22 +683,24 @@ let ConvertSequenceExprToObject g amap overallExpr = // A utility to add a jump table to the three generated methods let addJumpTable isDisposal expr = let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) - let mkGotoLabelTarget lab = mbuilder.AddResultTarget(Expr.Op (TOp.Goto lab, [], [], m), DebugPointForTarget.No) + let mkGotoLabelTarget lab = mbuilder.AddResultTarget(Expr.Op (TOp.Goto lab, [], [], m), DebugPointAtTarget.No) let dtree = - TDSwitch(pcExpr, - [ - // Add an empty disposal action for the initial state (pc = 0) - if isDisposal then - yield mkCase(DecisionTreeTest.Const(Const.Int32 pcInit), mkGotoLabelTarget noDisposeContinuationLabel) - - // Yield one target for each PC, where the action of the target is to goto the appropriate label - for pc in pcs do - yield mkCase(DecisionTreeTest.Const(Const.Int32 pc), mkGotoLabelTarget pc2lab.[pc]) - - // Yield one target for the 'done' program counter, where the action of the target is to continuation label - yield mkCase(DecisionTreeTest.Const(Const.Int32 pcDone), mkGotoLabelTarget noDisposeContinuationLabel) ], - Some(mkGotoLabelTarget pc2lab.[pcInit]), - m) + TDSwitch( + DebugPointAtSwitch.No, + pcExpr, + [ + // Add an empty disposal action for the initial state (pc = 0) + if isDisposal then + yield mkCase(DecisionTreeTest.Const(Const.Int32 pcInit), mkGotoLabelTarget noDisposeContinuationLabel) + + // Yield one target for each PC, where the action of the target is to goto the appropriate label + for pc in pcs do + yield mkCase(DecisionTreeTest.Const(Const.Int32 pc), mkGotoLabelTarget pc2lab.[pc]) + + // Yield one target for the 'done' program counter, where the action of the target is to continuation label + yield mkCase(DecisionTreeTest.Const(Const.Int32 pcDone), mkGotoLabelTarget noDisposeContinuationLabel) ], + Some(mkGotoLabelTarget pc2lab.[pcInit]), + m) let table = mbuilder.Close(dtree, m, g.int_ty) mkCompGenSequential m table (mkLabelled m initLabel expr) @@ -750,12 +752,13 @@ let ConvertSequenceExprToObject g amap overallExpr = // DONE_DISPOSE: let whileLoop = let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) - let addResultTarget e = mbuilder.AddResultTarget(e, DebugPointForTarget.No) + let addResultTarget e = mbuilder.AddResultTarget(e, DebugPointAtTarget.No) let dtree = - TDSwitch(pcExpr, - [ mkCase((DecisionTreeTest.Const(Const.Int32 pcDone)), addResultTarget (Expr.Op (TOp.Goto doneDisposeLabel, [], [], m)) ) ], - Some (addResultTarget (mkUnit g m)), - m) + TDSwitch(DebugPointAtSwitch.No, + pcExpr, + [ mkCase((DecisionTreeTest.Const(Const.Int32 pcDone)), addResultTarget (Expr.Op (TOp.Goto doneDisposeLabel, [], [], m)) ) ], + Some (addResultTarget (mkUnit g m)), + m) let pcIsEndStateComparison = mbuilder.Close(dtree, m, g.unit_ty) mkLabelled m startLabel (mkCompGenSequential m diff --git a/src/fsharp/LowerStateMachines.fs b/src/fsharp/LowerStateMachines.fs index 42a067819c..4a022b2cb6 100644 --- a/src/fsharp/LowerStateMachines.fs +++ b/src/fsharp/LowerStateMachines.fs @@ -91,7 +91,7 @@ let RepresentBindingAsStateVar g (bind: Binding) (resBody: StateMachineConversio // Within all resumable code, a return value of 'true' indicates success/completion path, when we can clear // state machine locals. (if typeEquiv g (tyOfExpr g generateBody) g.bool_ty then - mkCond DebugPointAtBinding.NoneAtInvisible DebugPointForTarget.No m g.bool_ty generateBody + mkCond DebugPointAtBinding.NoneAtInvisible DebugPointAtTarget.No m g.bool_ty generateBody (mkCompGenSequential m (mkValSet m vref (mkDefault (m, vref.Type))) (mkTrue g m)) @@ -413,15 +413,17 @@ type LowerStateMachine(g: TcGlobals) = else let initLabel = generateCodeLabel() let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m ) - let mkGotoLabelTarget lab = mbuilder.AddResultTarget(Expr.Op (TOp.Goto lab, [], [], m), DebugPointForTarget.No) + let mkGotoLabelTarget lab = mbuilder.AddResultTarget(Expr.Op (TOp.Goto lab, [], [], m), DebugPointAtTarget.No) let dtree = - TDSwitch(pcExpr, - [ // Yield one target for each PC, where the action of the target is to goto the appropriate label - for pc in pcs do - yield mkCase(DecisionTreeTest.Const(Const.Int32 pc), mkGotoLabelTarget pc2lab.[pc]) ], - // The default is to go to pcInit - Some(mkGotoLabelTarget initLabel), - m) + TDSwitch( + DebugPointAtSwitch.No, + pcExpr, + [ // Yield one target for each PC, where the action of the target is to goto the appropriate label + for pc in pcs do + yield mkCase(DecisionTreeTest.Const(Const.Int32 pc), mkGotoLabelTarget pc2lab.[pc]) ], + // The default is to go to pcInit + Some(mkGotoLabelTarget initLabel), + m) let table = mbuilder.Close(dtree, m, g.int_ty) mkCompGenSequential m table (mkLabelled m initLabel expr) @@ -537,7 +539,7 @@ type LowerStateMachine(g: TcGlobals) = let m = someBranchExpr.Range let recreate reenterLabOpt e1 e2 = let lab = (match reenterLabOpt with Some l -> l | _ -> generateCodeLabel()) - mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m (tyOfExpr g noneBranchExpr) (mkFalse g m) (mkLabelled m lab e1) e2 + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m (tyOfExpr g noneBranchExpr) (mkFalse g m) (mkLabelled m lab e1) e2 { phase1 = recreate None resNone.phase1 resSome.phase1 phase2 = (fun ctxt -> let generate2 = resSome.phase2 ctxt diff --git a/src/fsharp/MethodCalls.fs b/src/fsharp/MethodCalls.fs index 691e4eb18c..0f037a31c3 100644 --- a/src/fsharp/MethodCalls.fs +++ b/src/fsharp/MethodCalls.fs @@ -1791,7 +1791,7 @@ module ProvidedMethodCalls = let testExpr = exprToExpr test let ifTrueExpr = exprToExpr thenBranch let ifFalseExpr = exprToExpr elseBranch - let te = mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m (tyOfExpr g ifTrueExpr) testExpr ifTrueExpr ifFalseExpr + let te = mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m (tyOfExpr g ifTrueExpr) testExpr ifTrueExpr ifFalseExpr None, (te, tyOfExpr g te) | ProvidedVarExpr providedVar -> let _, vTe = varToExpr (exprType.PApply((fun _ -> providedVar), m)) diff --git a/src/fsharp/Optimizer.fs b/src/fsharp/Optimizer.fs index 46b0557a87..878495e08d 100644 --- a/src/fsharp/Optimizer.fs +++ b/src/fsharp/Optimizer.fs @@ -1486,13 +1486,13 @@ let TryEliminateBinding cenv _env (TBind(vspec1, e1, spBind)) e2 _m = Some (Expr.Sequential(invoke, rest, NormalSeq, sp, m)) // Immediate consumption of value by a pattern match 'let x = e in match x with ...' - | Expr.Match (spMatch, _exprm, TDSwitch(Expr.Val (VRefLocal vspec2, _, _), cases, dflt, _), targets, m, ty2) + | Expr.Match (spMatch, _exprm, TDSwitch(sp, Expr.Val (VRefLocal vspec2, _, _), cases, dflt, _), targets, m, ty2) when (valEq vspec1 vspec2 && let fvs = accFreeInTargets CollectLocals targets (accFreeInSwitchCases CollectLocals cases dflt emptyFreeVars) not (Zset.contains vspec1 fvs.FreeLocals)) -> let spMatch = spBind.Combine spMatch - Some (Expr.Match (spMatch, e1.Range, TDSwitch(e1, cases, dflt, m), targets, m, ty2)) + Some (Expr.Match (spMatch, e1.Range, TDSwitch(sp, e1, cases, dflt, m), targets, m, ty2)) // Immediate use of value as part of an application. 'let f = e in f ...' and 'let x = e in f ... x ...' // Note functions are evaluated before args @@ -1541,8 +1541,8 @@ let rec (|KnownValApp|_|) expr = /// check single case with bool const. let (|TDBoolSwitch|_|) dtree = match dtree with - | TDSwitch( expr, [TCase (DecisionTreeTest.Const(Const.Bool testBool), caseTree )], Some defaultTree, range) -> - Some (expr, testBool, caseTree, defaultTree, range) + | TDSwitch(sp, expr, [TCase (DecisionTreeTest.Const(Const.Bool testBool), caseTree )], Some defaultTree, range) -> + Some (sp, expr, testBool, caseTree, defaultTree, range) | _ -> None @@ -1556,7 +1556,7 @@ let (|ConstantBoolTarget|_|) target = /// apart from one branch which defers to another expression let rec CountBoolLogicTree (targets: DecisionTreeTarget[], costOuterCaseTree, costOuterDefaultTree, testBool as data) tree = match tree with - | TDSwitch (_expr, [case], Some defaultTree, _range) -> + | TDSwitch (_sp, _expr, [case], Some defaultTree, _range) -> let tc1,ec1 = CountBoolLogicTree data case.CaseTree let tc2, ec2 = CountBoolLogicTree data defaultTree tc1 + tc2, ec1 + ec2 @@ -1572,14 +1572,14 @@ let rec CountBoolLogicTree (targets: DecisionTreeTarget[], costOuterCaseTree, co /// depending on whether the target result was true/false let rec RewriteBoolLogicTree (targets: DecisionTreeTarget[], outerCaseTree, outerDefaultTree, testBool as data) tree = match tree with - | TDSwitch (expr, cases, defaultTree, range) -> + | TDSwitch (sp, expr, cases, defaultTree, range) -> let cases2 = cases |> List.map (RewriteBoolLogicCase data) let defaultTree2 = defaultTree |> Option.map (RewriteBoolLogicTree data) - TDSwitch (expr, cases2, defaultTree2, range) + TDSwitch (sp, expr, cases2, defaultTree2, range) | TDSuccess([], idx) -> match targets.[idx] with | ConstantBoolTarget result -> if result = testBool then outerCaseTree else outerDefaultTree - | TTarget([], exp, _, _) -> mkBoolSwitch exp.Range exp (if testBool then outerCaseTree else outerDefaultTree) (if testBool then outerDefaultTree else outerCaseTree) + | TTarget([], exp, _, _) -> mkBoolSwitch DebugPointAtSwitch.No exp.Range exp (if testBool then outerCaseTree else outerDefaultTree) (if testBool then outerDefaultTree else outerCaseTree) | _ -> failwith "CountBoolLogicTree should exclude this case" | _ -> failwith "CountBoolLogicTree should exclude this case" @@ -1594,7 +1594,7 @@ let rec CombineBoolLogic expr = // try to find nested boolean switch match expr with | Expr.Match (outerSP, outerMatchRange, - TDBoolSwitch(Expr.Match (_innerSP, _innerMatchRange, innerTree, innerTargets, _innerDefaultRange, _innerMatchTy), + TDBoolSwitch(_switchSP, Expr.Match (_innerSP, _innerMatchRange, innerTree, innerTargets, _innerDefaultRange, _innerMatchTy), outerTestBool, outerCaseTree, outerDefaultTree, _outerSwitchRange ), outerTargets, outerDefaultRange, outerMatchTy) -> @@ -3254,9 +3254,6 @@ and getPipes g expr acc = | _ -> [expr], acc -and mkDebugPoint g m e = - mkThenDoSequential DebugPointAtSequential.SuppressStmt m e (mkUnit g m) - /// In debug code, process a pipe-right manually to lay down the debug point for the application of the function after /// the evaluation of the argument, all the way down the chain. and OptimizeDebugPipeRights cenv env expr = @@ -3585,7 +3582,7 @@ and OptimizeDecisionTree cenv env m x = else rest, rinfo - | TDSwitch (e, cases, dflt, m) -> + | TDSwitch (sp, e, cases, dflt, m) -> // We always duplicate boolean-typed guards prior to optimizing. This is work which really should be done in patcompile.fs // where we must duplicate "when" expressions to ensure uniqueness of bound variables. // @@ -3593,7 +3590,7 @@ and OptimizeDecisionTree cenv env m x = // Hence we do it here. There is no doubt a better way to do this. let e = if typeEquiv cenv.g (tyOfExpr cenv.g e) cenv.g.bool_ty then copyExpr cenv.g CloneAll e else e - OptimizeSwitch cenv env (e, cases, dflt, m) + OptimizeSwitch cenv env (sp, e, cases, dflt, m) and TryOptimizeDecisionTreeTest cenv test vinfo = match test, vinfo with @@ -3607,7 +3604,7 @@ and TryOptimizeDecisionTreeTest cenv test vinfo = | _ -> None /// Optimize/analyze a switch construct from pattern matching -and OptimizeSwitch cenv env (e, cases, dflt, m) = +and OptimizeSwitch cenv env (sp, e, cases, dflt, m) = let eR, einfo = OptimizeExpr cenv env e let cases, dflt = @@ -3624,9 +3621,9 @@ and OptimizeSwitch cenv env (e, cases, dflt, m) = // OK, see what weRre left with and continue match cases, dflt with | [], Some case -> OptimizeDecisionTree cenv env m case - | _ -> OptimizeSwitchFallback cenv env (eR, einfo, cases, dflt, m) + | _ -> OptimizeSwitchFallback cenv env (sp, eR, einfo, cases, dflt, m) -and OptimizeSwitchFallback cenv env (eR, einfo, cases, dflt, m) = +and OptimizeSwitchFallback cenv env (sp, eR, einfo, cases, dflt, m) = let casesR, cinfos = cases |> List.map (fun (TCase(discrim, e)) -> let eR, einfo = OptimizeDecisionTree cenv env m e in TCase(discrim, eR), einfo) @@ -3638,7 +3635,7 @@ and OptimizeSwitchFallback cenv env (eR, einfo, cases, dflt, m) = let size = (dinfos.Length + cinfos.Length) * 2 let info = CombineValueInfosUnknown (einfo :: cinfos @ dinfos) let info = { info with TotalSize = info.TotalSize + size; FunctionSize = info.FunctionSize + size; } - TDSwitch (eR, casesR, dfltR, m), info + TDSwitch (sp, eR, casesR, dfltR, m), info and OptimizeBinding cenv isRec env (TBind(vref, expr, spBind)) = try diff --git a/src/fsharp/PatternMatchCompilation.fs b/src/fsharp/PatternMatchCompilation.fs index 084e6d7211..a921673f19 100644 --- a/src/fsharp/PatternMatchCompilation.fs +++ b/src/fsharp/PatternMatchCompilation.fs @@ -583,11 +583,11 @@ let rec BuildSwitch inpExprOpt g expr edges dflt m = // In this case the 'expr' already holds the result of the 'isinst' test. | TCase(DecisionTreeTest.IsInst _, success) :: edges, dflt when Option.isSome inpExprOpt -> - TDSwitch(expr, [TCase(DecisionTreeTest.IsNull, BuildSwitch None g expr edges dflt m)], Some success, m) + TDSwitch(DebugPointAtSwitch.No, expr, [TCase(DecisionTreeTest.IsNull, BuildSwitch None g expr edges dflt m)], Some success, m) // isnull and isinst tests | TCase((DecisionTreeTest.IsNull | DecisionTreeTest.IsInst _), _) as edge :: edges, dflt -> - TDSwitch(expr, [edge], Some (BuildSwitch inpExprOpt g expr edges dflt m), m) + TDSwitch(DebugPointAtSwitch.No, expr, [edge], Some (BuildSwitch inpExprOpt g expr edges dflt m), m) #if OPTIMIZE_LIST_MATCHING // 'cons/nil' tests where we have stored the result of the cons test in an 'isinst' in a variable @@ -597,7 +597,7 @@ let rec BuildSwitch inpExprOpt g expr edges dflt m = | [TCase(ListEmptyDiscrim g _, emptyCase); TCase(ListConsDiscrim g tinst, consCase)], None | [TCase(ListConsDiscrim g tinst, consCase); TCase(ListEmptyDiscrim g _, emptyCase)], None when Option.isSome inpExprOpt -> - TDSwitch(expr, [TCase(DecisionTreeTest.IsNull, emptyCase)], Some consCase, m) + TDSwitch(DebugPointAtSwitch.No, expr, [TCase(DecisionTreeTest.IsNull, emptyCase)], Some consCase, m) #endif // All these should also always have default cases @@ -621,7 +621,7 @@ let rec BuildSwitch inpExprOpt g expr edges dflt m = | DecisionTreeTest.Const (Const.Double _ | Const.Single _ | Const.Int64 _ | Const.UInt64 _ | Const.IntPtr _ | Const.UIntPtr _ as c) -> mkILAsmCeq g m testexpr (Expr.Const (c, m, tyOfExpr g testexpr)) | _ -> error(InternalError("strange switch", m)) - mkBoolSwitch m testexpr tree sofar) + mkBoolSwitch DebugPointAtSwitch.No m testexpr tree sofar) edges dflt @@ -663,7 +663,7 @@ let rec BuildSwitch inpExprOpt g expr edges dflt m = | _ -> failwith "internal error: compactify" let edgeGroups = compactify None edges' - (edgeGroups, dflt) ||> List.foldBack (fun edgeGroup sofar -> TDSwitch(expr, edgeGroup, Some sofar, m)) + (edgeGroups, dflt) ||> List.foldBack (fun edgeGroup sofar -> TDSwitch(DebugPointAtSwitch.No, expr, edgeGroup, Some sofar, m)) // For a total pattern match, run the active pattern, bind the result and // recursively build a switch in the choice type @@ -671,10 +671,10 @@ let rec BuildSwitch inpExprOpt g expr edges dflt m = error(InternalError("DecisionTreeTest.ActivePatternCase should have been eliminated", m)) // For a complete match, optimize one test to be the default - | TCase(_, tree) :: rest, None -> TDSwitch (expr, rest, Some tree, m) + | TCase(_, tree) :: rest, None -> TDSwitch (DebugPointAtSwitch.No, expr, rest, Some tree, m) // Otherwise let codegen make the choices - | _ -> TDSwitch (expr, edges, dflt, m) + | _ -> TDSwitch (DebugPointAtSwitch.No, expr, edges, dflt, m) #if DEBUG let rec layoutPat pat = @@ -853,7 +853,7 @@ let CompilePatternBasic // Note we don't emit sequence points at either the succeeding or failing targets of filters since if // the exception is filtered successfully then we will run the handler and hit the sequence point there. // That sequence point will have the pattern variables bound, which is exactly what we want. - let tg = TTarget([], throwExpr, DebugPointForTarget.No, None) + let tg = TTarget([], throwExpr, DebugPointAtTarget.No, None) let _ = matchBuilder.AddTarget tg let clause = TClause(TPat_wild matchm, None, tg, matchm) incompleteMatchClauseOnce <- Some clause @@ -933,26 +933,15 @@ let CompilePatternBasic match valMap.TryFind v with | None -> mkUnit g v.Range | Some res -> res) - let rhs' = TDSuccess(es2, i) + let successTree = TDSuccess(es2, i) match GetWhenGuardOfClause i refuted with | Some whenExpr -> - let m = whenExpr.Range + let whenExprWithBindings = mkLetsFromBindings m (mkInvisibleBinds vs2 es2) whenExpr + let failureTree = (InvestigateFrontiers (RefutedWhenClause :: refuted) rest) + mkBoolSwitch (DebugPointAtSwitch.Yes m) m whenExprWithBindings successTree failureTree - // SEQUENCE POINTS: REVIEW: Build a sequence point at 'when' - let whenExpr = mkLetsFromBindings m (mkInvisibleBinds vs2 es2) whenExpr - - // We must duplicate both the bindings and the guard expression to ensure uniqueness of bound variables. - // This is because guards and bindings can end up being compiled multiple times when "or" patterns are used. - // - // let whenExpr = copyExpr g CloneAll whenExpr - // - // However, we are not allowed to copy expressions until type checking is complete, because this - // would lose recursive fixup points within the expressions (see FSharp 1.0 bug 4821). - - mkBoolSwitch m whenExpr rhs' (InvestigateFrontiers (RefutedWhenClause :: refuted) rest) - - | None -> rhs' + | None -> successTree /// Select the set of discriminators which we can handle in one test, or as a series of iterated tests, /// e.g. in the case of TPat_isinst. Ensure we only take at most one class of `TPat_query` at a time. @@ -1389,26 +1378,25 @@ let CompilePatternBasic let isPartialOrWhenClause (c: TypedMatchClause) = isPatternPartial c.Pattern || c.GuardExpr.IsSome - let rec CompilePattern g denv amap tcVal infoReader exprm matchm warnOnUnused actionOnFailure (origInputVal, origInputValTypars, origInputExprOpt) (clausesL: TypedMatchClause list) inputTy resultTy = match clausesL with | _ when List.exists isPartialOrWhenClause clausesL -> - // Partial clauses cause major code explosion if treated naively - // Hence treat any pattern matches with any partial clauses clause-by-clause // First make sure we generate at least some of the obvious incomplete match warnings. let warnOnUnused = false // we can't turn this on since we're pretending all partials fail in order to control the complexity of this. let warnOnIncomplete = true - let clausesPretendAllPartialFail = List.collect (fun (TClause(p, whenOpt, tg, m)) -> [TClause(erasePartialPatterns p, whenOpt, tg, m)]) clausesL + let clausesPretendAllPartialFail = clausesL |> List.collect (fun (TClause(p, whenOpt, tg, m)) -> [TClause(erasePartialPatterns p, whenOpt, tg, m)]) let _ = CompilePatternBasic g denv amap tcVal infoReader exprm matchm warnOnUnused warnOnIncomplete actionOnFailure (origInputVal, origInputValTypars, origInputExprOpt) clausesPretendAllPartialFail inputTy resultTy let warnOnIncomplete = false + // Partial and when clauses cause major code explosion if treated naively + // Hence treat any pattern matches with any partial clauses clause-by-clause let rec atMostOnePartialAtATime clauses = match List.takeUntil isPartialOrWhenClause clauses with | l, [] -> CompilePatternBasic g denv amap tcVal infoReader exprm matchm warnOnUnused warnOnIncomplete actionOnFailure (origInputVal, origInputValTypars, origInputExprOpt) l inputTy resultTy | l, h :: t -> - // Add the partial clause. + // Add the partial or when clause. doGroupWithAtMostOnePartial (l @ [h]) t and doGroupWithAtMostOnePartial group rest = @@ -1421,8 +1409,8 @@ let rec CompilePattern g denv amap tcVal infoReader exprm matchm warnOnUnused a // If the remainder of the match boiled away to nothing interesting. // We measure this simply by seeing if the range of the resulting expression is identical to matchm. let spTarget = - if equals expr.Range matchm then DebugPointForTarget.No - else DebugPointForTarget.Yes + if equals expr.Range matchm then DebugPointAtTarget.No + else DebugPointAtTarget.Yes // Make the clause that represents the remaining cases of the pattern match let clauseForRestOfMatch = TClause(TPat_wild matchm, None, TTarget(List.empty, expr, spTarget, None), matchm) @@ -1434,3 +1422,5 @@ let rec CompilePattern g denv amap tcVal infoReader exprm matchm warnOnUnused a | _ -> CompilePatternBasic g denv amap tcVal infoReader exprm matchm warnOnUnused true actionOnFailure (origInputVal, origInputValTypars, origInputExprOpt) clausesL inputTy resultTy +type IA = + abstract X: int -> int \ No newline at end of file diff --git a/src/fsharp/PostInferenceChecks.fs b/src/fsharp/PostInferenceChecks.fs index e230643baa..6e0e9f3607 100644 --- a/src/fsharp/PostInferenceChecks.fs +++ b/src/fsharp/PostInferenceChecks.fs @@ -1777,7 +1777,7 @@ and CheckDecisionTree cenv env x = | TDBind(bind, rest) -> CheckBinding cenv env false PermitByRefExpr.Yes bind |> ignore CheckDecisionTree cenv env rest - | TDSwitch (e, cases, dflt, m) -> + | TDSwitch (_, e, cases, dflt, m) -> CheckDecisionTreeSwitch cenv env (e, cases, dflt, m) and CheckDecisionTreeSwitch cenv env (e, cases, dflt, m) = diff --git a/src/fsharp/QuotationTranslator.fs b/src/fsharp/QuotationTranslator.fs index 04177155d0..abcf0a16a0 100644 --- a/src/fsharp/QuotationTranslator.fs +++ b/src/fsharp/QuotationTranslator.fs @@ -200,7 +200,7 @@ let (|ObjectInitializationCheck|_|) g expr = ( _, _, TDSwitch - ( + (_, Expr.Op (TOp.ILAsm ([AI_clt], _), _, [Expr.Op (TOp.ValFieldGet (RecdFieldRef(_, name)), _, [Expr.Val (selfRef, NormalValUse, _)], _); Expr.Const (Const.Int32 1, _, _)], _), _, _, _ ), [| TTarget([], Expr.App (Expr.Val (failInitRef, _, _), _, _, _, _), _, _); _ |], _, resultTy @@ -1043,7 +1043,7 @@ and ConvConst cenv env m c ty = and ConvDecisionTree cenv env tgs typR x = match x with - | TDSwitch(e1, csl, dfltOpt, m) -> + | TDSwitch(_, e1, csl, dfltOpt, m) -> let acc = match dfltOpt with | Some d -> ConvDecisionTree cenv env tgs typR d diff --git a/src/fsharp/SyntaxTree.fs b/src/fsharp/SyntaxTree.fs index d5c1afdd54..35fb935e6c 100644 --- a/src/fsharp/SyntaxTree.fs +++ b/src/fsharp/SyntaxTree.fs @@ -169,10 +169,15 @@ type SynAccess = | Private -> "Private" [] -type DebugPointForTarget = +type DebugPointAtTarget = | Yes | No +[] +type DebugPointAtSwitch = + | Yes of range + | No + [] type DebugPointAtSequential = | SuppressNeither @@ -1150,7 +1155,7 @@ type SynMatchClause = arrow: Range option * resultExpr: SynExpr * range: range * - debugPoint: DebugPointForTarget + debugPoint: DebugPointAtTarget member this.RangeOfGuardAndRhs = match this with diff --git a/src/fsharp/SyntaxTree.fsi b/src/fsharp/SyntaxTree.fsi index bddc0c8cc5..cb51521b07 100644 --- a/src/fsharp/SyntaxTree.fsi +++ b/src/fsharp/SyntaxTree.fsi @@ -214,10 +214,18 @@ type SynAccess = /// of a decision tree, that is whether the construct corresponds to a debug /// point in the original source. [] -type DebugPointForTarget = +type DebugPointAtTarget = | Yes | No +/// Represents whether a debug point should be present at the switch +/// logic of a decision tree. These are introduced for 'when' expressions +/// and the encoding of 'a && b', 'a || b' +[] +type DebugPointAtSwitch = + | Yes of range + | No + /// Represents whether a debug point should be suppressed for either the /// first or second part of a sequential execution, that is whether the /// construct corresponds to a debug point in the original source. @@ -1283,7 +1291,7 @@ type SynMatchClause = arrow: Range option * resultExpr: SynExpr * range: range * - debugPoint: DebugPointForTarget + debugPoint: DebugPointAtTarget /// Gets the syntax range of part of this construct member RangeOfGuardAndRhs: range diff --git a/src/fsharp/SyntaxTreeOps.fs b/src/fsharp/SyntaxTreeOps.fs index 87bf172d0d..3b04005ad5 100644 --- a/src/fsharp/SyntaxTreeOps.fs +++ b/src/fsharp/SyntaxTreeOps.fs @@ -179,8 +179,9 @@ let rec SimplePatOfPat (synArgNameGenerator: SynArgNameGenerator) p = | SynPat.Wild _ -> None | _ -> Some (fun e -> - let clause = SynMatchClause(p, None, None, e, m, DebugPointForTarget.No) - SynExpr.Match (DebugPointAtBinding.NoneAtInvisible, item, [clause], clause.Range)) + let clause = SynMatchClause(p, None, None, e, m, DebugPointAtTarget.No) + let artificialMatchRange = (unionRanges m e.Range).MakeSynthetic() + SynExpr.Match (DebugPointAtBinding.NoneAtInvisible, item, [clause], artificialMatchRange)) SynSimplePat.Id (id, altNameRefCell, isCompGen, false, false, id.idRange), fn diff --git a/src/fsharp/TypedTree.fs b/src/fsharp/TypedTree.fs index 800d4b361e..cfc59f2f0b 100644 --- a/src/fsharp/TypedTree.fs +++ b/src/fsharp/TypedTree.fs @@ -4226,7 +4226,7 @@ type DecisionTree = /// cases -- The list of tests and their subsequent decision trees /// default -- The default decision tree, if any /// range -- (precise documentation needed) - | TDSwitch of input: Expr * cases: DecisionTreeCase list * defaultOpt: DecisionTree option * range: range + | TDSwitch of debugPoint: DebugPointAtSwitch * input: Expr * cases: DecisionTreeCase list * defaultOpt: DecisionTree option * range: range /// TDSuccess(results, targets) /// @@ -4322,7 +4322,7 @@ type DecisionTreeTarget = | TTarget of boundVals: Val list * targetExpr: Expr * - debugPoint: DebugPointForTarget * + debugPoint: DebugPointAtTarget * isStateVarFlags: bool list option [] diff --git a/src/fsharp/TypedTreeOps.fs b/src/fsharp/TypedTreeOps.fs index f9243284ae..31caa80de9 100644 --- a/src/fsharp/TypedTreeOps.fs +++ b/src/fsharp/TypedTreeOps.fs @@ -1208,15 +1208,16 @@ type MatchBuilder(spBind, inpRange: range) = member x.Close(dtree, m, ty) = primMkMatch (spBind, inpRange, dtree, targets.ToArray(), m, ty) -let mkBoolSwitch m g t e = TDSwitch(g, [TCase(DecisionTreeTest.Const(Const.Bool true), t)], Some e, m) +let mkBoolSwitch debugPoint m g t e = + TDSwitch(debugPoint, g, [TCase(DecisionTreeTest.Const(Const.Bool true), t)], Some e, m) let primMkCond spBind spTarget1 spTarget2 m ty e1 e2 e3 = let mbuilder = MatchBuilder(spBind, m) - let dtree = mkBoolSwitch m e1 (mbuilder.AddResultTarget(e2, spTarget1)) (mbuilder.AddResultTarget(e3, spTarget2)) + let dtree = mkBoolSwitch DebugPointAtSwitch.No m e1 (mbuilder.AddResultTarget(e2, spTarget1)) (mbuilder.AddResultTarget(e3, spTarget2)) mbuilder.Close(dtree, m, ty) -let mkCond spBind spTarget m ty e1 e2 e3 = primMkCond spBind spTarget spTarget m ty e1 e2 e3 - +let mkCond spBind spTarget m ty e1 e2 e3 = + primMkCond spBind spTarget spTarget m ty e1 e2 e3 //--------------------------------------------------------------------------- // Primitive constructors @@ -1340,22 +1341,38 @@ let isBeingGeneralized tp typeScheme = // Build conditional expressions... //------------------------------------------------------------------------- -let mkLazyAnd (g: TcGlobals) m e1 e2 = mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.bool_ty e1 e2 (Expr.Const (Const.Bool false, m, g.bool_ty)) -let mkLazyOr (g: TcGlobals) m e1 e2 = mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.bool_ty e1 (Expr.Const (Const.Bool true, m, g.bool_ty)) e2 +let mkBool (g: TcGlobals) m b = Expr.Const (Const.Bool b, m, g.bool_ty) + +let mkTrue g m = mkBool g m true + +let mkFalse g m = mkBool g m false + +let mkLazyOr (g: TcGlobals) m e1 e2 = + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.bool_ty e1 (mkTrue g m) e2 + +let mkLazyAnd (g: TcGlobals) m e1 e2 = + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.bool_ty e1 e2 (mkFalse g m) let mkCoerceExpr(e, to_ty, m, from_ty) = Expr.Op (TOp.Coerce, [to_ty;from_ty], [e], m) let mkAsmExpr (code, tinst, args, rettys, m) = Expr.Op (TOp.ILAsm (code, rettys), tinst, args, m) + let mkUnionCaseExpr(uc, tinst, args, m) = Expr.Op (TOp.UnionCase uc, tinst, args, m) + let mkExnExpr(uc, args, m) = Expr.Op (TOp.ExnConstr uc, [], args, m) + let mkTupleFieldGetViaExprAddr(tupInfo, e, tinst, i, m) = Expr.Op (TOp.TupleFieldGet (tupInfo, i), tinst, [e], m) + let mkAnonRecdFieldGetViaExprAddr(anonInfo, e, tinst, i, m) = Expr.Op (TOp.AnonRecdGet (anonInfo, i), tinst, [e], m) let mkRecdFieldGetViaExprAddr (e, fref, tinst, m) = Expr.Op (TOp.ValFieldGet fref, tinst, [e], m) + let mkRecdFieldGetAddrViaExprAddr(readonly, e, fref, tinst, m) = Expr.Op (TOp.ValFieldGetAddr (fref, readonly), tinst, [e], m) let mkStaticRecdFieldGetAddr(readonly, fref, tinst, m) = Expr.Op (TOp.ValFieldGetAddr (fref, readonly), tinst, [], m) + let mkStaticRecdFieldGet (fref, tinst, m) = Expr.Op (TOp.ValFieldGet fref, tinst, [], m) + let mkStaticRecdFieldSet(fref, tinst, e, m) = Expr.Op (TOp.ValFieldSet fref, tinst, [e], m) let mkArrayElemAddress g (readonly, ilInstrReadOnlyAnnotation, isNativePtr, shape, elemTy, exprs, m) = @@ -4095,7 +4112,7 @@ module DebugPrint = (bind @@ decisionTreeL g body) | TDSuccess (args, n) -> wordL(tagText "Success") ^^ leftL(tagText "T") ^^ intL n ^^ tupleL (args |> List.map (exprL g)) - | TDSwitch (test, dcases, dflt, _) -> + | TDSwitch (_, test, dcases, dflt, _) -> (wordL(tagText "Switch") --- exprL g test) @@-- (aboveListL (List.map (dcaseL g) dcases) @@ match dflt with @@ -4596,7 +4613,7 @@ and accFreeInTest (opts: FreeVarOptions) discrim acc = and accFreeInDecisionTree opts x (acc: FreeVars) = match x with - | TDSwitch(e1, csl, dflt, _) -> accFreeInExpr opts e1 (accFreeInSwitchCases opts csl dflt acc) + | TDSwitch(_, e1, csl, dflt, _) -> accFreeInExpr opts e1 (accFreeInSwitchCases opts csl dflt acc) | TDSuccess (es, _) -> accFreeInFlatExprs opts es acc | TDBind (bind, body) -> unionFreeVars (bindLhs opts bind (accBindRhs opts bind (freeInDecisionTree opts body))) acc @@ -5417,10 +5434,11 @@ and remapFlatExprs g compgen tmenv es = List.mapq (remapExpr g compgen tmenv) es and remapDecisionTree g compgen tmenv x = match x with - | TDSwitch(e1, csl, dflt, m) -> - TDSwitch(remapExpr g compgen tmenv e1, - List.map (fun (TCase(test, y)) -> - let test' = + | TDSwitch(sp, e1, cases, dflt, m) -> + let e1R = remapExpr g compgen tmenv e1 + let casesR = + cases |> List.map (fun (TCase(test, subTree)) -> + let testR = match test with | DecisionTreeTest.UnionCase (uc, tinst) -> DecisionTreeTest.UnionCase(remapUnionCaseRef tmenv.tyconRefRemap uc, remapTypes tmenv tinst) | DecisionTreeTest.ArrayLength (n, ty) -> DecisionTreeTest.ArrayLength(n, remapType tmenv ty) @@ -5429,11 +5447,14 @@ and remapDecisionTree g compgen tmenv x = | DecisionTreeTest.IsNull -> DecisionTreeTest.IsNull | DecisionTreeTest.ActivePatternCase _ -> failwith "DecisionTreeTest.ActivePatternCase should only be used during pattern match compilation" | DecisionTreeTest.Error(m) -> DecisionTreeTest.Error(m) - TCase(test', remapDecisionTree g compgen tmenv y)) csl, - Option.map (remapDecisionTree g compgen tmenv) dflt, - m) + let subTreeR = remapDecisionTree g compgen tmenv subTree + TCase(testR, subTreeR)) + let dfltR = Option.map (remapDecisionTree g compgen tmenv) dflt + TDSwitch(sp, e1R, casesR, dfltR, m) + | TDSuccess (es, n) -> TDSuccess (remapFlatExprs g compgen tmenv es, n) + | TDBind (bind, rest) -> let bind', tmenvinner = copyAndRemapAndBindBinding g compgen tmenv bind TDBind (bind', remapDecisionTree g compgen tmenvinner rest) @@ -5747,7 +5768,7 @@ let rec remarkExpr m x = Expr.Let (remarkBind m bind, remarkExpr m e, m, fvs) | Expr.Match (_, _, pt, targets, _, ty) -> - let targetsR = targets |> Array.map (fun (TTarget(vs, e, _, flags)) -> TTarget(vs, remarkExpr m e, DebugPointForTarget.No, flags)) + let targetsR = targets |> Array.map (fun (TTarget(vs, e, _, flags)) -> TTarget(vs, remarkExpr m e, DebugPointAtTarget.No, flags)) primMkMatch (DebugPointAtBinding.NoneAtInvisible, m, remarkDecisionTree m pt, targetsR, m, ty) | Expr.Val (x, valUseFlags, _) -> @@ -5852,9 +5873,11 @@ and remarkFlatExprs m es = es |> List.map (remarkExpr m) and remarkDecisionTree m x = match x with - | TDSwitch(e1, csl, dflt, _) -> - let cslR = csl |> List.map (fun (TCase(test, y)) -> TCase(test, remarkDecisionTree m y)) - TDSwitch(remarkExpr m e1, cslR, Option.map (remarkDecisionTree m) dflt, m) + | TDSwitch(sp, e1, cases, dflt, _) -> + let e1R = remarkExpr m e1 + let casesR = cases |> List.map (fun (TCase(test, y)) -> TCase(test, remarkDecisionTree m y)) + let dfltR = Option.map (remarkDecisionTree m) dflt + TDSwitch(sp, e1R, casesR, Option.map (remarkDecisionTree m) dfltR, m) | TDSuccess (es, n) -> TDSuccess (remarkFlatExprs m es, n) | TDBind (bind, rest) -> @@ -6091,7 +6114,7 @@ let mkTyAppExpr m (f, fty) tyargs = match tyargs with [] -> f | _ -> primMkApp ( let rec accTargetsOfDecisionTree tree acc = match tree with - | TDSwitch (_, cases, dflt, _) -> + | TDSwitch (_, _, cases, dflt, _) -> List.foldBack (fun (c: DecisionTreeCase) -> accTargetsOfDecisionTree c.CaseTree) cases (Option.foldBack accTargetsOfDecisionTree dflt acc) | TDSuccess (_, i) -> i :: acc @@ -6099,7 +6122,10 @@ let rec accTargetsOfDecisionTree tree acc = let rec mapTargetsOfDecisionTree f tree = match tree with - | TDSwitch (e, cases, dflt, m) -> TDSwitch (e, List.map (mapTargetsOfDecisionTreeCase f) cases, Option.map (mapTargetsOfDecisionTree f) dflt, m) + | TDSwitch (sp, e, cases, dflt, m) -> + let casesR = cases |> List.map (mapTargetsOfDecisionTreeCase f) + let dfltR = Option.map (mapTargetsOfDecisionTree f) dflt + TDSwitch (sp, e, casesR, dfltR, m) | TDSuccess (es, i) -> TDSuccess(es, f i) | TDBind (bind, rest) -> TDBind(bind, mapTargetsOfDecisionTree f rest) @@ -6132,7 +6158,7 @@ let rec targetOfSuccessDecisionTree tree = /// Check a decision tree only has bindings that immediately cover a 'Success' let rec decisionTreeHasNonTrivialBindings tree = match tree with - | TDSwitch (_, cases, dflt, _) -> + | TDSwitch (_, _, cases, dflt, _) -> cases |> List.exists (fun c -> decisionTreeHasNonTrivialBindings c.CaseTree) || dflt |> Option.exists decisionTreeHasNonTrivialBindings | TDSuccess _ -> false @@ -6152,9 +6178,10 @@ let foldLinearBindingTargetsOfMatch tree (targets: _[]) = // Build a map showing how each target might be reached let rec accumulateTipsOfDecisionTree accBinds tree = match tree with - | TDSwitch (_, cases, dflt, _) -> + | TDSwitch (_, _, cases, dflt, _) -> assert (isNil accBinds) // No switches under bindings - for edge in cases do accumulateTipsOfDecisionTree accBinds edge.CaseTree + for edge in cases do + accumulateTipsOfDecisionTree accBinds edge.CaseTree match dflt with | None -> () | Some tree -> accumulateTipsOfDecisionTree accBinds tree @@ -6184,7 +6211,10 @@ let foldLinearBindingTargetsOfMatch tree (targets: _[]) = | Some i when isLinearTgtIdx i -> TDSuccess([], i) | _ -> match tree with - | TDSwitch (e, cases, dflt, m) -> TDSwitch (e, List.map rebuildDecisionTreeEdge cases, Option.map rebuildDecisionTree dflt, m) + | TDSwitch (sp, e, cases, dflt, m) -> + let casesR = List.map rebuildDecisionTreeEdge cases + let dfltR = Option.map rebuildDecisionTree dflt + TDSwitch (sp, e, casesR, dfltR, m) | TDSuccess _ -> tree | TDBind _ -> tree @@ -6240,8 +6270,7 @@ type Mutates = AddressOfOp | DefinitelyMutates | PossiblyMutates | NeverMutates exception DefensiveCopyWarning of string * range let isRecdOrStructTyconRefAssumedImmutable (g: TcGlobals) (tcref: TyconRef) = - tcref.CanDeref && - not (isRecdOrUnionOrStructTyconRefDefinitelyMutable tcref) || + (tcref.CanDeref && not (isRecdOrUnionOrStructTyconRefDefinitelyMutable tcref)) || tyconRefEq g tcref g.decimal_tcr || tyconRefEq g tcref g.date_tcr @@ -6725,7 +6754,7 @@ type ExprFolders<'State> (folders: ExprFolder<'State>) = let z = valBindF true z bind dtreeF z rest | TDSuccess (args, _) -> exprsF z args - | TDSwitch (test, dcases, dflt, _) -> + | TDSwitch (_, test, dcases, dflt, _) -> let z = exprF z test let z = List.fold dcaseF z dcases let z = Option.fold dtreeF z dflt @@ -6799,16 +6828,10 @@ let ExprStats x = let mkString (g: TcGlobals) m n = Expr.Const (Const.String n, m, g.string_ty) -let mkBool (g: TcGlobals) m b = Expr.Const (Const.Bool b, m, g.bool_ty) - let mkByte (g: TcGlobals) m b = Expr.Const (Const.Byte b, m, g.byte_ty) let mkUInt16 (g: TcGlobals) m b = Expr.Const (Const.UInt16 b, m, g.uint16_ty) -let mkTrue g m = mkBool g m true - -let mkFalse g m = mkBool g m false - let mkUnit (g: TcGlobals) m = Expr.Const (Const.Unit, m, g.unit_ty) let mkInt32 (g: TcGlobals) m n = Expr.Const (Const.Int32 n, m, g.int32_ty) @@ -8464,43 +8487,54 @@ let canUseUnboxFast g m ty = // Nullness tests and pokes //-------------------------------------------------------------------------- -(* match inp with :? ty as v -> e2[v] | _ -> e3 *) +// Generates the logical equivalent of +// match inp with :? ty as v -> e2[v] | _ -> e3 +// +// No sequence point is generated for this expression form as this function is only +// used for compiler-generated code. let mkIsInstConditional g m tgty vinpe v e2 e3 = - // No sequence point for this compiler generated expression form if canUseTypeTestFast g tgty then let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) - let tg2 = mbuilder.AddResultTarget(e2, DebugPointForTarget.No) - let tg3 = mbuilder.AddResultTarget(e3, DebugPointForTarget.No) - let dtree = TDSwitch(exprForVal m v, [TCase(DecisionTreeTest.IsNull, tg3)], Some tg2, m) + let tg2 = mbuilder.AddResultTarget(e2, DebugPointAtTarget.No) + let tg3 = mbuilder.AddResultTarget(e3, DebugPointAtTarget.No) + let dtree = TDSwitch(DebugPointAtSwitch.No, exprForVal m v, [TCase(DecisionTreeTest.IsNull, tg3)], Some tg2, m) let expr = mbuilder.Close(dtree, m, tyOfExpr g e2) mkCompGenLet m v (mkIsInst tgty vinpe m) expr else let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) - let tg2 = TDSuccess([mkCallUnbox g m tgty vinpe], mbuilder.AddTarget(TTarget([v], e2, DebugPointForTarget.No, None))) - let tg3 = mbuilder.AddResultTarget(e3, DebugPointForTarget.No) - let dtree = TDSwitch(vinpe, [TCase(DecisionTreeTest.IsInst(tyOfExpr g vinpe, tgty), tg2)], Some tg3, m) + let tg2 = TDSuccess([mkCallUnbox g m tgty vinpe], mbuilder.AddTarget(TTarget([v], e2, DebugPointAtTarget.No, None))) + let tg3 = mbuilder.AddResultTarget(e3, DebugPointAtTarget.No) + let dtree = TDSwitch(DebugPointAtSwitch.No, vinpe, [TCase(DecisionTreeTest.IsInst(tyOfExpr g vinpe, tgty), tg2)], Some tg3, m) let expr = mbuilder.Close(dtree, m, tyOfExpr g e2) expr -// Null tests are generated by -// 1. The compilation of array patterns in the pattern match compiler -// 2. The compilation of string patterns in the pattern match compiler +// Called for when creating compiled form of 'let fixed ...'. +// +// No sequence point is generated for this expression form as this function is only +// used for compiler-generated code. let mkNullTest g m e1 e2 e3 = - let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) - let tg2 = mbuilder.AddResultTarget(e2, DebugPointForTarget.No) - let tg3 = mbuilder.AddResultTarget(e3, DebugPointForTarget.No) - let dtree = TDSwitch(e1, [TCase(DecisionTreeTest.IsNull, tg3)], Some tg2, m) - let expr = mbuilder.Close(dtree, m, tyOfExpr g e2) - expr - -let mkNonNullTest (g: TcGlobals) m e = mkAsmExpr ([ AI_ldnull ; AI_cgt_un ], [], [e], [g.bool_ty], m) - -let mkNonNullCond g m ty e1 e2 e3 = mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m ty (mkNonNullTest g m e1) e2 e3 - -let mkIfThen (g: TcGlobals) m e1 e2 = mkCond DebugPointAtBinding.NoneAtSticky DebugPointForTarget.No m g.unit_ty e1 e2 (mkUnit g m) + let mbuilder = MatchBuilder(DebugPointAtBinding.NoneAtInvisible, m) + let tg2 = mbuilder.AddResultTarget(e2, DebugPointAtTarget.No) + let tg3 = mbuilder.AddResultTarget(e3, DebugPointAtTarget.No) + let dtree = TDSwitch(DebugPointAtSwitch.No, e1, [TCase(DecisionTreeTest.IsNull, tg3)], Some tg2, m) + let expr = mbuilder.Close(dtree, m, tyOfExpr g e2) + expr + +let mkNonNullTest (g: TcGlobals) m e = + mkAsmExpr ([ AI_ldnull ; AI_cgt_un ], [], [e], [g.bool_ty], m) + +// No sequence point is generated for this expression form as this function is only +// used for compiler-generated code. +let mkNonNullCond g m ty e1 e2 e3 = + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m ty (mkNonNullTest g m e1) e2 e3 + +// No sequence point is generated for this expression form as this function is only +// used for compiler-generated code. +let mkIfThen (g: TcGlobals) m e1 e2 = + mkCond DebugPointAtBinding.NoneAtSticky DebugPointAtTarget.No m g.unit_ty e1 e2 (mkUnit g m) let ModuleNameIsMangled g attrs = match TryFindFSharpInt32Attribute g g.attrib_CompilationRepresentationAttribute attrs with @@ -8816,23 +8850,24 @@ and rewriteFlatExprs env exprs = List.mapq (RewriteExpr env) exprs and RewriteDecisionTree env x = match x with | TDSuccess (es, n) -> - let es' = rewriteFlatExprs env es - if LanguagePrimitives.PhysicalEquality es es' then x - else TDSuccess(es', n) + let esR = rewriteFlatExprs env es + if LanguagePrimitives.PhysicalEquality es esR then x + else TDSuccess(esR, n) - | TDSwitch (e, cases, dflt, m) -> - let e' = RewriteExpr env e - let cases' = List.map (fun (TCase(discrim, e)) -> TCase(discrim, RewriteDecisionTree env e)) cases - let dflt' = Option.map (RewriteDecisionTree env) dflt - TDSwitch (e', cases', dflt', m) + | TDSwitch (sp, e, cases, dflt, m) -> + let eR = RewriteExpr env e + let casesR = List.map (fun (TCase(discrim, e)) -> TCase(discrim, RewriteDecisionTree env e)) cases + let dfltR = Option.map (RewriteDecisionTree env) dflt + TDSwitch (sp, eR, casesR, dfltR, m) | TDBind (bind, body) -> - let bind' = rewriteBind env bind - let body = RewriteDecisionTree env body - TDBind (bind', body) + let bindR = rewriteBind env bind + let bodyR = RewriteDecisionTree env body + TDBind (bindR, bodyR) and rewriteTarget env (TTarget(vs, e, spTarget, flags)) = - TTarget(vs, RewriteExpr env e, spTarget, flags) + let eR = RewriteExpr env e + TTarget(vs, eR, spTarget, flags) and rewriteTargets env targets = List.map (rewriteTarget env) (Array.toList targets) @@ -9054,15 +9089,23 @@ let IsSimpleSyntacticConstantExpr g inputExpr = and checkDecisionTree vrefs x = match x with | TDSuccess (es, _n) -> es |> List.forall (checkExpr vrefs) - | TDSwitch (e, cases, dflt, _m) -> checkExpr vrefs e && cases |> List.forall (checkDecisionTreeCase vrefs) && dflt |> Option.forall (checkDecisionTree vrefs) - | TDBind (bind, body) -> checkExpr vrefs bind.Expr && checkDecisionTree (vrefs.Add bind.Var.Stamp) body + | TDSwitch (_, e, cases, dflt, _m) -> + checkExpr vrefs e && + cases |> List.forall (checkDecisionTreeCase vrefs) && + dflt |> Option.forall (checkDecisionTree vrefs) + | TDBind (bind, body) -> + checkExpr vrefs bind.Expr && + checkDecisionTree (vrefs.Add bind.Var.Stamp) body and checkDecisionTreeCase vrefs (TCase(discrim, dtree)) = - (match discrim with DecisionTreeTest.Const _c -> true | _ -> false) && checkDecisionTree vrefs dtree + (match discrim with + | DecisionTreeTest.Const _c -> true + | _ -> false) && + checkDecisionTree vrefs dtree and checkDecisionTreeTarget vrefs (TTarget(vs, e, _, _)) = - let vrefs = ((vrefs, vs) ||> List.fold (fun s v -> s.Add v.Stamp)) - checkExpr vrefs e + let vrefs = ((vrefs, vs) ||> List.fold (fun s v -> s.Add v.Stamp)) + checkExpr vrefs e checkExpr Set.empty inputExpr @@ -9434,9 +9477,9 @@ let (|UseResumableStateMachinesExpr|_|) g expr = | _ -> None /// Match -let (|IsThenElseExpr|_|) expr = +let (|IfThenElseExpr|_|) expr = match expr with - | Expr.Match (_spBind, _exprm, TDSwitch(cond, [ TCase( DecisionTreeTest.Const (Const.Bool true), TDSuccess ([], 0) )], Some (TDSuccess ([], 1)), _), + | Expr.Match (_spBind, _exprm, TDSwitch(_spSwitch, cond, [ TCase( DecisionTreeTest.Const (Const.Bool true), TDSuccess ([], 0) )], Some (TDSuccess ([], 1)), _), [| TTarget([], thenExpr, _, _); TTarget([], elseExpr, _, _) |], _m, _ty) -> Some (cond, thenExpr, elseExpr) | _ -> None @@ -9444,7 +9487,7 @@ let (|IsThenElseExpr|_|) expr = /// if __useResumableCode then ... else ... let (|IfUseResumableStateMachinesExpr|_|) g expr = match expr with - | IsThenElseExpr(UseResumableStateMachinesExpr g (), thenExpr, elseExpr) -> Some (thenExpr, elseExpr) + | IfThenElseExpr(UseResumableStateMachinesExpr g (), thenExpr, elseExpr) -> Some (thenExpr, elseExpr) | _ -> None /// Combine a list of ModuleOrNamespaceType's making up the description of a CCU. checking there are now @@ -9543,11 +9586,11 @@ let (|TryWithExpr|_|) expr = let (|MatchTwoCasesExpr|_|) expr = match expr with - | Expr.Match (spBind, exprm, TDSwitch(cond, [ TCase( DecisionTreeTest.UnionCase (ucref, a), TDSuccess ([], tg1) )], Some (TDSuccess ([], tg2)), b), tgs, m, ty) -> + | Expr.Match (spBind, exprm, TDSwitch(spSwitch, cond, [ TCase( DecisionTreeTest.UnionCase (ucref, a), TDSuccess ([], tg1) )], Some (TDSuccess ([], tg2)), b), tgs, m, ty) -> // How to rebuild this construct let rebuild (cond, ucref, tg1, tg2, tgs) = - Expr.Match (spBind, exprm, TDSwitch(cond, [ TCase( DecisionTreeTest.UnionCase (ucref, a), TDSuccess ([], tg1) )], Some (TDSuccess ([], tg2)), b), tgs, m, ty) + Expr.Match (spBind, exprm, TDSwitch(spSwitch, cond, [ TCase( DecisionTreeTest.UnionCase (ucref, a), TDSuccess ([], tg1) )], Some (TDSuccess ([], tg2)), b), tgs, m, ty) Some (cond, ucref, tg1, tg2, tgs, rebuild) @@ -9657,3 +9700,6 @@ let (|ResumableCodeInvoke|_|) g expr = Some (iref, f, args, m, (fun (f2, args2) -> Expr.App ((iref, a, b, (f2 :: args2), m)))) | _ -> None +let mkDebugPoint g m expr = + mkThenDoSequential DebugPointAtSequential.SuppressStmt m expr (mkUnit g m) + diff --git a/src/fsharp/TypedTreeOps.fsi b/src/fsharp/TypedTreeOps.fsi index 683aaf5ca5..8963d7d922 100755 --- a/src/fsharp/TypedTreeOps.fsi +++ b/src/fsharp/TypedTreeOps.fsi @@ -77,7 +77,7 @@ type MatchBuilder = member AddTarget: DecisionTreeTarget -> int /// Add a new destination target that is an expression result - member AddResultTarget: Expr * DebugPointForTarget -> DecisionTree + member AddResultTarget: Expr * DebugPointAtTarget -> DecisionTree /// Finish the targets member CloseTargets: unit -> DecisionTreeTarget list @@ -86,13 +86,13 @@ type MatchBuilder = member Close: DecisionTree * range * TType -> Expr /// Add an if-then-else boolean conditional node into a decision tree -val mkBoolSwitch: range -> Expr -> DecisionTree -> DecisionTree -> DecisionTree +val mkBoolSwitch: DebugPointAtSwitch -> range -> Expr -> DecisionTree -> DecisionTree -> DecisionTree /// Build a conditional expression -val primMkCond: DebugPointAtBinding -> DebugPointForTarget -> DebugPointForTarget -> range -> TType -> Expr -> Expr -> Expr -> Expr +val primMkCond: DebugPointAtBinding -> DebugPointAtTarget -> DebugPointAtTarget -> range -> TType -> Expr -> Expr -> Expr -> Expr /// Build a conditional expression -val mkCond: DebugPointAtBinding -> DebugPointForTarget -> range -> TType -> Expr -> Expr -> Expr -> Expr +val mkCond: DebugPointAtBinding -> DebugPointAtTarget -> range -> TType -> Expr -> Expr -> Expr -> Expr /// Build a conditional expression that checks for non-nullness val mkNonNullCond: TcGlobals -> range -> TType -> Expr -> Expr -> Expr -> Expr @@ -2405,9 +2405,9 @@ val ValIsExplicitImpl: TcGlobals -> Val -> bool val ValRefIsExplicitImpl: TcGlobals -> ValRef -> bool -val (|LinearMatchExpr|_|): Expr -> (DebugPointAtBinding * range * DecisionTree * DecisionTreeTarget * Expr * DebugPointForTarget * range * TType) option +val (|LinearMatchExpr|_|): Expr -> (DebugPointAtBinding * range * DecisionTree * DecisionTreeTarget * Expr * DebugPointAtTarget * range * TType) option -val rebuildLinearMatchExpr: DebugPointAtBinding * range * DecisionTree * DecisionTreeTarget * Expr * DebugPointForTarget * range * TType -> Expr +val rebuildLinearMatchExpr: DebugPointAtBinding * range * DecisionTree * DecisionTreeTarget * Expr * DebugPointAtTarget * range * TType -> Expr val (|LinearOpExpr|_|): Expr -> (TOp * TypeInst * Expr list * Expr * range) option @@ -2524,3 +2524,5 @@ val (|OpPipeRight3|_|): expr: Expr -> (TType * Expr * Expr * Expr * Expr * range) option +/// This uses 'expr thendo ()' with a note that there should be a debug point on the 'expr' +val mkDebugPoint: g: TcGlobals -> m: range -> expr: Expr -> Expr diff --git a/src/fsharp/TypedTreePickle.fs b/src/fsharp/TypedTreePickle.fs index a2a51c0047..959757bbac 100644 --- a/src/fsharp/TypedTreePickle.fs +++ b/src/fsharp/TypedTreePickle.fs @@ -2376,7 +2376,7 @@ and u_const st = and p_dtree x st = match x with - | TDSwitch (a, b, c, d) -> p_byte 0 st; p_tup4 p_expr (p_list p_dtree_case) (p_option p_dtree) p_dummy_range (a, b, c, d) st + | TDSwitch (_sp, a, b, c, d) -> p_byte 0 st; p_tup4 p_expr (p_list p_dtree_case) (p_option p_dtree) p_dummy_range (a, b, c, d) st | TDSuccess (a, b) -> p_byte 1 st; p_tup2 p_Exprs p_int (a, b) st | TDBind (a, b) -> p_byte 2 st; p_tup2 p_bind p_dtree (a, b) st @@ -2406,9 +2406,11 @@ and p_recdInfo x st = and u_dtree st = let tag = u_byte st match tag with - | 0 -> u_tup4 u_expr (u_list u_dtree_case) (u_option u_dtree) u_dummy_range st |> TDSwitch - | 1 -> u_tup2 u_Exprs u_int st |> TDSuccess - | 2 -> u_tup2 u_bind u_dtree st |> TDBind + | 0 -> + let a,b,c,d = u_tup4 u_expr (u_list u_dtree_case) (u_option u_dtree) u_dummy_range st + TDSwitch(DebugPointAtSwitch.No, a, b, c, d) + | 1 -> u_tup2 u_Exprs u_int st |> TDSuccess + | 2 -> u_tup2 u_bind u_dtree st |> TDBind | _ -> ufailwith st "u_dtree" and u_dtree_case st = let a, b = u_tup2 u_dtree_discrim u_dtree st in (TCase(a, b)) @@ -2423,7 +2425,7 @@ and u_dtree_discrim st = | 4 -> u_tup2 u_int u_ty st |> DecisionTreeTest.ArrayLength | _ -> ufailwith st "u_dtree_discrim" -and u_target st = let a, b = u_tup2 u_Vals u_expr st in (TTarget(a, b, DebugPointForTarget.No, None)) +and u_target st = let a, b = u_tup2 u_Vals u_expr st in (TTarget(a, b, DebugPointAtTarget.No, None)) and u_bind st = let a = u_Val st in let b = u_expr st in TBind(a, b, DebugPointAtBinding.NoneAtSticky) diff --git a/src/fsharp/pars.fsy b/src/fsharp/pars.fsy index e38eea2a32..7e83493df5 100644 --- a/src/fsharp/pars.fsy +++ b/src/fsharp/pars.fsy @@ -3942,14 +3942,14 @@ patternClauses: let mArrow, resultExpr = $2 let mLast = resultExpr.Range let m = unionRanges resultExpr.Range patm - [SynMatchClause(pat, guard, (Some mArrow), resultExpr, m, DebugPointForTarget.Yes)], mLast } + [SynMatchClause(pat, guard, (Some mArrow), resultExpr, m, DebugPointAtTarget.Yes)], mLast } | patternAndGuard patternResult BAR patternClauses { let pat, guard, patm = $1 let mArrow, resultExpr = $2 let clauses, mLast = $4 let m = unionRanges resultExpr.Range patm - (SynMatchClause(pat, guard, (Some mArrow), resultExpr, m, DebugPointForTarget.Yes) :: clauses), mLast } + (SynMatchClause(pat, guard, (Some mArrow), resultExpr, m, DebugPointAtTarget.Yes) :: clauses), mLast } | patternAndGuard patternResult BAR error { let pat, guard, patm = $1 @@ -3957,7 +3957,7 @@ patternClauses: let mLast = rhs parseState 3 let m = unionRanges resultExpr.Range patm // silent recovery - [SynMatchClause(pat, guard, (Some mArrow), resultExpr, m, DebugPointForTarget.Yes)], mLast } + [SynMatchClause(pat, guard, (Some mArrow), resultExpr, m, DebugPointAtTarget.Yes)], mLast } | patternAndGuard patternResult error { let pat, guard, patm = $1 @@ -3965,7 +3965,7 @@ patternClauses: let mLast = resultExpr.Range let m = unionRanges resultExpr.Range patm // silent recovery - [SynMatchClause(pat, guard, (Some mArrow), resultExpr, m, DebugPointForTarget.Yes)], mLast } + [SynMatchClause(pat, guard, (Some mArrow), resultExpr, m, DebugPointAtTarget.Yes)], mLast } | patternAndGuard error { let pat, guard, patm = $1 @@ -3975,7 +3975,7 @@ patternClauses: | Some e -> unionRanges patm e.Range | _ -> patm // silent recovery - [SynMatchClause(pat, guard, None, SynExpr.Const (SynConst.Unit, mLast.EndRange), m, DebugPointForTarget.Yes)], mLast } + [SynMatchClause(pat, guard, None, SynExpr.Const (SynConst.Unit, mLast.EndRange), m, DebugPointAtTarget.Yes)], mLast } patternGuard: | WHEN declExpr diff --git a/src/fsharp/service/FSharpParseFileResults.fs b/src/fsharp/service/FSharpParseFileResults.fs index 2c15a4e8d4..270797e940 100644 --- a/src/fsharp/service/FSharpParseFileResults.fs +++ b/src/fsharp/service/FSharpParseFileResults.fs @@ -433,7 +433,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, // Process let-binding let findBreakPoints () = - let checkRange m = [ if isMatchRange m then yield m ] + let checkRange m = [ if isMatchRange m && not m.IsSynthetic then yield m ] let walkBindSeqPt sp = [ match sp with DebugPointAtBinding.Yes m -> yield! checkRange m | _ -> () ] let walkForSeqPt sp = [ match sp with DebugPointAtFor.Yes m -> yield! checkRange m | _ -> () ] let walkWhileSeqPt sp = [ match sp with DebugPointAtWhile.Yes m -> yield! checkRange m | _ -> () ] @@ -618,7 +618,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | SynExpr.MatchLambda (_isExnMatch, _argm, cl, spBind, _wholem) -> yield! walkBindSeqPt spBind for SynMatchClause(_, whenExpr, _, e, _, _) in cl do - yield! walkExprOpt false whenExpr + yield! walkExprOpt true whenExpr yield! walkExpr true e | SynExpr.Lambda (body = bodyExpr) -> @@ -628,7 +628,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, yield! walkBindSeqPt spBind yield! walkExpr false inpExpr for SynMatchClause(_, whenExpr, _, tgtExpr, _, _) in cl do - yield! walkExprOpt false whenExpr + yield! walkExprOpt true whenExpr yield! walkExpr true tgtExpr | SynExpr.LetOrUse (_, _, binds, bodyExpr, _) -> @@ -684,7 +684,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, yield! walkBindSeqPt spBind yield! walkExpr false e for SynMatchClause(_, whenExpr, _, e, _, _) in cl do - yield! walkExprOpt false whenExpr + yield! walkExprOpt true whenExpr yield! walkExpr true e ] // Process a class declaration or F# type declaration diff --git a/src/fsharp/symbols/Exprs.fs b/src/fsharp/symbols/Exprs.fs index 95c774bb46..82598539f5 100644 --- a/src/fsharp/symbols/Exprs.fs +++ b/src/fsharp/symbols/Exprs.fs @@ -216,7 +216,7 @@ module FSharpExprConvert = // Match "if [AI_clt](init@41, 6) then IntrinsicFunctions.FailStaticInit () else ()" let (|StaticInitializationCheck|_|) e = match e with - | Expr.Match (_, _, TDSwitch(Expr.Op (TOp.ILAsm ([ AI_clt ], _), _, [Expr.Op (TOp.ValFieldGet rfref, _, _, _) ;_], _), _, _, _), _, _, _) when IsStaticInitializationField rfref -> Some () + | Expr.Match (_, _, TDSwitch(_, Expr.Op (TOp.ILAsm ([ AI_clt ], _), _, [Expr.Op (TOp.ValFieldGet rfref, _, _, _) ;_], _), _, _, _), _, _, _) when IsStaticInitializationField rfref -> Some () | _ -> None // Match "init@41 <- 6" @@ -1242,7 +1242,7 @@ module FSharpExprConvert = and ConvDecisionTreePrim cenv env dtreeRetTy x = match x with - | TDSwitch(e1, csl, dfltOpt, m) -> + | TDSwitch(_, e1, csl, dfltOpt, m) -> let acc = match dfltOpt with | Some d -> ConvDecisionTreePrim cenv env dtreeRetTy d diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected index b4f20c0a87..f0a2ce45af 100644 --- a/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected +++ b/tests/FSharp.Compiler.Service.Tests/FSharp.CompilerService.SurfaceArea.netstandard.expected @@ -5222,6 +5222,28 @@ FSharp.Compiler.Syntax.DebugPointAtSequential: Int32 GetHashCode(System.Collecti FSharp.Compiler.Syntax.DebugPointAtSequential: Int32 Tag FSharp.Compiler.Syntax.DebugPointAtSequential: Int32 get_Tag() FSharp.Compiler.Syntax.DebugPointAtSequential: System.String ToString() +FSharp.Compiler.Syntax.DebugPointAtSwitch +FSharp.Compiler.Syntax.DebugPointAtSwitch+Tags: Int32 No +FSharp.Compiler.Syntax.DebugPointAtSwitch+Tags: Int32 Yes +FSharp.Compiler.Syntax.DebugPointAtSwitch+Yes: FSharp.Compiler.Text.Range Item +FSharp.Compiler.Syntax.DebugPointAtSwitch+Yes: FSharp.Compiler.Text.Range get_Item() +FSharp.Compiler.Syntax.DebugPointAtSwitch: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtSwitch) +FSharp.Compiler.Syntax.DebugPointAtSwitch: Boolean Equals(System.Object) +FSharp.Compiler.Syntax.DebugPointAtSwitch: Boolean Equals(System.Object, System.Collections.IEqualityComparer) +FSharp.Compiler.Syntax.DebugPointAtSwitch: Boolean IsNo +FSharp.Compiler.Syntax.DebugPointAtSwitch: Boolean IsYes +FSharp.Compiler.Syntax.DebugPointAtSwitch: Boolean get_IsNo() +FSharp.Compiler.Syntax.DebugPointAtSwitch: Boolean get_IsYes() +FSharp.Compiler.Syntax.DebugPointAtSwitch: FSharp.Compiler.Syntax.DebugPointAtSwitch NewYes(FSharp.Compiler.Text.Range) +FSharp.Compiler.Syntax.DebugPointAtSwitch: FSharp.Compiler.Syntax.DebugPointAtSwitch No +FSharp.Compiler.Syntax.DebugPointAtSwitch: FSharp.Compiler.Syntax.DebugPointAtSwitch get_No() +FSharp.Compiler.Syntax.DebugPointAtSwitch: FSharp.Compiler.Syntax.DebugPointAtSwitch+Tags +FSharp.Compiler.Syntax.DebugPointAtSwitch: FSharp.Compiler.Syntax.DebugPointAtSwitch+Yes +FSharp.Compiler.Syntax.DebugPointAtSwitch: Int32 GetHashCode() +FSharp.Compiler.Syntax.DebugPointAtSwitch: Int32 GetHashCode(System.Collections.IEqualityComparer) +FSharp.Compiler.Syntax.DebugPointAtSwitch: Int32 Tag +FSharp.Compiler.Syntax.DebugPointAtSwitch: Int32 get_Tag() +FSharp.Compiler.Syntax.DebugPointAtSwitch: System.String ToString() FSharp.Compiler.Syntax.DebugPointAtTry FSharp.Compiler.Syntax.DebugPointAtTry+Tags: Int32 Body FSharp.Compiler.Syntax.DebugPointAtTry+Tags: Int32 No @@ -5293,29 +5315,29 @@ FSharp.Compiler.Syntax.DebugPointAtWith: Int32 GetHashCode(System.Collections.IE FSharp.Compiler.Syntax.DebugPointAtWith: Int32 Tag FSharp.Compiler.Syntax.DebugPointAtWith: Int32 get_Tag() FSharp.Compiler.Syntax.DebugPointAtWith: System.String ToString() -FSharp.Compiler.Syntax.DebugPointForTarget -FSharp.Compiler.Syntax.DebugPointForTarget+Tags: Int32 No -FSharp.Compiler.Syntax.DebugPointForTarget+Tags: Int32 Yes -FSharp.Compiler.Syntax.DebugPointForTarget: Boolean Equals(FSharp.Compiler.Syntax.DebugPointForTarget) -FSharp.Compiler.Syntax.DebugPointForTarget: Boolean Equals(System.Object) -FSharp.Compiler.Syntax.DebugPointForTarget: Boolean Equals(System.Object, System.Collections.IEqualityComparer) -FSharp.Compiler.Syntax.DebugPointForTarget: Boolean IsNo -FSharp.Compiler.Syntax.DebugPointForTarget: Boolean IsYes -FSharp.Compiler.Syntax.DebugPointForTarget: Boolean get_IsNo() -FSharp.Compiler.Syntax.DebugPointForTarget: Boolean get_IsYes() -FSharp.Compiler.Syntax.DebugPointForTarget: FSharp.Compiler.Syntax.DebugPointForTarget No -FSharp.Compiler.Syntax.DebugPointForTarget: FSharp.Compiler.Syntax.DebugPointForTarget Yes -FSharp.Compiler.Syntax.DebugPointForTarget: FSharp.Compiler.Syntax.DebugPointForTarget get_No() -FSharp.Compiler.Syntax.DebugPointForTarget: FSharp.Compiler.Syntax.DebugPointForTarget get_Yes() -FSharp.Compiler.Syntax.DebugPointForTarget: FSharp.Compiler.Syntax.DebugPointForTarget+Tags -FSharp.Compiler.Syntax.DebugPointForTarget: Int32 CompareTo(FSharp.Compiler.Syntax.DebugPointForTarget) -FSharp.Compiler.Syntax.DebugPointForTarget: Int32 CompareTo(System.Object) -FSharp.Compiler.Syntax.DebugPointForTarget: Int32 CompareTo(System.Object, System.Collections.IComparer) -FSharp.Compiler.Syntax.DebugPointForTarget: Int32 GetHashCode() -FSharp.Compiler.Syntax.DebugPointForTarget: Int32 GetHashCode(System.Collections.IEqualityComparer) -FSharp.Compiler.Syntax.DebugPointForTarget: Int32 Tag -FSharp.Compiler.Syntax.DebugPointForTarget: Int32 get_Tag() -FSharp.Compiler.Syntax.DebugPointForTarget: System.String ToString() +FSharp.Compiler.Syntax.DebugPointAtTarget +FSharp.Compiler.Syntax.DebugPointAtTarget+Tags: Int32 No +FSharp.Compiler.Syntax.DebugPointAtTarget+Tags: Int32 Yes +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(FSharp.Compiler.Syntax.DebugPointAtTarget) +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(System.Object) +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean Equals(System.Object, System.Collections.IEqualityComparer) +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean IsNo +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean IsYes +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean get_IsNo() +FSharp.Compiler.Syntax.DebugPointAtTarget: Boolean get_IsYes() +FSharp.Compiler.Syntax.DebugPointAtTarget: FSharp.Compiler.Syntax.DebugPointAtTarget No +FSharp.Compiler.Syntax.DebugPointAtTarget: FSharp.Compiler.Syntax.DebugPointAtTarget Yes +FSharp.Compiler.Syntax.DebugPointAtTarget: FSharp.Compiler.Syntax.DebugPointAtTarget get_No() +FSharp.Compiler.Syntax.DebugPointAtTarget: FSharp.Compiler.Syntax.DebugPointAtTarget get_Yes() +FSharp.Compiler.Syntax.DebugPointAtTarget: FSharp.Compiler.Syntax.DebugPointAtTarget+Tags +FSharp.Compiler.Syntax.DebugPointAtTarget: Int32 CompareTo(FSharp.Compiler.Syntax.DebugPointAtTarget) +FSharp.Compiler.Syntax.DebugPointAtTarget: Int32 CompareTo(System.Object) +FSharp.Compiler.Syntax.DebugPointAtTarget: Int32 CompareTo(System.Object, System.Collections.IComparer) +FSharp.Compiler.Syntax.DebugPointAtTarget: Int32 GetHashCode() +FSharp.Compiler.Syntax.DebugPointAtTarget: Int32 GetHashCode(System.Collections.IEqualityComparer) +FSharp.Compiler.Syntax.DebugPointAtTarget: Int32 Tag +FSharp.Compiler.Syntax.DebugPointAtTarget: Int32 get_Tag() +FSharp.Compiler.Syntax.DebugPointAtTarget: System.String ToString() FSharp.Compiler.Syntax.ExprAtomicFlag FSharp.Compiler.Syntax.ExprAtomicFlag: FSharp.Compiler.Syntax.ExprAtomicFlag Atomic FSharp.Compiler.Syntax.ExprAtomicFlag: FSharp.Compiler.Syntax.ExprAtomicFlag NonAtomic @@ -7011,11 +7033,11 @@ FSharp.Compiler.Syntax.SynInterpolatedStringPart: Int32 Tag FSharp.Compiler.Syntax.SynInterpolatedStringPart: Int32 get_Tag() FSharp.Compiler.Syntax.SynInterpolatedStringPart: System.String ToString() FSharp.Compiler.Syntax.SynMatchClause -FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.DebugPointForTarget debugPoint -FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.DebugPointForTarget get_debugPoint() +FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.DebugPointAtTarget debugPoint +FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.DebugPointAtTarget get_debugPoint() FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.SynExpr get_resultExpr() FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.SynExpr resultExpr -FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.SynMatchClause NewSynMatchClause(FSharp.Compiler.Syntax.SynPat, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynExpr], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.DebugPointForTarget) +FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.SynMatchClause NewSynMatchClause(FSharp.Compiler.Syntax.SynPat, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynExpr], Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range], FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range, FSharp.Compiler.Syntax.DebugPointAtTarget) FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.SynPat get_pat() FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Syntax.SynPat pat FSharp.Compiler.Syntax.SynMatchClause: FSharp.Compiler.Text.Range Range diff --git a/tests/fsharp/Compiler/CodeGen/EmittedIL/BooleanLogic.fs b/tests/fsharp/Compiler/CodeGen/EmittedIL/BooleanLogic.fs index b5ec522512..3f842a0c04 100644 --- a/tests/fsharp/Compiler/CodeGen/EmittedIL/BooleanLogic.fs +++ b/tests/fsharp/Compiler/CodeGen/EmittedIL/BooleanLogic.fs @@ -21,35 +21,36 @@ let compute (x: int) = (fun verifier -> verifier.VerifyIL [ """ .method public static int32 compute(int32 x) cil managed -{ - - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldc.i4.1 - IL_0002: beq.s IL_0008 - - IL_0004: ldarg.0 - IL_0005: ldc.i4.2 - IL_0006: bne.un.s IL_000a - - IL_0008: ldc.i4.2 - IL_0009: ret - - IL_000a: ldarg.0 - IL_000b: ldc.i4.3 - IL_000c: beq.s IL_0012 - - IL_000e: ldarg.0 - IL_000f: ldc.i4.4 - IL_0010: bne.un.s IL_0014 - - IL_0012: ldc.i4.3 - IL_0013: ret - - IL_0014: ldc.i4.4 - IL_0015: ret -} + { + .maxstack 8 + IL_0000: nop + IL_0001: ldarg.0 + IL_0002: ldc.i4.1 + IL_0003: beq.s IL_0009 + + IL_0005: ldarg.0 + IL_0006: ldc.i4.2 + IL_0007: bne.un.s IL_000b + + IL_0009: ldc.i4.2 + IL_000a: ret + + IL_000b: nop + IL_000c: ldarg.0 + IL_000d: ldc.i4.3 + IL_000e: beq.s IL_0014 + + IL_0010: ldarg.0 + IL_0011: ldc.i4.4 + IL_0012: bne.un.s IL_0016 + + IL_0014: ldc.i4.3 + IL_0015: ret + + IL_0016: ldc.i4.4 + IL_0017: ret +} """ ]) diff --git a/tests/fsharp/Compiler/CodeGen/EmittedIL/ComputedListExpressions.fs b/tests/fsharp/Compiler/CodeGen/EmittedIL/ComputedListExpressions.fs index 4ba85d0067..ca68e2e9d7 100644 --- a/tests/fsharp/Compiler/CodeGen/EmittedIL/ComputedListExpressions.fs +++ b/tests/fsharp/Compiler/CodeGen/EmittedIL/ComputedListExpressions.fs @@ -53,25 +53,26 @@ let ListExpressionSteppingTest2 () = .maxstack 4 .locals init (valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0) - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop - IL_0010: ldloca.s V_0 - IL_0012: ldc.i4.1 - IL_0013: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0018: nop - IL_0019: ldstr "goodbye" - IL_001e: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0023: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0028: pop - IL_0029: ldloca.s V_0 - IL_002b: ldc.i4.2 - IL_002c: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0031: nop - IL_0032: ldloca.s V_0 - IL_0034: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_0039: ret + IL_0000: nop + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop + IL_0011: ldloca.s V_0 + IL_0013: ldc.i4.1 + IL_0014: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0019: nop + IL_001a: ldstr "goodbye" + IL_001f: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0024: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0029: pop + IL_002a: ldloca.s V_0 + IL_002c: ldc.i4.2 + IL_002d: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0032: nop + IL_0033: ldloca.s V_0 + IL_0035: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_003a: ret } """ ]) @@ -156,56 +157,58 @@ let ListExpressionSteppingTest4 () = class [runtime]System.Collections.Generic.IEnumerable`1 V_2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 V_3, int32 V_4) - IL_0000: ldc.i4.0 - IL_0001: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0006: stloc.1 + IL_0000: nop + IL_0001: ldc.i4.0 + IL_0002: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) + IL_0007: stloc.1 .try { - IL_0007: nop - IL_0008: ldc.i4.0 - IL_0009: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_000e: stloc.3 - IL_000f: ldloc.3 - IL_0010: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0015: nop - IL_0016: ldloca.s V_0 - IL_0018: ldloc.1 - IL_0019: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_001e: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0023: nop - IL_0024: ldloc.1 - IL_0025: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_002a: ldloc.3 - IL_002b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0030: add - IL_0031: stloc.s V_4 - IL_0033: ldloca.s V_0 - IL_0035: ldloc.s V_4 - IL_0037: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_003c: nop - IL_003d: ldnull - IL_003e: stloc.2 - IL_003f: leave.s IL_005a + IL_0008: nop + IL_0009: ldc.i4.0 + IL_000a: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) + IL_000f: stloc.3 + IL_0010: ldloc.3 + IL_0011: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0016: nop + IL_0017: ldloca.s V_0 + IL_0019: ldloc.1 + IL_001a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_001f: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0024: nop + IL_0025: ldloc.1 + IL_0026: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_002b: ldloc.3 + IL_002c: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0031: add + IL_0032: stloc.s V_4 + IL_0034: ldloca.s V_0 + IL_0036: ldloc.s V_4 + IL_0038: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_003d: nop + IL_003e: ldnull + IL_003f: stloc.2 + IL_0040: leave.s IL_005b } finally { - IL_0041: nop - IL_0042: ldloc.1 - IL_0043: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0048: nop - IL_0049: ldstr "done" - IL_004e: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0053: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0058: pop - IL_0059: endfinally + IL_0042: nop + IL_0043: ldloc.1 + IL_0044: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0049: nop + IL_004a: ldstr "done" + IL_004f: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0054: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0059: pop + IL_005a: endfinally } - IL_005a: ldloc.2 - IL_005b: pop - IL_005c: ldloca.s V_0 - IL_005e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_0063: ret + IL_005b: ldloc.2 + IL_005c: pop + IL_005d: ldloca.s V_0 + IL_005f: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_0064: ret } + """ ]) @@ -309,95 +312,93 @@ let ListExpressionSteppingTest6 () = (fun verifier -> verifier.VerifyIL [ """ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 - ListExpressionSteppingTest6() cil managed - { - - .maxstack 5 - .locals init (valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, - class [runtime]System.Collections.Generic.IEnumerator`1 V_1, - class [runtime]System.Collections.Generic.IEnumerable`1 V_2, - int32 V_3, - class [runtime]System.IDisposable V_4) - IL_0000: ldc.i4.1 - IL_0001: ldc.i4.1 - IL_0002: ldc.i4.4 - IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, - int32, - int32) - IL_0008: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() - IL_000d: stloc.1 - .try - { - IL_000e: ldloc.1 - IL_000f: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() - IL_0014: brfalse.s IL_0074 - - IL_0016: ldloc.1 - IL_0017: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() - IL_001c: stloc.3 - IL_001d: ldloc.3 - IL_001e: ldc.i4.1 - IL_001f: sub - IL_0020: switch ( - IL_002f, - IL_004b) - IL_002d: br.s IL_0068 - - IL_002f: ldstr "hello" - IL_0034: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0039: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_003e: pop - IL_003f: ldloca.s V_0 - IL_0041: ldloc.3 - IL_0042: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0047: nop - IL_0048: nop - IL_0049: br.s IL_000e - - IL_004b: nop - IL_004c: ldstr "hello" - IL_0051: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0056: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_005b: pop - IL_005c: ldloca.s V_0 - IL_005e: ldloc.3 - IL_005f: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0064: nop - IL_0065: nop - IL_0066: br.s IL_000e - - IL_0068: ldloca.s V_0 - IL_006a: ldloc.3 - IL_006b: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0070: nop - IL_0071: nop - IL_0072: br.s IL_000e - - IL_0074: ldnull - IL_0075: stloc.2 - IL_0076: leave.s IL_008d - - } - finally - { - IL_0078: ldloc.1 - IL_0079: isinst [runtime]System.IDisposable - IL_007e: stloc.s V_4 - IL_0080: ldloc.s V_4 - IL_0082: brfalse.s IL_008c - - IL_0084: ldloc.s V_4 - IL_0086: callvirt instance void [runtime]System.IDisposable::Dispose() - IL_008b: endfinally - IL_008c: endfinally - } - IL_008d: ldloc.2 - IL_008e: pop - IL_008f: ldloca.s V_0 - IL_0091: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_0096: ret - } - -} + ListExpressionSteppingTest6() cil managed +{ + + .maxstack 5 + .locals init (valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, + class [runtime]System.Collections.Generic.IEnumerator`1 V_1, + class [runtime]System.Collections.Generic.IEnumerable`1 V_2, + int32 V_3, + class [runtime]System.IDisposable V_4) + IL_0000: ldc.i4.1 + IL_0001: ldc.i4.1 + IL_0002: ldc.i4.4 + IL_0003: call class [runtime]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, + int32, + int32) + IL_0008: callvirt instance class [runtime]System.Collections.Generic.IEnumerator`1 class [runtime]System.Collections.Generic.IEnumerable`1::GetEnumerator() + IL_000d: stloc.1 + .try + { + IL_000e: ldloc.1 + IL_000f: callvirt instance bool [runtime]System.Collections.IEnumerator::MoveNext() + IL_0014: brfalse.s IL_0074 + + IL_0016: ldloc.1 + IL_0017: callvirt instance !0 class [runtime]System.Collections.Generic.IEnumerator`1::get_Current() + IL_001c: stloc.3 + IL_001d: nop + IL_001e: ldloc.3 + IL_001f: ldc.i4.1 + IL_0020: sub + IL_0021: switch ( + IL_0030, + IL_004c) + IL_002e: br.s IL_0068 + + IL_0030: ldstr "hello" + IL_0035: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_003a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_003f: pop + IL_0040: ldloca.s V_0 + IL_0042: ldloc.3 + IL_0043: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0048: nop + IL_0049: nop + IL_004a: br.s IL_000e + + IL_004c: ldstr "hello" + IL_0051: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0056: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_005b: pop + IL_005c: ldloca.s V_0 + IL_005e: ldloc.3 + IL_005f: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0064: nop + IL_0065: nop + IL_0066: br.s IL_000e + + IL_0068: ldloca.s V_0 + IL_006a: ldloc.3 + IL_006b: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0070: nop + IL_0071: nop + IL_0072: br.s IL_000e + + IL_0074: ldnull + IL_0075: stloc.2 + IL_0076: leave.s IL_008d + + } + finally + { + IL_0078: ldloc.1 + IL_0079: isinst [runtime]System.IDisposable + IL_007e: stloc.s V_4 + IL_0080: ldloc.s V_4 + IL_0082: brfalse.s IL_008c + + IL_0084: ldloc.s V_4 + IL_0086: callvirt instance void [runtime]System.IDisposable::Dispose() + IL_008b: endfinally + IL_008c: endfinally + } + IL_008d: ldloc.2 + IL_008e: pop + IL_008f: ldloca.s V_0 + IL_0091: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_0096: ret +} """ ]) diff --git a/tests/fsharp/Compiler/CodeGen/EmittedIL/TaskGeneratedCode.fs b/tests/fsharp/Compiler/CodeGen/EmittedIL/TaskGeneratedCode.fs index 3bbfcdf9eb..d75e184921 100644 --- a/tests/fsharp/Compiler/CodeGen/EmittedIL/TaskGeneratedCode.fs +++ b/tests/fsharp/Compiler/CodeGen/EmittedIL/TaskGeneratedCode.fs @@ -889,69 +889,70 @@ let testTask() = task { while x > 4 do System.Console.WriteLine("loop") } { IL_0007: ldc.i4.1 IL_0008: stloc.3 - IL_0009: ldloc.3 - IL_000a: brfalse.s IL_0017 - - IL_000c: call int32 Test::get_x() - IL_0011: ldc.i4.4 - IL_0012: cgt - IL_0014: nop - IL_0015: br.s IL_0019 - - IL_0017: ldc.i4.0 - IL_0018: nop - IL_0019: brfalse.s IL_0030 - - IL_001b: ldstr "loop" - IL_0020: call void [runtime]System.Console::WriteLine(string) - IL_0025: ldc.i4.1 - IL_0026: stloc.s V_4 - IL_0028: ldloc.s V_4 - IL_002a: stloc.3 - IL_002b: ldc.i4.0 - IL_002c: stloc.0 - IL_002d: nop - IL_002e: br.s IL_0009 - - IL_0030: ldloc.3 - IL_0031: stloc.2 - IL_0032: ldloc.2 - IL_0033: brfalse.s IL_0052 - - IL_0035: ldarg.0 - IL_0036: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data - IL_003b: ldflda valuetype [runtime]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::MethodBuilder - IL_0040: ldarg.0 - IL_0041: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data - IL_0046: ldfld !0 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::Result - IL_004b: call instance void valuetype [netstandard]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetResult(!0) - IL_0050: leave.s IL_0060 - - IL_0052: leave.s IL_0060 + IL_0009: nop + IL_000a: ldloc.3 + IL_000b: brfalse.s IL_0018 + + IL_000d: call int32 Test::get_x() + IL_0012: ldc.i4.4 + IL_0013: cgt + IL_0015: nop + IL_0016: br.s IL_001a + + IL_0018: ldc.i4.0 + IL_0019: nop + IL_001a: brfalse.s IL_0031 + + IL_001c: ldstr "loop" + IL_0021: call void [runtime]System.Console::WriteLine(string) + IL_0026: ldc.i4.1 + IL_0027: stloc.s V_4 + IL_0029: ldloc.s V_4 + IL_002b: stloc.3 + IL_002c: ldc.i4.0 + IL_002d: stloc.0 + IL_002e: nop + IL_002f: br.s IL_0009 + + IL_0031: ldloc.3 + IL_0032: stloc.2 + IL_0033: ldloc.2 + IL_0034: brfalse.s IL_0053 + + IL_0036: ldarg.0 + IL_0037: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data + IL_003c: ldflda valuetype [runtime]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::MethodBuilder + IL_0041: ldarg.0 + IL_0042: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data + IL_0047: ldfld !0 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::Result + IL_004c: call instance void valuetype [netstandard]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetResult(!0) + IL_0051: leave.s IL_0061 + + IL_0053: leave.s IL_0061 } catch [runtime]System.Object { - IL_0054: castclass [runtime]System.Exception - IL_0059: stloc.s V_5 - IL_005b: ldloc.s V_5 - IL_005d: stloc.1 - IL_005e: leave.s IL_0060 + IL_0055: castclass [runtime]System.Exception + IL_005a: stloc.s V_5 + IL_005c: ldloc.s V_5 + IL_005e: stloc.1 + IL_005f: leave.s IL_0061 } - IL_0060: ldloc.1 - IL_0061: stloc.s V_5 - IL_0063: ldloc.s V_5 - IL_0065: brtrue.s IL_0068 - - IL_0067: ret - - IL_0068: ldarg.0 - IL_0069: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data - IL_006e: ldflda valuetype [runtime]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::MethodBuilder - IL_0073: ldloc.s V_5 - IL_0075: call instance void valuetype [netstandard]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetException(class [netstandard]System.Exception) - IL_007a: ret + IL_0061: ldloc.1 + IL_0062: stloc.s V_5 + IL_0064: ldloc.s V_5 + IL_0066: brtrue.s IL_0069 + + IL_0068: ret + + IL_0069: ldarg.0 + IL_006a: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data + IL_006f: ldflda valuetype [runtime]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::MethodBuilder + IL_0074: ldloc.s V_5 + IL_0076: call instance void valuetype [netstandard]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetException(class [netstandard]System.Exception) + IL_007b: ret } """ ]) @@ -988,69 +989,70 @@ let testTask() = task { while x > 4 do System.Console.WriteLine("loop") } { IL_0007: ldc.i4.1 IL_0008: stloc.3 - IL_0009: ldloc.3 - IL_000a: brfalse.s IL_0017 - - IL_000c: call int32 Test::get_x() - IL_0011: ldc.i4.4 - IL_0012: cgt - IL_0014: nop - IL_0015: br.s IL_0019 - - IL_0017: ldc.i4.0 - IL_0018: nop - IL_0019: brfalse.s IL_0030 - - IL_001b: ldstr "loop" - IL_0020: call void [runtime]System.Console::WriteLine(string) - IL_0025: ldc.i4.1 - IL_0026: stloc.s V_4 - IL_0028: ldloc.s V_4 - IL_002a: stloc.3 - IL_002b: ldc.i4.0 - IL_002c: stloc.0 - IL_002d: nop - IL_002e: br.s IL_0009 - - IL_0030: ldloc.3 - IL_0031: stloc.2 - IL_0032: ldloc.2 - IL_0033: brfalse.s IL_0052 - - IL_0035: ldarg.0 - IL_0036: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data - IL_003b: ldflda valuetype [runtime]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::MethodBuilder - IL_0040: ldarg.0 - IL_0041: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data - IL_0046: ldfld !0 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::Result - IL_004b: call instance void valuetype [netstandard]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetResult(!0) - IL_0050: leave.s IL_0060 - - IL_0052: leave.s IL_0060 + IL_0009: nop + IL_000a: ldloc.3 + IL_000b: brfalse.s IL_0018 + + IL_000d: call int32 Test::get_x() + IL_0012: ldc.i4.4 + IL_0013: cgt + IL_0015: nop + IL_0016: br.s IL_001a + + IL_0018: ldc.i4.0 + IL_0019: nop + IL_001a: brfalse.s IL_0031 + + IL_001c: ldstr "loop" + IL_0021: call void [runtime]System.Console::WriteLine(string) + IL_0026: ldc.i4.1 + IL_0027: stloc.s V_4 + IL_0029: ldloc.s V_4 + IL_002b: stloc.3 + IL_002c: ldc.i4.0 + IL_002d: stloc.0 + IL_002e: nop + IL_002f: br.s IL_0009 + + IL_0031: ldloc.3 + IL_0032: stloc.2 + IL_0033: ldloc.2 + IL_0034: brfalse.s IL_0053 + + IL_0036: ldarg.0 + IL_0037: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data + IL_003c: ldflda valuetype [runtime]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::MethodBuilder + IL_0041: ldarg.0 + IL_0042: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data + IL_0047: ldfld !0 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::Result + IL_004c: call instance void valuetype [netstandard]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetResult(!0) + IL_0051: leave.s IL_0061 + + IL_0053: leave.s IL_0061 } catch [runtime]System.Object { - IL_0054: castclass [runtime]System.Exception - IL_0059: stloc.s V_5 - IL_005b: ldloc.s V_5 - IL_005d: stloc.1 - IL_005e: leave.s IL_0060 + IL_0055: castclass [runtime]System.Exception + IL_005a: stloc.s V_5 + IL_005c: ldloc.s V_5 + IL_005e: stloc.1 + IL_005f: leave.s IL_0061 } - IL_0060: ldloc.1 - IL_0061: stloc.s V_6 - IL_0063: ldloc.s V_6 - IL_0065: brtrue.s IL_0068 - - IL_0067: ret - - IL_0068: ldarg.0 - IL_0069: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data - IL_006e: ldflda valuetype [runtime]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::MethodBuilder - IL_0073: ldloc.s V_6 - IL_0075: call instance void valuetype [netstandard]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetException(class [netstandard]System.Exception) - IL_007a: ret + IL_0061: ldloc.1 + IL_0062: stloc.s V_6 + IL_0064: ldloc.s V_6 + IL_0066: brtrue.s IL_0069 + + IL_0068: ret + + IL_0069: ldarg.0 + IL_006a: ldflda valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1 Test/testTask@5::Data + IL_006f: ldflda valuetype [runtime]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1 valuetype [FSharp.Core]Microsoft.FSharp.Control.TaskStateMachineData`1::MethodBuilder + IL_0074: ldloc.s V_6 + IL_0076: call instance void valuetype [netstandard]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1::SetException(class [netstandard]System.Exception) + IL_007b: ret } """ ]) diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest3.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest3.il.bsl index 80c04ba5c4..71cebc43a5 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest3.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest3.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000270 Length: 0x000000B1 } .module AsyncExpressionSteppingTest3.dll -// MVID: {611B0EC4-6394-F35E-A745-0383C40E1B61} +// MVID: {611C52A3-6394-F35E-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x058A0000 +// Image base: 0x06660000 // =============== CLASS MEMBERS DECLARATION =================== diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest4.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest4.il.bsl index c1df939a31..a411614d6f 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest4.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest4.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000270 Length: 0x000000B1 } .module AsyncExpressionSteppingTest4.dll -// MVID: {611B0EC4-6394-6D4B-A745-0383C40E1B61} +// MVID: {611C52A3-6394-6D4B-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06BA0000 +// Image base: 0x06B50000 // =============== CLASS MEMBERS DECLARATION =================== diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest5.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest5.il.bsl index 1fa86b5eb5..8ecc211736 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest5.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest5.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000002B0 Length: 0x000000BE } .module AsyncExpressionSteppingTest5.dll -// MVID: {611B0EC4-6394-30E8-A745-0383C40E1B61} +// MVID: {611C52A3-6394-30E8-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07280000 +// Image base: 0x06B50000 // =============== CLASS MEMBERS DECLARATION =================== diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest6.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest6.il.bsl index 64210fb268..8fc6594026 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest6.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/AsyncExpressionStepping/AsyncExpressionSteppingTest6.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000002A0 Length: 0x000000BE } .module AsyncExpressionSteppingTest6.dll -// MVID: {611B0EC4-6394-4FAD-A745-0383C40E1B61} +// MVID: {611C52A3-6394-4FAD-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05150000 +// Image base: 0x06B60000 // =============== CLASS MEMBERS DECLARATION =================== diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Default.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Default.il.bsl index bbe5b40ba6..9584bf6b19 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Default.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Default.il.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.8.3928.0 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -13,7 +13,7 @@ .assembly extern FSharp.Core { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:4:1:0 + .ver 5:0:0:0 } .assembly Default { @@ -29,20 +29,20 @@ } .mresource public FSharpSignatureData.Default { - // Offset: 0x00000000 Length: 0x000003FA + // Offset: 0x00000000 Length: 0x000003F0 } .mresource public FSharpOptimizationData.Default { - // Offset: 0x00000400 Length: 0x000000BA + // Offset: 0x000003F8 Length: 0x000000BA } .module Default.dll -// MVID: {59B19208-AAA9-67BB-A745-03830892B159} +// MVID: {611C4D7D-AAA9-67BB-A745-03837D4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00E30000 +// Image base: 0x070A0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -62,7 +62,7 @@ // Code size 9 (0x9) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 9,9 : 4,23 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\AttributeTargets\\Default.fs' + .line 9,9 : 4,23 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\AttributeTargets\\Default.fs' IL_0000: ldarg.0 IL_0001: callvirt instance void [mscorlib]System.Attribute::.ctor() IL_0006: ldarg.0 @@ -103,20 +103,22 @@ .method private specialname rtspecialname static void .cctor() cil managed { - // Code size 25 (0x19) + // Code size 26 (0x1a) .maxstack 4 .locals init ([0] int32 T) + .line 11,12 : 1,29 '' + IL_0000: nop .line 12,12 : 10,25 '' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 12,12 : 27,28 '' - IL_0010: ldc.i4.1 - IL_0011: dup - IL_0012: stsfld int32 ''.$M::T@12 - IL_0017: stloc.0 - IL_0018: ret + IL_0011: ldc.i4.1 + IL_0012: dup + IL_0013: stsfld int32 ''.$M::T@12 + IL_0018: stloc.0 + IL_0019: ret } // end of method $M::.cctor } // end of class ''.$M diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Field.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Field.il.bsl index 6d4d86af42..4eb0997603 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Field.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Field.il.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.8.3928.0 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -13,7 +13,7 @@ .assembly extern FSharp.Core { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:4:1:0 + .ver 5:0:0:0 } .assembly Field { @@ -29,20 +29,20 @@ } .mresource public FSharpSignatureData.Field { - // Offset: 0x00000000 Length: 0x000003F4 + // Offset: 0x00000000 Length: 0x000003EA } .mresource public FSharpOptimizationData.Field { - // Offset: 0x000003F8 Length: 0x000000B8 + // Offset: 0x000003F0 Length: 0x000000B8 } .module Field.dll -// MVID: {59B19208-96F8-CD6E-A745-03830892B159} +// MVID: {611C4D7D-96F8-CD6E-A745-03837D4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00F60000 +// Image base: 0x06AD0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -62,7 +62,7 @@ // Code size 9 (0x9) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 9,9 : 4,23 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\AttributeTargets\\Field.fs' + .line 9,9 : 4,23 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\AttributeTargets\\Field.fs' IL_0000: ldarg.0 IL_0001: callvirt instance void [mscorlib]System.Attribute::.ctor() IL_0006: ldarg.0 @@ -78,7 +78,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld int32 ''.$M::'T@12-2' + IL_0000: ldsfld int32 ''.$M::T@12 IL_0005: ret } // end of method M::get_T @@ -92,7 +92,7 @@ .class private abstract auto ansi sealed ''.$M extends [mscorlib]System.Object { - .field static assembly initonly int32 'T@12-2' + .field static assembly initonly int32 T@12 .custom instance void M/ExportAttribute::.ctor() = ( 01 00 00 00 ) .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly int32 init@ @@ -102,20 +102,22 @@ .method private specialname rtspecialname static void .cctor() cil managed { - // Code size 25 (0x19) + // Code size 26 (0x1a) .maxstack 4 .locals init ([0] int32 T) + .line 11,12 : 1,29 '' + IL_0000: nop .line 12,12 : 10,25 '' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 12,12 : 27,28 '' - IL_0010: ldc.i4.1 - IL_0011: dup - IL_0012: stsfld int32 ''.$M::'T@12-2' - IL_0017: stloc.0 - IL_0018: ret + IL_0011: ldc.i4.1 + IL_0012: dup + IL_0013: stsfld int32 ''.$M::T@12 + IL_0018: stloc.0 + IL_0019: ret } // end of method $M::.cctor } // end of class ''.$M diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Property.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Property.il.bsl index eb0160f0a0..1e5bb37b22 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Property.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/AttributeTargets/Property.il.bsl @@ -1,5 +1,5 @@ -// Microsoft (R) .NET Framework IL Disassembler. Version 4.6.1055.0 +// Microsoft (R) .NET Framework IL Disassembler. Version 4.8.3928.0 // Copyright (c) Microsoft Corporation. All rights reserved. @@ -13,7 +13,7 @@ .assembly extern FSharp.Core { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: - .ver 4:4:1:0 + .ver 5:0:0:0 } .assembly Property { @@ -29,20 +29,20 @@ } .mresource public FSharpSignatureData.Property { - // Offset: 0x00000000 Length: 0x000003FD + // Offset: 0x00000000 Length: 0x000003F3 } .mresource public FSharpOptimizationData.Property { - // Offset: 0x00000408 Length: 0x000000BB + // Offset: 0x000003F8 Length: 0x000000BB } .module Property.dll -// MVID: {59B19208-9B5C-7949-A745-03830892B159} +// MVID: {611C4D7D-9B5C-7949-A745-03837D4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x02E80000 +// Image base: 0x06F60000 // =============== CLASS MEMBERS DECLARATION =================== @@ -62,7 +62,7 @@ // Code size 9 (0x9) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 9,9 : 4,23 'C:\\GitHub\\dsyme\\visualfsharp\\tests\\fsharpqa\\Source\\CodeGen\\EmittedIL\\AttributeTargets\\Property.fs' + .line 9,9 : 4,23 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\AttributeTargets\\Property.fs' IL_0000: ldarg.0 IL_0001: callvirt instance void [mscorlib]System.Attribute::.ctor() IL_0006: ldarg.0 @@ -78,7 +78,7 @@ { // Code size 6 (0x6) .maxstack 8 - IL_0000: ldsfld int32 ''.$M::'T@12-4' + IL_0000: ldsfld int32 ''.$M::T@12 IL_0005: ret } // end of method M::get_T @@ -93,7 +93,7 @@ .class private abstract auto ansi sealed ''.$M extends [mscorlib]System.Object { - .field static assembly initonly int32 'T@12-4' + .field static assembly initonly int32 T@12 .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) .field static assembly int32 init@ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 ) @@ -102,20 +102,22 @@ .method private specialname rtspecialname static void .cctor() cil managed { - // Code size 25 (0x19) + // Code size 26 (0x1a) .maxstack 4 .locals init ([0] int32 T) + .line 11,12 : 1,29 '' + IL_0000: nop .line 12,12 : 10,25 '' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 12,12 : 27,28 '' - IL_0010: ldc.i4.1 - IL_0011: dup - IL_0012: stsfld int32 ''.$M::'T@12-4' - IL_0017: stloc.0 - IL_0018: ret + IL_0011: ldc.i4.1 + IL_0012: dup + IL_0013: stsfld int32 ''.$M::T@12 + IL_0018: stloc.0 + IL_0019: ret } // end of method $M::.cctor } // end of class ''.$M diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01.il.bsl index cd87bf2f64..dacfacbd39 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/CCtorDUWithMember/CCtorDUWithMember01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000780 Length: 0x00000227 } .module CCtorDUWithMember01.exe -// MVID: {60BD4554-26F1-14EE-A745-03835445BD60} +// MVID: {611C4D7E-26F1-14EE-A745-03837E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x04E50000 +// Image base: 0x067A0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -243,60 +243,63 @@ instance int32 CompareTo(class CCtorDUWithMember01a/C obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 48 (0x30) + // Code size 49 (0x31) .maxstack 4 .locals init ([0] int32 V_0, [1] int32 V_1) - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\CCtorDUWithMember\\CCtorDUWithMember01a.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0026 + .line 3,3 : 6,7 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\CCtorDUWithMember\\CCtorDUWithMember01a.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0027 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0024 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0025 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 CCtorDUWithMember01a/C::_tag - IL_0012: stloc.0 - IL_0013: ldarg.1 - IL_0014: ldfld int32 CCtorDUWithMember01a/C::_tag - IL_0019: stloc.1 - IL_001a: ldloc.0 - IL_001b: ldloc.1 - IL_001c: bne.un.s IL_0020 + IL_000d: ldarg.0 + IL_000e: ldfld int32 CCtorDUWithMember01a/C::_tag + IL_0013: stloc.0 + IL_0014: ldarg.1 + IL_0015: ldfld int32 CCtorDUWithMember01a/C::_tag + IL_001a: stloc.1 + .line 100001,100001 : 0,0 '' + IL_001b: ldloc.0 + IL_001c: ldloc.1 + IL_001d: bne.un.s IL_0021 .line 100001,100001 : 0,0 '' - IL_001e: ldc.i4.0 - IL_001f: ret + IL_001f: ldc.i4.0 + IL_0020: ret .line 100001,100001 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldloc.1 - IL_0022: sub - IL_0023: ret + IL_0021: ldloc.0 + IL_0022: ldloc.1 + IL_0023: sub + IL_0024: ret .line 100001,100001 : 0,0 '' - IL_0024: ldc.i4.1 - IL_0025: ret + IL_0025: ldc.i4.1 + IL_0026: ret .line 100001,100001 : 0,0 '' - IL_0026: ldarg.1 - IL_0027: ldnull - IL_0028: cgt.un - IL_002a: brfalse.s IL_002e + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: brfalse.s IL_002f .line 100001,100001 : 0,0 '' - IL_002c: ldc.i4.m1 - IL_002d: ret + IL_002d: ldc.i4.m1 + IL_002e: ret .line 100001,100001 : 0,0 '' - IL_002e: ldc.i4.0 - IL_002f: ret + IL_002f: ldc.i4.0 + IL_0030: ret } // end of method C::CompareTo .method public hidebysig virtual final @@ -327,6 +330,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any CCtorDUWithMember01a/C IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -346,6 +350,7 @@ IL_001f: ldloc.0 IL_0020: ldfld int32 CCtorDUWithMember01a/C::_tag IL_0025: stloc.2 + .line 100001,100001 : 0,0 '' IL_0026: ldloc.1 IL_0027: ldloc.2 IL_0028: bne.un.s IL_002c @@ -384,25 +389,27 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 17 (0x11) + // Code size 18 (0x12) .maxstack 3 .locals init ([0] int32 V_0) + .line 3,3 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_000f + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0010 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: ldfld int32 CCtorDUWithMember01a/C::_tag - IL_000e: ret + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldarg.0 + IL_000a: ldfld int32 CCtorDUWithMember01a/C::_tag + IL_000f: ret .line 100001,100001 : 0,0 '' - IL_000f: ldc.i4.0 - IL_0010: ret + IL_0010: ldc.i4.0 + IL_0011: ret } // end of method C::GetHashCode .method public hidebysig virtual final @@ -423,50 +430,54 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 47 (0x2f) + // Code size 48 (0x30) .maxstack 4 .locals init ([0] class CCtorDUWithMember01a/C V_0, [1] class CCtorDUWithMember01a/C V_1, [2] int32 V_2, [3] int32 V_3) + .line 3,3 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0027 - - .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst CCtorDUWithMember01a/C - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0025 - - .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: ldfld int32 CCtorDUWithMember01a/C::_tag - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld int32 CCtorDUWithMember01a/C::_tag - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: ceq - IL_0024: ret + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0028 .line 100001,100001 : 0,0 '' - IL_0025: ldc.i4.0 - IL_0026: ret + IL_0007: ldarg.1 + IL_0008: isinst CCtorDUWithMember01a/C + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0026 .line 100001,100001 : 0,0 '' - IL_0027: ldarg.1 - IL_0028: ldnull - IL_0029: cgt.un - IL_002b: ldc.i4.0 - IL_002c: ceq - IL_002e: ret + IL_0011: ldloc.0 + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: ldfld int32 CCtorDUWithMember01a/C::_tag + IL_0019: stloc.2 + IL_001a: ldloc.1 + IL_001b: ldfld int32 CCtorDUWithMember01a/C::_tag + IL_0020: stloc.3 + .line 100001,100001 : 0,0 '' + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: ceq + IL_0025: ret + + .line 100001,100001 : 0,0 '' + IL_0026: ldc.i4.0 + IL_0027: ret + + .line 100001,100001 : 0,0 '' + IL_0028: ldarg.1 + IL_0029: ldnull + IL_002a: cgt.un + IL_002c: ldc.i4.0 + IL_002d: ceq + IL_002f: ret } // end of method C::Equals .method public hidebysig specialname @@ -483,45 +494,48 @@ instance bool Equals(class CCtorDUWithMember01a/C obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 41 (0x29) + // Code size 42 (0x2a) .maxstack 4 .locals init ([0] int32 V_0, [1] int32 V_1) + .line 3,3 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0021 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0022 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_001f + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0020 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 CCtorDUWithMember01a/C::_tag - IL_0012: stloc.0 - IL_0013: ldarg.1 - IL_0014: ldfld int32 CCtorDUWithMember01a/C::_tag - IL_0019: stloc.1 - IL_001a: ldloc.0 - IL_001b: ldloc.1 - IL_001c: ceq - IL_001e: ret + IL_000d: ldarg.0 + IL_000e: ldfld int32 CCtorDUWithMember01a/C::_tag + IL_0013: stloc.0 + IL_0014: ldarg.1 + IL_0015: ldfld int32 CCtorDUWithMember01a/C::_tag + IL_001a: stloc.1 + .line 100001,100001 : 0,0 '' + IL_001b: ldloc.0 + IL_001c: ldloc.1 + IL_001d: ceq + IL_001f: ret .line 100001,100001 : 0,0 '' - IL_001f: ldc.i4.0 - IL_0020: ret + IL_0020: ldc.i4.0 + IL_0021: ret .line 100001,100001 : 0,0 '' - IL_0021: ldarg.1 - IL_0022: ldnull - IL_0023: cgt.un - IL_0025: ldc.i4.0 - IL_0026: ceq - IL_0028: ret + IL_0022: ldarg.1 + IL_0023: ldnull + IL_0024: cgt.un + IL_0026: ldc.i4.0 + IL_0027: ceq + IL_0029: ret } // end of method C::Equals .method public hidebysig virtual final @@ -535,6 +549,7 @@ IL_0000: ldarg.1 IL_0001: isinst CCtorDUWithMember01a/C IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr02.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr02.il.bsl index 564ad18517..c991414832 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr02.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr02.il.bsl @@ -40,13 +40,13 @@ // Offset: 0x00000218 Length: 0x0000007D } .module ComputationExpr02.exe -// MVID: {611B0EC4-3624-E566-A745-0383C40E1B61} +// MVID: {611C4D7F-3624-E566-A745-03837F4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x09590000 +// Image base: 0x071B0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -80,28 +80,30 @@ .method public strict virtual instance class [ComputationExprLibrary]Library.Eventually`1 Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed { - // Code size 44 (0x2c) + // Code size 45 (0x2d) .maxstack 7 .locals init ([0] int32 x) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 8,8 : 18,33 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ComputationExpressions\\ComputationExpr02.fs' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + .line 8,8 : 9,50 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ComputationExpressions\\ComputationExpr02.fs' + IL_0000: nop + .line 8,8 : 18,33 '' + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 8,8 : 35,49 '' - IL_0010: ldstr "hello" - IL_0015: callvirt instance int32 [mscorlib]System.String::get_Length() - IL_001a: stloc.0 + IL_0011: ldstr "hello" + IL_0016: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_001b: stloc.0 .line 9,9 : 9,21 '' - IL_001b: ldarg.0 - IL_001c: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr02/res2@8::builder@ - IL_0021: ldloc.0 + IL_001c: ldarg.0 + IL_001d: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr02/res2@8::builder@ IL_0022: ldloc.0 - IL_0023: add - IL_0024: tail. - IL_0026: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Return(!!0) - IL_002b: ret + IL_0023: ldloc.0 + IL_0024: add + IL_0025: tail. + IL_0027: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Return(!!0) + IL_002c: ret } // end of method res2@8::Invoke } // end of class res2@8 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr03.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr03.il.bsl index 6368550780..2451cc7752 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr03.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr03.il.bsl @@ -40,13 +40,13 @@ // Offset: 0x00000240 Length: 0x0000008C } .module ComputationExpr03.exe -// MVID: {611B0EC4-3649-E566-A745-0383C40E1B61} +// MVID: {611C4D7F-3649-E566-A745-03837F4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06B90000 +// Image base: 0x06EE0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -80,28 +80,30 @@ .method public strict virtual instance class [ComputationExprLibrary]Library.Eventually`1 Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed { - // Code size 44 (0x2c) + // Code size 45 (0x2d) .maxstack 7 .locals init ([0] int32 x) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 8,8 : 18,33 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ComputationExpressions\\ComputationExpr03.fs' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + .line 8,8 : 9,50 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ComputationExpressions\\ComputationExpr03.fs' + IL_0000: nop + .line 8,8 : 18,33 '' + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 8,8 : 35,49 '' - IL_0010: ldstr "hello" - IL_0015: callvirt instance int32 [mscorlib]System.String::get_Length() - IL_001a: stloc.0 + IL_0011: ldstr "hello" + IL_0016: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_001b: stloc.0 .line 9,9 : 9,21 '' - IL_001b: ldarg.0 - IL_001c: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr03/res2@8::builder@ - IL_0021: ldloc.0 + IL_001c: ldarg.0 + IL_001d: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr03/res2@8::builder@ IL_0022: ldloc.0 - IL_0023: add - IL_0024: tail. - IL_0026: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Return(!!0) - IL_002b: ret + IL_0023: ldloc.0 + IL_0024: add + IL_0025: tail. + IL_0027: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Return(!!0) + IL_002c: ret } // end of method res2@8::Invoke } // end of class res2@8 @@ -131,25 +133,27 @@ .method public strict virtual instance class [ComputationExprLibrary]Library.Eventually`1 Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed { - // Code size 42 (0x2a) + // Code size 43 (0x2b) .maxstack 6 .locals init ([0] int32 x) + .line 17,17 : 17,58 '' + IL_0000: nop .line 17,17 : 26,41 '' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 17,17 : 43,57 '' - IL_0010: ldstr "hello" - IL_0015: callvirt instance int32 [mscorlib]System.String::get_Length() - IL_001a: stloc.0 + IL_0011: ldstr "hello" + IL_0016: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_001b: stloc.0 .line 18,18 : 17,25 '' - IL_001b: ldarg.0 - IL_001c: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr03/'res3@17-2'::builder@ - IL_0021: ldc.i4.1 - IL_0022: tail. - IL_0024: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Return(!!0) - IL_0029: ret + IL_001c: ldarg.0 + IL_001d: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr03/'res3@17-2'::builder@ + IL_0022: ldc.i4.1 + IL_0023: tail. + IL_0025: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Return(!!0) + IL_002a: ret } // end of method 'res3@17-2'::Invoke } // end of class 'res3@17-2' diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr04.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr04.il.bsl index e5b49e16e8..fec0b17fa4 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr04.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr04.il.bsl @@ -40,13 +40,13 @@ // Offset: 0x00000218 Length: 0x0000007D } .module ComputationExpr04.exe -// MVID: {611B0EC4-366A-E566-A745-0383C40E1B61} +// MVID: {611C4D7F-366A-E566-A745-03837F4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x052F0000 +// Image base: 0x06D30000 // =============== CLASS MEMBERS DECLARATION =================== @@ -80,42 +80,44 @@ .method public strict virtual instance class [ComputationExprLibrary]Library.Eventually`1 Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed { - // Code size 67 (0x43) + // Code size 68 (0x44) .maxstack 6 .locals init ([0] int32 x, [1] string V_1) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 7,7 : 22,37 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ComputationExpressions\\ComputationExpr04.fs' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + .line 7,7 : 13,54 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ComputationExpressions\\ComputationExpr04.fs' + IL_0000: nop + .line 7,7 : 22,37 '' + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 7,7 : 39,53 '' - IL_0010: ldstr "hello" - IL_0015: callvirt instance int32 [mscorlib]System.String::get_Length() - IL_001a: stloc.0 + IL_0011: ldstr "hello" + IL_0016: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_001b: stloc.0 .line 8,8 : 13,28 '' - IL_001b: ldstr "fail" - IL_0020: stloc.1 - IL_0021: ldc.i4.0 - IL_0022: brfalse.s IL_002c + IL_001c: ldstr "fail" + IL_0021: stloc.1 + IL_0022: ldc.i4.0 + IL_0023: brfalse.s IL_002d - IL_0024: ldnull - IL_0025: unbox.any [FSharp.Core]Microsoft.FSharp.Core.Unit - IL_002a: br.s IL_0033 + IL_0025: ldnull + IL_0026: unbox.any [FSharp.Core]Microsoft.FSharp.Core.Unit + IL_002b: br.s IL_0034 - IL_002c: ldloc.1 - IL_002d: call class [mscorlib]System.Exception [FSharp.Core]Microsoft.FSharp.Core.Operators::Failure(string) - IL_0032: throw + IL_002d: ldloc.1 + IL_002e: call class [mscorlib]System.Exception [FSharp.Core]Microsoft.FSharp.Core.Operators::Failure(string) + IL_0033: throw - IL_0033: pop + IL_0034: pop .line 9,9 : 13,21 '' - IL_0034: ldarg.0 - IL_0035: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr04/'res4@7-1'::builder@ - IL_003a: ldloc.0 - IL_003b: tail. - IL_003d: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Return(!!0) - IL_0042: ret + IL_0035: ldarg.0 + IL_0036: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr04/'res4@7-1'::builder@ + IL_003b: ldloc.0 + IL_003c: tail. + IL_003e: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Return(!!0) + IL_0043: ret } // end of method 'res4@7-1'::Invoke } // end of class 'res4@7-1' diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr05.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr05.il.bsl index 7f874ae0a8..1d8c67b452 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr05.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ComputationExpressions/ComputationExpr05.il.bsl @@ -40,13 +40,13 @@ // Offset: 0x00000218 Length: 0x0000007D } .module ComputationExpr05.exe -// MVID: {611B0EC4-3687-E566-A745-0383C40E1B61} +// MVID: {611C4D7F-3687-E566-A745-03837F4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00C50000 +// Image base: 0x05380000 // =============== CLASS MEMBERS DECLARATION =================== @@ -164,29 +164,31 @@ .method public strict virtual instance class [ComputationExprLibrary]Library.Eventually`1 Invoke(class [FSharp.Core]Microsoft.FSharp.Core.Unit unitVar) cil managed { - // Code size 57 (0x39) + // Code size 58 (0x3a) .maxstack 7 .locals init ([0] int32 x) + .line 8,8 : 9,50 '' + IL_0000: nop .line 8,8 : 18,33 '' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 8,8 : 35,49 '' - IL_0010: ldstr "hello" - IL_0015: callvirt instance int32 [mscorlib]System.String::get_Length() - IL_001a: stloc.0 + IL_0011: ldstr "hello" + IL_0016: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_001b: stloc.0 .line 9,9 : 17,72 '' - IL_001b: ldarg.0 - IL_001c: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr05/res5@8::builder@ - IL_0021: newobj instance void ComputationExpr05/'res5@9-1'::.ctor() - IL_0026: ldarg.0 - IL_0027: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr05/res5@8::builder@ - IL_002c: newobj instance void ComputationExpr05/'res5@10-2'::.ctor(class [ComputationExprLibrary]Library.EventuallyBuilder) - IL_0031: tail. - IL_0033: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Using(class [mscorlib]System.IDisposable, + IL_001c: ldarg.0 + IL_001d: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr05/res5@8::builder@ + IL_0022: newobj instance void ComputationExpr05/'res5@9-1'::.ctor() + IL_0027: ldarg.0 + IL_0028: ldfld class [ComputationExprLibrary]Library.EventuallyBuilder ComputationExpr05/res5@8::builder@ + IL_002d: newobj instance void ComputationExpr05/'res5@10-2'::.ctor(class [ComputationExprLibrary]Library.EventuallyBuilder) + IL_0032: tail. + IL_0034: callvirt instance class [ComputationExprLibrary]Library.Eventually`1 [ComputationExprLibrary]Library.EventuallyBuilder::Using(class [mscorlib]System.IDisposable, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_0038: ret + IL_0039: ret } // end of method res5@8::Invoke } // end of class res5@8 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter01.il.bsl index f8f111fcb2..a3ec1e9309 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001F8 Length: 0x0000007A } .module GenIter01.exe -// MVID: {60BCDCE8-F836-DC98-A745-0383E8DCBC60} +// MVID: {611C4D7C-F836-DC98-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x055E0000 +// Image base: 0x06D20000 // =============== CLASS MEMBERS DECLARATION =================== @@ -103,6 +103,7 @@ IL_002f: ldloc.1 IL_0030: isinst [mscorlib]System.IDisposable IL_0035: stloc.s V_4 + .line 100001,100001 : 0,0 '' IL_0037: ldloc.s V_4 IL_0039: brfalse.s IL_0043 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter02.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter02.il.bsl index 985b1b8950..2874e0e1be 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter02.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter02.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001F8 Length: 0x0000007B } .module GenIter02.exe -// MVID: {60BCDCE8-F857-DC98-A745-0383E8DCBC60} +// MVID: {611C4D7C-F857-DC98-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07230000 +// Image base: 0x070F0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -108,6 +108,7 @@ IL_003f: ldloc.1 IL_0040: isinst [mscorlib]System.IDisposable IL_0045: stloc.s V_4 + .line 100001,100001 : 0,0 '' IL_0047: ldloc.s V_4 IL_0049: brfalse.s IL_0053 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter03.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter03.il.bsl index 526a8fbac7..6e06141da8 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter03.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter03.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001F8 Length: 0x0000007B } .module GenIter03.exe -// MVID: {60BCDCE8-F77C-DC98-A745-0383E8DCBC60} +// MVID: {611C4D7C-F77C-DC98-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x04BE0000 +// Image base: 0x06DC0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -103,6 +103,7 @@ IL_0030: ldloc.1 IL_0031: isinst [mscorlib]System.IDisposable IL_0036: stloc.s V_4 + .line 100001,100001 : 0,0 '' IL_0038: ldloc.s V_4 IL_003a: brfalse.s IL_0044 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter04.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter04.il.bsl index 09d3a9bfd3..ba6e8bc9d3 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter04.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/GeneratedIterators/GenIter04.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001E8 Length: 0x0000007B } .module GenIter04.exe -// MVID: {60BCDCE8-F79D-DC98-A745-0383E8DCBC60} +// MVID: {611C4D7C-F79D-DC98-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06940000 +// Image base: 0x06650000 // =============== CLASS MEMBERS DECLARATION =================== @@ -130,6 +130,7 @@ IL_0033: ldloc.2 IL_0034: isinst [mscorlib]System.IDisposable IL_0039: stloc.s V_5 + .line 100001,100001 : 0,0 '' IL_003b: ldloc.s V_5 IL_003d: brfalse.s IL_0047 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/InequalityComparison/InequalityComparison05.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/InequalityComparison/InequalityComparison05.il.bsl index d0f9c71afb..d8b995dda8 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/InequalityComparison/InequalityComparison05.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/InequalityComparison/InequalityComparison05.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000238 Length: 0x00000085 } .module InequalityComparison05.exe -// MVID: {60B68B7E-263A-E751-A745-03837E8BB660} +// MVID: {611C4D7C-263A-E751-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07350000 +// Image base: 0x06C10000 // =============== CLASS MEMBERS DECLARATION =================== @@ -58,21 +58,23 @@ { .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationArgumentCountsAttribute::.ctor(int32[]) = ( 01 00 04 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 ) - // Code size 8 (0x8) + // Code size 9 (0x9) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' .line 3,3 : 40,55 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\InequalityComparison\\InequalityComparison05.fs' - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: ble.s IL_0006 + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldarg.1 + IL_0003: ble.s IL_0007 .line 3,3 : 56,57 '' - IL_0004: ldarg.2 - IL_0005: ret + IL_0005: ldarg.2 + IL_0006: ret .line 3,3 : 63,64 '' - IL_0006: ldarg.3 - IL_0007: ret + IL_0007: ldarg.3 + IL_0008: ret } // end of method InequalityComparison05::f5 } // end of class InequalityComparison05 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest2.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest2.il.bsl index 891955152b..5676d0a647 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest2.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest2.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000002D0 Length: 0x000000BC } .module ListExpressionSteppingTest2.exe -// MVID: {611B0EC4-D3DE-B780-A745-0383C40E1B61} +// MVID: {611C4D7C-D3DE-B780-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06CE0000 +// Image base: 0x06F60000 // =============== CLASS MEMBERS DECLARATION =================== @@ -279,39 +279,41 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 f1() cil managed { - // Code size 58 (0x3a) + // Code size 59 (0x3b) .maxstack 4 .locals init ([0] valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0) + .line 6,9 : 9,19 '' + IL_0000: nop .line 6,6 : 11,26 '' - IL_0000: ldstr "hello" - IL_0005: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_000a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_000f: pop + IL_0001: ldstr "hello" + IL_0006: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_000b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0010: pop .line 7,7 : 11,18 '' - IL_0010: ldloca.s V_0 - IL_0012: ldc.i4.1 - IL_0013: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0018: nop + IL_0011: ldloca.s V_0 + IL_0013: ldc.i4.1 + IL_0014: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0019: nop .line 8,8 : 11,28 '' - IL_0019: ldstr "goodbye" - IL_001e: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0023: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0028: pop + IL_001a: ldstr "goodbye" + IL_001f: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0024: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0029: pop .line 9,9 : 11,18 '' - IL_0029: ldloca.s V_0 - IL_002b: ldc.i4.2 - IL_002c: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0031: nop + IL_002a: ldloca.s V_0 + IL_002c: ldc.i4.2 + IL_002d: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0032: nop .line 6,9 : 9,19 '' - IL_0032: ldloca.s V_0 - IL_0034: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_0039: ret + IL_0033: ldloca.s V_0 + IL_0035: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_003a: ret } // end of method ListExpressionSteppingTest2::f1 .method public static class [mscorlib]System.Tuple`2>,class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>> f2(!!a x) cil managed { - // Code size 193 (0xc1) + // Code size 194 (0xc2) .maxstack 6 .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> xs1, [1] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'Pipe #1 input #1 at line 16', @@ -324,106 +326,108 @@ [8] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 'Pipe #2 input #3 at line 22', [9] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> 'Pipe #2 stage #1 at line 23', [10] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> 'Pipe #2 stage #2 at line 24') + .line 15,19 : 9,45 '' + IL_0000: nop .line 16,16 : 13,20 '' - IL_0000: ldarg.0 IL_0001: ldarg.0 IL_0002: ldarg.0 - IL_0003: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() - IL_0008: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0003: ldarg.0 + IL_0004: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() + IL_0009: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_000d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_000e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0012: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0013: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0017: stloc.1 + IL_0018: stloc.1 .line 16,16 : 22,28 '' - IL_0018: ldc.i4.0 - IL_0019: ldc.i4.1 - IL_001a: ldc.i4.2 - IL_001b: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, + IL_0019: ldc.i4.0 + IL_001a: ldc.i4.1 + IL_001b: ldc.i4.2 + IL_001c: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, int32, int32) - IL_0020: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0025: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_002a: stloc.2 + IL_0021: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_0026: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_002b: stloc.2 .line 17,17 : 16,24 '' - IL_002b: ldloc.1 - IL_002c: ldloc.2 - IL_002d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Zip(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, + IL_002c: ldloc.1 + IL_002d: ldloc.2 + IL_002e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Zip(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0032: stloc.3 + IL_0033: stloc.3 .line 18,18 : 15,45 '' - IL_0033: ldsfld class ListExpressionSteppingTest2/ListExpressionSteppingTest2/'Pipe #1 stage #2 at line 18@18' class ListExpressionSteppingTest2/ListExpressionSteppingTest2/'Pipe #1 stage #2 at line 18@18'::@_instance - IL_0038: ldloc.3 - IL_0039: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Map,class [mscorlib]System.Tuple`2>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, + IL_0034: ldsfld class ListExpressionSteppingTest2/ListExpressionSteppingTest2/'Pipe #1 stage #2 at line 18@18' class ListExpressionSteppingTest2/ListExpressionSteppingTest2/'Pipe #1 stage #2 at line 18@18'::@_instance + IL_0039: ldloc.3 + IL_003a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Map,class [mscorlib]System.Tuple`2>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_003e: stloc.s 'Pipe #1 stage #2 at line 18' + IL_003f: stloc.s 'Pipe #1 stage #2 at line 18' .line 19,19 : 15,45 '' - IL_0040: ldsfld class ListExpressionSteppingTest2/ListExpressionSteppingTest2/xs1@19 class ListExpressionSteppingTest2/ListExpressionSteppingTest2/xs1@19::@_instance - IL_0045: ldloc.s 'Pipe #1 stage #2 at line 18' - IL_0047: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Map,class [mscorlib]System.Tuple`2>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, + IL_0041: ldsfld class ListExpressionSteppingTest2/ListExpressionSteppingTest2/xs1@19 class ListExpressionSteppingTest2/ListExpressionSteppingTest2/xs1@19::@_instance + IL_0046: ldloc.s 'Pipe #1 stage #2 at line 18' + IL_0048: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Map,class [mscorlib]System.Tuple`2>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_004c: stloc.0 + IL_004d: stloc.0 .line 21,25 : 9,50 '' - IL_004d: nop + IL_004e: nop .line 22,22 : 13,20 '' - IL_004e: ldarg.0 IL_004f: ldarg.0 IL_0050: ldarg.0 - IL_0051: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() - IL_0056: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0051: ldarg.0 + IL_0052: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() + IL_0057: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_005b: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_005c: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0060: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0061: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0065: stloc.s 'Pipe #2 input #1 at line 22' + IL_0066: stloc.s 'Pipe #2 input #1 at line 22' .line 22,22 : 22,28 '' - IL_0067: ldc.i4.0 - IL_0068: ldc.i4.1 - IL_0069: ldc.i4.2 - IL_006a: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, + IL_0068: ldc.i4.0 + IL_0069: ldc.i4.1 + IL_006a: ldc.i4.2 + IL_006b: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, int32, int32) - IL_006f: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0074: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0079: stloc.s 'Pipe #2 input #2 at line 22' + IL_0070: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_0075: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_007a: stloc.s 'Pipe #2 input #2 at line 22' .line 22,22 : 30,36 '' - IL_007b: ldc.i4.0 - IL_007c: ldc.i4.1 - IL_007d: ldc.i4.2 - IL_007e: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, + IL_007c: ldc.i4.0 + IL_007d: ldc.i4.1 + IL_007e: ldc.i4.2 + IL_007f: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators/OperatorIntrinsics::RangeInt32(int32, int32, int32) - IL_0083: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0088: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_008d: stloc.s 'Pipe #2 input #3 at line 22' + IL_0084: call class [mscorlib]System.Collections.Generic.IEnumerable`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::CreateSequence(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_0089: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToList(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_008e: stloc.s 'Pipe #2 input #3 at line 22' .line 23,23 : 17,26 '' - IL_008f: ldloc.s 'Pipe #2 input #1 at line 22' - IL_0091: ldloc.s 'Pipe #2 input #2 at line 22' - IL_0093: ldloc.s 'Pipe #2 input #3 at line 22' - IL_0095: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Zip3(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, + IL_0090: ldloc.s 'Pipe #2 input #1 at line 22' + IL_0092: ldloc.s 'Pipe #2 input #2 at line 22' + IL_0094: ldloc.s 'Pipe #2 input #3 at line 22' + IL_0096: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1> [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Zip3(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_009a: stloc.s 'Pipe #2 stage #1 at line 23' + IL_009b: stloc.s 'Pipe #2 stage #1 at line 23' .line 24,24 : 15,50 '' - IL_009c: ldsfld class ListExpressionSteppingTest2/ListExpressionSteppingTest2/'Pipe #2 stage #2 at line 24@24' class ListExpressionSteppingTest2/ListExpressionSteppingTest2/'Pipe #2 stage #2 at line 24@24'::@_instance - IL_00a1: ldloc.s 'Pipe #2 stage #1 at line 23' - IL_00a3: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Map,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, + IL_009d: ldsfld class ListExpressionSteppingTest2/ListExpressionSteppingTest2/'Pipe #2 stage #2 at line 24@24' class ListExpressionSteppingTest2/ListExpressionSteppingTest2/'Pipe #2 stage #2 at line 24@24'::@_instance + IL_00a2: ldloc.s 'Pipe #2 stage #1 at line 23' + IL_00a4: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Map,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00a8: stloc.s 'Pipe #2 stage #2 at line 24' + IL_00a9: stloc.s 'Pipe #2 stage #2 at line 24' .line 25,25 : 15,50 '' - IL_00aa: ldsfld class ListExpressionSteppingTest2/ListExpressionSteppingTest2/xs2@25 class ListExpressionSteppingTest2/ListExpressionSteppingTest2/xs2@25::@_instance - IL_00af: ldloc.s 'Pipe #2 stage #2 at line 24' - IL_00b1: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Map,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, + IL_00ab: ldsfld class ListExpressionSteppingTest2/ListExpressionSteppingTest2/xs2@25 class ListExpressionSteppingTest2/ListExpressionSteppingTest2/xs2@25::@_instance + IL_00b0: ldloc.s 'Pipe #2 stage #2 at line 24' + IL_00b2: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [FSharp.Core]Microsoft.FSharp.Collections.ListModule::Map,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_00b6: stloc.s xs2 + IL_00b7: stloc.s xs2 .line 27,27 : 9,17 '' - IL_00b8: ldloc.0 - IL_00b9: ldloc.s xs2 - IL_00bb: newobj instance void class [mscorlib]System.Tuple`2>,class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>>::.ctor(!0, + IL_00b9: ldloc.0 + IL_00ba: ldloc.s xs2 + IL_00bc: newobj instance void class [mscorlib]System.Tuple`2>,class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1>>::.ctor(!0, !1) - IL_00c0: ret + IL_00c1: ret } // end of method ListExpressionSteppingTest2::f2 } // end of class ListExpressionSteppingTest2 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest4.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest4.il.bsl index a3ae548796..26509649fd 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest4.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest4.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000270 Length: 0x000000AF } .module ListExpressionSteppingTest4.exe -// MVID: {60B78A57-3154-FA67-A745-0383578AB760} +// MVID: {611C4D7C-3154-FA67-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06700000 +// Image base: 0x06AA0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -58,51 +58,53 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 f3() cil managed { - // Code size 73 (0x49) + // Code size 74 (0x4a) .maxstack 4 .locals init ([0] valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x, [2] class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 y, [3] int32 z) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 6,6 : 11,24 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ListExpressionStepping\\ListExpressionSteppingTest4.fs' - IL_0000: ldc.i4.0 - IL_0001: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0006: stloc.1 + .line 6,12 : 9,20 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ListExpressionStepping\\ListExpressionSteppingTest4.fs' + IL_0000: nop + .line 6,6 : 11,24 '' + IL_0001: ldc.i4.0 + IL_0002: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) + IL_0007: stloc.1 .line 7,7 : 11,17 '' - IL_0007: ldloc.1 - IL_0008: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_000d: nop + IL_0008: ldloc.1 + IL_0009: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_000e: nop .line 8,8 : 11,24 '' - IL_000e: ldc.i4.0 - IL_000f: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0014: stloc.2 + IL_000f: ldc.i4.0 + IL_0010: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) + IL_0015: stloc.2 .line 9,9 : 11,17 '' - IL_0015: ldloc.2 - IL_0016: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_001b: nop + IL_0016: ldloc.2 + IL_0017: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_001c: nop .line 10,10 : 11,19 '' - IL_001c: ldloca.s V_0 - IL_001e: ldloc.1 - IL_001f: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0024: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0029: nop + IL_001d: ldloca.s V_0 + IL_001f: ldloc.1 + IL_0020: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0025: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_002a: nop .line 11,11 : 11,26 '' - IL_002a: ldloc.1 - IL_002b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0030: ldloc.2 - IL_0031: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0036: add - IL_0037: stloc.3 + IL_002b: ldloc.1 + IL_002c: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0031: ldloc.2 + IL_0032: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0037: add + IL_0038: stloc.3 .line 12,12 : 11,18 '' - IL_0038: ldloca.s V_0 - IL_003a: ldloc.3 - IL_003b: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0040: nop + IL_0039: ldloca.s V_0 + IL_003b: ldloc.3 + IL_003c: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0041: nop .line 6,12 : 9,20 '' - IL_0041: ldloca.s V_0 - IL_0043: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_0048: ret + IL_0042: ldloca.s V_0 + IL_0044: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_0049: ret } // end of method ListExpressionSteppingTest4::f3 } // end of class ListExpressionSteppingTest4 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest5.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest5.il.bsl index 92dd8b4cd4..fce50680f9 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest5.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest5.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000270 Length: 0x000000AF } .module ListExpressionSteppingTest5.exe -// MVID: {60B78A57-CBE3-BFEA-A745-0383578AB760} +// MVID: {611C4D7C-CBE3-BFEA-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06C00000 +// Image base: 0x06B30000 // =============== CLASS MEMBERS DECLARATION =================== @@ -58,7 +58,7 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 f4() cil managed { - // Code size 100 (0x64) + // Code size 101 (0x65) .maxstack 4 .locals init ([0] valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, [1] class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 x, @@ -66,67 +66,69 @@ [3] class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 y, [4] int32 z) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 6,6 : 11,24 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ListExpressionStepping\\ListExpressionSteppingTest5.fs' - IL_0000: ldc.i4.0 - IL_0001: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_0006: stloc.1 + .line 6,15 : 9,30 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\ListExpressionStepping\\ListExpressionSteppingTest5.fs' + IL_0000: nop + .line 6,6 : 11,24 '' + IL_0001: ldc.i4.0 + IL_0002: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) + IL_0007: stloc.1 .line 7,7 : 11,14 '' .try { - IL_0007: nop + IL_0008: nop .line 8,8 : 15,28 '' - IL_0008: ldc.i4.0 - IL_0009: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) - IL_000e: stloc.3 + IL_0009: ldc.i4.0 + IL_000a: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::Ref(!!0) + IL_000f: stloc.3 .line 9,9 : 15,21 '' - IL_000f: ldloc.3 - IL_0010: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0015: nop + IL_0010: ldloc.3 + IL_0011: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0016: nop .line 10,10 : 15,23 '' - IL_0016: ldloca.s V_0 - IL_0018: ldloc.1 - IL_0019: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_001e: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_0023: nop + IL_0017: ldloca.s V_0 + IL_0019: ldloc.1 + IL_001a: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_001f: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_0024: nop .line 11,11 : 15,30 '' - IL_0024: ldloc.1 - IL_0025: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_002a: ldloc.3 - IL_002b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0030: add - IL_0031: stloc.s z + IL_0025: ldloc.1 + IL_0026: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_002b: ldloc.3 + IL_002c: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::op_Dereference(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0031: add + IL_0032: stloc.s z .line 12,12 : 15,22 '' - IL_0033: ldloca.s V_0 - IL_0035: ldloc.s z - IL_0037: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) - IL_003c: nop - IL_003d: ldnull - IL_003e: stloc.2 - IL_003f: leave.s IL_005a + IL_0034: ldloca.s V_0 + IL_0036: ldloc.s z + IL_0038: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Add(!0) + IL_003d: nop + IL_003e: ldnull + IL_003f: stloc.2 + IL_0040: leave.s IL_005b .line 13,13 : 11,18 '' } // end .try finally { - IL_0041: nop + IL_0042: nop .line 14,14 : 14,20 '' - IL_0042: ldloc.1 - IL_0043: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_0048: nop + IL_0043: ldloc.1 + IL_0044: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_0049: nop .line 15,15 : 14,28 '' - IL_0049: ldstr "done" - IL_004e: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0053: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0058: pop - IL_0059: endfinally + IL_004a: ldstr "done" + IL_004f: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0054: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0059: pop + IL_005a: endfinally .line 100001,100001 : 0,0 '' } // end handler - IL_005a: ldloc.2 - IL_005b: pop + IL_005b: ldloc.2 + IL_005c: pop .line 6,15 : 9,30 '' - IL_005c: ldloca.s V_0 - IL_005e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_0063: ret + IL_005d: ldloca.s V_0 + IL_005f: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_0064: ret } // end of method ListExpressionSteppingTest5::f4 } // end of class ListExpressionSteppingTest5 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest6.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest6.il.bsl index 3122e29aad..78f4860f02 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest6.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/ListExpressionStepping/ListExpressionSteppingTest6.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000298 Length: 0x000000BC } .module ListExpressionSteppingTest6.exe -// MVID: {60BD4553-98A2-AB14-A745-03835345BD60} +// MVID: {611C4D7C-98A2-AB14-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x04EC0000 +// Image base: 0x06930000 // =============== CLASS MEMBERS DECLARATION =================== @@ -118,6 +118,7 @@ IL_003a: ldloc.1 IL_003b: isinst [mscorlib]System.IDisposable IL_0040: stloc.s V_4 + .line 100001,100001 : 0,0 '' IL_0042: ldloc.s V_4 IL_0044: brfalse.s IL_004e @@ -169,6 +170,7 @@ IL_0091: ldloc.s V_5 IL_0093: isinst [mscorlib]System.IDisposable IL_0098: stloc.s V_8 + .line 100001,100001 : 0,0 '' IL_009a: ldloc.s V_8 IL_009c: brfalse.s IL_00a6 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.il.bsl index 23db70c3a4..bfe21b6f48 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/AnonRecd.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001C8 Length: 0x0000006B } .module AnonRecd.exe -// MVID: {60B68B7F-C42F-5208-A745-03837F8BB660} +// MVID: {611C4D7C-C42F-5208-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05160000 +// Image base: 0x07240000 // =============== CLASS MEMBERS DECLARATION =================== @@ -161,77 +161,80 @@ instance int32 CompareTo(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 84 (0x54) + // Code size 85 (0x55) .maxstack 5 .locals init ([0] int32 V_0) - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\unknown' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_004a + .line 1,1 : 1,1 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\unknown' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_004b .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0048 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0049 .line 100001,100001 : 0,0 '' - IL_000c: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0011: ldarg.0 - IL_0012: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_0017: ldarg.1 - IL_0018: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_001d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericComparisonWithComparerj__TPar'>(class [mscorlib]System.Collections.IComparer, + IL_000d: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0012: ldarg.0 + IL_0013: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0018: ldarg.1 + IL_0019: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_001e: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericComparisonWithComparerj__TPar'>(class [mscorlib]System.Collections.IComparer, !!0, !!0) - IL_0022: stloc.0 - IL_0023: ldloc.0 - IL_0024: ldc.i4.0 - IL_0025: bge.s IL_0029 + IL_0023: stloc.0 + .line 100001,100001 : 0,0 '' + IL_0024: ldloc.0 + IL_0025: ldc.i4.0 + IL_0026: bge.s IL_002a .line 100001,100001 : 0,0 '' - IL_0027: ldloc.0 - IL_0028: ret + IL_0028: ldloc.0 + IL_0029: ret .line 100001,100001 : 0,0 '' - IL_0029: ldloc.0 - IL_002a: ldc.i4.0 - IL_002b: ble.s IL_002f + IL_002a: ldloc.0 + IL_002b: ldc.i4.0 + IL_002c: ble.s IL_0030 .line 100001,100001 : 0,0 '' - IL_002d: ldloc.0 - IL_002e: ret + IL_002e: ldloc.0 + IL_002f: ret .line 100001,100001 : 0,0 '' - IL_002f: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0034: ldarg.0 - IL_0035: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_003a: ldarg.1 - IL_003b: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_0040: tail. - IL_0042: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericComparisonWithComparerj__TPar'>(class [mscorlib]System.Collections.IComparer, + IL_0030: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0035: ldarg.0 + IL_0036: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_003b: ldarg.1 + IL_003c: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0041: tail. + IL_0043: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericComparisonWithComparerj__TPar'>(class [mscorlib]System.Collections.IComparer, !!0, !!0) - IL_0047: ret + IL_0048: ret .line 100001,100001 : 0,0 '' - IL_0048: ldc.i4.1 - IL_0049: ret + IL_0049: ldc.i4.1 + IL_004a: ret .line 100001,100001 : 0,0 '' - IL_004a: ldarg.1 - IL_004b: ldnull - IL_004c: cgt.un - IL_004e: brfalse.s IL_0052 + IL_004b: ldarg.1 + IL_004c: ldnull + IL_004d: cgt.un + IL_004f: brfalse.s IL_0053 .line 100001,100001 : 0,0 '' - IL_0050: ldc.i4.m1 - IL_0051: ret + IL_0051: ldc.i4.m1 + IL_0052: ret .line 100001,100001 : 0,0 '' - IL_0052: ldc.i4.0 - IL_0053: ret + IL_0053: ldc.i4.0 + IL_0054: ret } // end of method '<>f__AnonymousType1912756633`2'::CompareTo .method public hidebysig virtual final @@ -265,6 +268,7 @@ IL_0006: stloc.0 IL_0007: ldloc.0 IL_0008: stloc.1 + .line 100001,100001 : 0,0 '' IL_0009: ldarg.0 IL_000a: ldnull IL_000b: cgt.un @@ -287,6 +291,7 @@ !!0, !!0) IL_002c: stloc.2 + .line 100001,100001 : 0,0 '' IL_002d: ldloc.2 IL_002e: ldc.i4.0 IL_002f: bge.s IL_0033 @@ -340,56 +345,58 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 66 (0x42) + // Code size 67 (0x43) .maxstack 7 .locals init ([0] int32 V_0) + .line 1,1 : 1,1 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0040 - - .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.1 - IL_000e: ldarg.0 - IL_000f: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_0014: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericHashWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0041 + + .line 100001,100001 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.1 + IL_000f: ldarg.0 + IL_0010: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0015: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericHashWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, !!0) - IL_0019: ldloc.0 - IL_001a: ldc.i4.6 - IL_001b: shl - IL_001c: ldloc.0 - IL_001d: ldc.i4.2 - IL_001e: shr - IL_001f: add + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr IL_0020: add IL_0021: add - IL_0022: stloc.0 - IL_0023: ldc.i4 0x9e3779b9 - IL_0028: ldarg.1 - IL_0029: ldarg.0 - IL_002a: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_002f: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericHashWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldc.i4 0x9e3779b9 + IL_0029: ldarg.1 + IL_002a: ldarg.0 + IL_002b: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0030: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericHashWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, !!0) - IL_0034: ldloc.0 - IL_0035: ldc.i4.6 - IL_0036: shl - IL_0037: ldloc.0 - IL_0038: ldc.i4.2 - IL_0039: shr - IL_003a: add + IL_0035: ldloc.0 + IL_0036: ldc.i4.6 + IL_0037: shl + IL_0038: ldloc.0 + IL_0039: ldc.i4.2 + IL_003a: shr IL_003b: add IL_003c: add - IL_003d: stloc.0 - IL_003e: ldloc.0 - IL_003f: ret + IL_003d: add + IL_003e: stloc.0 + IL_003f: ldloc.0 + IL_0040: ret .line 100001,100001 : 0,0 '' - IL_0040: ldc.i4.0 - IL_0041: ret + IL_0041: ldc.i4.0 + IL_0042: ret } // end of method '<>f__AnonymousType1912756633`2'::GetHashCode .method public hidebysig virtual final @@ -411,117 +418,123 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 71 (0x47) + // Code size 72 (0x48) .maxstack 5 .locals init ([0] class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_0, [1] class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> V_1) + .line 1,1 : 1,1 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003f + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0040 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_003d + IL_0007: ldarg.1 + IL_0008: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_003e .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.2 - IL_0013: ldarg.0 - IL_0014: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_0019: ldloc.1 - IL_001a: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_001f: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, + IL_0011: ldloc.0 + IL_0012: stloc.1 + .line 100001,100001 : 0,0 '' + IL_0013: ldarg.2 + IL_0014: ldarg.0 + IL_0015: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_001a: ldloc.1 + IL_001b: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0020: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, !!0, !!0) - IL_0024: brfalse.s IL_003b + IL_0025: brfalse.s IL_003c .line 100001,100001 : 0,0 '' - IL_0026: ldarg.2 - IL_0027: ldarg.0 - IL_0028: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_002d: ldloc.1 - IL_002e: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_0033: tail. - IL_0035: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, + IL_0027: ldarg.2 + IL_0028: ldarg.0 + IL_0029: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_002e: ldloc.1 + IL_002f: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0034: tail. + IL_0036: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityWithComparerj__TPar'>(class [mscorlib]System.Collections.IEqualityComparer, !!0, !!0) - IL_003a: ret + IL_003b: ret .line 100001,100001 : 0,0 '' - IL_003b: ldc.i4.0 - IL_003c: ret + IL_003c: ldc.i4.0 + IL_003d: ret .line 100001,100001 : 0,0 '' - IL_003d: ldc.i4.0 - IL_003e: ret + IL_003e: ldc.i4.0 + IL_003f: ret .line 100001,100001 : 0,0 '' - IL_003f: ldarg.1 - IL_0040: ldnull - IL_0041: cgt.un - IL_0043: ldc.i4.0 - IL_0044: ceq - IL_0046: ret + IL_0040: ldarg.1 + IL_0041: ldnull + IL_0042: cgt.un + IL_0044: ldc.i4.0 + IL_0045: ceq + IL_0047: ret } // end of method '<>f__AnonymousType1912756633`2'::Equals .method public hidebysig virtual final instance bool Equals(class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 63 (0x3f) - .maxstack 8 + // Code size 64 (0x40) + .maxstack 4 + .line 1,1 : 1,1 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0037 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0038 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0035 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0036 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_0012: ldarg.1 - IL_0013: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ - IL_0018: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityERj__TPar'>(!!0, + IL_000d: ldarg.0 + IL_000e: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0013: ldarg.1 + IL_0014: ldfld !0 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::A@ + IL_0019: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityERj__TPar'>(!!0, !!0) - IL_001d: brfalse.s IL_0033 + IL_001e: brfalse.s IL_0034 .line 100001,100001 : 0,0 '' - IL_001f: ldarg.0 - IL_0020: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_0025: ldarg.1 - IL_0026: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ - IL_002b: tail. - IL_002d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityERj__TPar'>(!!0, + IL_0020: ldarg.0 + IL_0021: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_0026: ldarg.1 + IL_0027: ldfld !1 class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'>::B@ + IL_002c: tail. + IL_002e: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::GenericEqualityERj__TPar'>(!!0, !!0) - IL_0032: ret + IL_0033: ret .line 100001,100001 : 0,0 '' - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0034: ldc.i4.0 + IL_0035: ret .line 100001,100001 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 100001,100001 : 0,0 '' - IL_0037: ldarg.1 - IL_0038: ldnull - IL_0039: cgt.un - IL_003b: ldc.i4.0 - IL_003c: ceq - IL_003e: ret + IL_0038: ldarg.1 + IL_0039: ldnull + IL_003a: cgt.un + IL_003c: ldc.i4.0 + IL_003d: ceq + IL_003f: ret } // end of method '<>f__AnonymousType1912756633`2'::Equals .method public hidebysig virtual final @@ -535,6 +548,7 @@ IL_0000: ldarg.1 IL_0001: isinst class '<>f__AnonymousType1912756633`2'j__TPar',!'j__TPar'> IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0014 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/EntryPoint01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/EntryPoint01.il.bsl index 4afe8d6966..d17322d83b 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/EntryPoint01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/EntryPoint01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000258 Length: 0x00000090 } .module EntryPoint01.exe -// MVID: {60B68B7F-9846-72C1-A745-03837F8BB660} +// MVID: {611C4D7C-9846-72C1-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x071C0000 +// Image base: 0x06DA0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -66,33 +66,37 @@ { .entrypoint .custom instance void [FSharp.Core]Microsoft.FSharp.Core.EntryPointAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 35 (0x23) + // Code size 37 (0x25) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 8,8 : 9,39 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\EntryPoint01.fs' + .line 8,8 : 4,49 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\EntryPoint01.fs' .line 100001,100001 : 0,0 '' IL_0000: ldc.i4.0 IL_0001: stsfld int32 ''.$EntryPoint01::init@ IL_0006: ldsfld int32 ''.$EntryPoint01::init@ IL_000b: pop - IL_000c: call int32 EntryPoint01::get_static_initializer() - IL_0011: ldc.i4.s 10 - IL_0013: bne.un.s IL_0019 + IL_000c: nop + .line 8,8 : 9,39 '' + IL_000d: nop + .line 100001,100001 : 0,0 '' + IL_000e: call int32 EntryPoint01::get_static_initializer() + IL_0013: ldc.i4.s 10 + IL_0015: bne.un.s IL_001b .line 8,8 : 40,41 '' - IL_0015: ldc.i4.0 + IL_0017: ldc.i4.0 .line 100001,100001 : 0,0 '' - IL_0016: nop - IL_0017: br.s IL_001b + IL_0018: nop + IL_0019: br.s IL_001d .line 8,8 : 47,48 '' - IL_0019: ldc.i4.1 + IL_001b: ldc.i4.1 .line 100001,100001 : 0,0 '' - IL_001a: nop + IL_001c: nop .line 100001,100001 : 0,0 '' - IL_001b: tail. - IL_001d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0022: ret + IL_001d: tail. + IL_001f: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0024: ret } // end of method EntryPoint01::main .property int32 static_initializer() diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/EqualsOnUnions01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/EqualsOnUnions01.il.bsl index f1c372c264..ba4e9d4b2d 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/EqualsOnUnions01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/EqualsOnUnions01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000640 Length: 0x000001C7 } .module EqualsOnUnions01.exe -// MVID: {60B68B7F-BBFB-14A0-A745-03837F8BB660} +// MVID: {611C52A3-BBFB-14A0-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07200000 +// Image base: 0x04FE0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -339,7 +339,7 @@ instance int32 CompareTo(class EqualsOnUnions01/U obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 131 (0x83) + // Code size 132 (0x84) .maxstack 4 .locals init ([0] int32 V_0, [1] class EqualsOnUnions01/U V_1, @@ -351,106 +351,110 @@ [7] int32 V_7, [8] int32 V_8) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\EqualsOnUnions01.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse IL_0079 - + .line 6,6 : 6,7 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\EqualsOnUnions01.fs' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0009: ldarg.1 - IL_000a: ldnull - IL_000b: cgt.un - IL_000d: brfalse.s IL_0077 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse IL_007a .line 100001,100001 : 0,0 '' - IL_000f: ldarg.0 - IL_0010: stloc.1 - IL_0011: ldloc.1 - IL_0012: isinst EqualsOnUnions01/U/B - IL_0017: brfalse.s IL_001c + IL_000a: ldarg.1 + IL_000b: ldnull + IL_000c: cgt.un + IL_000e: brfalse.s IL_0078 - IL_0019: ldc.i4.1 - IL_001a: br.s IL_001d + .line 100001,100001 : 0,0 '' + IL_0010: ldarg.0 + IL_0011: stloc.1 + IL_0012: ldloc.1 + IL_0013: isinst EqualsOnUnions01/U/B + IL_0018: brfalse.s IL_001d - IL_001c: ldc.i4.0 - IL_001d: stloc.0 - IL_001e: ldarg.1 - IL_001f: stloc.3 - IL_0020: ldloc.3 - IL_0021: isinst EqualsOnUnions01/U/B - IL_0026: brfalse.s IL_002b + IL_001a: ldc.i4.1 + IL_001b: br.s IL_001e - IL_0028: ldc.i4.1 - IL_0029: br.s IL_002c + IL_001d: ldc.i4.0 + IL_001e: stloc.0 + IL_001f: ldarg.1 + IL_0020: stloc.3 + IL_0021: ldloc.3 + IL_0022: isinst EqualsOnUnions01/U/B + IL_0027: brfalse.s IL_002c - IL_002b: ldc.i4.0 - IL_002c: stloc.2 - IL_002d: ldloc.0 - IL_002e: ldloc.2 - IL_002f: bne.un.s IL_0073 + IL_0029: ldc.i4.1 + IL_002a: br.s IL_002d + IL_002c: ldc.i4.0 + IL_002d: stloc.2 .line 100001,100001 : 0,0 '' - IL_0031: ldarg.0 - IL_0032: isinst EqualsOnUnions01/U/B - IL_0037: brfalse.s IL_0071 + IL_002e: ldloc.0 + IL_002f: ldloc.2 + IL_0030: bne.un.s IL_0074 .line 100001,100001 : 0,0 '' - IL_0039: ldarg.0 - IL_003a: castclass EqualsOnUnions01/U/B - IL_003f: stloc.s V_4 - IL_0041: ldarg.1 - IL_0042: castclass EqualsOnUnions01/U/B - IL_0047: stloc.s V_5 - IL_0049: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004e: stloc.s V_6 - IL_0050: ldloc.s V_4 - IL_0052: ldfld int32 EqualsOnUnions01/U/B::item - IL_0057: stloc.s V_7 - IL_0059: ldloc.s V_5 - IL_005b: ldfld int32 EqualsOnUnions01/U/B::item - IL_0060: stloc.s V_8 - IL_0062: ldloc.s V_7 - IL_0064: ldloc.s V_8 - IL_0066: bge.s IL_006a + IL_0032: ldarg.0 + IL_0033: isinst EqualsOnUnions01/U/B + IL_0038: brfalse.s IL_0072 + + .line 100001,100001 : 0,0 '' + IL_003a: ldarg.0 + IL_003b: castclass EqualsOnUnions01/U/B + IL_0040: stloc.s V_4 + IL_0042: ldarg.1 + IL_0043: castclass EqualsOnUnions01/U/B + IL_0048: stloc.s V_5 + IL_004a: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004f: stloc.s V_6 + IL_0051: ldloc.s V_4 + IL_0053: ldfld int32 EqualsOnUnions01/U/B::item + IL_0058: stloc.s V_7 + IL_005a: ldloc.s V_5 + IL_005c: ldfld int32 EqualsOnUnions01/U/B::item + IL_0061: stloc.s V_8 + .line 100001,100001 : 0,0 '' + IL_0063: ldloc.s V_7 + IL_0065: ldloc.s V_8 + IL_0067: bge.s IL_006b .line 100001,100001 : 0,0 '' - IL_0068: ldc.i4.m1 - IL_0069: ret + IL_0069: ldc.i4.m1 + IL_006a: ret .line 100001,100001 : 0,0 '' - IL_006a: ldloc.s V_7 - IL_006c: ldloc.s V_8 - IL_006e: cgt - IL_0070: ret + IL_006b: ldloc.s V_7 + IL_006d: ldloc.s V_8 + IL_006f: cgt + IL_0071: ret .line 100001,100001 : 0,0 '' - IL_0071: ldc.i4.0 - IL_0072: ret + IL_0072: ldc.i4.0 + IL_0073: ret .line 100001,100001 : 0,0 '' - IL_0073: ldloc.0 - IL_0074: ldloc.2 - IL_0075: sub - IL_0076: ret + IL_0074: ldloc.0 + IL_0075: ldloc.2 + IL_0076: sub + IL_0077: ret .line 100001,100001 : 0,0 '' - IL_0077: ldc.i4.1 - IL_0078: ret + IL_0078: ldc.i4.1 + IL_0079: ret .line 100001,100001 : 0,0 '' - IL_0079: ldarg.1 - IL_007a: ldnull - IL_007b: cgt.un - IL_007d: brfalse.s IL_0081 + IL_007a: ldarg.1 + IL_007b: ldnull + IL_007c: cgt.un + IL_007e: brfalse.s IL_0082 .line 100001,100001 : 0,0 '' - IL_007f: ldc.i4.m1 - IL_0080: ret + IL_0080: ldc.i4.m1 + IL_0081: ret .line 100001,100001 : 0,0 '' - IL_0081: ldc.i4.0 - IL_0082: ret + IL_0082: ldc.i4.0 + IL_0083: ret } // end of method U::CompareTo .method public hidebysig virtual final @@ -488,6 +492,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any EqualsOnUnions01/U IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -523,6 +528,7 @@ IL_0039: ldc.i4.0 IL_003a: stloc.3 + .line 100001,100001 : 0,0 '' IL_003b: ldloc.1 IL_003c: ldloc.3 IL_003d: bne.un.s IL_007d @@ -547,6 +553,7 @@ IL_0063: ldloc.s V_6 IL_0065: ldfld int32 EqualsOnUnions01/U/B::item IL_006a: stloc.s V_9 + .line 100001,100001 : 0,0 '' IL_006c: ldloc.s V_8 IL_006e: ldloc.s V_9 IL_0070: bge.s IL_0074 @@ -595,65 +602,68 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 67 (0x43) + // Code size 68 (0x44) .maxstack 7 .locals init ([0] int32 V_0, [1] class EqualsOnUnions01/U/B V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2, [3] class EqualsOnUnions01/U V_3) + .line 6,6 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0041 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0042 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: isinst EqualsOnUnions01/U/B - IL_000e: brfalse.s IL_0032 + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 100001,100001 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: isinst EqualsOnUnions01/U/B + IL_000f: brfalse.s IL_0033 .line 100001,100001 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: castclass EqualsOnUnions01/U/B - IL_0016: stloc.1 - IL_0017: ldc.i4.1 - IL_0018: stloc.0 - IL_0019: ldc.i4 0x9e3779b9 - IL_001e: ldarg.1 - IL_001f: stloc.2 - IL_0020: ldloc.1 - IL_0021: ldfld int32 EqualsOnUnions01/U/B::item - IL_0026: ldloc.0 - IL_0027: ldc.i4.6 - IL_0028: shl - IL_0029: ldloc.0 - IL_002a: ldc.i4.2 - IL_002b: shr - IL_002c: add + IL_0011: ldarg.0 + IL_0012: castclass EqualsOnUnions01/U/B + IL_0017: stloc.1 + IL_0018: ldc.i4.1 + IL_0019: stloc.0 + IL_001a: ldc.i4 0x9e3779b9 + IL_001f: ldarg.1 + IL_0020: stloc.2 + IL_0021: ldloc.1 + IL_0022: ldfld int32 EqualsOnUnions01/U/B::item + IL_0027: ldloc.0 + IL_0028: ldc.i4.6 + IL_0029: shl + IL_002a: ldloc.0 + IL_002b: ldc.i4.2 + IL_002c: shr IL_002d: add IL_002e: add - IL_002f: stloc.0 - IL_0030: ldloc.0 - IL_0031: ret + IL_002f: add + IL_0030: stloc.0 + IL_0031: ldloc.0 + IL_0032: ret .line 100001,100001 : 0,0 '' - IL_0032: ldarg.0 - IL_0033: stloc.3 - IL_0034: ldloc.3 - IL_0035: isinst EqualsOnUnions01/U/B - IL_003a: brfalse.s IL_003f + IL_0033: ldarg.0 + IL_0034: stloc.3 + IL_0035: ldloc.3 + IL_0036: isinst EqualsOnUnions01/U/B + IL_003b: brfalse.s IL_0040 - IL_003c: ldc.i4.1 - IL_003d: br.s IL_0040 + IL_003d: ldc.i4.1 + IL_003e: br.s IL_0041 - IL_003f: ldc.i4.0 - IL_0040: ret + IL_0040: ldc.i4.0 + IL_0041: ret .line 100001,100001 : 0,0 '' - IL_0041: ldc.i4.0 - IL_0042: ret + IL_0042: ldc.i4.0 + IL_0043: ret } // end of method U::GetHashCode .method public hidebysig virtual final @@ -674,7 +684,7 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 114 (0x72) + // Code size 115 (0x73) .maxstack 4 .locals init ([0] class EqualsOnUnions01/U V_0, [1] class EqualsOnUnions01/U V_1, @@ -685,95 +695,99 @@ [6] class EqualsOnUnions01/U/B V_6, [7] class EqualsOnUnions01/U/B V_7, [8] class [mscorlib]System.Collections.IEqualityComparer V_8) + .line 6,6 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006a + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006b + + .line 100001,100001 : 0,0 '' + IL_0007: ldarg.1 + IL_0008: isinst EqualsOnUnions01/U + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0069 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst EqualsOnUnions01/U - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0068 + IL_0011: ldloc.0 + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: stloc.3 + IL_0015: ldloc.3 + IL_0016: isinst EqualsOnUnions01/U/B + IL_001b: brfalse.s IL_0020 + + IL_001d: ldc.i4.1 + IL_001e: br.s IL_0021 + + IL_0020: ldc.i4.0 + IL_0021: stloc.2 + IL_0022: ldloc.1 + IL_0023: stloc.s V_5 + IL_0025: ldloc.s V_5 + IL_0027: isinst EqualsOnUnions01/U/B + IL_002c: brfalse.s IL_0031 + + IL_002e: ldc.i4.1 + IL_002f: br.s IL_0032 + IL_0031: ldc.i4.0 + IL_0032: stloc.s V_4 .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: stloc.3 - IL_0014: ldloc.3 - IL_0015: isinst EqualsOnUnions01/U/B - IL_001a: brfalse.s IL_001f + IL_0034: ldloc.2 + IL_0035: ldloc.s V_4 + IL_0037: bne.un.s IL_0067 - IL_001c: ldc.i4.1 - IL_001d: br.s IL_0020 + .line 100001,100001 : 0,0 '' + IL_0039: ldarg.0 + IL_003a: isinst EqualsOnUnions01/U/B + IL_003f: brfalse.s IL_0065 - IL_001f: ldc.i4.0 - IL_0020: stloc.2 - IL_0021: ldloc.1 - IL_0022: stloc.s V_5 - IL_0024: ldloc.s V_5 - IL_0026: isinst EqualsOnUnions01/U/B - IL_002b: brfalse.s IL_0030 - - IL_002d: ldc.i4.1 - IL_002e: br.s IL_0031 - - IL_0030: ldc.i4.0 - IL_0031: stloc.s V_4 - IL_0033: ldloc.2 - IL_0034: ldloc.s V_4 - IL_0036: bne.un.s IL_0066 - - .line 100001,100001 : 0,0 '' - IL_0038: ldarg.0 - IL_0039: isinst EqualsOnUnions01/U/B - IL_003e: brfalse.s IL_0064 - - .line 100001,100001 : 0,0 '' - IL_0040: ldarg.0 - IL_0041: castclass EqualsOnUnions01/U/B - IL_0046: stloc.s V_6 - IL_0048: ldloc.1 - IL_0049: castclass EqualsOnUnions01/U/B - IL_004e: stloc.s V_7 - IL_0050: ldarg.2 - IL_0051: stloc.s V_8 - IL_0053: ldloc.s V_6 - IL_0055: ldfld int32 EqualsOnUnions01/U/B::item - IL_005a: ldloc.s V_7 - IL_005c: ldfld int32 EqualsOnUnions01/U/B::item - IL_0061: ceq - IL_0063: ret + .line 100001,100001 : 0,0 '' + IL_0041: ldarg.0 + IL_0042: castclass EqualsOnUnions01/U/B + IL_0047: stloc.s V_6 + IL_0049: ldloc.1 + IL_004a: castclass EqualsOnUnions01/U/B + IL_004f: stloc.s V_7 + IL_0051: ldarg.2 + IL_0052: stloc.s V_8 + IL_0054: ldloc.s V_6 + IL_0056: ldfld int32 EqualsOnUnions01/U/B::item + IL_005b: ldloc.s V_7 + IL_005d: ldfld int32 EqualsOnUnions01/U/B::item + IL_0062: ceq + IL_0064: ret .line 100001,100001 : 0,0 '' - IL_0064: ldc.i4.1 - IL_0065: ret + IL_0065: ldc.i4.1 + IL_0066: ret .line 100001,100001 : 0,0 '' - IL_0066: ldc.i4.0 - IL_0067: ret + IL_0067: ldc.i4.0 + IL_0068: ret .line 100001,100001 : 0,0 '' - IL_0068: ldc.i4.0 - IL_0069: ret + IL_0069: ldc.i4.0 + IL_006a: ret .line 100001,100001 : 0,0 '' - IL_006a: ldarg.1 - IL_006b: ldnull - IL_006c: cgt.un - IL_006e: ldc.i4.0 - IL_006f: ceq - IL_0071: ret + IL_006b: ldarg.1 + IL_006c: ldnull + IL_006d: cgt.un + IL_006f: ldc.i4.0 + IL_0070: ceq + IL_0072: ret } // end of method U::Equals .method public hidebysig virtual final instance bool Equals(class EqualsOnUnions01/U obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 101 (0x65) + // Code size 102 (0x66) .maxstack 4 .locals init ([0] int32 V_0, [1] class EqualsOnUnions01/U V_1, @@ -781,83 +795,86 @@ [3] class EqualsOnUnions01/U V_3, [4] class EqualsOnUnions01/U/B V_4, [5] class EqualsOnUnions01/U/B V_5) + .line 6,6 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_005d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_005e .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_005b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_005c .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: stloc.1 - IL_000e: ldloc.1 - IL_000f: isinst EqualsOnUnions01/U/B - IL_0014: brfalse.s IL_0019 + IL_000d: ldarg.0 + IL_000e: stloc.1 + IL_000f: ldloc.1 + IL_0010: isinst EqualsOnUnions01/U/B + IL_0015: brfalse.s IL_001a - IL_0016: ldc.i4.1 - IL_0017: br.s IL_001a + IL_0017: ldc.i4.1 + IL_0018: br.s IL_001b - IL_0019: ldc.i4.0 - IL_001a: stloc.0 - IL_001b: ldarg.1 - IL_001c: stloc.3 - IL_001d: ldloc.3 - IL_001e: isinst EqualsOnUnions01/U/B - IL_0023: brfalse.s IL_0028 + IL_001a: ldc.i4.0 + IL_001b: stloc.0 + IL_001c: ldarg.1 + IL_001d: stloc.3 + IL_001e: ldloc.3 + IL_001f: isinst EqualsOnUnions01/U/B + IL_0024: brfalse.s IL_0029 - IL_0025: ldc.i4.1 - IL_0026: br.s IL_0029 + IL_0026: ldc.i4.1 + IL_0027: br.s IL_002a - IL_0028: ldc.i4.0 - IL_0029: stloc.2 - IL_002a: ldloc.0 - IL_002b: ldloc.2 - IL_002c: bne.un.s IL_0059 + IL_0029: ldc.i4.0 + IL_002a: stloc.2 + .line 100001,100001 : 0,0 '' + IL_002b: ldloc.0 + IL_002c: ldloc.2 + IL_002d: bne.un.s IL_005a .line 100001,100001 : 0,0 '' - IL_002e: ldarg.0 - IL_002f: isinst EqualsOnUnions01/U/B - IL_0034: brfalse.s IL_0057 + IL_002f: ldarg.0 + IL_0030: isinst EqualsOnUnions01/U/B + IL_0035: brfalse.s IL_0058 .line 100001,100001 : 0,0 '' - IL_0036: ldarg.0 - IL_0037: castclass EqualsOnUnions01/U/B - IL_003c: stloc.s V_4 - IL_003e: ldarg.1 - IL_003f: castclass EqualsOnUnions01/U/B - IL_0044: stloc.s V_5 - IL_0046: ldloc.s V_4 - IL_0048: ldfld int32 EqualsOnUnions01/U/B::item - IL_004d: ldloc.s V_5 - IL_004f: ldfld int32 EqualsOnUnions01/U/B::item - IL_0054: ceq - IL_0056: ret + IL_0037: ldarg.0 + IL_0038: castclass EqualsOnUnions01/U/B + IL_003d: stloc.s V_4 + IL_003f: ldarg.1 + IL_0040: castclass EqualsOnUnions01/U/B + IL_0045: stloc.s V_5 + IL_0047: ldloc.s V_4 + IL_0049: ldfld int32 EqualsOnUnions01/U/B::item + IL_004e: ldloc.s V_5 + IL_0050: ldfld int32 EqualsOnUnions01/U/B::item + IL_0055: ceq + IL_0057: ret .line 100001,100001 : 0,0 '' - IL_0057: ldc.i4.1 - IL_0058: ret + IL_0058: ldc.i4.1 + IL_0059: ret .line 100001,100001 : 0,0 '' - IL_0059: ldc.i4.0 - IL_005a: ret + IL_005a: ldc.i4.0 + IL_005b: ret .line 100001,100001 : 0,0 '' - IL_005b: ldc.i4.0 - IL_005c: ret + IL_005c: ldc.i4.0 + IL_005d: ret .line 100001,100001 : 0,0 '' - IL_005d: ldarg.1 - IL_005e: ldnull - IL_005f: cgt.un - IL_0061: ldc.i4.0 - IL_0062: ceq - IL_0064: ret + IL_005e: ldarg.1 + IL_005f: ldnull + IL_0060: cgt.un + IL_0062: ldc.i4.0 + IL_0063: ceq + IL_0065: ret } // end of method U::Equals .method public hidebysig virtual final @@ -871,6 +888,7 @@ IL_0000: ldarg.1 IL_0001: isinst EqualsOnUnions01/U IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/GeneralizationOnUnions01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/GeneralizationOnUnions01.il.bsl index 70bbfca2a6..5ef897b216 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/GeneralizationOnUnions01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/GeneralizationOnUnions01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000690 Length: 0x000001F4 } .module GeneralizationOnUnions01.exe -// MVID: {60B68B7F-4CA2-8CD1-A745-03837F8BB660} +// MVID: {611C4D7C-4CA2-8CD1-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06C00000 +// Image base: 0x06A80000 // =============== CLASS MEMBERS DECLARATION =================== @@ -145,42 +145,44 @@ instance int32 CompareTo(class GeneralizationOnUnions01/Weirdo obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 26 (0x1a) + // Code size 27 (0x1b) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\GeneralizationOnUnions01.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0010 + .line 4,4 : 6,12 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\GeneralizationOnUnions01.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0011 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_000e + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_000f .line 100001,100001 : 0,0 '' - IL_000c: ldc.i4.0 - IL_000d: ret + IL_000d: ldc.i4.0 + IL_000e: ret .line 100001,100001 : 0,0 '' - IL_000e: ldc.i4.1 - IL_000f: ret + IL_000f: ldc.i4.1 + IL_0010: ret .line 100001,100001 : 0,0 '' - IL_0010: ldarg.1 - IL_0011: ldnull - IL_0012: cgt.un - IL_0014: brfalse.s IL_0018 + IL_0011: ldarg.1 + IL_0012: ldnull + IL_0013: cgt.un + IL_0015: brfalse.s IL_0019 .line 100001,100001 : 0,0 '' - IL_0016: ldc.i4.m1 - IL_0017: ret + IL_0017: ldc.i4.m1 + IL_0018: ret .line 100001,100001 : 0,0 '' - IL_0018: ldc.i4.0 - IL_0019: ret + IL_0019: ldc.i4.0 + IL_001a: ret } // end of method Weirdo::CompareTo .method public hidebysig virtual final @@ -209,6 +211,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any GeneralizationOnUnions01/Weirdo IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -249,26 +252,28 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 14 (0xe) + // Code size 15 (0xf) .maxstack 3 .locals init ([0] int32 V_0) + .line 4,4 : 6,12 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_000c + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_000d .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - IL_000a: ldc.i4.0 - IL_000b: ret + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldarg.0 + IL_000a: pop + IL_000b: ldc.i4.0 + IL_000c: ret .line 100001,100001 : 0,0 '' - IL_000c: ldc.i4.0 - IL_000d: ret + IL_000d: ldc.i4.0 + IL_000e: ret } // end of method Weirdo::GetHashCode .method public hidebysig virtual final @@ -289,67 +294,72 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 30 (0x1e) + // Code size 31 (0x1f) .maxstack 4 .locals init ([0] class GeneralizationOnUnions01/Weirdo V_0, [1] class GeneralizationOnUnions01/Weirdo V_1) + .line 4,4 : 6,12 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0016 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0017 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst GeneralizationOnUnions01/Weirdo - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0014 + IL_0007: ldarg.1 + IL_0008: isinst GeneralizationOnUnions01/Weirdo + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0015 .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldc.i4.1 - IL_0013: ret + IL_0011: ldloc.0 + IL_0012: stloc.1 + IL_0013: ldc.i4.1 + IL_0014: ret .line 100001,100001 : 0,0 '' - IL_0014: ldc.i4.0 - IL_0015: ret + IL_0015: ldc.i4.0 + IL_0016: ret .line 100001,100001 : 0,0 '' - IL_0016: ldarg.1 - IL_0017: ldnull - IL_0018: cgt.un - IL_001a: ldc.i4.0 - IL_001b: ceq - IL_001d: ret + IL_0017: ldarg.1 + IL_0018: ldnull + IL_0019: cgt.un + IL_001b: ldc.i4.0 + IL_001c: ceq + IL_001e: ret } // end of method Weirdo::Equals .method public hidebysig virtual final instance bool Equals(class GeneralizationOnUnions01/Weirdo obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 19 (0x13) + // Code size 20 (0x14) .maxstack 8 + .line 4,4 : 6,12 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_000b + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_000c .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: ret + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: ret .line 100001,100001 : 0,0 '' - IL_000b: ldarg.1 - IL_000c: ldnull - IL_000d: cgt.un - IL_000f: ldc.i4.0 - IL_0010: ceq - IL_0012: ret + IL_000c: ldarg.1 + IL_000d: ldnull + IL_000e: cgt.un + IL_0010: ldc.i4.0 + IL_0011: ceq + IL_0013: ret } // end of method Weirdo::Equals .method public hidebysig virtual final @@ -363,6 +373,7 @@ IL_0000: ldarg.1 IL_0001: isinst GeneralizationOnUnions01/Weirdo IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/IfThenElse01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/IfThenElse01.il.bsl index 3d0ba7cb01..da3619e275 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/IfThenElse01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/IfThenElse01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000208 Length: 0x00000092 } .module IfThenElse01.dll -// MVID: {60B68B7F-2D6C-0B5D-A745-03837F8BB660} +// MVID: {611C4D7C-2D6C-0B5D-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06DD0000 +// Image base: 0x06B70000 // =============== CLASS MEMBERS DECLARATION =================== @@ -128,7 +128,7 @@ !a z, !a w) cil managed { - // Code size 16 (0x10) + // Code size 17 (0x11) .maxstack 7 .locals init ([0] class IfThenElse01/M/f5@5 V_0) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' @@ -136,17 +136,19 @@ IL_0000: ldarg.0 IL_0001: ldfld class IfThenElse01/M/f5@5 class IfThenElse01/M/f5@5T::self0@ IL_0006: stloc.0 - IL_0007: ldarg.1 - IL_0008: ldarg.2 - IL_0009: ble.s IL_000d + IL_0007: nop + .line 100001,100001 : 0,0 '' + IL_0008: ldarg.1 + IL_0009: ldarg.2 + IL_000a: ble.s IL_000e .line 5,5 : 64,65 '' - IL_000b: ldarg.3 - IL_000c: ret + IL_000c: ldarg.3 + IL_000d: ret .line 5,5 : 71,72 '' - IL_000d: ldarg.s w - IL_000f: ret + IL_000e: ldarg.s w + IL_0010: ret } // end of method f5@5T::Invoke } // end of class f5@5T diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/LetIfThenElse01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/LetIfThenElse01.il.bsl index 0f66580c07..d52b78f54d 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/LetIfThenElse01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/LetIfThenElse01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001E0 Length: 0x00000076 } .module LetIfThenElse01.exe -// MVID: {611B0EC4-BE5A-D8FD-A745-0383C40E1B61} +// MVID: {611C4D7C-BE5A-D8FD-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x069B0000 +// Image base: 0x06920000 // =============== CLASS MEMBERS DECLARATION =================== @@ -54,7 +54,7 @@ .method public static class [mscorlib]System.Tuple`4 F(!!a y) cil managed { - // Code size 124 (0x7c) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] int32 x1, [1] valuetype [mscorlib]System.DateTime V_1, @@ -66,95 +66,103 @@ [7] valuetype [mscorlib]System.DateTime V_7) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' .line 6,6 : 12,51 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\LetIfThenElse01.fs' - IL_0000: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now() - IL_0005: stloc.1 - IL_0006: ldloca.s V_1 - IL_0008: call instance int32 [mscorlib]System.DateTime::get_Year() - IL_000d: ldc.i4 0x7d0 - IL_0012: ble.s IL_0018 + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now() + IL_0006: stloc.1 + IL_0007: ldloca.s V_1 + IL_0009: call instance int32 [mscorlib]System.DateTime::get_Year() + IL_000e: ldc.i4 0x7d0 + IL_0013: ble.s IL_0019 .line 6,6 : 52,53 '' - IL_0014: ldc.i4.1 + IL_0015: ldc.i4.1 .line 100001,100001 : 0,0 '' - IL_0015: nop - IL_0016: br.s IL_001a + IL_0016: nop + IL_0017: br.s IL_001b .line 6,6 : 59,60 '' - IL_0018: ldc.i4.2 + IL_0019: ldc.i4.2 .line 100001,100001 : 0,0 '' - IL_0019: nop + IL_001a: nop .line 100001,100001 : 0,0 '' - IL_001a: stloc.0 + IL_001b: stloc.0 .line 7,7 : 12,51 '' - IL_001b: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now() - IL_0020: stloc.3 - IL_0021: ldloca.s V_3 - IL_0023: call instance int32 [mscorlib]System.DateTime::get_Year() - IL_0028: ldc.i4 0x7d0 - IL_002d: ble.s IL_0033 + IL_001c: nop + .line 100001,100001 : 0,0 '' + IL_001d: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now() + IL_0022: stloc.3 + IL_0023: ldloca.s V_3 + IL_0025: call instance int32 [mscorlib]System.DateTime::get_Year() + IL_002a: ldc.i4 0x7d0 + IL_002f: ble.s IL_0035 .line 7,7 : 52,53 '' - IL_002f: ldc.i4.1 + IL_0031: ldc.i4.1 .line 100001,100001 : 0,0 '' - IL_0030: nop - IL_0031: br.s IL_0035 + IL_0032: nop + IL_0033: br.s IL_0037 .line 7,7 : 59,60 '' - IL_0033: ldc.i4.2 + IL_0035: ldc.i4.2 .line 100001,100001 : 0,0 '' - IL_0034: nop + IL_0036: nop .line 100001,100001 : 0,0 '' - IL_0035: stloc.2 + IL_0037: stloc.2 .line 8,8 : 12,51 '' - IL_0036: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now() - IL_003b: stloc.s V_5 - IL_003d: ldloca.s V_5 - IL_003f: call instance int32 [mscorlib]System.DateTime::get_Year() - IL_0044: ldc.i4 0x7d0 - IL_0049: bge.s IL_004f + IL_0038: nop + .line 100001,100001 : 0,0 '' + IL_0039: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now() + IL_003e: stloc.s V_5 + IL_0040: ldloca.s V_5 + IL_0042: call instance int32 [mscorlib]System.DateTime::get_Year() + IL_0047: ldc.i4 0x7d0 + IL_004c: bge.s IL_0052 .line 8,8 : 52,53 '' - IL_004b: ldc.i4.1 + IL_004e: ldc.i4.1 .line 100001,100001 : 0,0 '' - IL_004c: nop - IL_004d: br.s IL_0051 + IL_004f: nop + IL_0050: br.s IL_0054 .line 8,8 : 59,60 '' - IL_004f: ldc.i4.2 + IL_0052: ldc.i4.2 .line 100001,100001 : 0,0 '' - IL_0050: nop + IL_0053: nop .line 100001,100001 : 0,0 '' - IL_0051: stloc.s x2 + IL_0054: stloc.s x2 .line 9,9 : 12,51 '' - IL_0053: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now() - IL_0058: stloc.s V_7 - IL_005a: ldloca.s V_7 - IL_005c: call instance int32 [mscorlib]System.DateTime::get_Year() - IL_0061: ldc.i4 0x7d0 - IL_0066: bge.s IL_006c + IL_0056: nop + .line 100001,100001 : 0,0 '' + IL_0057: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_Now() + IL_005c: stloc.s V_7 + IL_005e: ldloca.s V_7 + IL_0060: call instance int32 [mscorlib]System.DateTime::get_Year() + IL_0065: ldc.i4 0x7d0 + IL_006a: bge.s IL_0070 .line 9,9 : 52,53 '' - IL_0068: ldc.i4.1 + IL_006c: ldc.i4.1 .line 100001,100001 : 0,0 '' - IL_0069: nop - IL_006a: br.s IL_006e + IL_006d: nop + IL_006e: br.s IL_0072 .line 9,9 : 59,60 '' - IL_006c: ldc.i4.2 + IL_0070: ldc.i4.2 .line 100001,100001 : 0,0 '' - IL_006d: nop + IL_0071: nop .line 100001,100001 : 0,0 '' - IL_006e: stloc.s y2 + IL_0072: stloc.s y2 .line 10,10 : 3,14 '' - IL_0070: ldloc.0 - IL_0071: ldloc.2 - IL_0072: ldloc.s x2 - IL_0074: ldloc.s y2 - IL_0076: newobj instance void class [mscorlib]System.Tuple`4::.ctor(!0, + IL_0074: ldloc.0 + IL_0075: ldloc.2 + IL_0076: ldloc.s x2 + IL_0078: ldloc.s y2 + IL_007a: newobj instance void class [mscorlib]System.Tuple`4::.ctor(!0, !1, !2, !3) - IL_007b: ret + IL_007f: ret } // end of method LetIfThenElse01::F } // end of class LetIfThenElse01 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Lock01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Lock01.il.bsl index 76b81b98e9..3884536a99 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Lock01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Lock01.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x00000188 Length: 0x00000064 } .module Lock01.exe -// MVID: {60BCDCE8-2BCA-B308-A745-0383E8DCBC60} +// MVID: {611C4D7C-2BCA-B308-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06B90000 +// Image base: 0x071E0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -153,6 +153,7 @@ IL_0029: pop IL_002a: leave.s IL_0037 + .line 100001,100001 : 0,0 '' } // end .try finally { diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/MethodImplNoInline.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/MethodImplNoInline.il.bsl index ebeebd6525..af2fb2f1a5 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/MethodImplNoInline.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/MethodImplNoInline.il.bsl @@ -37,13 +37,13 @@ // Offset: 0x00000300 Length: 0x000000F5 } .module MethodImplNoInline.exe -// MVID: {60B68B7F-4480-09E2-A745-03837F8BB660} +// MVID: {611C52A3-4480-09E2-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06DC0000 +// Image base: 0x06F00000 // =============== CLASS MEMBERS DECLARATION =================== diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/MethodImplNoInline02.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/MethodImplNoInline02.il.bsl index 607b8bf6f1..4016869a49 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/MethodImplNoInline02.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/MethodImplNoInline02.il.bsl @@ -37,13 +37,13 @@ // Offset: 0x00000308 Length: 0x000000F9 } .module MethodImplNoInline02.exe -// MVID: {60B68B7F-084F-1A8E-A745-03837F8BB660} +// MVID: {611C52A3-084F-1A8E-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05140000 +// Image base: 0x06B60000 // =============== CLASS MEMBERS DECLARATION =================== diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Seq_for_all01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Seq_for_all01.il.bsl index cbcdbfefab..e0302a0c9f 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Seq_for_all01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Seq_for_all01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001B0 Length: 0x00000072 } .module Seq_for_all01.exe -// MVID: {60B68B7F-D30D-BA80-A745-03837F8BB660} +// MVID: {611C4D7C-D30D-BA80-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05500000 +// Image base: 0x07110000 // =============== CLASS MEMBERS DECLARATION =================== @@ -70,29 +70,31 @@ .method public strict virtual instance bool Invoke(int32 s) cil managed { - // Code size 14 (0xe) + // Code size 15 (0xf) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' .line 5,5 : 31,47 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\Seq_for_all01.fs' - IL_0000: ldc.i4.1 - IL_0001: ldc.i4.0 - IL_0002: ceq + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0004: nop + IL_0001: ldc.i4.1 + IL_0002: ldc.i4.0 + IL_0003: ceq .line 100001,100001 : 0,0 '' - IL_0005: brfalse.s IL_000b + IL_0005: nop + .line 100001,100001 : 0,0 '' + IL_0006: brfalse.s IL_000c .line 5,5 : 48,50 '' - IL_0007: nop - .line 100001,100001 : 0,0 '' IL_0008: nop - IL_0009: br.s IL_000c + .line 100001,100001 : 0,0 '' + IL_0009: nop + IL_000a: br.s IL_000d .line 100001,100001 : 0,0 '' - IL_000b: nop + IL_000c: nop .line 6,6 : 31,35 '' - IL_000c: ldc.i4.1 - IL_000d: ret + IL_000d: ldc.i4.1 + IL_000e: ret } // end of method q@4::Invoke .method private specialname rtspecialname static diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Structs01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Structs01.il.bsl index 1d930ea81a..b03d9a5116 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Structs01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Structs01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000748 Length: 0x00000231 } .module Structs01.exe -// MVID: {60B68B7F-701F-5E27-A745-03837F8BB660} +// MVID: {611C52A3-701F-5E27-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07280000 +// Image base: 0x06680000 // =============== CLASS MEMBERS DECLARATION =================== @@ -83,6 +83,7 @@ IL_0010: ldloc.0 IL_0011: ldfld int32 Experiment.Test/Test::Field IL_0016: stloc.3 + .line 100001,100001 : 0,0 '' IL_0017: ldloc.2 IL_0018: ldloc.3 IL_0019: bge.s IL_001d @@ -138,6 +139,7 @@ IL_0013: ldloc.1 IL_0014: ldfld int32 Experiment.Test/Test::Field IL_0019: stloc.s V_4 + .line 100001,100001 : 0,0 '' IL_001b: ldloc.3 IL_001c: ldloc.s V_4 IL_001e: bge.s IL_0022 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Structs02.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Structs02.il.bsl index d22541e030..15115f5ba6 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Structs02.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/Structs02.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000780 Length: 0x00000237 } .module Structs02.exe -// MVID: {60B68B7F-7040-5E27-A745-03837F8BB660} +// MVID: {611C52A3-7040-5E27-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05320000 +// Image base: 0x051F0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -94,6 +94,7 @@ IL_0010: ldloc.0 IL_0011: ldfld int32 Experiment.Test/Repro::hash@ IL_0016: stloc.3 + .line 100001,100001 : 0,0 '' IL_0017: ldloc.2 IL_0018: ldloc.3 IL_0019: bge.s IL_001d @@ -149,6 +150,7 @@ IL_0013: ldloc.1 IL_0014: ldfld int32 Experiment.Test/Repro::hash@ IL_0019: stloc.s V_4 + .line 100001,100001 : 0,0 '' IL_001b: ldloc.3 IL_001c: ldloc.s V_4 IL_001e: bge.s IL_0022 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/StructsAsArrayElements01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/StructsAsArrayElements01.il.bsl index 7beca501ce..0e812538db 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/StructsAsArrayElements01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/StructsAsArrayElements01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000758 Length: 0x0000022C } .module StructsAsArrayElements01.dll -// MVID: {60B68B7F-29F3-6E68-A745-03837F8BB660} +// MVID: {611C52A3-29F3-6E68-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06A80000 +// Image base: 0x06670000 // =============== CLASS MEMBERS DECLARATION =================== @@ -84,6 +84,7 @@ IL_0010: ldloc.0 IL_0011: ldfld int32 StructsAsArrayElements01/T::i IL_0016: stloc.3 + .line 100001,100001 : 0,0 '' IL_0017: ldloc.2 IL_0018: ldloc.3 IL_0019: bge.s IL_001d @@ -139,6 +140,7 @@ IL_0013: ldloc.1 IL_0014: ldfld int32 StructsAsArrayElements01/T::i IL_0019: stloc.s V_4 + .line 100001,100001 : 0,0 '' IL_001b: ldloc.3 IL_001c: ldloc.s V_4 IL_001e: bge.s IL_0022 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/TryWith_NoFilterBlocks01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/TryWith_NoFilterBlocks01.il.bsl index db782e0d6c..7e3a902de5 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/TryWith_NoFilterBlocks01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Misc/TryWith_NoFilterBlocks01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000160 Length: 0x0000005F } .module TryWith_NoFilterBlocks01.exe -// MVID: {60BCDCE8-3DEF-9A40-A745-0383E8DCBC60} +// MVID: {611C4D7C-3DEF-9A40-A745-03837C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05100000 +// Image base: 0x066A0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -63,42 +63,48 @@ .method public static void main@() cil managed { .entrypoint - // Code size 28 (0x1c) + // Code size 30 (0x1e) .maxstack 4 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e, [2] class [mscorlib]System.Exception V_2) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 4,4 : 3,5 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\TryWith_NoFilterBlocks01.fs' + .line 3,3 : 1,4 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\Misc\\TryWith_NoFilterBlocks01.fs' .try { - IL_0000: leave.s IL_001b + IL_0000: nop + .line 4,4 : 3,5 '' + IL_0001: leave.s IL_001d .line 5,5 : 2,6 '' } // end .try catch [mscorlib]System.Object { - IL_0002: castclass [mscorlib]System.Exception - IL_0007: stloc.0 - IL_0008: ldloc.0 - IL_0009: stloc.1 - IL_000a: ldloc.1 - IL_000b: callvirt instance int32 [mscorlib]System.Object::GetHashCode() - IL_0010: ldc.i4.0 - IL_0011: ceq - IL_0013: brfalse.s IL_0019 - - IL_0015: ldloc.0 - IL_0016: stloc.2 + IL_0003: castclass [mscorlib]System.Exception + IL_0008: stloc.0 + .line 6,6 : 12,31 '' + IL_0009: nop + .line 100001,100001 : 0,0 '' + IL_000a: ldloc.0 + IL_000b: stloc.1 + IL_000c: ldloc.1 + IL_000d: callvirt instance int32 [mscorlib]System.Object::GetHashCode() + IL_0012: ldc.i4.0 + IL_0013: ceq + IL_0015: brfalse.s IL_001b + + .line 100001,100001 : 0,0 '' + IL_0017: ldloc.0 + IL_0018: stloc.2 .line 6,6 : 35,37 '' - IL_0017: leave.s IL_001b + IL_0019: leave.s IL_001d .line 7,7 : 10,12 '' - IL_0019: leave.s IL_001b + IL_001b: leave.s IL_001d .line 100001,100001 : 0,0 '' } // end handler - IL_001b: ret + IL_001d: ret } // end of method $TryWith_NoFilterBlocks01::main@ } // end of class ''.$TryWith_NoFilterBlocks01 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Aggregates01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Aggregates01.il.bsl index 31035e2fa2..6dafc94cb8 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Aggregates01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Aggregates01.il.bsl @@ -50,13 +50,13 @@ // Offset: 0x000005F0 Length: 0x00000211 } .module Linq101Aggregates01.exe -// MVID: {611B0EC5-D281-4783-A745-0383C50E1B61} +// MVID: {611C52A3-D281-4783-A745-0383A3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07220000 +// Image base: 0x06ED0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -194,7 +194,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -213,6 +213,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -276,17 +277,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 12,12 : 9,33 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #1 input at line 11@12'::Close .method public strict virtual instance bool @@ -490,7 +494,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -509,6 +513,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -572,17 +577,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 21,21 : 9,28 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method numSum@21::Close .method public strict virtual instance bool @@ -824,7 +832,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -843,6 +851,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -906,17 +915,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 30,30 : 9,26 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method totalChars@30::Close .method public strict virtual instance bool @@ -1285,7 +1297,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1304,6 +1316,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1367,17 +1380,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 42,42 : 13,26 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method sum@42::Close .method public strict virtual instance bool @@ -1589,6 +1605,7 @@ IL_005b: ldloc.s V_7 IL_005d: isinst [mscorlib]System.IDisposable IL_0062: stloc.s V_10 + .line 100001,100001 : 0,0 '' IL_0064: ldloc.s V_10 IL_0066: brfalse.s IL_0070 @@ -1795,7 +1812,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1814,6 +1831,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1877,17 +1895,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 49,49 : 22,41 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method minNum@49::Close .method public strict virtual instance bool @@ -2129,7 +2150,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -2148,6 +2169,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -2211,17 +2233,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 52,52 : 28,45 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method shortestWord@52::Close .method public strict virtual instance bool @@ -2590,7 +2615,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -2609,6 +2634,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -2672,17 +2698,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 59,59 : 27,40 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method min@59::Close .method public strict virtual instance bool @@ -3184,7 +3213,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -3203,6 +3232,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -3266,17 +3296,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 69,69 : 40,53 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method cheapestProducts@69::Close .method public strict virtual instance bool @@ -3652,7 +3685,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -3671,6 +3704,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -3734,17 +3768,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 74,74 : 22,41 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method maxNum@74::Close .method public strict virtual instance bool @@ -3986,7 +4023,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -4005,6 +4042,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -4068,17 +4106,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 77,77 : 29,46 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method longestLength@77::Close .method public strict virtual instance bool @@ -4447,7 +4488,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -4466,6 +4507,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -4529,17 +4571,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 84,84 : 42,55 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method mostExpensivePrice@84::Close .method public strict virtual instance bool @@ -5023,7 +5068,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -5042,6 +5087,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -5105,17 +5151,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 93,93 : 32,45 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method maxPrice@93::Close .method public strict virtual instance bool @@ -5368,7 +5417,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -5387,6 +5436,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -5450,17 +5500,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 94,94 : 45,58 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method mostExpensiveProducts@94::Close .method public strict virtual instance bool @@ -5841,7 +5894,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 135 (0x87) + // Code size 136 (0x88) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -5860,6 +5913,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -5923,17 +5977,20 @@ IL_0078: nop IL_0079: br IL_0000 - IL_007e: ldloc.0 - IL_007f: ldnull - IL_0080: cgt.un - IL_0082: brfalse.s IL_0086 + .line 100,100 : 26,46 '' + IL_007e: nop + .line 100001,100001 : 0,0 '' + IL_007f: ldloc.0 + IL_0080: ldnull + IL_0081: cgt.un + IL_0083: brfalse.s IL_0087 .line 100001,100001 : 0,0 '' - IL_0084: ldloc.0 - IL_0085: throw + IL_0085: ldloc.0 + IL_0086: throw .line 100001,100001 : 0,0 '' - IL_0086: ret + IL_0087: ret } // end of method averageNum@100::Close .method public strict virtual instance bool @@ -6405,7 +6462,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -6424,6 +6481,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -6487,17 +6545,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 115,115 : 36,49 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method averagePrice@115::Close .method public strict virtual instance bool @@ -6679,6 +6740,7 @@ IL_0021: ldloc.s V_4 IL_0023: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2::get_Source() IL_0028: stloc.s V_6 + .line 100001,100001 : 0,0 '' IL_002a: ldloc.s V_6 IL_002c: box class [mscorlib]System.Collections.Generic.IEnumerable`1 IL_0031: brtrue.s IL_003e @@ -6729,6 +6791,7 @@ IL_007d: nop IL_007e: br.s IL_0057 + .line 100001,100001 : 0,0 '' IL_0080: ldloc.s V_10 IL_0082: brtrue.s IL_008f @@ -6757,6 +6820,7 @@ IL_00aa: ldloc.s V_7 IL_00ac: isinst [mscorlib]System.IDisposable IL_00b1: stloc.s V_13 + .line 100001,100001 : 0,0 '' IL_00b3: ldloc.s V_13 IL_00b5: brfalse.s IL_00bf @@ -7383,6 +7447,7 @@ IL_00ff: ldloc.s V_27 IL_0101: isinst [mscorlib]System.IDisposable IL_0106: stloc.s V_30 + .line 100001,100001 : 0,0 '' IL_0108: ldloc.s V_30 IL_010a: brfalse.s IL_0114 @@ -7462,6 +7527,7 @@ IL_01a4: ldloc.s V_36 IL_01a6: isinst [mscorlib]System.IDisposable IL_01ab: stloc.s V_39 + .line 100001,100001 : 0,0 '' IL_01ad: ldloc.s V_39 IL_01af: brfalse.s IL_01b9 @@ -7770,6 +7836,7 @@ IL_0512: ldloc.s V_52 IL_0514: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2::get_Source() IL_0519: stloc.s V_54 + .line 100001,100001 : 0,0 '' IL_051b: ldloc.s V_54 IL_051d: box class [mscorlib]System.Collections.Generic.IEnumerable`1 IL_0522: brtrue.s IL_052f @@ -7810,6 +7877,7 @@ IL_0569: nop IL_056a: br.s IL_0547 + .line 100001,100001 : 0,0 '' IL_056c: ldloc.s V_58 IL_056e: brtrue.s IL_057b @@ -7837,6 +7905,7 @@ IL_058e: ldloc.s V_55 IL_0590: isinst [mscorlib]System.IDisposable IL_0595: stloc.s V_61 + .line 100001,100001 : 0,0 '' IL_0597: ldloc.s V_61 IL_0599: brfalse.s IL_05a3 @@ -7870,6 +7939,7 @@ IL_05dc: ldloc.s V_64 IL_05de: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() IL_05e3: stloc.s V_66 + .line 100001,100001 : 0,0 '' IL_05e5: ldloc.s V_66 IL_05e7: box class [mscorlib]System.Collections.Generic.IEnumerable`1> IL_05ec: brtrue.s IL_05f9 @@ -7910,6 +7980,7 @@ IL_0633: nop IL_0634: br.s IL_0611 + .line 100001,100001 : 0,0 '' IL_0636: ldloc.s V_70 IL_0638: brtrue.s IL_0645 @@ -7937,6 +8008,7 @@ IL_0658: ldloc.s V_67 IL_065a: isinst [mscorlib]System.IDisposable IL_065f: stloc.s V_73 + .line 100001,100001 : 0,0 '' IL_0661: ldloc.s V_73 IL_0663: brfalse.s IL_066d diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101ElementOperators01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101ElementOperators01.il.bsl index 327debf86c..d64da39d4e 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101ElementOperators01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101ElementOperators01.il.bsl @@ -45,13 +45,13 @@ // Offset: 0x00000388 Length: 0x00000127 } .module Linq101ElementOperators01.exe -// MVID: {60BD414C-19D7-C20D-A745-03834C41BD60} +// MVID: {611C4D82-19D7-C20D-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x008A0000 +// Image base: 0x06A90000 // =============== CLASS MEMBERS DECLARATION =================== @@ -189,7 +189,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -208,6 +208,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -271,17 +272,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 12,12 : 9,29 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method products12@12::Close .method public strict virtual instance bool @@ -526,7 +530,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -545,6 +549,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -608,17 +613,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 22,22 : 9,28 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method startsWithO@22::Close .method public strict virtual instance bool @@ -864,7 +872,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -883,6 +891,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -946,17 +955,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 31,31 : 9,28 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method firstNumOrDefault@31::Close .method public strict virtual instance bool @@ -1160,7 +1172,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1179,6 +1191,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1242,17 +1255,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 52,52 : 9,29 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method fourthLowNum@52::Close .method public strict virtual instance bool diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Joins01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Joins01.il.bsl index 38771a7283..20da6d9ded 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Joins01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Joins01.il.bsl @@ -45,13 +45,13 @@ // Offset: 0x00000310 Length: 0x000000C3 } .module Linq101Joins01.exe -// MVID: {611B0EC5-151B-685E-A745-0383C50E1B61} +// MVID: {611C4D82-151B-685E-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06D00000 +// Image base: 0x06C40000 // =============== CLASS MEMBERS DECLARATION =================== @@ -955,7 +955,7 @@ .method public strict virtual instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [Utils]Utils/Product,string>,object> Invoke(class [Utils]Utils/Product _arg2) cil managed { - // Code size 65 (0x41) + // Code size 66 (0x42) .maxstack 9 .locals init ([0] class [Utils]Utils/Product p, [1] string t) @@ -963,42 +963,44 @@ IL_0000: ldarg.1 IL_0001: stloc.0 .line 41,41 : 17,39 '' - IL_0002: ldloc.0 - IL_0003: box [Utils]Utils/Product - IL_0008: ldnull - IL_0009: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityIntrinsic(!!0, + IL_0002: nop + .line 100001,100001 : 0,0 '' + IL_0003: ldloc.0 + IL_0004: box [Utils]Utils/Product + IL_0009: ldnull + IL_000a: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityIntrinsic(!!0, !!0) - IL_000e: brfalse.s IL_0018 + IL_000f: brfalse.s IL_0019 .line 41,41 : 40,55 '' - IL_0010: ldstr "(No products)" + IL_0011: ldstr "(No products)" .line 100001,100001 : 0,0 '' - IL_0015: nop - IL_0016: br.s IL_001f + IL_0016: nop + IL_0017: br.s IL_0020 .line 41,41 : 61,74 '' - IL_0018: ldloc.0 - IL_0019: callvirt instance string [Utils]Utils/Product::get_ProductName() + IL_0019: ldloc.0 + IL_001a: callvirt instance string [Utils]Utils/Product::get_ProductName() .line 100001,100001 : 0,0 '' - IL_001e: nop + IL_001f: nop .line 100001,100001 : 0,0 '' - IL_001f: stloc.1 + IL_0020: stloc.1 .line 42,42 : 9,22 '' - IL_0020: ldarg.0 - IL_0021: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Joins01/'Pipe #4 input at line 37@40-4'::builder@ - IL_0026: ldarg.0 - IL_0027: ldfld string Linq101Joins01/'Pipe #4 input at line 37@40-4'::c - IL_002c: ldarg.0 - IL_002d: ldfld class [mscorlib]System.Collections.Generic.IEnumerable`1 Linq101Joins01/'Pipe #4 input at line 37@40-4'::ps - IL_0032: ldloc.0 - IL_0033: ldloc.1 - IL_0034: newobj instance void class [mscorlib]System.Tuple`4,class [Utils]Utils/Product,string>::.ctor(!0, + IL_0021: ldarg.0 + IL_0022: ldfld class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder Linq101Joins01/'Pipe #4 input at line 37@40-4'::builder@ + IL_0027: ldarg.0 + IL_0028: ldfld string Linq101Joins01/'Pipe #4 input at line 37@40-4'::c + IL_002d: ldarg.0 + IL_002e: ldfld class [mscorlib]System.Collections.Generic.IEnumerable`1 Linq101Joins01/'Pipe #4 input at line 37@40-4'::ps + IL_0033: ldloc.0 + IL_0034: ldloc.1 + IL_0035: newobj instance void class [mscorlib]System.Tuple`4,class [Utils]Utils/Product,string>::.ctor(!0, !1, !2, !3) - IL_0039: tail. - IL_003b: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Yield,class [Utils]Utils/Product,string>,object>(!!0) - IL_0040: ret + IL_003a: tail. + IL_003c: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Yield,class [Utils]Utils/Product,string>,object>(!!0) + IL_0041: ret } // end of method 'Pipe #4 input at line 37@40-4'::Invoke } // end of class 'Pipe #4 input at line 37@40-4' diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Ordering01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Ordering01.il.bsl index dc1c5f3afc..e20407700d 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Ordering01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Ordering01.il.bsl @@ -40,13 +40,13 @@ // Offset: 0x000003B8 Length: 0x00000134 } .module Linq101Ordering01.exe -// MVID: {611B0EC5-649A-6956-A745-0383C50E1B61} +// MVID: {611C4D82-649A-6956-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06CC0000 +// Image base: 0x071E0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -184,7 +184,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -203,6 +203,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -266,17 +267,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 11,11 : 9,26 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #1 input at line 10@11'::Close .method public strict virtual instance bool @@ -518,7 +522,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -537,6 +541,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -600,17 +605,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 18,18 : 9,26 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #2 input at line 17@18'::Close .method public strict virtual instance bool @@ -973,7 +981,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -992,6 +1000,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1055,17 +1064,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 44,44 : 9,29 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #4 input at line 43@44'::Close .method public strict virtual instance bool @@ -1309,7 +1321,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1328,6 +1340,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1391,17 +1404,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 52,52 : 9,27 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #5 input at line 51@52'::Close .method public strict virtual instance bool diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Partitioning01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Partitioning01.il.bsl index 866d1692f6..365fa72d87 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Partitioning01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Partitioning01.il.bsl @@ -45,13 +45,13 @@ // Offset: 0x000003D8 Length: 0x00000138 } .module Linq101Partitioning01.exe -// MVID: {611B0EC5-B280-A6A2-A745-0383C50E1B61} +// MVID: {611C4D82-B280-A6A2-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x070F0000 +// Image base: 0x06570000 // =============== CLASS MEMBERS DECLARATION =================== @@ -189,7 +189,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -208,6 +208,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -271,17 +272,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 12,12 : 9,28 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #1 input at line 11@12'::Close .method public strict virtual instance bool @@ -694,7 +698,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -713,6 +717,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -776,17 +781,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 29,29 : 9,28 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #3 input at line 28@29'::Close .method public strict virtual instance bool @@ -1199,7 +1207,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1218,6 +1226,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1281,17 +1290,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 45,45 : 9,28 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #5 input at line 44@45'::Close .method public strict virtual instance bool @@ -1535,7 +1547,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1554,6 +1566,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1617,17 +1630,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 52,52 : 9,28 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #6 input at line 51@52'::Close .method public strict virtual instance bool diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Quantifiers01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Quantifiers01.il.bsl index aacf0b3155..d0dcf614bd 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Quantifiers01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Quantifiers01.il.bsl @@ -45,13 +45,13 @@ // Offset: 0x00000398 Length: 0x000000FF } .module Linq101Quantifiers01.exe -// MVID: {611B0EC5-76DD-E373-A745-0383C50E1B61} +// MVID: {611C4D82-76DD-E373-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06B80000 +// Image base: 0x071A0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -189,7 +189,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -208,6 +208,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -271,17 +272,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 12,12 : 9,26 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method iAfterE@12::Close .method public strict virtual instance bool @@ -790,7 +794,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -809,6 +813,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -872,17 +877,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 32,32 : 9,28 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method onlyOdd@32::Close .method public strict virtual instance bool diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.bsl index bc788f95c2..cfcb02aa14 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Select01.il.bsl @@ -45,13 +45,13 @@ // Offset: 0x00000648 Length: 0x00000204 } .module Linq101Select01.exe -// MVID: {611B0EC5-6057-8F80-A745-0383C50E1B61} +// MVID: {611C5DB0-6057-8F80-A745-0383B05D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06AD0000 +// Image base: 0x05540000 // =============== CLASS MEMBERS DECLARATION =================== @@ -234,7 +234,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -253,6 +253,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -316,17 +317,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 13,13 : 9,23 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #1 input at line 11@13'::Close .method public strict virtual instance bool @@ -574,7 +578,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -593,6 +597,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -656,17 +661,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 22,22 : 9,31 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method productNames@22::Close .method public strict virtual instance bool @@ -915,7 +923,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -934,6 +942,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -997,17 +1006,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 30,30 : 9,29 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #2 input at line 28@30'::Close .method public strict virtual instance bool @@ -1259,7 +1271,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1278,6 +1290,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1341,17 +1354,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 39,39 : 8,41 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #3 input at line 37@39'::Close .method public strict virtual instance bool @@ -1607,7 +1623,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1626,6 +1642,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1689,17 +1706,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 46,46 : 9,42 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #4 input at line 44@46'::Close .method public strict virtual instance bool @@ -1954,7 +1974,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1973,6 +1993,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -2036,17 +2057,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 53,53 : 9,56 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #5 input at line 51@53'::Close .method public strict virtual instance bool @@ -3774,7 +3798,7 @@ .method public static void main@() cil managed { .entrypoint - // Code size 1169 (0x491) + // Code size 1170 (0x492) .maxstack 13 .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 numbers, [1] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 numsPlusOne, @@ -4045,251 +4069,253 @@ IL_0201: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::lowNums@58 IL_0206: stloc.s lowNums .line 64,64 : 1,59 '' - IL_0208: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_lowNums() - IL_020d: stloc.s V_34 - IL_020f: ldstr "four" - IL_0214: ldstr "one" - IL_0219: ldstr "three" - IL_021e: ldstr "two" - IL_0223: ldstr "zero" - IL_0228: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() - IL_022d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0208: nop + .line 100001,100001 : 0,0 '' + IL_0209: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_lowNums() + IL_020e: stloc.s V_34 + IL_0210: ldstr "four" + IL_0215: ldstr "one" + IL_021a: ldstr "three" + IL_021f: ldstr "two" + IL_0224: ldstr "zero" + IL_0229: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() + IL_022e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0232: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0233: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0237: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0238: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_023c: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_023d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0241: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0242: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0246: stloc.s V_35 - IL_0248: ldloc.s V_34 - IL_024a: ldloc.s V_35 - IL_024c: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() - IL_0251: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, + IL_0247: stloc.s V_35 + IL_0249: ldloc.s V_34 + IL_024b: ldloc.s V_35 + IL_024d: call class [mscorlib]System.Collections.IEqualityComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericEqualityComparer() + IL_0252: callvirt instance bool class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_0256: ldc.i4.0 - IL_0257: ceq - IL_0259: brfalse.s IL_0275 + IL_0257: ldc.i4.0 + IL_0258: ceq + IL_025a: brfalse.s IL_0276 .line 64,64 : 60,84 '' - IL_025b: ldstr "lowNums failed" - IL_0260: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0265: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_026a: pop + IL_025c: ldstr "lowNums failed" + IL_0261: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0266: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_026b: pop .line 64,64 : 86,92 '' - IL_026b: ldc.i4.1 - IL_026c: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) - IL_0271: pop + IL_026c: ldc.i4.1 + IL_026d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.Operators::Exit(int32) + IL_0272: pop .line 100001,100001 : 0,0 '' - IL_0272: nop - IL_0273: br.s IL_0276 + IL_0273: nop + IL_0274: br.s IL_0277 .line 100001,100001 : 0,0 '' - IL_0275: nop + IL_0276: nop .line 67,67 : 1,37 '' - IL_0276: ldc.i4.0 - IL_0277: ldc.i4.2 - IL_0278: ldc.i4.4 - IL_0279: ldc.i4.5 - IL_027a: ldc.i4.6 - IL_027b: ldc.i4.8 - IL_027c: ldc.i4.s 9 - IL_027e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() - IL_0283: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0277: ldc.i4.0 + IL_0278: ldc.i4.2 + IL_0279: ldc.i4.4 + IL_027a: ldc.i4.5 + IL_027b: ldc.i4.6 + IL_027c: ldc.i4.8 + IL_027d: ldc.i4.s 9 + IL_027f: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() + IL_0284: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0288: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0289: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_028d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_028e: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0292: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0293: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_0297: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_0298: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_029c: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_029d: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_02a1: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_02a2: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_02a6: dup - IL_02a7: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbersA@67 - IL_02ac: stloc.s numbersA + IL_02a7: dup + IL_02a8: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbersA@67 + IL_02ad: stloc.s numbersA .line 68,68 : 1,31 '' - IL_02ae: ldc.i4.1 - IL_02af: ldc.i4.3 - IL_02b0: ldc.i4.5 - IL_02b1: ldc.i4.7 - IL_02b2: ldc.i4.8 - IL_02b3: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() - IL_02b8: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_02af: ldc.i4.1 + IL_02b0: ldc.i4.3 + IL_02b1: ldc.i4.5 + IL_02b2: ldc.i4.7 + IL_02b3: ldc.i4.8 + IL_02b4: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_Empty() + IL_02b9: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_02bd: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_02be: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_02c2: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_02c3: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_02c7: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_02c8: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_02cc: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, + IL_02cd: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::Cons(!0, class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1) - IL_02d1: dup - IL_02d2: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbersB@68 - IL_02d7: stloc.s numbersB + IL_02d2: dup + IL_02d3: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::numbersB@68 + IL_02d8: stloc.s numbersB .line 70,76 : 1,21 '' - IL_02d9: nop + IL_02da: nop .line 71,71 : 5,10 '' - IL_02da: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() - IL_02df: stloc.s V_37 - IL_02e1: ldloc.s V_37 - IL_02e3: ldloc.s V_37 - IL_02e5: ldloc.s V_37 - IL_02e7: ldloc.s V_37 - IL_02e9: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_numbersA() - IL_02ee: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_02f3: ldloc.s V_37 - IL_02f5: newobj instance void Linq101Select01/'Pipe #7 input at line 71@72'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) - IL_02fa: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_02db: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() + IL_02e0: stloc.s V_37 + IL_02e2: ldloc.s V_37 + IL_02e4: ldloc.s V_37 + IL_02e6: ldloc.s V_37 + IL_02e8: ldloc.s V_37 + IL_02ea: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_numbersA() + IL_02ef: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_02f4: ldloc.s V_37 + IL_02f6: newobj instance void Linq101Select01/'Pipe #7 input at line 71@72'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) + IL_02fb: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_02ff: ldsfld class Linq101Select01/'Pipe #7 input at line 71@74-2' Linq101Select01/'Pipe #7 input at line 71@74-2'::@_instance - IL_0304: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_0300: ldsfld class Linq101Select01/'Pipe #7 input at line 71@74-2' Linq101Select01/'Pipe #7 input at line 71@74-2'::@_instance + IL_0305: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0309: ldsfld class Linq101Select01/'Pipe #7 input at line 71@75-3' Linq101Select01/'Pipe #7 input at line 71@75-3'::@_instance - IL_030e: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`2>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_030a: ldsfld class Linq101Select01/'Pipe #7 input at line 71@75-3' Linq101Select01/'Pipe #7 input at line 71@75-3'::@_instance + IL_030f: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`2>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0313: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() - IL_0318: stloc.s 'Pipe #7 input at line 71' + IL_0314: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() + IL_0319: stloc.s 'Pipe #7 input at line 71' .line 76,76 : 10,21 '' - IL_031a: ldloc.s 'Pipe #7 input at line 71' - IL_031c: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToArray>(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0321: dup - IL_0322: stsfld class [mscorlib]System.Tuple`2[] ''.$Linq101Select01::pairs@70 - IL_0327: stloc.s pairs + IL_031b: ldloc.s 'Pipe #7 input at line 71' + IL_031d: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToArray>(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_0322: dup + IL_0323: stsfld class [mscorlib]System.Tuple`2[] ''.$Linq101Select01::pairs@70 + IL_0328: stloc.s pairs .line 79,79 : 1,34 '' - IL_0329: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getCustomerList() - IL_032e: dup - IL_032f: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::customers@79 - IL_0334: stloc.s customers + IL_032a: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 [Utils]Utils::getCustomerList() + IL_032f: dup + IL_0330: stsfld class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 ''.$Linq101Select01::customers@79 + IL_0335: stloc.s customers .line 80,86 : 1,21 '' - IL_0336: nop + IL_0337: nop .line 81,81 : 5,10 '' - IL_0337: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() - IL_033c: stloc.s V_39 - IL_033e: ldloc.s V_39 - IL_0340: ldloc.s V_39 - IL_0342: ldloc.s V_39 - IL_0344: ldloc.s V_39 - IL_0346: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() - IL_034b: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_0350: ldloc.s V_39 - IL_0352: newobj instance void Linq101Select01/'Pipe #8 input at line 81@82'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) - IL_0357: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_0338: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() + IL_033d: stloc.s V_39 + IL_033f: ldloc.s V_39 + IL_0341: ldloc.s V_39 + IL_0343: ldloc.s V_39 + IL_0345: ldloc.s V_39 + IL_0347: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() + IL_034c: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_0351: ldloc.s V_39 + IL_0353: newobj instance void Linq101Select01/'Pipe #8 input at line 81@82'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) + IL_0358: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_035c: ldsfld class Linq101Select01/'Pipe #8 input at line 81@84-2' Linq101Select01/'Pipe #8 input at line 81@84-2'::@_instance - IL_0361: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_035d: ldsfld class Linq101Select01/'Pipe #8 input at line 81@84-2' Linq101Select01/'Pipe #8 input at line 81@84-2'::@_instance + IL_0362: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0366: ldsfld class Linq101Select01/'Pipe #8 input at line 81@85-3' Linq101Select01/'Pipe #8 input at line 81@85-3'::@_instance - IL_036b: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_0367: ldsfld class Linq101Select01/'Pipe #8 input at line 81@85-3' Linq101Select01/'Pipe #8 input at line 81@85-3'::@_instance + IL_036c: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0370: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() - IL_0375: stloc.s 'Pipe #8 input at line 81' + IL_0371: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() + IL_0376: stloc.s 'Pipe #8 input at line 81' .line 86,86 : 10,21 '' - IL_0377: ldloc.s 'Pipe #8 input at line 81' - IL_0379: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToArray>(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_037e: dup - IL_037f: stsfld class [mscorlib]System.Tuple`3[] ''.$Linq101Select01::orders@80 - IL_0384: stloc.s orders + IL_0378: ldloc.s 'Pipe #8 input at line 81' + IL_037a: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToArray>(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_037f: dup + IL_0380: stsfld class [mscorlib]System.Tuple`3[] ''.$Linq101Select01::orders@80 + IL_0385: stloc.s orders .line 89,95 : 1,21 '' - IL_0386: nop + IL_0387: nop .line 90,90 : 5,10 '' - IL_0387: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() - IL_038c: stloc.s V_41 - IL_038e: ldloc.s V_41 - IL_0390: ldloc.s V_41 - IL_0392: ldloc.s V_41 - IL_0394: ldloc.s V_41 - IL_0396: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() - IL_039b: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_03a0: ldloc.s V_41 - IL_03a2: newobj instance void Linq101Select01/'Pipe #9 input at line 90@91'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) - IL_03a7: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_0388: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() + IL_038d: stloc.s V_41 + IL_038f: ldloc.s V_41 + IL_0391: ldloc.s V_41 + IL_0393: ldloc.s V_41 + IL_0395: ldloc.s V_41 + IL_0397: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() + IL_039c: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_03a1: ldloc.s V_41 + IL_03a3: newobj instance void Linq101Select01/'Pipe #9 input at line 90@91'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) + IL_03a8: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_03ac: ldsfld class Linq101Select01/'Pipe #9 input at line 90@93-2' Linq101Select01/'Pipe #9 input at line 90@93-2'::@_instance - IL_03b1: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_03ad: ldsfld class Linq101Select01/'Pipe #9 input at line 90@93-2' Linq101Select01/'Pipe #9 input at line 90@93-2'::@_instance + IL_03b2: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_03b6: ldsfld class Linq101Select01/'Pipe #9 input at line 90@94-3' Linq101Select01/'Pipe #9 input at line 90@94-3'::@_instance - IL_03bb: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_03b7: ldsfld class Linq101Select01/'Pipe #9 input at line 90@94-3' Linq101Select01/'Pipe #9 input at line 90@94-3'::@_instance + IL_03bc: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_03c0: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() - IL_03c5: stloc.s 'Pipe #9 input at line 90' + IL_03c1: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() + IL_03c6: stloc.s 'Pipe #9 input at line 90' .line 95,95 : 10,21 '' - IL_03c7: ldloc.s 'Pipe #9 input at line 90' - IL_03c9: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToArray>(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_03ce: dup - IL_03cf: stsfld class [mscorlib]System.Tuple`3[] ''.$Linq101Select01::orders2@89 - IL_03d4: stloc.s orders2 - IL_03d6: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() - IL_03db: stloc.s V_42 - IL_03dd: ldloc.s V_42 - IL_03df: ldloc.s V_42 - IL_03e1: ldloc.s V_42 - IL_03e3: ldloc.s V_42 - IL_03e5: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() - IL_03ea: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_03ef: ldloc.s V_42 - IL_03f1: newobj instance void Linq101Select01/orders3@100::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) - IL_03f6: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_03c8: ldloc.s 'Pipe #9 input at line 90' + IL_03ca: call !!0[] [FSharp.Core]Microsoft.FSharp.Collections.SeqModule::ToArray>(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_03cf: dup + IL_03d0: stsfld class [mscorlib]System.Tuple`3[] ''.$Linq101Select01::orders2@89 + IL_03d5: stloc.s orders2 + IL_03d7: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() + IL_03dc: stloc.s V_42 + IL_03de: ldloc.s V_42 + IL_03e0: ldloc.s V_42 + IL_03e2: ldloc.s V_42 + IL_03e4: ldloc.s V_42 + IL_03e6: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() + IL_03eb: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_03f0: ldloc.s V_42 + IL_03f2: newobj instance void Linq101Select01/orders3@100::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) + IL_03f7: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_03fb: ldsfld class Linq101Select01/'orders3@102-2' Linq101Select01/'orders3@102-2'::@_instance - IL_0400: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_03fc: ldsfld class Linq101Select01/'orders3@102-2' Linq101Select01/'orders3@102-2'::@_instance + IL_0401: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0405: ldsfld class Linq101Select01/'orders3@103-3' Linq101Select01/'orders3@103-3'::@_instance - IL_040a: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_0406: ldsfld class Linq101Select01/'orders3@103-3' Linq101Select01/'orders3@103-3'::@_instance + IL_040b: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`3>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_040f: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() - IL_0414: dup - IL_0415: stsfld class [mscorlib]System.Collections.Generic.IEnumerable`1> ''.$Linq101Select01::orders3@98 - IL_041a: stloc.s orders3 + IL_0410: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() + IL_0415: dup + IL_0416: stsfld class [mscorlib]System.Collections.Generic.IEnumerable`1> ''.$Linq101Select01::orders3@98 + IL_041b: stloc.s orders3 .line 107,107 : 1,38 '' - IL_041c: ldc.i4 0x7cd - IL_0421: ldc.i4.1 + IL_041d: ldc.i4 0x7cd IL_0422: ldc.i4.1 - IL_0423: newobj instance void [mscorlib]System.DateTime::.ctor(int32, + IL_0423: ldc.i4.1 + IL_0424: newobj instance void [mscorlib]System.DateTime::.ctor(int32, int32, int32) - IL_0428: dup - IL_0429: stsfld valuetype [mscorlib]System.DateTime ''.$Linq101Select01::cutOffDate@107 - IL_042e: stloc.s cutOffDate - IL_0430: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() - IL_0435: stloc.s V_43 - IL_0437: ldloc.s V_43 - IL_0439: ldloc.s V_43 - IL_043b: ldloc.s V_43 - IL_043d: ldloc.s V_43 - IL_043f: ldloc.s V_43 - IL_0441: ldloc.s V_43 - IL_0443: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() - IL_0448: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_044d: ldloc.s V_43 - IL_044f: newobj instance void Linq101Select01/orders4@111::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) - IL_0454: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_0429: dup + IL_042a: stsfld valuetype [mscorlib]System.DateTime ''.$Linq101Select01::cutOffDate@107 + IL_042f: stloc.s cutOffDate + IL_0431: call class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::get_query() + IL_0436: stloc.s V_43 + IL_0438: ldloc.s V_43 + IL_043a: ldloc.s V_43 + IL_043c: ldloc.s V_43 + IL_043e: ldloc.s V_43 + IL_0440: ldloc.s V_43 + IL_0442: ldloc.s V_43 + IL_0444: call class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 Linq101Select01::get_customers() + IL_0449: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Source(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_044e: ldloc.s V_43 + IL_0450: newobj instance void Linq101Select01/orders4@111::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) + IL_0455: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_0459: ldsfld class Linq101Select01/'orders4@112-1' Linq101Select01/'orders4@112-1'::@_instance - IL_045e: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_045a: ldsfld class Linq101Select01/'orders4@112-1' Linq101Select01/'orders4@112-1'::@_instance + IL_045f: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0463: ldloc.s V_43 - IL_0465: newobj instance void Linq101Select01/'orders4@111-2'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) - IL_046a: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_0464: ldloc.s V_43 + IL_0466: newobj instance void Linq101Select01/'orders4@111-2'::.ctor(class [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder) + IL_046b: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::For,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2>) - IL_046f: ldsfld class Linq101Select01/'orders4@114-4' Linq101Select01/'orders4@114-4'::@_instance - IL_0474: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_0470: ldsfld class Linq101Select01/'orders4@114-4' Linq101Select01/'orders4@114-4'::@_instance + IL_0475: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Where,class [mscorlib]System.Collections.IEnumerable>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0479: ldsfld class Linq101Select01/'orders4@115-5' Linq101Select01/'orders4@115-5'::@_instance - IL_047e: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`2>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, + IL_047a: ldsfld class Linq101Select01/'orders4@115-5' Linq101Select01/'orders4@115-5'::@_instance + IL_047f: callvirt instance class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2 [FSharp.Core]Microsoft.FSharp.Linq.QueryBuilder::Select,class [mscorlib]System.Collections.IEnumerable,class [mscorlib]System.Tuple`2>(class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2, class [FSharp.Core]Microsoft.FSharp.Core.FSharpFunc`2) - IL_0483: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() - IL_0488: dup - IL_0489: stsfld class [mscorlib]System.Collections.Generic.IEnumerable`1> ''.$Linq101Select01::orders4@109 - IL_048e: stloc.s orders4 - IL_0490: ret + IL_0484: callvirt instance class [mscorlib]System.Collections.Generic.IEnumerable`1 class [FSharp.Core]Microsoft.FSharp.Linq.QuerySource`2,class [mscorlib]System.Collections.IEnumerable>::get_Source() + IL_0489: dup + IL_048a: stsfld class [mscorlib]System.Collections.Generic.IEnumerable`1> ''.$Linq101Select01::orders4@109 + IL_048f: stloc.s orders4 + IL_0491: ret } // end of method $Linq101Select01::main@ } // end of class ''.$Linq101Select01 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.bsl index 511e9ef2a8..a87b2b30b8 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101SetOperators01.il.bsl @@ -45,13 +45,13 @@ // Offset: 0x00000390 Length: 0x0000011E } .module Linq101SetOperators01.exe -// MVID: {611B0EC5-4EE5-349F-A745-0383C50E1B61} +// MVID: {611C4D82-4EE5-349F-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07120000 +// Image base: 0x06410000 // =============== CLASS MEMBERS DECLARATION =================== @@ -189,7 +189,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -208,6 +208,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -271,17 +272,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 13,13 : 9,33 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #1 input at line 12@13'::Close .method public strict virtual instance bool @@ -529,7 +533,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -548,6 +552,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -611,17 +616,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 23,23 : 9,26 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #2 input at line 21@23'::Close .method public strict virtual instance bool @@ -871,7 +879,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -890,6 +898,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -953,17 +962,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 33,33 : 9,33 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method productFirstChars@33::Close .method public strict virtual instance bool @@ -1213,7 +1225,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -1232,6 +1244,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -1295,17 +1308,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 39,39 : 9,33 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method customerFirstChars@39::Close .method public strict virtual instance bool diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Where01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Where01.il.bsl index cb31189e31..3f92cd859e 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Where01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/QueryExpressionStepping/Linq101Where01.il.bsl @@ -45,13 +45,13 @@ // Offset: 0x000003D0 Length: 0x0000012E } .module Linq101Where01.exe -// MVID: {611B0EC5-FF23-CD21-A745-0383C50E1B61} +// MVID: {611C4D82-FF23-CD21-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06790000 +// Image base: 0x06A30000 // =============== CLASS MEMBERS DECLARATION =================== @@ -363,34 +363,36 @@ .method public strict virtual instance bool Invoke(class [Utils]Utils/Product p) cil managed { - // Code size 37 (0x25) + // Code size 38 (0x26) .maxstack 10 + .line 33,33 : 16,57 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.1 - IL_0001: callvirt instance int32 [Utils]Utils/Product::get_UnitsInStock() - IL_0006: ldc.i4.0 - IL_0007: ble.s IL_0023 + IL_0001: ldarg.1 + IL_0002: callvirt instance int32 [Utils]Utils/Product::get_UnitsInStock() + IL_0007: ldc.i4.0 + IL_0008: ble.s IL_0024 .line 100001,100001 : 0,0 '' - IL_0009: ldarg.1 - IL_000a: callvirt instance valuetype [mscorlib]System.Decimal [Utils]Utils/Product::get_UnitPrice() - IL_000f: ldc.i4 0x12c - IL_0014: ldc.i4.0 + IL_000a: ldarg.1 + IL_000b: callvirt instance valuetype [mscorlib]System.Decimal [Utils]Utils/Product::get_UnitPrice() + IL_0010: ldc.i4 0x12c IL_0015: ldc.i4.0 IL_0016: ldc.i4.0 - IL_0017: ldc.i4.2 - IL_0018: newobj instance void [netstandard]System.Decimal::.ctor(int32, + IL_0017: ldc.i4.0 + IL_0018: ldc.i4.2 + IL_0019: newobj instance void [netstandard]System.Decimal::.ctor(int32, int32, int32, bool, uint8) - IL_001d: call bool [netstandard]System.Decimal::op_GreaterThan(valuetype [netstandard]System.Decimal, + IL_001e: call bool [netstandard]System.Decimal::op_GreaterThan(valuetype [netstandard]System.Decimal, valuetype [netstandard]System.Decimal) - IL_0022: ret + IL_0023: ret .line 100001,100001 : 0,0 '' - IL_0023: ldc.i4.0 - IL_0024: ret + IL_0024: ldc.i4.0 + IL_0025: ret } // end of method 'expensiveInStockProducts@33-1'::Invoke .method private specialname rtspecialname static @@ -736,7 +738,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 127 (0x7f) + // Code size 128 (0x80) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -755,6 +757,7 @@ .line 100001,100001 : 0,0 '' IL_0016: nop + .line 100001,100001 : 0,0 '' .try { IL_0017: ldarg.0 @@ -818,17 +821,20 @@ IL_0070: nop IL_0071: br IL_0000 - IL_0076: ldloc.0 - IL_0077: ldnull - IL_0078: cgt.un - IL_007a: brfalse.s IL_007e + .line 52,52 : 9,17 '' + IL_0076: nop + .line 100001,100001 : 0,0 '' + IL_0077: ldloc.0 + IL_0078: ldnull + IL_0079: cgt.un + IL_007b: brfalse.s IL_007f .line 100001,100001 : 0,0 '' - IL_007c: ldloc.0 - IL_007d: throw + IL_007d: ldloc.0 + IL_007e: throw .line 100001,100001 : 0,0 '' - IL_007e: ret + IL_007f: ret } // end of method 'Pipe #3 input at line 50@52'::Close .method public strict virtual instance bool @@ -924,22 +930,24 @@ Invoke(int32 i, string d) cil managed { - // Code size 18 (0x12) + // Code size 19 (0x13) .maxstack 8 .line 54,54 : 29,49 '' - IL_0000: ldarg.2 - IL_0001: callvirt instance int32 [mscorlib]System.String::get_Length() - IL_0006: ldarg.1 - IL_0007: bge.s IL_0010 + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.2 + IL_0002: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_0007: ldarg.1 + IL_0008: bge.s IL_0011 .line 54,54 : 50,57 '' - IL_0009: ldarg.2 - IL_000a: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::Some(!0) - IL_000f: ret + IL_000a: ldarg.2 + IL_000b: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::Some(!0) + IL_0010: ret .line 54,54 : 63,67 '' - IL_0010: ldnull - IL_0011: ret + IL_0011: ldnull + IL_0012: ret } // end of method 'Pipe #3 stage #1 at line 54@54'::Invoke .method private specialname rtspecialname static diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest5.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest5.il.bsl index da3369027f..665db6c83a 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest5.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest5.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000268 Length: 0x000000AD } .module SeqExpressionSteppingTest5.exe -// MVID: {611B0EC5-2432-9401-A745-0383C50E1B61} +// MVID: {611C4D82-2432-9401-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06560000 +// Image base: 0x04AD0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -212,7 +212,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 156 (0x9c) + // Code size 157 (0x9d) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -231,6 +231,7 @@ .line 100001,100001 : 0,0 '' IL_0019: nop + .line 100001,100001 : 0,0 '' .try { IL_001a: ldarg.0 @@ -309,17 +310,20 @@ IL_008d: nop IL_008e: br IL_0000 - IL_0093: ldloc.0 - IL_0094: ldnull - IL_0095: cgt.un - IL_0097: brfalse.s IL_009b + .line 5,5 : 19,20 '' + IL_0093: nop + .line 100001,100001 : 0,0 '' + IL_0094: ldloc.0 + IL_0095: ldnull + IL_0096: cgt.un + IL_0098: brfalse.s IL_009c .line 100001,100001 : 0,0 '' - IL_0099: ldloc.0 - IL_009a: throw + IL_009a: ldloc.0 + IL_009b: throw .line 100001,100001 : 0,0 '' - IL_009b: ret + IL_009c: ret } // end of method f4@5::Close .method public strict virtual instance bool diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest6.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest6.il.bsl index 24b89a08ba..c50b09633d 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest6.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest6.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000002A0 Length: 0x000000BA } .module SeqExpressionSteppingTest6.exe -// MVID: {611B0EC5-2432-94A2-A745-0383C50E1B61} +// MVID: {611C4D82-2432-94A2-A745-0383824D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07170000 +// Image base: 0x07260000 // =============== CLASS MEMBERS DECLARATION =================== @@ -254,7 +254,7 @@ .method public strict virtual instance void Close() cil managed { - // Code size 167 (0xa7) + // Code size 168 (0xa8) .maxstack 6 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception e) @@ -273,6 +273,7 @@ .line 100001,100001 : 0,0 '' IL_0019: nop + .line 100001,100001 : 0,0 '' .try { IL_001a: ldarg.0 @@ -359,17 +360,20 @@ IL_0098: nop IL_0099: br IL_0000 - IL_009e: ldloc.0 - IL_009f: ldnull - IL_00a0: cgt.un - IL_00a2: brfalse.s IL_00a6 + .line 6,8 : 15,25 '' + IL_009e: nop + .line 100001,100001 : 0,0 '' + IL_009f: ldloc.0 + IL_00a0: ldnull + IL_00a1: cgt.un + IL_00a3: brfalse.s IL_00a7 .line 100001,100001 : 0,0 '' - IL_00a4: ldloc.0 - IL_00a5: throw + IL_00a5: ldloc.0 + IL_00a6: throw .line 100001,100001 : 0,0 '' - IL_00a6: ret + IL_00a7: ret } // end of method f7@6::Close .method public strict virtual instance bool diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest7.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest7.il.bsl index 4427341eb3..7965bb568e 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest7.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SeqExpressionStepping/SeqExpressionSteppingTest7.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000270 Length: 0x00000098 } .module SeqExpressionSteppingTest7.exe -// MVID: {60BCC37C-2432-93C3-A745-03837CC3BC60} +// MVID: {611C5DB0-2432-93C3-A745-0383B05D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05980000 +// Image base: 0x06AC0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -63,48 +63,52 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 f() cil managed { - // Code size 59 (0x3b) + // Code size 61 (0x3d) .maxstack 5 .locals init ([0] valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1 V_0, [1] string V_1) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 5,5 : 18,24 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SeqExpressionStepping\\SeqExpressionSteppingTest7.fs' - IL_0000: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest7::get_r() - IL_0005: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) - IL_000a: nop + .line 5,5 : 12,57 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SeqExpressionStepping\\SeqExpressionSteppingTest7.fs' + IL_0000: nop + .line 5,5 : 14,36 '' + IL_0001: nop + .line 5,5 : 18,24 '' + IL_0002: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 SeqExpressionSteppingTest7::get_r() + IL_0007: call void [FSharp.Core]Microsoft.FSharp.Core.Operators::Increment(class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1) + IL_000c: nop .line 5,5 : 26,30 '' - IL_000b: ldc.i4.1 - IL_000c: brfalse.s IL_0031 + IL_000d: ldc.i4.1 + IL_000e: brfalse.s IL_0033 .line 5,5 : 44,55 '' - IL_000e: ldstr "" - IL_0013: stloc.1 - IL_0014: ldloca.s V_0 - IL_0016: ldc.i4.0 - IL_0017: brfalse.s IL_0021 - - IL_0019: ldnull - IL_001a: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 - IL_001f: br.s IL_0028 - - IL_0021: ldloc.1 - IL_0022: call class [mscorlib]System.Exception [FSharp.Core]Microsoft.FSharp.Core.Operators::Failure(string) - IL_0027: throw - - IL_0028: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::AddMany(class [mscorlib]System.Collections.Generic.IEnumerable`1) - IL_002d: nop + IL_0010: ldstr "" + IL_0015: stloc.1 + IL_0016: ldloca.s V_0 + IL_0018: ldc.i4.0 + IL_0019: brfalse.s IL_0023 + + IL_001b: ldnull + IL_001c: unbox.any class [mscorlib]System.Collections.Generic.IEnumerable`1 + IL_0021: br.s IL_002a + + IL_0023: ldloc.1 + IL_0024: call class [mscorlib]System.Exception [FSharp.Core]Microsoft.FSharp.Core.Operators::Failure(string) + IL_0029: throw + + IL_002a: call instance void valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::AddMany(class [mscorlib]System.Collections.Generic.IEnumerable`1) + IL_002f: nop .line 100001,100001 : 0,0 '' - IL_002e: nop - IL_002f: br.s IL_0033 + IL_0030: nop + IL_0031: br.s IL_0035 .line 5,5 : 14,36 '' - IL_0031: nop + IL_0033: nop .line 100001,100001 : 0,0 '' - IL_0032: nop + IL_0034: nop .line 5,5 : 12,57 '' - IL_0033: ldloca.s V_0 - IL_0035: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() - IL_003a: ret + IL_0035: ldloca.s V_0 + IL_0037: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 valuetype [FSharp.Core]Microsoft.FSharp.Core.CompilerServices.ListCollector`1::Close() + IL_003c: ret } // end of method SeqExpressionSteppingTest7::f .property class [FSharp.Core]Microsoft.FSharp.Core.FSharpRef`1 @@ -162,6 +166,7 @@ IL_002b: ldloc.3 IL_002c: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::FailurePattern(class [mscorlib]System.Exception) IL_0031: stloc.s V_4 + .line 100001,100001 : 0,0 '' IL_0033: ldloc.s V_4 IL_0035: brfalse.s IL_004e diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModule.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModule.il.bsl index e4ab112f17..0ddb079f90 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModule.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelModule.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00001148 Length: 0x000003FD } .module TopLevelModule.dll -// MVID: {60D4892F-37F5-C118-A745-03832F89D460} +// MVID: {611C4D86-37F5-C118-A745-0383864D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06F60000 +// Image base: 0x067D0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -151,7 +151,7 @@ instance int32 CompareTo(class ABC/Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 64 (0x40) + // Code size 65 (0x41) .maxstack 4 .locals init ([0] class ABC/Expr V_0, [1] class ABC/Expr V_1, @@ -159,65 +159,68 @@ [3] int32 V_3, [4] int32 V_4) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SerializableAttribute\\ToplevelModule.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0036 + .line 6,6 : 14,18 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SerializableAttribute\\ToplevelModule.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0037 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0034 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0035 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 100001,100001 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.2 + IL_0019: ldloc.0 + IL_001a: ldfld int32 ABC/Expr::item + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 ABC/Expr::item + IL_0026: stloc.s V_4 .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.2 - IL_0018: ldloc.0 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: stloc.3 - IL_001f: ldloc.1 - IL_0020: ldfld int32 ABC/Expr::item - IL_0025: stloc.s V_4 - IL_0027: ldloc.3 - IL_0028: ldloc.s V_4 - IL_002a: bge.s IL_002e + IL_0028: ldloc.3 + IL_0029: ldloc.s V_4 + IL_002b: bge.s IL_002f .line 100001,100001 : 0,0 '' - IL_002c: ldc.i4.m1 - IL_002d: ret + IL_002d: ldc.i4.m1 + IL_002e: ret .line 100001,100001 : 0,0 '' - IL_002e: ldloc.3 - IL_002f: ldloc.s V_4 - IL_0031: cgt - IL_0033: ret + IL_002f: ldloc.3 + IL_0030: ldloc.s V_4 + IL_0032: cgt + IL_0034: ret .line 100001,100001 : 0,0 '' - IL_0034: ldc.i4.1 - IL_0035: ret + IL_0035: ldc.i4.1 + IL_0036: ret .line 100001,100001 : 0,0 '' - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: brfalse.s IL_003e + IL_0037: ldarg.1 + IL_0038: ldnull + IL_0039: cgt.un + IL_003b: brfalse.s IL_003f .line 100001,100001 : 0,0 '' - IL_003c: ldc.i4.m1 - IL_003d: ret + IL_003d: ldc.i4.m1 + IL_003e: ret .line 100001,100001 : 0,0 '' - IL_003e: ldc.i4.0 - IL_003f: ret + IL_003f: ldc.i4.0 + IL_0040: ret } // end of method Expr::CompareTo .method public hidebysig virtual final @@ -251,6 +254,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any ABC/Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -279,6 +283,7 @@ IL_0028: ldloc.2 IL_0029: ldfld int32 ABC/Expr::item IL_002e: stloc.s V_5 + .line 100001,100001 : 0,0 '' IL_0030: ldloc.s V_4 IL_0032: ldloc.s V_5 IL_0034: bge.s IL_0038 @@ -317,48 +322,51 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 41 (0x29) + // Code size 42 (0x2a) .maxstack 7 .locals init ([0] int32 V_0, [1] class ABC/Expr V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 6,6 : 14,18 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0027 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0028 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop + IL_0007: ldc.i4.0 + IL_0008: stloc.0 .line 100001,100001 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldarg.1 - IL_0014: stloc.2 - IL_0015: ldloc.1 - IL_0016: ldfld int32 ABC/Expr::item - IL_001b: ldloc.0 - IL_001c: ldc.i4.6 - IL_001d: shl - IL_001e: ldloc.0 - IL_001f: ldc.i4.2 - IL_0020: shr - IL_0021: add + IL_0009: ldarg.0 + IL_000a: pop + .line 100001,100001 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldarg.1 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldfld int32 ABC/Expr::item + IL_001c: ldloc.0 + IL_001d: ldc.i4.6 + IL_001e: shl + IL_001f: ldloc.0 + IL_0020: ldc.i4.2 + IL_0021: shr IL_0022: add IL_0023: add - IL_0024: stloc.0 - IL_0025: ldloc.0 - IL_0026: ret + IL_0024: add + IL_0025: stloc.0 + IL_0026: ldloc.0 + IL_0027: ret .line 100001,100001 : 0,0 '' - IL_0027: ldc.i4.0 - IL_0028: ret + IL_0028: ldc.i4.0 + IL_0029: ret } // end of method Expr::GetHashCode .method public hidebysig virtual final @@ -379,104 +387,110 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) + // Code size 53 (0x35) .maxstack 4 .locals init ([0] class ABC/Expr V_0, [1] class ABC/Expr V_1, [2] class ABC/Expr V_2, [3] class ABC/Expr V_3, [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 6,6 : 14,18 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002c + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002d .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst ABC/Expr - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_002a + IL_0007: ldarg.1 + IL_0008: isinst ABC/Expr + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_002b .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: pop + IL_0011: ldloc.0 + IL_0012: stloc.1 .line 100001,100001 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: stloc.3 - IL_0018: ldarg.2 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldfld int32 ABC/Expr::item - IL_0021: ldloc.3 - IL_0022: ldfld int32 ABC/Expr::item - IL_0027: ceq - IL_0029: ret + IL_0013: ldarg.0 + IL_0014: pop + .line 100001,100001 : 0,0 '' + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: stloc.3 + IL_0019: ldarg.2 + IL_001a: stloc.s V_4 + IL_001c: ldloc.2 + IL_001d: ldfld int32 ABC/Expr::item + IL_0022: ldloc.3 + IL_0023: ldfld int32 ABC/Expr::item + IL_0028: ceq + IL_002a: ret .line 100001,100001 : 0,0 '' - IL_002a: ldc.i4.0 - IL_002b: ret + IL_002b: ldc.i4.0 + IL_002c: ret .line 100001,100001 : 0,0 '' - IL_002c: ldarg.1 - IL_002d: ldnull - IL_002e: cgt.un - IL_0030: ldc.i4.0 - IL_0031: ceq - IL_0033: ret + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } // end of method Expr::Equals .method public hidebysig virtual final instance bool Equals(class ABC/Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 43 (0x2b) + // Code size 44 (0x2c) .maxstack 4 .locals init ([0] class ABC/Expr V_0, [1] class ABC/Expr V_1) + .line 6,6 : 14,18 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0023 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0024 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0021 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0022 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 ABC/Expr::item - IL_0018: ldloc.1 - IL_0019: ldfld int32 ABC/Expr::item - IL_001e: ceq - IL_0020: ret + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: ldloc.0 + IL_0014: ldfld int32 ABC/Expr::item + IL_0019: ldloc.1 + IL_001a: ldfld int32 ABC/Expr::item + IL_001f: ceq + IL_0021: ret .line 100001,100001 : 0,0 '' - IL_0021: ldc.i4.0 - IL_0022: ret + IL_0022: ldc.i4.0 + IL_0023: ret .line 100001,100001 : 0,0 '' - IL_0023: ldarg.1 - IL_0024: ldnull - IL_0025: cgt.un - IL_0027: ldc.i4.0 - IL_0028: ceq - IL_002a: ret + IL_0024: ldarg.1 + IL_0025: ldnull + IL_0026: cgt.un + IL_0028: ldc.i4.0 + IL_0029: ceq + IL_002b: ret } // end of method Expr::Equals .method public hidebysig virtual final @@ -490,6 +504,7 @@ IL_0000: ldarg.1 IL_0001: isinst ABC/Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -579,41 +594,43 @@ GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 40 (0x28) + // Code size 41 (0x29) .maxstack 7 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 7,7 : 19,24 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0026 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0027 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: castclass ABC/MyExn - IL_0015: call instance int32 ABC/MyExn::get_Data0() - IL_001a: ldloc.0 - IL_001b: ldc.i4.6 - IL_001c: shl - IL_001d: ldloc.0 - IL_001e: ldc.i4.2 - IL_001f: shr - IL_0020: add + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.1 + IL_000f: stloc.1 + IL_0010: ldarg.0 + IL_0011: castclass ABC/MyExn + IL_0016: call instance int32 ABC/MyExn::get_Data0() + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr IL_0021: add IL_0022: add - IL_0023: stloc.0 - IL_0024: ldloc.0 - IL_0025: ret + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret .line 100001,100001 : 0,0 '' - IL_0026: ldc.i4.0 - IL_0027: ret + IL_0027: ldc.i4.0 + IL_0028: ret } // end of method MyExn::GetHashCode .method public hidebysig virtual instance int32 @@ -634,112 +651,118 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 67 (0x43) + // Code size 68 (0x44) .maxstack 4 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 7,7 : 19,24 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003b + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003c .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst [mscorlib]System.Exception - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0039 + IL_0007: ldarg.1 + IL_0008: isinst [mscorlib]System.Exception + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_003a .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0018: brtrue.s IL_001c + IL_0011: ldloc.0 + IL_0012: stloc.1 + .line 100001,100001 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0019: brtrue.s IL_001d - IL_001a: br.s IL_0037 + IL_001b: br.s IL_0038 .line 100001,100001 : 0,0 '' - IL_001c: ldarg.2 - IL_001d: stloc.2 - IL_001e: ldarg.0 - IL_001f: castclass ABC/MyExn - IL_0024: call instance int32 ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/MyExn - IL_002f: call instance int32 ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret + IL_001d: ldarg.2 + IL_001e: stloc.2 + IL_001f: ldarg.0 + IL_0020: castclass ABC/MyExn + IL_0025: call instance int32 ABC/MyExn::get_Data0() + IL_002a: ldloc.1 + IL_002b: castclass ABC/MyExn + IL_0030: call instance int32 ABC/MyExn::get_Data0() + IL_0035: ceq + IL_0037: ret .line 100001,100001 : 0,0 '' - IL_0037: ldc.i4.0 - IL_0038: ret + IL_0038: ldc.i4.0 + IL_0039: ret .line 100001,100001 : 0,0 '' - IL_0039: ldc.i4.0 - IL_003a: ret + IL_003a: ldc.i4.0 + IL_003b: ret .line 100001,100001 : 0,0 '' - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_003c: ldarg.1 + IL_003d: ldnull + IL_003e: cgt.un + IL_0040: ldc.i4.0 + IL_0041: ceq + IL_0043: ret } // end of method MyExn::Equals .method public hidebysig instance bool Equals(class [mscorlib]System.Exception obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 8 + .line 7,7 : 19,24 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.1 - IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0012: brtrue.s IL_0016 + IL_000d: ldarg.1 + IL_000e: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0013: brtrue.s IL_0017 - IL_0014: br.s IL_002f + IL_0015: br.s IL_0030 .line 100001,100001 : 0,0 '' - IL_0016: ldarg.0 - IL_0017: castclass ABC/MyExn - IL_001c: call instance int32 ABC/MyExn::get_Data0() - IL_0021: ldarg.1 - IL_0022: castclass ABC/MyExn - IL_0027: call instance int32 ABC/MyExn::get_Data0() - IL_002c: ceq - IL_002e: ret + IL_0017: ldarg.0 + IL_0018: castclass ABC/MyExn + IL_001d: call instance int32 ABC/MyExn::get_Data0() + IL_0022: ldarg.1 + IL_0023: castclass ABC/MyExn + IL_0028: call instance int32 ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret .line 100001,100001 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 100001,100001 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 100001,100001 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method MyExn::Equals .method public hidebysig virtual instance bool @@ -753,6 +776,7 @@ IL_0000: ldarg.1 IL_0001: isinst [mscorlib]System.Exception IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -919,72 +943,75 @@ instance int32 CompareTo(class ABC/ABC/Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 64 (0x40) + // Code size 65 (0x41) .maxstack 4 .locals init ([0] class ABC/ABC/Expr V_0, [1] class ABC/ABC/Expr V_1, [2] class [mscorlib]System.Collections.IComparer V_2, [3] int32 V_3, [4] int32 V_4) + .line 16,16 : 18,22 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0036 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0037 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0034 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0035 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 100001,100001 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.2 + IL_0019: ldloc.0 + IL_001a: ldfld int32 ABC/ABC/Expr::item + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 ABC/ABC/Expr::item + IL_0026: stloc.s V_4 .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.2 - IL_0018: ldloc.0 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: stloc.3 - IL_001f: ldloc.1 - IL_0020: ldfld int32 ABC/ABC/Expr::item - IL_0025: stloc.s V_4 - IL_0027: ldloc.3 - IL_0028: ldloc.s V_4 - IL_002a: bge.s IL_002e + IL_0028: ldloc.3 + IL_0029: ldloc.s V_4 + IL_002b: bge.s IL_002f .line 100001,100001 : 0,0 '' - IL_002c: ldc.i4.m1 - IL_002d: ret + IL_002d: ldc.i4.m1 + IL_002e: ret .line 100001,100001 : 0,0 '' - IL_002e: ldloc.3 - IL_002f: ldloc.s V_4 - IL_0031: cgt - IL_0033: ret + IL_002f: ldloc.3 + IL_0030: ldloc.s V_4 + IL_0032: cgt + IL_0034: ret .line 100001,100001 : 0,0 '' - IL_0034: ldc.i4.1 - IL_0035: ret + IL_0035: ldc.i4.1 + IL_0036: ret .line 100001,100001 : 0,0 '' - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: brfalse.s IL_003e + IL_0037: ldarg.1 + IL_0038: ldnull + IL_0039: cgt.un + IL_003b: brfalse.s IL_003f .line 100001,100001 : 0,0 '' - IL_003c: ldc.i4.m1 - IL_003d: ret + IL_003d: ldc.i4.m1 + IL_003e: ret .line 100001,100001 : 0,0 '' - IL_003e: ldc.i4.0 - IL_003f: ret + IL_003f: ldc.i4.0 + IL_0040: ret } // end of method Expr::CompareTo .method public hidebysig virtual final @@ -1018,6 +1045,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any ABC/ABC/Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -1046,6 +1074,7 @@ IL_0028: ldloc.2 IL_0029: ldfld int32 ABC/ABC/Expr::item IL_002e: stloc.s V_5 + .line 100001,100001 : 0,0 '' IL_0030: ldloc.s V_4 IL_0032: ldloc.s V_5 IL_0034: bge.s IL_0038 @@ -1084,48 +1113,51 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 41 (0x29) + // Code size 42 (0x2a) .maxstack 7 .locals init ([0] int32 V_0, [1] class ABC/ABC/Expr V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 16,16 : 18,22 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0027 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0028 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop + IL_0007: ldc.i4.0 + IL_0008: stloc.0 .line 100001,100001 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldarg.1 - IL_0014: stloc.2 - IL_0015: ldloc.1 - IL_0016: ldfld int32 ABC/ABC/Expr::item - IL_001b: ldloc.0 - IL_001c: ldc.i4.6 - IL_001d: shl - IL_001e: ldloc.0 - IL_001f: ldc.i4.2 - IL_0020: shr - IL_0021: add + IL_0009: ldarg.0 + IL_000a: pop + .line 100001,100001 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldarg.1 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldfld int32 ABC/ABC/Expr::item + IL_001c: ldloc.0 + IL_001d: ldc.i4.6 + IL_001e: shl + IL_001f: ldloc.0 + IL_0020: ldc.i4.2 + IL_0021: shr IL_0022: add IL_0023: add - IL_0024: stloc.0 - IL_0025: ldloc.0 - IL_0026: ret + IL_0024: add + IL_0025: stloc.0 + IL_0026: ldloc.0 + IL_0027: ret .line 100001,100001 : 0,0 '' - IL_0027: ldc.i4.0 - IL_0028: ret + IL_0028: ldc.i4.0 + IL_0029: ret } // end of method Expr::GetHashCode .method public hidebysig virtual final @@ -1146,104 +1178,110 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) + // Code size 53 (0x35) .maxstack 4 .locals init ([0] class ABC/ABC/Expr V_0, [1] class ABC/ABC/Expr V_1, [2] class ABC/ABC/Expr V_2, [3] class ABC/ABC/Expr V_3, [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 16,16 : 18,22 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002c + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002d .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst ABC/ABC/Expr - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_002a + IL_0007: ldarg.1 + IL_0008: isinst ABC/ABC/Expr + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_002b .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: pop + IL_0011: ldloc.0 + IL_0012: stloc.1 .line 100001,100001 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: stloc.3 - IL_0018: ldarg.2 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldfld int32 ABC/ABC/Expr::item - IL_0021: ldloc.3 - IL_0022: ldfld int32 ABC/ABC/Expr::item - IL_0027: ceq - IL_0029: ret + IL_0013: ldarg.0 + IL_0014: pop + .line 100001,100001 : 0,0 '' + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: stloc.3 + IL_0019: ldarg.2 + IL_001a: stloc.s V_4 + IL_001c: ldloc.2 + IL_001d: ldfld int32 ABC/ABC/Expr::item + IL_0022: ldloc.3 + IL_0023: ldfld int32 ABC/ABC/Expr::item + IL_0028: ceq + IL_002a: ret .line 100001,100001 : 0,0 '' - IL_002a: ldc.i4.0 - IL_002b: ret + IL_002b: ldc.i4.0 + IL_002c: ret .line 100001,100001 : 0,0 '' - IL_002c: ldarg.1 - IL_002d: ldnull - IL_002e: cgt.un - IL_0030: ldc.i4.0 - IL_0031: ceq - IL_0033: ret + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } // end of method Expr::Equals .method public hidebysig virtual final instance bool Equals(class ABC/ABC/Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 43 (0x2b) + // Code size 44 (0x2c) .maxstack 4 .locals init ([0] class ABC/ABC/Expr V_0, [1] class ABC/ABC/Expr V_1) + .line 16,16 : 18,22 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0023 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0024 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0021 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0022 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 ABC/ABC/Expr::item - IL_0018: ldloc.1 - IL_0019: ldfld int32 ABC/ABC/Expr::item - IL_001e: ceq - IL_0020: ret + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: ldloc.0 + IL_0014: ldfld int32 ABC/ABC/Expr::item + IL_0019: ldloc.1 + IL_001a: ldfld int32 ABC/ABC/Expr::item + IL_001f: ceq + IL_0021: ret .line 100001,100001 : 0,0 '' - IL_0021: ldc.i4.0 - IL_0022: ret + IL_0022: ldc.i4.0 + IL_0023: ret .line 100001,100001 : 0,0 '' - IL_0023: ldarg.1 - IL_0024: ldnull - IL_0025: cgt.un - IL_0027: ldc.i4.0 - IL_0028: ceq - IL_002a: ret + IL_0024: ldarg.1 + IL_0025: ldnull + IL_0026: cgt.un + IL_0028: ldc.i4.0 + IL_0029: ceq + IL_002b: ret } // end of method Expr::Equals .method public hidebysig virtual final @@ -1257,6 +1295,7 @@ IL_0000: ldarg.1 IL_0001: isinst ABC/ABC/Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -1346,41 +1385,43 @@ GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 40 (0x28) + // Code size 41 (0x29) .maxstack 7 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 17,17 : 23,28 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0026 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0027 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: castclass ABC/ABC/MyExn - IL_0015: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_001a: ldloc.0 - IL_001b: ldc.i4.6 - IL_001c: shl - IL_001d: ldloc.0 - IL_001e: ldc.i4.2 - IL_001f: shr - IL_0020: add + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.1 + IL_000f: stloc.1 + IL_0010: ldarg.0 + IL_0011: castclass ABC/ABC/MyExn + IL_0016: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr IL_0021: add IL_0022: add - IL_0023: stloc.0 - IL_0024: ldloc.0 - IL_0025: ret + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret .line 100001,100001 : 0,0 '' - IL_0026: ldc.i4.0 - IL_0027: ret + IL_0027: ldc.i4.0 + IL_0028: ret } // end of method MyExn::GetHashCode .method public hidebysig virtual instance int32 @@ -1401,112 +1442,118 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 67 (0x43) + // Code size 68 (0x44) .maxstack 4 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 17,17 : 23,28 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003b + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003c .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst [mscorlib]System.Exception - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0039 + IL_0007: ldarg.1 + IL_0008: isinst [mscorlib]System.Exception + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_003a .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0018: brtrue.s IL_001c + IL_0011: ldloc.0 + IL_0012: stloc.1 + .line 100001,100001 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0019: brtrue.s IL_001d - IL_001a: br.s IL_0037 + IL_001b: br.s IL_0038 .line 100001,100001 : 0,0 '' - IL_001c: ldarg.2 - IL_001d: stloc.2 - IL_001e: ldarg.0 - IL_001f: castclass ABC/ABC/MyExn - IL_0024: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass ABC/ABC/MyExn - IL_002f: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret + IL_001d: ldarg.2 + IL_001e: stloc.2 + IL_001f: ldarg.0 + IL_0020: castclass ABC/ABC/MyExn + IL_0025: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002a: ldloc.1 + IL_002b: castclass ABC/ABC/MyExn + IL_0030: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0035: ceq + IL_0037: ret .line 100001,100001 : 0,0 '' - IL_0037: ldc.i4.0 - IL_0038: ret + IL_0038: ldc.i4.0 + IL_0039: ret .line 100001,100001 : 0,0 '' - IL_0039: ldc.i4.0 - IL_003a: ret + IL_003a: ldc.i4.0 + IL_003b: ret .line 100001,100001 : 0,0 '' - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_003c: ldarg.1 + IL_003d: ldnull + IL_003e: cgt.un + IL_0040: ldc.i4.0 + IL_0041: ceq + IL_0043: ret } // end of method MyExn::Equals .method public hidebysig instance bool Equals(class [mscorlib]System.Exception obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 8 + .line 17,17 : 23,28 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.1 - IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0012: brtrue.s IL_0016 + IL_000d: ldarg.1 + IL_000e: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0013: brtrue.s IL_0017 - IL_0014: br.s IL_002f + IL_0015: br.s IL_0030 .line 100001,100001 : 0,0 '' - IL_0016: ldarg.0 - IL_0017: castclass ABC/ABC/MyExn - IL_001c: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_0021: ldarg.1 - IL_0022: castclass ABC/ABC/MyExn - IL_0027: call instance int32 ABC/ABC/MyExn::get_Data0() - IL_002c: ceq - IL_002e: ret + IL_0017: ldarg.0 + IL_0018: castclass ABC/ABC/MyExn + IL_001d: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_0022: ldarg.1 + IL_0023: castclass ABC/ABC/MyExn + IL_0028: call instance int32 ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret .line 100001,100001 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 100001,100001 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 100001,100001 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method MyExn::Equals .method public hidebysig virtual instance bool @@ -1520,6 +1567,7 @@ IL_0000: ldarg.1 IL_0001: isinst [mscorlib]System.Exception IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespace.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespace.il.bsl index 32f8ac85d8..f96e7946db 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespace.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SerializableAttribute/ToplevelNamespace.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00001850 Length: 0x0000055C } .module ToplevelNamespace.dll -// MVID: {60D48932-218B-729A-A745-03833289D460} +// MVID: {611C4D8C-218B-729A-A745-03838C4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x04F20000 +// Image base: 0x072C0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -146,7 +146,7 @@ instance int32 CompareTo(class XYZ.Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 64 (0x40) + // Code size 65 (0x41) .maxstack 4 .locals init ([0] class XYZ.Expr V_0, [1] class XYZ.Expr V_1, @@ -154,65 +154,68 @@ [3] int32 V_3, [4] int32 V_4) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SerializableAttribute\\ToplevelNamespace.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0036 + .line 7,7 : 10,14 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SerializableAttribute\\ToplevelNamespace.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0037 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0034 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0035 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 100001,100001 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.2 + IL_0019: ldloc.0 + IL_001a: ldfld int32 XYZ.Expr::item + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 XYZ.Expr::item + IL_0026: stloc.s V_4 .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.2 - IL_0018: ldloc.0 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: stloc.3 - IL_001f: ldloc.1 - IL_0020: ldfld int32 XYZ.Expr::item - IL_0025: stloc.s V_4 - IL_0027: ldloc.3 - IL_0028: ldloc.s V_4 - IL_002a: bge.s IL_002e + IL_0028: ldloc.3 + IL_0029: ldloc.s V_4 + IL_002b: bge.s IL_002f .line 100001,100001 : 0,0 '' - IL_002c: ldc.i4.m1 - IL_002d: ret + IL_002d: ldc.i4.m1 + IL_002e: ret .line 100001,100001 : 0,0 '' - IL_002e: ldloc.3 - IL_002f: ldloc.s V_4 - IL_0031: cgt - IL_0033: ret + IL_002f: ldloc.3 + IL_0030: ldloc.s V_4 + IL_0032: cgt + IL_0034: ret .line 100001,100001 : 0,0 '' - IL_0034: ldc.i4.1 - IL_0035: ret + IL_0035: ldc.i4.1 + IL_0036: ret .line 100001,100001 : 0,0 '' - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: brfalse.s IL_003e + IL_0037: ldarg.1 + IL_0038: ldnull + IL_0039: cgt.un + IL_003b: brfalse.s IL_003f .line 100001,100001 : 0,0 '' - IL_003c: ldc.i4.m1 - IL_003d: ret + IL_003d: ldc.i4.m1 + IL_003e: ret .line 100001,100001 : 0,0 '' - IL_003e: ldc.i4.0 - IL_003f: ret + IL_003f: ldc.i4.0 + IL_0040: ret } // end of method Expr::CompareTo .method public hidebysig virtual final @@ -246,6 +249,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any XYZ.Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -274,6 +278,7 @@ IL_0028: ldloc.2 IL_0029: ldfld int32 XYZ.Expr::item IL_002e: stloc.s V_5 + .line 100001,100001 : 0,0 '' IL_0030: ldloc.s V_4 IL_0032: ldloc.s V_5 IL_0034: bge.s IL_0038 @@ -312,48 +317,51 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 41 (0x29) + // Code size 42 (0x2a) .maxstack 7 .locals init ([0] int32 V_0, [1] class XYZ.Expr V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 7,7 : 10,14 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0027 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0028 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop + IL_0007: ldc.i4.0 + IL_0008: stloc.0 .line 100001,100001 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldarg.1 - IL_0014: stloc.2 - IL_0015: ldloc.1 - IL_0016: ldfld int32 XYZ.Expr::item - IL_001b: ldloc.0 - IL_001c: ldc.i4.6 - IL_001d: shl - IL_001e: ldloc.0 - IL_001f: ldc.i4.2 - IL_0020: shr - IL_0021: add + IL_0009: ldarg.0 + IL_000a: pop + .line 100001,100001 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldarg.1 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldfld int32 XYZ.Expr::item + IL_001c: ldloc.0 + IL_001d: ldc.i4.6 + IL_001e: shl + IL_001f: ldloc.0 + IL_0020: ldc.i4.2 + IL_0021: shr IL_0022: add IL_0023: add - IL_0024: stloc.0 - IL_0025: ldloc.0 - IL_0026: ret + IL_0024: add + IL_0025: stloc.0 + IL_0026: ldloc.0 + IL_0027: ret .line 100001,100001 : 0,0 '' - IL_0027: ldc.i4.0 - IL_0028: ret + IL_0028: ldc.i4.0 + IL_0029: ret } // end of method Expr::GetHashCode .method public hidebysig virtual final @@ -374,104 +382,110 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) + // Code size 53 (0x35) .maxstack 4 .locals init ([0] class XYZ.Expr V_0, [1] class XYZ.Expr V_1, [2] class XYZ.Expr V_2, [3] class XYZ.Expr V_3, [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 7,7 : 10,14 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002c + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002d .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst XYZ.Expr - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_002a + IL_0007: ldarg.1 + IL_0008: isinst XYZ.Expr + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_002b .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: pop + IL_0011: ldloc.0 + IL_0012: stloc.1 .line 100001,100001 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: stloc.3 - IL_0018: ldarg.2 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldfld int32 XYZ.Expr::item - IL_0021: ldloc.3 - IL_0022: ldfld int32 XYZ.Expr::item - IL_0027: ceq - IL_0029: ret + IL_0013: ldarg.0 + IL_0014: pop + .line 100001,100001 : 0,0 '' + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: stloc.3 + IL_0019: ldarg.2 + IL_001a: stloc.s V_4 + IL_001c: ldloc.2 + IL_001d: ldfld int32 XYZ.Expr::item + IL_0022: ldloc.3 + IL_0023: ldfld int32 XYZ.Expr::item + IL_0028: ceq + IL_002a: ret .line 100001,100001 : 0,0 '' - IL_002a: ldc.i4.0 - IL_002b: ret + IL_002b: ldc.i4.0 + IL_002c: ret .line 100001,100001 : 0,0 '' - IL_002c: ldarg.1 - IL_002d: ldnull - IL_002e: cgt.un - IL_0030: ldc.i4.0 - IL_0031: ceq - IL_0033: ret + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } // end of method Expr::Equals .method public hidebysig virtual final instance bool Equals(class XYZ.Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 43 (0x2b) + // Code size 44 (0x2c) .maxstack 4 .locals init ([0] class XYZ.Expr V_0, [1] class XYZ.Expr V_1) + .line 7,7 : 10,14 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0023 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0024 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0021 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0022 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 XYZ.Expr::item - IL_0018: ldloc.1 - IL_0019: ldfld int32 XYZ.Expr::item - IL_001e: ceq - IL_0020: ret + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: ldloc.0 + IL_0014: ldfld int32 XYZ.Expr::item + IL_0019: ldloc.1 + IL_001a: ldfld int32 XYZ.Expr::item + IL_001f: ceq + IL_0021: ret .line 100001,100001 : 0,0 '' - IL_0021: ldc.i4.0 - IL_0022: ret + IL_0022: ldc.i4.0 + IL_0023: ret .line 100001,100001 : 0,0 '' - IL_0023: ldarg.1 - IL_0024: ldnull - IL_0025: cgt.un - IL_0027: ldc.i4.0 - IL_0028: ceq - IL_002a: ret + IL_0024: ldarg.1 + IL_0025: ldnull + IL_0026: cgt.un + IL_0028: ldc.i4.0 + IL_0029: ceq + IL_002b: ret } // end of method Expr::Equals .method public hidebysig virtual final @@ -485,6 +499,7 @@ IL_0000: ldarg.1 IL_0001: isinst XYZ.Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -574,41 +589,43 @@ GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 40 (0x28) + // Code size 41 (0x29) .maxstack 7 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 8,8 : 15,20 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0026 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0027 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: castclass XYZ.MyExn - IL_0015: call instance int32 XYZ.MyExn::get_Data0() - IL_001a: ldloc.0 - IL_001b: ldc.i4.6 - IL_001c: shl - IL_001d: ldloc.0 - IL_001e: ldc.i4.2 - IL_001f: shr - IL_0020: add + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.1 + IL_000f: stloc.1 + IL_0010: ldarg.0 + IL_0011: castclass XYZ.MyExn + IL_0016: call instance int32 XYZ.MyExn::get_Data0() + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr IL_0021: add IL_0022: add - IL_0023: stloc.0 - IL_0024: ldloc.0 - IL_0025: ret + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret .line 100001,100001 : 0,0 '' - IL_0026: ldc.i4.0 - IL_0027: ret + IL_0027: ldc.i4.0 + IL_0028: ret } // end of method MyExn::GetHashCode .method public hidebysig virtual instance int32 @@ -629,112 +646,118 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 67 (0x43) + // Code size 68 (0x44) .maxstack 4 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 8,8 : 15,20 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003b + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003c .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst [mscorlib]System.Exception - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0039 + IL_0007: ldarg.1 + IL_0008: isinst [mscorlib]System.Exception + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_003a .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0018: brtrue.s IL_001c + IL_0011: ldloc.0 + IL_0012: stloc.1 + .line 100001,100001 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0019: brtrue.s IL_001d - IL_001a: br.s IL_0037 + IL_001b: br.s IL_0038 .line 100001,100001 : 0,0 '' - IL_001c: ldarg.2 - IL_001d: stloc.2 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.MyExn - IL_0024: call instance int32 XYZ.MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.MyExn - IL_002f: call instance int32 XYZ.MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret + IL_001d: ldarg.2 + IL_001e: stloc.2 + IL_001f: ldarg.0 + IL_0020: castclass XYZ.MyExn + IL_0025: call instance int32 XYZ.MyExn::get_Data0() + IL_002a: ldloc.1 + IL_002b: castclass XYZ.MyExn + IL_0030: call instance int32 XYZ.MyExn::get_Data0() + IL_0035: ceq + IL_0037: ret .line 100001,100001 : 0,0 '' - IL_0037: ldc.i4.0 - IL_0038: ret + IL_0038: ldc.i4.0 + IL_0039: ret .line 100001,100001 : 0,0 '' - IL_0039: ldc.i4.0 - IL_003a: ret + IL_003a: ldc.i4.0 + IL_003b: ret .line 100001,100001 : 0,0 '' - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_003c: ldarg.1 + IL_003d: ldnull + IL_003e: cgt.un + IL_0040: ldc.i4.0 + IL_0041: ceq + IL_0043: ret } // end of method MyExn::Equals .method public hidebysig instance bool Equals(class [mscorlib]System.Exception obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 8 + .line 8,8 : 15,20 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.1 - IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0012: brtrue.s IL_0016 + IL_000d: ldarg.1 + IL_000e: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0013: brtrue.s IL_0017 - IL_0014: br.s IL_002f + IL_0015: br.s IL_0030 .line 100001,100001 : 0,0 '' - IL_0016: ldarg.0 - IL_0017: castclass XYZ.MyExn - IL_001c: call instance int32 XYZ.MyExn::get_Data0() - IL_0021: ldarg.1 - IL_0022: castclass XYZ.MyExn - IL_0027: call instance int32 XYZ.MyExn::get_Data0() - IL_002c: ceq - IL_002e: ret + IL_0017: ldarg.0 + IL_0018: castclass XYZ.MyExn + IL_001d: call instance int32 XYZ.MyExn::get_Data0() + IL_0022: ldarg.1 + IL_0023: castclass XYZ.MyExn + IL_0028: call instance int32 XYZ.MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret .line 100001,100001 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 100001,100001 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 100001,100001 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method MyExn::Equals .method public hidebysig virtual instance bool @@ -748,6 +771,7 @@ IL_0000: ldarg.1 IL_0001: isinst [mscorlib]System.Exception IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -914,72 +938,75 @@ instance int32 CompareTo(class XYZ.ABC/Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 64 (0x40) + // Code size 65 (0x41) .maxstack 4 .locals init ([0] class XYZ.ABC/Expr V_0, [1] class XYZ.ABC/Expr V_1, [2] class [mscorlib]System.Collections.IComparer V_2, [3] int32 V_3, [4] int32 V_4) + .line 13,13 : 14,18 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0036 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0037 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0034 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0035 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 100001,100001 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.2 + IL_0019: ldloc.0 + IL_001a: ldfld int32 XYZ.ABC/Expr::item + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 XYZ.ABC/Expr::item + IL_0026: stloc.s V_4 .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.2 - IL_0018: ldloc.0 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: stloc.3 - IL_001f: ldloc.1 - IL_0020: ldfld int32 XYZ.ABC/Expr::item - IL_0025: stloc.s V_4 - IL_0027: ldloc.3 - IL_0028: ldloc.s V_4 - IL_002a: bge.s IL_002e + IL_0028: ldloc.3 + IL_0029: ldloc.s V_4 + IL_002b: bge.s IL_002f .line 100001,100001 : 0,0 '' - IL_002c: ldc.i4.m1 - IL_002d: ret + IL_002d: ldc.i4.m1 + IL_002e: ret .line 100001,100001 : 0,0 '' - IL_002e: ldloc.3 - IL_002f: ldloc.s V_4 - IL_0031: cgt - IL_0033: ret + IL_002f: ldloc.3 + IL_0030: ldloc.s V_4 + IL_0032: cgt + IL_0034: ret .line 100001,100001 : 0,0 '' - IL_0034: ldc.i4.1 - IL_0035: ret + IL_0035: ldc.i4.1 + IL_0036: ret .line 100001,100001 : 0,0 '' - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: brfalse.s IL_003e + IL_0037: ldarg.1 + IL_0038: ldnull + IL_0039: cgt.un + IL_003b: brfalse.s IL_003f .line 100001,100001 : 0,0 '' - IL_003c: ldc.i4.m1 - IL_003d: ret + IL_003d: ldc.i4.m1 + IL_003e: ret .line 100001,100001 : 0,0 '' - IL_003e: ldc.i4.0 - IL_003f: ret + IL_003f: ldc.i4.0 + IL_0040: ret } // end of method Expr::CompareTo .method public hidebysig virtual final @@ -1013,6 +1040,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any XYZ.ABC/Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -1041,6 +1069,7 @@ IL_0028: ldloc.2 IL_0029: ldfld int32 XYZ.ABC/Expr::item IL_002e: stloc.s V_5 + .line 100001,100001 : 0,0 '' IL_0030: ldloc.s V_4 IL_0032: ldloc.s V_5 IL_0034: bge.s IL_0038 @@ -1079,48 +1108,51 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 41 (0x29) + // Code size 42 (0x2a) .maxstack 7 .locals init ([0] int32 V_0, [1] class XYZ.ABC/Expr V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 13,13 : 14,18 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0027 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0028 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop + IL_0007: ldc.i4.0 + IL_0008: stloc.0 .line 100001,100001 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldarg.1 - IL_0014: stloc.2 - IL_0015: ldloc.1 - IL_0016: ldfld int32 XYZ.ABC/Expr::item - IL_001b: ldloc.0 - IL_001c: ldc.i4.6 - IL_001d: shl - IL_001e: ldloc.0 - IL_001f: ldc.i4.2 - IL_0020: shr - IL_0021: add + IL_0009: ldarg.0 + IL_000a: pop + .line 100001,100001 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldarg.1 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldfld int32 XYZ.ABC/Expr::item + IL_001c: ldloc.0 + IL_001d: ldc.i4.6 + IL_001e: shl + IL_001f: ldloc.0 + IL_0020: ldc.i4.2 + IL_0021: shr IL_0022: add IL_0023: add - IL_0024: stloc.0 - IL_0025: ldloc.0 - IL_0026: ret + IL_0024: add + IL_0025: stloc.0 + IL_0026: ldloc.0 + IL_0027: ret .line 100001,100001 : 0,0 '' - IL_0027: ldc.i4.0 - IL_0028: ret + IL_0028: ldc.i4.0 + IL_0029: ret } // end of method Expr::GetHashCode .method public hidebysig virtual final @@ -1141,104 +1173,110 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) + // Code size 53 (0x35) .maxstack 4 .locals init ([0] class XYZ.ABC/Expr V_0, [1] class XYZ.ABC/Expr V_1, [2] class XYZ.ABC/Expr V_2, [3] class XYZ.ABC/Expr V_3, [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 13,13 : 14,18 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002c + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002d .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst XYZ.ABC/Expr - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_002a + IL_0007: ldarg.1 + IL_0008: isinst XYZ.ABC/Expr + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_002b .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: pop + IL_0011: ldloc.0 + IL_0012: stloc.1 .line 100001,100001 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: stloc.3 - IL_0018: ldarg.2 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldfld int32 XYZ.ABC/Expr::item - IL_0021: ldloc.3 - IL_0022: ldfld int32 XYZ.ABC/Expr::item - IL_0027: ceq - IL_0029: ret + IL_0013: ldarg.0 + IL_0014: pop + .line 100001,100001 : 0,0 '' + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: stloc.3 + IL_0019: ldarg.2 + IL_001a: stloc.s V_4 + IL_001c: ldloc.2 + IL_001d: ldfld int32 XYZ.ABC/Expr::item + IL_0022: ldloc.3 + IL_0023: ldfld int32 XYZ.ABC/Expr::item + IL_0028: ceq + IL_002a: ret .line 100001,100001 : 0,0 '' - IL_002a: ldc.i4.0 - IL_002b: ret + IL_002b: ldc.i4.0 + IL_002c: ret .line 100001,100001 : 0,0 '' - IL_002c: ldarg.1 - IL_002d: ldnull - IL_002e: cgt.un - IL_0030: ldc.i4.0 - IL_0031: ceq - IL_0033: ret + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } // end of method Expr::Equals .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 43 (0x2b) + // Code size 44 (0x2c) .maxstack 4 .locals init ([0] class XYZ.ABC/Expr V_0, [1] class XYZ.ABC/Expr V_1) + .line 13,13 : 14,18 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0023 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0024 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0021 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0022 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 XYZ.ABC/Expr::item - IL_0018: ldloc.1 - IL_0019: ldfld int32 XYZ.ABC/Expr::item - IL_001e: ceq - IL_0020: ret + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: ldloc.0 + IL_0014: ldfld int32 XYZ.ABC/Expr::item + IL_0019: ldloc.1 + IL_001a: ldfld int32 XYZ.ABC/Expr::item + IL_001f: ceq + IL_0021: ret .line 100001,100001 : 0,0 '' - IL_0021: ldc.i4.0 - IL_0022: ret + IL_0022: ldc.i4.0 + IL_0023: ret .line 100001,100001 : 0,0 '' - IL_0023: ldarg.1 - IL_0024: ldnull - IL_0025: cgt.un - IL_0027: ldc.i4.0 - IL_0028: ceq - IL_002a: ret + IL_0024: ldarg.1 + IL_0025: ldnull + IL_0026: cgt.un + IL_0028: ldc.i4.0 + IL_0029: ceq + IL_002b: ret } // end of method Expr::Equals .method public hidebysig virtual final @@ -1252,6 +1290,7 @@ IL_0000: ldarg.1 IL_0001: isinst XYZ.ABC/Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -1341,41 +1380,43 @@ GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 40 (0x28) + // Code size 41 (0x29) .maxstack 7 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 14,14 : 19,24 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0026 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0027 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: castclass XYZ.ABC/MyExn - IL_0015: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_001a: ldloc.0 - IL_001b: ldc.i4.6 - IL_001c: shl - IL_001d: ldloc.0 - IL_001e: ldc.i4.2 - IL_001f: shr - IL_0020: add + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.1 + IL_000f: stloc.1 + IL_0010: ldarg.0 + IL_0011: castclass XYZ.ABC/MyExn + IL_0016: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr IL_0021: add IL_0022: add - IL_0023: stloc.0 - IL_0024: ldloc.0 - IL_0025: ret + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret .line 100001,100001 : 0,0 '' - IL_0026: ldc.i4.0 - IL_0027: ret + IL_0027: ldc.i4.0 + IL_0028: ret } // end of method MyExn::GetHashCode .method public hidebysig virtual instance int32 @@ -1396,112 +1437,118 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 67 (0x43) + // Code size 68 (0x44) .maxstack 4 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 14,14 : 19,24 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003b + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003c .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst [mscorlib]System.Exception - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0039 + IL_0007: ldarg.1 + IL_0008: isinst [mscorlib]System.Exception + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_003a .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0018: brtrue.s IL_001c + IL_0011: ldloc.0 + IL_0012: stloc.1 + .line 100001,100001 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0019: brtrue.s IL_001d - IL_001a: br.s IL_0037 + IL_001b: br.s IL_0038 .line 100001,100001 : 0,0 '' - IL_001c: ldarg.2 - IL_001d: stloc.2 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret + IL_001d: ldarg.2 + IL_001e: stloc.2 + IL_001f: ldarg.0 + IL_0020: castclass XYZ.ABC/MyExn + IL_0025: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002a: ldloc.1 + IL_002b: castclass XYZ.ABC/MyExn + IL_0030: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0035: ceq + IL_0037: ret .line 100001,100001 : 0,0 '' - IL_0037: ldc.i4.0 - IL_0038: ret + IL_0038: ldc.i4.0 + IL_0039: ret .line 100001,100001 : 0,0 '' - IL_0039: ldc.i4.0 - IL_003a: ret + IL_003a: ldc.i4.0 + IL_003b: ret .line 100001,100001 : 0,0 '' - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_003c: ldarg.1 + IL_003d: ldnull + IL_003e: cgt.un + IL_0040: ldc.i4.0 + IL_0041: ceq + IL_0043: ret } // end of method MyExn::Equals .method public hidebysig instance bool Equals(class [mscorlib]System.Exception obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 8 + .line 14,14 : 19,24 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.1 - IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0012: brtrue.s IL_0016 + IL_000d: ldarg.1 + IL_000e: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0013: brtrue.s IL_0017 - IL_0014: br.s IL_002f + IL_0015: br.s IL_0030 .line 100001,100001 : 0,0 '' - IL_0016: ldarg.0 - IL_0017: castclass XYZ.ABC/MyExn - IL_001c: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_0021: ldarg.1 - IL_0022: castclass XYZ.ABC/MyExn - IL_0027: call instance int32 XYZ.ABC/MyExn::get_Data0() - IL_002c: ceq - IL_002e: ret + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_0022: ldarg.1 + IL_0023: castclass XYZ.ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret .line 100001,100001 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 100001,100001 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 100001,100001 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method MyExn::Equals .method public hidebysig virtual instance bool @@ -1515,6 +1562,7 @@ IL_0000: ldarg.1 IL_0001: isinst [mscorlib]System.Exception IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -1681,72 +1729,75 @@ instance int32 CompareTo(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 64 (0x40) + // Code size 65 (0x41) .maxstack 4 .locals init ([0] class XYZ.ABC/ABC/Expr V_0, [1] class XYZ.ABC/ABC/Expr V_1, [2] class [mscorlib]System.Collections.IComparer V_2, [3] int32 V_3, [4] int32 V_4) + .line 23,23 : 18,22 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0036 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0037 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0034 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0035 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.2 - IL_0018: ldloc.0 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: stloc.3 - IL_001f: ldloc.1 - IL_0020: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0025: stloc.s V_4 - IL_0027: ldloc.3 - IL_0028: ldloc.s V_4 - IL_002a: bge.s IL_002e + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.2 + IL_0019: ldloc.0 + IL_001a: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001f: stloc.3 + IL_0020: ldloc.1 + IL_0021: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0026: stloc.s V_4 + .line 100001,100001 : 0,0 '' + IL_0028: ldloc.3 + IL_0029: ldloc.s V_4 + IL_002b: bge.s IL_002f .line 100001,100001 : 0,0 '' - IL_002c: ldc.i4.m1 - IL_002d: ret + IL_002d: ldc.i4.m1 + IL_002e: ret .line 100001,100001 : 0,0 '' - IL_002e: ldloc.3 - IL_002f: ldloc.s V_4 - IL_0031: cgt - IL_0033: ret + IL_002f: ldloc.3 + IL_0030: ldloc.s V_4 + IL_0032: cgt + IL_0034: ret .line 100001,100001 : 0,0 '' - IL_0034: ldc.i4.1 - IL_0035: ret + IL_0035: ldc.i4.1 + IL_0036: ret .line 100001,100001 : 0,0 '' - IL_0036: ldarg.1 - IL_0037: ldnull - IL_0038: cgt.un - IL_003a: brfalse.s IL_003e + IL_0037: ldarg.1 + IL_0038: ldnull + IL_0039: cgt.un + IL_003b: brfalse.s IL_003f .line 100001,100001 : 0,0 '' - IL_003c: ldc.i4.m1 - IL_003d: ret + IL_003d: ldc.i4.m1 + IL_003e: ret .line 100001,100001 : 0,0 '' - IL_003e: ldc.i4.0 - IL_003f: ret + IL_003f: ldc.i4.0 + IL_0040: ret } // end of method Expr::CompareTo .method public hidebysig virtual final @@ -1780,6 +1831,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any XYZ.ABC/ABC/Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -1808,6 +1860,7 @@ IL_0028: ldloc.2 IL_0029: ldfld int32 XYZ.ABC/ABC/Expr::item IL_002e: stloc.s V_5 + .line 100001,100001 : 0,0 '' IL_0030: ldloc.s V_4 IL_0032: ldloc.s V_5 IL_0034: bge.s IL_0038 @@ -1846,48 +1899,51 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 41 (0x29) + // Code size 42 (0x2a) .maxstack 7 .locals init ([0] int32 V_0, [1] class XYZ.ABC/ABC/Expr V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 23,23 : 18,22 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0027 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0028 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop + IL_0007: ldc.i4.0 + IL_0008: stloc.0 .line 100001,100001 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldarg.1 - IL_0014: stloc.2 - IL_0015: ldloc.1 - IL_0016: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001b: ldloc.0 - IL_001c: ldc.i4.6 - IL_001d: shl - IL_001e: ldloc.0 - IL_001f: ldc.i4.2 - IL_0020: shr - IL_0021: add + IL_0009: ldarg.0 + IL_000a: pop + .line 100001,100001 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldarg.1 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001c: ldloc.0 + IL_001d: ldc.i4.6 + IL_001e: shl + IL_001f: ldloc.0 + IL_0020: ldc.i4.2 + IL_0021: shr IL_0022: add IL_0023: add - IL_0024: stloc.0 - IL_0025: ldloc.0 - IL_0026: ret + IL_0024: add + IL_0025: stloc.0 + IL_0026: ldloc.0 + IL_0027: ret .line 100001,100001 : 0,0 '' - IL_0027: ldc.i4.0 - IL_0028: ret + IL_0028: ldc.i4.0 + IL_0029: ret } // end of method Expr::GetHashCode .method public hidebysig virtual final @@ -1908,104 +1964,110 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 52 (0x34) + // Code size 53 (0x35) .maxstack 4 .locals init ([0] class XYZ.ABC/ABC/Expr V_0, [1] class XYZ.ABC/ABC/Expr V_1, [2] class XYZ.ABC/ABC/Expr V_2, [3] class XYZ.ABC/ABC/Expr V_3, [4] class [mscorlib]System.Collections.IEqualityComparer V_4) + .line 23,23 : 18,22 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002c + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002d .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst XYZ.ABC/ABC/Expr - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_002a + IL_0007: ldarg.1 + IL_0008: isinst XYZ.ABC/ABC/Expr + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_002b .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: pop + IL_0011: ldloc.0 + IL_0012: stloc.1 .line 100001,100001 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: stloc.3 - IL_0018: ldarg.2 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0021: ldloc.3 - IL_0022: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0027: ceq - IL_0029: ret + IL_0013: ldarg.0 + IL_0014: pop + .line 100001,100001 : 0,0 '' + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: stloc.3 + IL_0019: ldarg.2 + IL_001a: stloc.s V_4 + IL_001c: ldloc.2 + IL_001d: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0022: ldloc.3 + IL_0023: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0028: ceq + IL_002a: ret .line 100001,100001 : 0,0 '' - IL_002a: ldc.i4.0 - IL_002b: ret + IL_002b: ldc.i4.0 + IL_002c: ret .line 100001,100001 : 0,0 '' - IL_002c: ldarg.1 - IL_002d: ldnull - IL_002e: cgt.un - IL_0030: ldc.i4.0 - IL_0031: ceq - IL_0033: ret + IL_002d: ldarg.1 + IL_002e: ldnull + IL_002f: cgt.un + IL_0031: ldc.i4.0 + IL_0032: ceq + IL_0034: ret } // end of method Expr::Equals .method public hidebysig virtual final instance bool Equals(class XYZ.ABC/ABC/Expr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 43 (0x2b) + // Code size 44 (0x2c) .maxstack 4 .locals init ([0] class XYZ.ABC/ABC/Expr V_0, [1] class XYZ.ABC/ABC/Expr V_1) + .line 23,23 : 18,22 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0023 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0024 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0021 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0022 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_0018: ldloc.1 - IL_0019: ldfld int32 XYZ.ABC/ABC/Expr::item - IL_001e: ceq - IL_0020: ret + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: ldloc.0 + IL_0014: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_0019: ldloc.1 + IL_001a: ldfld int32 XYZ.ABC/ABC/Expr::item + IL_001f: ceq + IL_0021: ret .line 100001,100001 : 0,0 '' - IL_0021: ldc.i4.0 - IL_0022: ret + IL_0022: ldc.i4.0 + IL_0023: ret .line 100001,100001 : 0,0 '' - IL_0023: ldarg.1 - IL_0024: ldnull - IL_0025: cgt.un - IL_0027: ldc.i4.0 - IL_0028: ceq - IL_002a: ret + IL_0024: ldarg.1 + IL_0025: ldnull + IL_0026: cgt.un + IL_0028: ldc.i4.0 + IL_0029: ceq + IL_002b: ret } // end of method Expr::Equals .method public hidebysig virtual final @@ -2019,6 +2081,7 @@ IL_0000: ldarg.1 IL_0001: isinst XYZ.ABC/ABC/Expr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -2108,41 +2171,43 @@ GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 40 (0x28) + // Code size 41 (0x29) .maxstack 7 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IEqualityComparer V_1) + .line 24,24 : 23,28 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0026 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0027 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: castclass XYZ.ABC/ABC/MyExn - IL_0015: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_001a: ldloc.0 - IL_001b: ldc.i4.6 - IL_001c: shl - IL_001d: ldloc.0 - IL_001e: ldc.i4.2 - IL_001f: shr - IL_0020: add + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.1 + IL_000f: stloc.1 + IL_0010: ldarg.0 + IL_0011: castclass XYZ.ABC/ABC/MyExn + IL_0016: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_001b: ldloc.0 + IL_001c: ldc.i4.6 + IL_001d: shl + IL_001e: ldloc.0 + IL_001f: ldc.i4.2 + IL_0020: shr IL_0021: add IL_0022: add - IL_0023: stloc.0 - IL_0024: ldloc.0 - IL_0025: ret + IL_0023: add + IL_0024: stloc.0 + IL_0025: ldloc.0 + IL_0026: ret .line 100001,100001 : 0,0 '' - IL_0026: ldc.i4.0 - IL_0027: ret + IL_0027: ldc.i4.0 + IL_0028: ret } // end of method MyExn::GetHashCode .method public hidebysig virtual instance int32 @@ -2163,112 +2228,118 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 67 (0x43) + // Code size 68 (0x44) .maxstack 4 .locals init ([0] class [mscorlib]System.Exception V_0, [1] class [mscorlib]System.Exception V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) + .line 24,24 : 23,28 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003b + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003c .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst [mscorlib]System.Exception - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0039 + IL_0007: ldarg.1 + IL_0008: isinst [mscorlib]System.Exception + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_003a .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0018: brtrue.s IL_001c + IL_0011: ldloc.0 + IL_0012: stloc.1 + .line 100001,100001 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0019: brtrue.s IL_001d - IL_001a: br.s IL_0037 + IL_001b: br.s IL_0038 .line 100001,100001 : 0,0 '' - IL_001c: ldarg.2 - IL_001d: stloc.2 - IL_001e: ldarg.0 - IL_001f: castclass XYZ.ABC/ABC/MyExn - IL_0024: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0029: ldloc.1 - IL_002a: castclass XYZ.ABC/ABC/MyExn - IL_002f: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0034: ceq - IL_0036: ret + IL_001d: ldarg.2 + IL_001e: stloc.2 + IL_001f: ldarg.0 + IL_0020: castclass XYZ.ABC/ABC/MyExn + IL_0025: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002a: ldloc.1 + IL_002b: castclass XYZ.ABC/ABC/MyExn + IL_0030: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0035: ceq + IL_0037: ret .line 100001,100001 : 0,0 '' - IL_0037: ldc.i4.0 - IL_0038: ret + IL_0038: ldc.i4.0 + IL_0039: ret .line 100001,100001 : 0,0 '' - IL_0039: ldc.i4.0 - IL_003a: ret + IL_003a: ldc.i4.0 + IL_003b: ret .line 100001,100001 : 0,0 '' - IL_003b: ldarg.1 - IL_003c: ldnull - IL_003d: cgt.un - IL_003f: ldc.i4.0 - IL_0040: ceq - IL_0042: ret + IL_003c: ldarg.1 + IL_003d: ldnull + IL_003e: cgt.un + IL_0040: ldc.i4.0 + IL_0041: ceq + IL_0043: ret } // end of method MyExn::Equals .method public hidebysig instance bool Equals(class [mscorlib]System.Exception obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 8 + .line 24,24 : 23,28 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.1 - IL_000d: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) - IL_0012: brtrue.s IL_0016 + IL_000d: ldarg.1 + IL_000e: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::TypeTestGeneric(object) + IL_0013: brtrue.s IL_0017 - IL_0014: br.s IL_002f + IL_0015: br.s IL_0030 .line 100001,100001 : 0,0 '' - IL_0016: ldarg.0 - IL_0017: castclass XYZ.ABC/ABC/MyExn - IL_001c: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_0021: ldarg.1 - IL_0022: castclass XYZ.ABC/ABC/MyExn - IL_0027: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() - IL_002c: ceq - IL_002e: ret + IL_0017: ldarg.0 + IL_0018: castclass XYZ.ABC/ABC/MyExn + IL_001d: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_0022: ldarg.1 + IL_0023: castclass XYZ.ABC/ABC/MyExn + IL_0028: call instance int32 XYZ.ABC/ABC/MyExn::get_Data0() + IL_002d: ceq + IL_002f: ret .line 100001,100001 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 100001,100001 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 100001,100001 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method MyExn::Equals .method public hidebysig virtual instance bool @@ -2282,6 +2353,7 @@ IL_0000: ldarg.1 IL_0001: isinst [mscorlib]System.Exception IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Class01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Class01.il.bsl index aa250d3a1d..d65cdab3db 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Class01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Class01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000338 Length: 0x000000AD } .module StaticInit_Class01.dll -// MVID: {60B68B90-EC34-E66E-A745-0383908BB660} +// MVID: {611C4D99-EC34-E66E-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06F70000 +// Image base: 0x06F20000 // =============== CLASS MEMBERS DECLARATION =================== @@ -75,28 +75,30 @@ .method assembly static int32 f() cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 37 (0x25) + // Code size 38 (0x26) .maxstack 8 .line 7,7 : 23,37 '' - IL_0000: volatile. - IL_0002: ldsfld int32 StaticInit_ClassS01/C::init@4 - IL_0007: ldc.i4.1 - IL_0008: bge.s IL_0013 - + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_000a: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::FailStaticInit() - IL_000f: nop + IL_0001: volatile. + IL_0003: ldsfld int32 StaticInit_ClassS01/C::init@4 + IL_0008: ldc.i4.1 + IL_0009: bge.s IL_0014 + .line 100001,100001 : 0,0 '' + IL_000b: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::FailStaticInit() IL_0010: nop - IL_0011: br.s IL_0014 + .line 100001,100001 : 0,0 '' + IL_0011: nop + IL_0012: br.s IL_0015 .line 100001,100001 : 0,0 '' - IL_0013: nop - IL_0014: ldsfld int32 StaticInit_ClassS01/C::x - IL_0019: ldstr "2" - IL_001e: callvirt instance int32 [mscorlib]System.String::get_Length() - IL_0023: add - IL_0024: ret + IL_0014: nop + IL_0015: ldsfld int32 StaticInit_ClassS01/C::x + IL_001a: ldstr "2" + IL_001f: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_0024: add + IL_0025: ret } // end of method C::f .method private specialname rtspecialname static diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Struct01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Struct01.il.bsl index a0fdade385..589b435e0d 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Struct01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/StaticInit/StaticInit_Struct01.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x000007A8 Length: 0x0000021F } .module StaticInit_Struct01.dll -// MVID: {60B68B90-05F6-D6CB-A745-0383908BB660} +// MVID: {611C52B1-05F6-D6CB-A745-0383B1521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05BE0000 +// Image base: 0x06550000 // =============== CLASS MEMBERS DECLARATION =================== @@ -229,28 +229,30 @@ .method assembly static int32 f() cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 37 (0x25) + // Code size 38 (0x26) .maxstack 8 .line 7,7 : 23,37 '' - IL_0000: volatile. - IL_0002: ldsfld int32 StaticInit_Struct01/C::init@4 - IL_0007: ldc.i4.1 - IL_0008: bge.s IL_0013 - + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_000a: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::FailStaticInit() - IL_000f: nop + IL_0001: volatile. + IL_0003: ldsfld int32 StaticInit_Struct01/C::init@4 + IL_0008: ldc.i4.1 + IL_0009: bge.s IL_0014 + .line 100001,100001 : 0,0 '' + IL_000b: call void [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/IntrinsicFunctions::FailStaticInit() IL_0010: nop - IL_0011: br.s IL_0014 + .line 100001,100001 : 0,0 '' + IL_0011: nop + IL_0012: br.s IL_0015 .line 100001,100001 : 0,0 '' - IL_0013: nop - IL_0014: ldsfld int32 StaticInit_Struct01/C::x - IL_0019: ldstr "2" - IL_001e: callvirt instance int32 [mscorlib]System.String::get_Length() - IL_0023: add - IL_0024: ret + IL_0014: nop + IL_0015: ldsfld int32 StaticInit_Struct01/C::x + IL_001a: ldstr "2" + IL_001f: callvirt instance int32 [mscorlib]System.String::get_Length() + IL_0024: add + IL_0025: ret } // end of method C::f .method public hidebysig virtual final diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch01.il.bsl index c3bb349428..090ace0a0d 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000218 Length: 0x0000007A } .module SteppingMatch01.dll -// MVID: {60B68B90-ABFD-13F6-A745-0383908BB660} +// MVID: {611C4D99-ABFD-13F6-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06940000 +// Image base: 0x05320000 // =============== CLASS MEMBERS DECLARATION =================== @@ -62,12 +62,14 @@ .line 5,5 : 9,21 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch01.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`2/Choice1Of2 IL_0008: brfalse.s IL_000c IL_000a: br.s IL_001e + .line 100001,100001 : 0,0 '' IL_000c: ldloc.0 IL_000d: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`2/Choice2Of2 IL_0012: stloc.1 @@ -76,7 +78,7 @@ IL_0018: call void [mscorlib]System.Console::WriteLine(string) IL_001d: ret - .line 5,5 : 9,21 '' + .line 100001,100001 : 0,0 '' IL_001e: ldloc.0 IL_001f: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`2/Choice1Of2 IL_0024: stloc.2 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch02.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch02.il.bsl index 21138ae19a..d29ae57f65 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch02.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch02.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000218 Length: 0x0000007A } .module SteppingMatch02.dll -// MVID: {60B68B90-CAC2-C63D-A745-0383908BB660} +// MVID: {611C4D99-CAC2-C63D-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05330000 +// Image base: 0x06CD0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -62,12 +62,14 @@ .line 5,5 : 9,21 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch02.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`2/Choice2Of2 IL_0008: brfalse.s IL_000c IL_000a: br.s IL_001e + .line 100001,100001 : 0,0 '' IL_000c: ldloc.0 IL_000d: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`2/Choice1Of2 IL_0012: stloc.1 @@ -76,7 +78,7 @@ IL_0018: call void [mscorlib]System.Console::WriteLine(string) IL_001d: ret - .line 5,5 : 9,21 '' + .line 100001,100001 : 0,0 '' IL_001e: ldloc.0 IL_001f: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`2/Choice2Of2 IL_0024: stloc.2 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch03.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch03.il.bsl index 2413a566d8..224265a398 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch03.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch03.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000230 Length: 0x0000007A } .module SteppingMatch03.dll -// MVID: {60B68B90-4E87-D110-A745-0383908BB660} +// MVID: {611C4D99-4E87-D110-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07380000 +// Image base: 0x06F80000 // =============== CLASS MEMBERS DECLARATION =================== @@ -64,6 +64,7 @@ .line 5,5 : 9,21 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch03.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: stloc.1 IL_0004: ldloc.1 @@ -74,6 +75,7 @@ IL_000d: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice3Of3 IL_0012: brtrue.s IL_0038 + .line 100001,100001 : 0,0 '' IL_0014: ldloc.0 IL_0015: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 IL_001a: stloc.2 @@ -82,7 +84,7 @@ IL_0020: call void [mscorlib]System.Console::WriteLine(string) IL_0025: ret - .line 5,5 : 9,21 '' + .line 100001,100001 : 0,0 '' IL_0026: ldloc.0 IL_0027: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 IL_002c: stloc.3 @@ -91,7 +93,7 @@ IL_0032: call void [mscorlib]System.Console::WriteLine(string) IL_0037: ret - .line 5,5 : 9,21 '' + .line 100001,100001 : 0,0 '' IL_0038: ldloc.0 IL_0039: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice3Of3 IL_003e: stloc.s V_4 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch04.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch04.il.bsl index df2a0c2380..b1afa2fc79 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch04.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch04.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000230 Length: 0x0000007B } .module SteppingMatch04.dll -// MVID: {60B68B90-6D4C-8357-A745-0383908BB660} +// MVID: {611C4D99-6D4C-8357-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x073C0000 +// Image base: 0x06E30000 // =============== CLASS MEMBERS DECLARATION =================== @@ -64,6 +64,7 @@ .line 5,5 : 9,21 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch04.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: stloc.1 IL_0004: ldloc.1 @@ -74,6 +75,7 @@ IL_000d: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 IL_0012: brtrue.s IL_0038 + .line 100001,100001 : 0,0 '' IL_0014: ldloc.0 IL_0015: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 IL_001a: stloc.2 @@ -82,7 +84,7 @@ IL_0020: call void [mscorlib]System.Console::WriteLine(string) IL_0025: ret - .line 5,5 : 9,21 '' + .line 100001,100001 : 0,0 '' IL_0026: ldloc.0 IL_0027: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice3Of3 IL_002c: stloc.3 @@ -91,7 +93,7 @@ IL_0032: call void [mscorlib]System.Console::WriteLine(string) IL_0037: ret - .line 5,5 : 9,21 '' + .line 100001,100001 : 0,0 '' IL_0038: ldloc.0 IL_0039: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 IL_003e: stloc.s V_4 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch05.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch05.il.bsl index 6f851d8245..948bd3d9f9 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch05.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch05.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000230 Length: 0x0000007B } .module SteppingMatch05.dll -// MVID: {60B68B90-30E9-4ADA-A745-0383908BB660} +// MVID: {611C4D99-30E9-4ADA-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x072E0000 +// Image base: 0x064D0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -64,6 +64,7 @@ .line 5,5 : 9,21 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch05.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: stloc.1 IL_0004: ldloc.1 @@ -74,6 +75,7 @@ IL_000d: isinst class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 IL_0012: brtrue.s IL_0038 + .line 100001,100001 : 0,0 '' IL_0014: ldloc.0 IL_0015: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice3Of3 IL_001a: stloc.2 @@ -82,7 +84,7 @@ IL_0020: call void [mscorlib]System.Console::WriteLine(string) IL_0025: ret - .line 5,5 : 9,21 '' + .line 100001,100001 : 0,0 '' IL_0026: ldloc.0 IL_0027: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice2Of3 IL_002c: stloc.3 @@ -91,7 +93,7 @@ IL_0032: call void [mscorlib]System.Console::WriteLine(string) IL_0037: ret - .line 5,5 : 9,21 '' + .line 100001,100001 : 0,0 '' IL_0038: ldloc.0 IL_0039: castclass class [FSharp.Core]Microsoft.FSharp.Core.FSharpChoice`3/Choice1Of3 IL_003e: stloc.s V_4 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch06.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch06.il.bsl index da1fa20a67..9a549b41ea 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch06.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch06.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000680 Length: 0x000001D9 } .module SteppingMatch06.dll -// MVID: {60B68B90-4FAE-FD21-A745-0383908BB660} +// MVID: {611C4D99-4FAE-FD21-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05BB0000 +// Image base: 0x05850000 // =============== CLASS MEMBERS DECLARATION =================== @@ -205,61 +205,64 @@ instance int32 CompareTo(class SteppingMatch06/Discr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 48 (0x30) + // Code size 49 (0x31) .maxstack 4 .locals init ([0] int32 V_0, [1] int32 V_1) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch06.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0026 + .line 4,4 : 6,11 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch06.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0027 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0024 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0025 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 SteppingMatch06/Discr::_tag - IL_0012: stloc.0 - IL_0013: ldarg.1 - IL_0014: ldfld int32 SteppingMatch06/Discr::_tag - IL_0019: stloc.1 - IL_001a: ldloc.0 - IL_001b: ldloc.1 - IL_001c: bne.un.s IL_0020 + IL_000d: ldarg.0 + IL_000e: ldfld int32 SteppingMatch06/Discr::_tag + IL_0013: stloc.0 + IL_0014: ldarg.1 + IL_0015: ldfld int32 SteppingMatch06/Discr::_tag + IL_001a: stloc.1 + .line 100001,100001 : 0,0 '' + IL_001b: ldloc.0 + IL_001c: ldloc.1 + IL_001d: bne.un.s IL_0021 .line 100001,100001 : 0,0 '' - IL_001e: ldc.i4.0 - IL_001f: ret + IL_001f: ldc.i4.0 + IL_0020: ret .line 100001,100001 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldloc.1 - IL_0022: sub - IL_0023: ret + IL_0021: ldloc.0 + IL_0022: ldloc.1 + IL_0023: sub + IL_0024: ret .line 100001,100001 : 0,0 '' - IL_0024: ldc.i4.1 - IL_0025: ret + IL_0025: ldc.i4.1 + IL_0026: ret .line 100001,100001 : 0,0 '' - IL_0026: ldarg.1 - IL_0027: ldnull - IL_0028: cgt.un - IL_002a: brfalse.s IL_002e + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: brfalse.s IL_002f .line 100001,100001 : 0,0 '' - IL_002c: ldc.i4.m1 - IL_002d: ret + IL_002d: ldc.i4.m1 + IL_002e: ret .line 100001,100001 : 0,0 '' - IL_002e: ldc.i4.0 - IL_002f: ret + IL_002f: ldc.i4.0 + IL_0030: ret } // end of method Discr::CompareTo .method public hidebysig virtual final @@ -290,6 +293,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any SteppingMatch06/Discr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -309,6 +313,7 @@ IL_001f: ldloc.0 IL_0020: ldfld int32 SteppingMatch06/Discr::_tag IL_0025: stloc.2 + .line 100001,100001 : 0,0 '' IL_0026: ldloc.1 IL_0027: ldloc.2 IL_0028: bne.un.s IL_002c @@ -347,25 +352,27 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 17 (0x11) + // Code size 18 (0x12) .maxstack 3 .locals init ([0] int32 V_0) + .line 4,4 : 6,11 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_000f + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0010 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: ldfld int32 SteppingMatch06/Discr::_tag - IL_000e: ret + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldarg.0 + IL_000a: ldfld int32 SteppingMatch06/Discr::_tag + IL_000f: ret .line 100001,100001 : 0,0 '' - IL_000f: ldc.i4.0 - IL_0010: ret + IL_0010: ldc.i4.0 + IL_0011: ret } // end of method Discr::GetHashCode .method public hidebysig virtual final @@ -386,95 +393,102 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 47 (0x2f) + // Code size 48 (0x30) .maxstack 4 .locals init ([0] class SteppingMatch06/Discr V_0, [1] class SteppingMatch06/Discr V_1, [2] int32 V_2, [3] int32 V_3) + .line 4,4 : 6,11 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0027 - - .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst SteppingMatch06/Discr - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0025 - - .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: ldfld int32 SteppingMatch06/Discr::_tag - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld int32 SteppingMatch06/Discr::_tag - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: ceq - IL_0024: ret + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0028 .line 100001,100001 : 0,0 '' - IL_0025: ldc.i4.0 - IL_0026: ret + IL_0007: ldarg.1 + IL_0008: isinst SteppingMatch06/Discr + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0026 .line 100001,100001 : 0,0 '' - IL_0027: ldarg.1 - IL_0028: ldnull - IL_0029: cgt.un - IL_002b: ldc.i4.0 - IL_002c: ceq - IL_002e: ret + IL_0011: ldloc.0 + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: ldfld int32 SteppingMatch06/Discr::_tag + IL_0019: stloc.2 + IL_001a: ldloc.1 + IL_001b: ldfld int32 SteppingMatch06/Discr::_tag + IL_0020: stloc.3 + .line 100001,100001 : 0,0 '' + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: ceq + IL_0025: ret + + .line 100001,100001 : 0,0 '' + IL_0026: ldc.i4.0 + IL_0027: ret + + .line 100001,100001 : 0,0 '' + IL_0028: ldarg.1 + IL_0029: ldnull + IL_002a: cgt.un + IL_002c: ldc.i4.0 + IL_002d: ceq + IL_002f: ret } // end of method Discr::Equals .method public hidebysig virtual final instance bool Equals(class SteppingMatch06/Discr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 41 (0x29) + // Code size 42 (0x2a) .maxstack 4 .locals init ([0] int32 V_0, [1] int32 V_1) + .line 4,4 : 6,11 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0021 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0022 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_001f + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0020 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 SteppingMatch06/Discr::_tag - IL_0012: stloc.0 - IL_0013: ldarg.1 - IL_0014: ldfld int32 SteppingMatch06/Discr::_tag - IL_0019: stloc.1 - IL_001a: ldloc.0 - IL_001b: ldloc.1 - IL_001c: ceq - IL_001e: ret + IL_000d: ldarg.0 + IL_000e: ldfld int32 SteppingMatch06/Discr::_tag + IL_0013: stloc.0 + IL_0014: ldarg.1 + IL_0015: ldfld int32 SteppingMatch06/Discr::_tag + IL_001a: stloc.1 + .line 100001,100001 : 0,0 '' + IL_001b: ldloc.0 + IL_001c: ldloc.1 + IL_001d: ceq + IL_001f: ret .line 100001,100001 : 0,0 '' - IL_001f: ldc.i4.0 - IL_0020: ret + IL_0020: ldc.i4.0 + IL_0021: ret .line 100001,100001 : 0,0 '' - IL_0021: ldarg.1 - IL_0022: ldnull - IL_0023: cgt.un - IL_0025: ldc.i4.0 - IL_0026: ceq - IL_0028: ret + IL_0022: ldarg.1 + IL_0023: ldnull + IL_0024: cgt.un + IL_0026: ldc.i4.0 + IL_0027: ceq + IL_0029: ret } // end of method Discr::Equals .method public hidebysig virtual final @@ -488,6 +502,7 @@ IL_0000: ldarg.1 IL_0001: isinst SteppingMatch06/Discr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -543,25 +558,27 @@ .method public static void funcD(class SteppingMatch06/Discr n) cil managed { - // Code size 33 (0x21) + // Code size 34 (0x22) .maxstack 8 .line 6,6 : 9,21 '' - IL_0000: ldarg.0 - IL_0001: call instance int32 SteppingMatch06/Discr::get_Tag() - IL_0006: ldc.i4.0 - IL_0007: bne.un.s IL_000b + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: call instance int32 SteppingMatch06/Discr::get_Tag() + IL_0007: ldc.i4.0 + IL_0008: bne.un.s IL_000c - IL_0009: br.s IL_0016 + IL_000a: br.s IL_0017 .line 8,8 : 13,35 '' - IL_000b: ldstr "B" - IL_0010: call void [mscorlib]System.Console::WriteLine(string) - IL_0015: ret + IL_000c: ldstr "B" + IL_0011: call void [mscorlib]System.Console::WriteLine(string) + IL_0016: ret .line 10,10 : 13,35 '' - IL_0016: ldstr "A" - IL_001b: call void [mscorlib]System.Console::WriteLine(string) - IL_0020: ret + IL_0017: ldstr "A" + IL_001c: call void [mscorlib]System.Console::WriteLine(string) + IL_0021: ret } // end of method SteppingMatch06::funcD } // end of class SteppingMatch06 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch07.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch07.il.bsl index d91371610a..76a3997425 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch07.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch07.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000680 Length: 0x000001D9 } .module SteppingMatch07.dll -// MVID: {60B68B90-D373-07F3-A745-0383908BB660} +// MVID: {611C4D99-D373-07F3-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07270000 +// Image base: 0x06780000 // =============== CLASS MEMBERS DECLARATION =================== @@ -205,61 +205,64 @@ instance int32 CompareTo(class SteppingMatch07/Discr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 48 (0x30) + // Code size 49 (0x31) .maxstack 4 .locals init ([0] int32 V_0, [1] int32 V_1) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch07.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0026 + .line 4,4 : 6,11 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch07.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0027 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0024 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0025 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 SteppingMatch07/Discr::_tag - IL_0012: stloc.0 - IL_0013: ldarg.1 - IL_0014: ldfld int32 SteppingMatch07/Discr::_tag - IL_0019: stloc.1 - IL_001a: ldloc.0 - IL_001b: ldloc.1 - IL_001c: bne.un.s IL_0020 + IL_000d: ldarg.0 + IL_000e: ldfld int32 SteppingMatch07/Discr::_tag + IL_0013: stloc.0 + IL_0014: ldarg.1 + IL_0015: ldfld int32 SteppingMatch07/Discr::_tag + IL_001a: stloc.1 + .line 100001,100001 : 0,0 '' + IL_001b: ldloc.0 + IL_001c: ldloc.1 + IL_001d: bne.un.s IL_0021 .line 100001,100001 : 0,0 '' - IL_001e: ldc.i4.0 - IL_001f: ret + IL_001f: ldc.i4.0 + IL_0020: ret .line 100001,100001 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldloc.1 - IL_0022: sub - IL_0023: ret + IL_0021: ldloc.0 + IL_0022: ldloc.1 + IL_0023: sub + IL_0024: ret .line 100001,100001 : 0,0 '' - IL_0024: ldc.i4.1 - IL_0025: ret + IL_0025: ldc.i4.1 + IL_0026: ret .line 100001,100001 : 0,0 '' - IL_0026: ldarg.1 - IL_0027: ldnull - IL_0028: cgt.un - IL_002a: brfalse.s IL_002e + IL_0027: ldarg.1 + IL_0028: ldnull + IL_0029: cgt.un + IL_002b: brfalse.s IL_002f .line 100001,100001 : 0,0 '' - IL_002c: ldc.i4.m1 - IL_002d: ret + IL_002d: ldc.i4.m1 + IL_002e: ret .line 100001,100001 : 0,0 '' - IL_002e: ldc.i4.0 - IL_002f: ret + IL_002f: ldc.i4.0 + IL_0030: ret } // end of method Discr::CompareTo .method public hidebysig virtual final @@ -290,6 +293,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any SteppingMatch07/Discr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -309,6 +313,7 @@ IL_001f: ldloc.0 IL_0020: ldfld int32 SteppingMatch07/Discr::_tag IL_0025: stloc.2 + .line 100001,100001 : 0,0 '' IL_0026: ldloc.1 IL_0027: ldloc.2 IL_0028: bne.un.s IL_002c @@ -347,25 +352,27 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 17 (0x11) + // Code size 18 (0x12) .maxstack 3 .locals init ([0] int32 V_0) + .line 4,4 : 6,11 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_000f + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0010 .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: ldfld int32 SteppingMatch07/Discr::_tag - IL_000e: ret + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldarg.0 + IL_000a: ldfld int32 SteppingMatch07/Discr::_tag + IL_000f: ret .line 100001,100001 : 0,0 '' - IL_000f: ldc.i4.0 - IL_0010: ret + IL_0010: ldc.i4.0 + IL_0011: ret } // end of method Discr::GetHashCode .method public hidebysig virtual final @@ -386,95 +393,102 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 47 (0x2f) + // Code size 48 (0x30) .maxstack 4 .locals init ([0] class SteppingMatch07/Discr V_0, [1] class SteppingMatch07/Discr V_1, [2] int32 V_2, [3] int32 V_3) + .line 4,4 : 6,11 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0027 - - .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst SteppingMatch07/Discr - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0025 - - .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: ldfld int32 SteppingMatch07/Discr::_tag - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld int32 SteppingMatch07/Discr::_tag - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: ceq - IL_0024: ret + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0028 .line 100001,100001 : 0,0 '' - IL_0025: ldc.i4.0 - IL_0026: ret + IL_0007: ldarg.1 + IL_0008: isinst SteppingMatch07/Discr + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0026 .line 100001,100001 : 0,0 '' - IL_0027: ldarg.1 - IL_0028: ldnull - IL_0029: cgt.un - IL_002b: ldc.i4.0 - IL_002c: ceq - IL_002e: ret + IL_0011: ldloc.0 + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: ldfld int32 SteppingMatch07/Discr::_tag + IL_0019: stloc.2 + IL_001a: ldloc.1 + IL_001b: ldfld int32 SteppingMatch07/Discr::_tag + IL_0020: stloc.3 + .line 100001,100001 : 0,0 '' + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: ceq + IL_0025: ret + + .line 100001,100001 : 0,0 '' + IL_0026: ldc.i4.0 + IL_0027: ret + + .line 100001,100001 : 0,0 '' + IL_0028: ldarg.1 + IL_0029: ldnull + IL_002a: cgt.un + IL_002c: ldc.i4.0 + IL_002d: ceq + IL_002f: ret } // end of method Discr::Equals .method public hidebysig virtual final instance bool Equals(class SteppingMatch07/Discr obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 41 (0x29) + // Code size 42 (0x2a) .maxstack 4 .locals init ([0] int32 V_0, [1] int32 V_1) + .line 4,4 : 6,11 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0021 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0022 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_001f + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0020 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 SteppingMatch07/Discr::_tag - IL_0012: stloc.0 - IL_0013: ldarg.1 - IL_0014: ldfld int32 SteppingMatch07/Discr::_tag - IL_0019: stloc.1 - IL_001a: ldloc.0 - IL_001b: ldloc.1 - IL_001c: ceq - IL_001e: ret + IL_000d: ldarg.0 + IL_000e: ldfld int32 SteppingMatch07/Discr::_tag + IL_0013: stloc.0 + IL_0014: ldarg.1 + IL_0015: ldfld int32 SteppingMatch07/Discr::_tag + IL_001a: stloc.1 + .line 100001,100001 : 0,0 '' + IL_001b: ldloc.0 + IL_001c: ldloc.1 + IL_001d: ceq + IL_001f: ret .line 100001,100001 : 0,0 '' - IL_001f: ldc.i4.0 - IL_0020: ret + IL_0020: ldc.i4.0 + IL_0021: ret .line 100001,100001 : 0,0 '' - IL_0021: ldarg.1 - IL_0022: ldnull - IL_0023: cgt.un - IL_0025: ldc.i4.0 - IL_0026: ceq - IL_0028: ret + IL_0022: ldarg.1 + IL_0023: ldnull + IL_0024: cgt.un + IL_0026: ldc.i4.0 + IL_0027: ceq + IL_0029: ret } // end of method Discr::Equals .method public hidebysig virtual final @@ -488,6 +502,7 @@ IL_0000: ldarg.1 IL_0001: isinst SteppingMatch07/Discr IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -543,25 +558,27 @@ .method public static void funcE(class SteppingMatch07/Discr n) cil managed { - // Code size 33 (0x21) + // Code size 34 (0x22) .maxstack 8 .line 6,6 : 9,21 '' - IL_0000: ldarg.0 - IL_0001: call instance int32 SteppingMatch07/Discr::get_Tag() - IL_0006: ldc.i4.1 - IL_0007: bne.un.s IL_000b + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: call instance int32 SteppingMatch07/Discr::get_Tag() + IL_0007: ldc.i4.1 + IL_0008: bne.un.s IL_000c - IL_0009: br.s IL_0016 + IL_000a: br.s IL_0017 .line 8,8 : 13,35 '' - IL_000b: ldstr "A" - IL_0010: call void [mscorlib]System.Console::WriteLine(string) - IL_0015: ret + IL_000c: ldstr "A" + IL_0011: call void [mscorlib]System.Console::WriteLine(string) + IL_0016: ret .line 10,10 : 13,35 '' - IL_0016: ldstr "B" - IL_001b: call void [mscorlib]System.Console::WriteLine(string) - IL_0020: ret + IL_0017: ldstr "B" + IL_001c: call void [mscorlib]System.Console::WriteLine(string) + IL_0021: ret } // end of method SteppingMatch07::funcE } // end of class SteppingMatch07 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch08.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch08.il.bsl index 76a265460b..53a1dcd156 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch08.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch08.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001E0 Length: 0x00000079 } .module SteppingMatch08.dll -// MVID: {60B68B90-F238-BA3A-A745-0383908BB660} +// MVID: {611C4D99-F238-BA3A-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00E20000 +// Image base: 0x05A00000 // =============== CLASS MEMBERS DECLARATION =================== @@ -53,30 +53,32 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static void test(int32 x) cil managed { - // Code size 20 (0x14) + // Code size 21 (0x15) .maxstack 3 .locals init ([0] int32 b) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' .line 5,5 : 9,21 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\SteppingMatch\\SteppingMatch08.fs' - IL_0000: ldarg.0 - IL_0001: switch ( - IL_000c) - IL_000a: br.s IL_0010 + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: switch ( + IL_000d) + IL_000b: br.s IL_0011 .line 6,6 : 16,17 '' - IL_000c: ldc.i4.2 + IL_000d: ldc.i4.2 .line 100001,100001 : 0,0 '' - IL_000d: nop - IL_000e: br.s IL_0012 + IL_000e: nop + IL_000f: br.s IL_0013 .line 7,7 : 18,19 '' - IL_0010: ldc.i4.0 + IL_0011: ldc.i4.0 .line 100001,100001 : 0,0 '' - IL_0011: nop + IL_0012: nop .line 100001,100001 : 0,0 '' - IL_0012: stloc.0 + IL_0013: stloc.0 .line 10,10 : 5,38 '' - IL_0013: ret + IL_0014: ret } // end of method SteppingMatch08::test } // end of class SteppingMatch08 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch09.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch09.il.bsl index 3d11c8b1b6..0a66e66438 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch09.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/SteppingMatch/SteppingMatch09.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000310 Length: 0x000000EB } .module SteppingMatch09.dll -// MVID: {60B68B90-4935-D6AC-A745-0383908BB660} +// MVID: {611C4D99-4935-D6AC-A745-0383994D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06A70000 +// Image base: 0x07080000 // =============== CLASS MEMBERS DECLARATION =================== @@ -121,7 +121,7 @@ .method public strict virtual instance int32 Invoke(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 list) cil managed { - // Code size 19 (0x13) + // Code size 20 (0x14) .maxstack 6 .locals init ([0] class SteppingMatch09/GenericInner@15 V_0) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' @@ -129,17 +129,19 @@ IL_0000: ldarg.0 IL_0001: ldfld class SteppingMatch09/GenericInner@15 class SteppingMatch09/GenericInner@15T::self0@ IL_0006: stloc.0 - IL_0007: ldarg.1 - IL_0008: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_000d: brtrue.s IL_0011 + IL_0007: nop + .line 100001,100001 : 0,0 '' + IL_0008: ldarg.1 + IL_0009: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_000e: brtrue.s IL_0012 .line 17,17 : 14,15 '' - IL_000f: ldc.i4.1 - IL_0010: ret + IL_0010: ldc.i4.1 + IL_0011: ret .line 18,18 : 13,14 '' - IL_0011: ldc.i4.2 - IL_0012: ret + IL_0012: ldc.i4.2 + IL_0013: ret } // end of method GenericInner@15T::Invoke } // end of class GenericInner@15T @@ -163,20 +165,22 @@ .method public strict virtual instance int32 Invoke(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 list) cil managed { - // Code size 12 (0xc) + // Code size 13 (0xd) .maxstack 8 .line 25,25 : 6,21 '' - IL_0000: ldarg.1 - IL_0001: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0006: brtrue.s IL_000a + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.1 + IL_0002: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0007: brtrue.s IL_000b .line 26,26 : 14,15 '' - IL_0008: ldc.i4.1 - IL_0009: ret + IL_0009: ldc.i4.1 + IL_000a: ret .line 27,27 : 13,14 '' - IL_000a: ldc.i4.2 - IL_000b: ret + IL_000b: ldc.i4.2 + IL_000c: ret } // end of method NonGenericInner@25::Invoke .method private specialname rtspecialname static @@ -213,21 +217,23 @@ .method public strict virtual instance int32 Invoke(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 list) cil managed { - // Code size 17 (0x11) + // Code size 18 (0x12) .maxstack 8 .line 34,34 : 6,21 '' - IL_0000: ldarg.1 - IL_0001: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0006: brtrue.s IL_000a + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.1 + IL_0002: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0007: brtrue.s IL_000b .line 35,35 : 14,15 '' - IL_0008: ldc.i4.1 - IL_0009: ret + IL_0009: ldc.i4.1 + IL_000a: ret .line 36,36 : 13,14 '' - IL_000a: ldarg.0 - IL_000b: ldfld int32 SteppingMatch09/NonGenericInnerWithCapture@34::x - IL_0010: ret + IL_000b: ldarg.0 + IL_000c: ldfld int32 SteppingMatch09/NonGenericInnerWithCapture@34::x + IL_0011: ret } // end of method NonGenericInnerWithCapture@34::Invoke } // end of class NonGenericInnerWithCapture@34 @@ -235,30 +241,32 @@ .method public static class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 funcA(int32 n) cil managed { - // Code size 36 (0x24) + // Code size 37 (0x25) .maxstack 8 .line 5,5 : 9,21 '' - IL_0000: ldarg.0 - IL_0001: ldc.i4.1 - IL_0002: sub - IL_0003: switch ( - IL_0012, - IL_001a) - IL_0010: br.s IL_001c + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldc.i4.1 + IL_0003: sub + IL_0004: switch ( + IL_0013, + IL_001b) + IL_0011: br.s IL_001d .line 7,7 : 13,21 '' - IL_0012: ldc.i4.s 10 - IL_0014: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::Some(!0) - IL_0019: ret + IL_0013: ldc.i4.s 10 + IL_0015: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::Some(!0) + IL_001a: ret .line 9,9 : 13,17 '' - IL_001a: ldnull - IL_001b: ret + IL_001b: ldnull + IL_001c: ret .line 11,11 : 20,34 '' - IL_001c: ldc.i4.s 22 - IL_001e: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::Some(!0) - IL_0023: ret + IL_001d: ldc.i4.s 22 + IL_001f: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::Some(!0) + IL_0024: ret } // end of method SteppingMatch09::funcA .method public static int32 OuterWithGenericInner(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 list) cil managed diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction16.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction16.il.bsl index 25a67922af..053da8e2bc 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction16.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction16.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000688 Length: 0x000001CD } .module TestFunction16.exe -// MVID: {60B68B97-A624-45C5-A745-0383978BB660} +// MVID: {611C52B3-A624-45C5-A745-0383B3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00E30000 +// Image base: 0x07120000 // =============== CLASS MEMBERS DECLARATION =================== @@ -174,7 +174,7 @@ instance int32 CompareTo(class TestFunction16/U obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 120 (0x78) + // Code size 121 (0x79) .maxstack 4 .locals init ([0] class TestFunction16/U V_0, [1] class TestFunction16/U V_1, @@ -186,109 +186,114 @@ [7] int32 V_7, [8] int32 V_8) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction16.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006e + .line 4,4 : 6,7 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction16.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006f .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006c + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006d .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 100001,100001 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 TestFunction16/U::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 TestFunction16/U::item1 + IL_0027: stloc.s V_5 .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 TestFunction16/U::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 TestFunction16/U::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 100001,100001 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 100001,100001 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 100001,100001 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 100001,100001 : 0,0 '' - IL_0038: nop + IL_0039: nop + .line 100001,100001 : 0,0 '' + IL_003a: stloc.2 .line 100001,100001 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 100001,100001 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 100001,100001 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 100001,100001 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 100001,100001 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.s V_6 - IL_004d: ldloc.0 - IL_004e: ldfld int32 TestFunction16/U::item2 - IL_0053: stloc.s V_7 - IL_0055: ldloc.1 - IL_0056: ldfld int32 TestFunction16/U::item2 - IL_005b: stloc.s V_8 - IL_005d: ldloc.s V_7 - IL_005f: ldloc.s V_8 - IL_0061: bge.s IL_0065 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.s V_6 + IL_004e: ldloc.0 + IL_004f: ldfld int32 TestFunction16/U::item2 + IL_0054: stloc.s V_7 + IL_0056: ldloc.1 + IL_0057: ldfld int32 TestFunction16/U::item2 + IL_005c: stloc.s V_8 + .line 100001,100001 : 0,0 '' + IL_005e: ldloc.s V_7 + IL_0060: ldloc.s V_8 + IL_0062: bge.s IL_0066 .line 100001,100001 : 0,0 '' - IL_0063: ldc.i4.m1 - IL_0064: ret + IL_0064: ldc.i4.m1 + IL_0065: ret .line 100001,100001 : 0,0 '' - IL_0065: ldloc.s V_7 - IL_0067: ldloc.s V_8 - IL_0069: cgt - IL_006b: ret + IL_0066: ldloc.s V_7 + IL_0068: ldloc.s V_8 + IL_006a: cgt + IL_006c: ret .line 100001,100001 : 0,0 '' - IL_006c: ldc.i4.1 - IL_006d: ret + IL_006d: ldc.i4.1 + IL_006e: ret .line 100001,100001 : 0,0 '' - IL_006e: ldarg.1 - IL_006f: ldnull - IL_0070: cgt.un - IL_0072: brfalse.s IL_0076 + IL_006f: ldarg.1 + IL_0070: ldnull + IL_0071: cgt.un + IL_0073: brfalse.s IL_0077 .line 100001,100001 : 0,0 '' - IL_0074: ldc.i4.m1 - IL_0075: ret + IL_0075: ldc.i4.m1 + IL_0076: ret .line 100001,100001 : 0,0 '' - IL_0076: ldc.i4.0 - IL_0077: ret + IL_0077: ldc.i4.0 + IL_0078: ret } // end of method U::CompareTo .method public hidebysig virtual final @@ -326,6 +331,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any TestFunction16/U IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -354,6 +360,7 @@ IL_0029: ldloc.2 IL_002a: ldfld int32 TestFunction16/U::item1 IL_002f: stloc.s V_6 + .line 100001,100001 : 0,0 '' IL_0031: ldloc.s V_5 IL_0033: ldloc.s V_6 IL_0035: bge.s IL_003b @@ -372,6 +379,7 @@ IL_0041: nop .line 100001,100001 : 0,0 '' IL_0042: stloc.3 + .line 100001,100001 : 0,0 '' IL_0043: ldloc.3 IL_0044: ldc.i4.0 IL_0045: bge.s IL_0049 @@ -398,6 +406,7 @@ IL_005a: ldloc.2 IL_005b: ldfld int32 TestFunction16/U::item2 IL_0060: stloc.s V_9 + .line 100001,100001 : 0,0 '' IL_0062: ldloc.s V_8 IL_0064: ldloc.s V_9 IL_0066: bge.s IL_006a @@ -436,64 +445,67 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 64 (0x40) + // Code size 65 (0x41) .maxstack 7 .locals init ([0] int32 V_0, [1] class TestFunction16/U V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2, [3] class [mscorlib]System.Collections.IEqualityComparer V_3) + .line 4,4 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003e + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003f .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop + IL_0007: ldc.i4.0 + IL_0008: stloc.0 .line 100001,100001 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldarg.1 - IL_0014: stloc.2 - IL_0015: ldloc.1 - IL_0016: ldfld int32 TestFunction16/U::item2 - IL_001b: ldloc.0 - IL_001c: ldc.i4.6 - IL_001d: shl - IL_001e: ldloc.0 - IL_001f: ldc.i4.2 - IL_0020: shr - IL_0021: add + IL_0009: ldarg.0 + IL_000a: pop + .line 100001,100001 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldarg.1 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldfld int32 TestFunction16/U::item2 + IL_001c: ldloc.0 + IL_001d: ldc.i4.6 + IL_001e: shl + IL_001f: ldloc.0 + IL_0020: ldc.i4.2 + IL_0021: shr IL_0022: add IL_0023: add - IL_0024: stloc.0 - IL_0025: ldc.i4 0x9e3779b9 - IL_002a: ldarg.1 - IL_002b: stloc.3 - IL_002c: ldloc.1 - IL_002d: ldfld int32 TestFunction16/U::item1 - IL_0032: ldloc.0 - IL_0033: ldc.i4.6 - IL_0034: shl - IL_0035: ldloc.0 - IL_0036: ldc.i4.2 - IL_0037: shr - IL_0038: add + IL_0024: add + IL_0025: stloc.0 + IL_0026: ldc.i4 0x9e3779b9 + IL_002b: ldarg.1 + IL_002c: stloc.3 + IL_002d: ldloc.1 + IL_002e: ldfld int32 TestFunction16/U::item1 + IL_0033: ldloc.0 + IL_0034: ldc.i4.6 + IL_0035: shl + IL_0036: ldloc.0 + IL_0037: ldc.i4.2 + IL_0038: shr IL_0039: add IL_003a: add - IL_003b: stloc.0 - IL_003c: ldloc.0 - IL_003d: ret + IL_003b: add + IL_003c: stloc.0 + IL_003d: ldloc.0 + IL_003e: ret .line 100001,100001 : 0,0 '' - IL_003e: ldc.i4.0 - IL_003f: ret + IL_003f: ldc.i4.0 + IL_0040: ret } // end of method U::GetHashCode .method public hidebysig virtual final @@ -514,7 +526,7 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 73 (0x49) + // Code size 74 (0x4a) .maxstack 4 .locals init ([0] class TestFunction16/U V_0, [1] class TestFunction16/U V_1, @@ -522,122 +534,130 @@ [3] class TestFunction16/U V_3, [4] class [mscorlib]System.Collections.IEqualityComparer V_4, [5] class [mscorlib]System.Collections.IEqualityComparer V_5) + .line 4,4 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0041 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0042 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst TestFunction16/U - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_003f + IL_0007: ldarg.1 + IL_0008: isinst TestFunction16/U + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0040 .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: pop + IL_0011: ldloc.0 + IL_0012: stloc.1 .line 100001,100001 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: stloc.3 - IL_0018: ldarg.2 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldfld int32 TestFunction16/U::item1 - IL_0021: ldloc.3 - IL_0022: ldfld int32 TestFunction16/U::item1 - IL_0027: ceq - IL_0029: brfalse.s IL_003d + IL_0013: ldarg.0 + IL_0014: pop + .line 100001,100001 : 0,0 '' + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: stloc.3 + .line 100001,100001 : 0,0 '' + IL_0019: ldarg.2 + IL_001a: stloc.s V_4 + IL_001c: ldloc.2 + IL_001d: ldfld int32 TestFunction16/U::item1 + IL_0022: ldloc.3 + IL_0023: ldfld int32 TestFunction16/U::item1 + IL_0028: ceq + IL_002a: brfalse.s IL_003e .line 100001,100001 : 0,0 '' - IL_002b: ldarg.2 - IL_002c: stloc.s V_5 - IL_002e: ldloc.2 - IL_002f: ldfld int32 TestFunction16/U::item2 - IL_0034: ldloc.3 - IL_0035: ldfld int32 TestFunction16/U::item2 - IL_003a: ceq - IL_003c: ret + IL_002c: ldarg.2 + IL_002d: stloc.s V_5 + IL_002f: ldloc.2 + IL_0030: ldfld int32 TestFunction16/U::item2 + IL_0035: ldloc.3 + IL_0036: ldfld int32 TestFunction16/U::item2 + IL_003b: ceq + IL_003d: ret .line 100001,100001 : 0,0 '' - IL_003d: ldc.i4.0 - IL_003e: ret + IL_003e: ldc.i4.0 + IL_003f: ret .line 100001,100001 : 0,0 '' - IL_003f: ldc.i4.0 - IL_0040: ret + IL_0040: ldc.i4.0 + IL_0041: ret .line 100001,100001 : 0,0 '' - IL_0041: ldarg.1 - IL_0042: ldnull - IL_0043: cgt.un - IL_0045: ldc.i4.0 - IL_0046: ceq - IL_0048: ret + IL_0042: ldarg.1 + IL_0043: ldnull + IL_0044: cgt.un + IL_0046: ldc.i4.0 + IL_0047: ceq + IL_0049: ret } // end of method U::Equals .method public hidebysig virtual final instance bool Equals(class TestFunction16/U obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class TestFunction16/U V_0, [1] class TestFunction16/U V_1) + .line 4,4 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 TestFunction16/U::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 TestFunction16/U::item1 - IL_001e: bne.un.s IL_002f + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 100001,100001 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld int32 TestFunction16/U::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 TestFunction16/U::item1 + IL_001f: bne.un.s IL_0030 .line 100001,100001 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 TestFunction16/U::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 TestFunction16/U::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 TestFunction16/U::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 TestFunction16/U::item2 + IL_002d: ceq + IL_002f: ret .line 100001,100001 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 100001,100001 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 100001,100001 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method U::Equals .method public hidebysig virtual final @@ -651,6 +671,7 @@ IL_0000: ldarg.1 IL_0001: isinst TestFunction16/U IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction17.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction17.il.bsl index 02a8fa3356..5b097b711f 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction17.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction17.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000678 Length: 0x000001CD } .module TestFunction17.exe -// MVID: {60B68B97-A624-45A8-A745-0383978BB660} +// MVID: {611C52B3-A624-45A8-A745-0383B3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06AA0000 +// Image base: 0x06B30000 // =============== CLASS MEMBERS DECLARATION =================== @@ -119,7 +119,7 @@ instance int32 CompareTo(class TestFunction17/R obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 108 (0x6c) + // Code size 109 (0x6d) .maxstack 4 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IComparer V_1, @@ -129,102 +129,107 @@ [5] int32 V_5, [6] int32 V_6) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction17.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0062 + .line 4,4 : 6,7 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction17.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0063 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0060 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0061 .line 100001,100001 : 0,0 '' - IL_000c: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: ldfld int32 TestFunction17/R::x@ - IL_0018: stloc.2 - IL_0019: ldarg.1 - IL_001a: ldfld int32 TestFunction17/R::x@ - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: bge.s IL_0028 + IL_000d: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: ldfld int32 TestFunction17/R::x@ + IL_0019: stloc.2 + IL_001a: ldarg.1 + IL_001b: ldfld int32 TestFunction17/R::x@ + IL_0020: stloc.3 + .line 100001,100001 : 0,0 '' + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: bge.s IL_0029 .line 100001,100001 : 0,0 '' - IL_0024: ldc.i4.m1 + IL_0025: ldc.i4.m1 .line 100001,100001 : 0,0 '' - IL_0025: nop - IL_0026: br.s IL_002d + IL_0026: nop + IL_0027: br.s IL_002e .line 100001,100001 : 0,0 '' - IL_0028: ldloc.2 - IL_0029: ldloc.3 - IL_002a: cgt + IL_0029: ldloc.2 + IL_002a: ldloc.3 + IL_002b: cgt + .line 100001,100001 : 0,0 '' + IL_002d: nop .line 100001,100001 : 0,0 '' - IL_002c: nop + IL_002e: stloc.0 .line 100001,100001 : 0,0 '' - IL_002d: stloc.0 - IL_002e: ldloc.0 - IL_002f: ldc.i4.0 - IL_0030: bge.s IL_0034 + IL_002f: ldloc.0 + IL_0030: ldc.i4.0 + IL_0031: bge.s IL_0035 .line 100001,100001 : 0,0 '' - IL_0032: ldloc.0 - IL_0033: ret + IL_0033: ldloc.0 + IL_0034: ret .line 100001,100001 : 0,0 '' - IL_0034: ldloc.0 - IL_0035: ldc.i4.0 - IL_0036: ble.s IL_003a + IL_0035: ldloc.0 + IL_0036: ldc.i4.0 + IL_0037: ble.s IL_003b .line 100001,100001 : 0,0 '' - IL_0038: ldloc.0 - IL_0039: ret + IL_0039: ldloc.0 + IL_003a: ret .line 100001,100001 : 0,0 '' - IL_003a: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_003f: stloc.s V_4 - IL_0041: ldarg.0 - IL_0042: ldfld int32 TestFunction17/R::y@ - IL_0047: stloc.s V_5 - IL_0049: ldarg.1 - IL_004a: ldfld int32 TestFunction17/R::y@ - IL_004f: stloc.s V_6 - IL_0051: ldloc.s V_5 - IL_0053: ldloc.s V_6 - IL_0055: bge.s IL_0059 + IL_003b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0040: stloc.s V_4 + IL_0042: ldarg.0 + IL_0043: ldfld int32 TestFunction17/R::y@ + IL_0048: stloc.s V_5 + IL_004a: ldarg.1 + IL_004b: ldfld int32 TestFunction17/R::y@ + IL_0050: stloc.s V_6 + .line 100001,100001 : 0,0 '' + IL_0052: ldloc.s V_5 + IL_0054: ldloc.s V_6 + IL_0056: bge.s IL_005a .line 100001,100001 : 0,0 '' - IL_0057: ldc.i4.m1 - IL_0058: ret + IL_0058: ldc.i4.m1 + IL_0059: ret .line 100001,100001 : 0,0 '' - IL_0059: ldloc.s V_5 - IL_005b: ldloc.s V_6 - IL_005d: cgt - IL_005f: ret + IL_005a: ldloc.s V_5 + IL_005c: ldloc.s V_6 + IL_005e: cgt + IL_0060: ret .line 100001,100001 : 0,0 '' - IL_0060: ldc.i4.1 - IL_0061: ret + IL_0061: ldc.i4.1 + IL_0062: ret .line 100001,100001 : 0,0 '' - IL_0062: ldarg.1 - IL_0063: ldnull - IL_0064: cgt.un - IL_0066: brfalse.s IL_006a + IL_0063: ldarg.1 + IL_0064: ldnull + IL_0065: cgt.un + IL_0067: brfalse.s IL_006b .line 100001,100001 : 0,0 '' - IL_0068: ldc.i4.m1 - IL_0069: ret + IL_0069: ldc.i4.m1 + IL_006a: ret .line 100001,100001 : 0,0 '' - IL_006a: ldc.i4.0 - IL_006b: ret + IL_006b: ldc.i4.0 + IL_006c: ret } // end of method R::CompareTo .method public hidebysig virtual final @@ -263,6 +268,7 @@ IL_0006: stloc.0 IL_0007: ldloc.0 IL_0008: stloc.1 + .line 100001,100001 : 0,0 '' IL_0009: ldarg.0 IL_000a: ldnull IL_000b: cgt.un @@ -284,6 +290,7 @@ IL_0024: ldloc.1 IL_0025: ldfld int32 TestFunction17/R::x@ IL_002a: stloc.s V_5 + .line 100001,100001 : 0,0 '' IL_002c: ldloc.s V_4 IL_002e: ldloc.s V_5 IL_0030: bge.s IL_0036 @@ -302,6 +309,7 @@ IL_003c: nop .line 100001,100001 : 0,0 '' IL_003d: stloc.2 + .line 100001,100001 : 0,0 '' IL_003e: ldloc.2 IL_003f: ldc.i4.0 IL_0040: bge.s IL_0044 @@ -328,6 +336,7 @@ IL_0055: ldloc.1 IL_0056: ldfld int32 TestFunction17/R::y@ IL_005b: stloc.s V_8 + .line 100001,100001 : 0,0 '' IL_005d: ldloc.s V_7 IL_005f: ldloc.s V_8 IL_0061: bge.s IL_0065 @@ -366,56 +375,58 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 58 (0x3a) + // Code size 59 (0x3b) .maxstack 7 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IEqualityComparer V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) - .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0038 - - .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: ldfld int32 TestFunction17/R::y@ - IL_0015: ldloc.0 - IL_0016: ldc.i4.6 - IL_0017: shl - IL_0018: ldloc.0 - IL_0019: ldc.i4.2 - IL_001a: shr - IL_001b: add + .line 4,4 : 6,7 '' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0039 + + .line 100001,100001 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.1 + IL_000f: stloc.1 + IL_0010: ldarg.0 + IL_0011: ldfld int32 TestFunction17/R::y@ + IL_0016: ldloc.0 + IL_0017: ldc.i4.6 + IL_0018: shl + IL_0019: ldloc.0 + IL_001a: ldc.i4.2 + IL_001b: shr IL_001c: add IL_001d: add - IL_001e: stloc.0 - IL_001f: ldc.i4 0x9e3779b9 - IL_0024: ldarg.1 - IL_0025: stloc.2 - IL_0026: ldarg.0 - IL_0027: ldfld int32 TestFunction17/R::x@ - IL_002c: ldloc.0 - IL_002d: ldc.i4.6 - IL_002e: shl - IL_002f: ldloc.0 - IL_0030: ldc.i4.2 - IL_0031: shr - IL_0032: add + IL_001e: add + IL_001f: stloc.0 + IL_0020: ldc.i4 0x9e3779b9 + IL_0025: ldarg.1 + IL_0026: stloc.2 + IL_0027: ldarg.0 + IL_0028: ldfld int32 TestFunction17/R::x@ + IL_002d: ldloc.0 + IL_002e: ldc.i4.6 + IL_002f: shl + IL_0030: ldloc.0 + IL_0031: ldc.i4.2 + IL_0032: shr IL_0033: add IL_0034: add - IL_0035: stloc.0 - IL_0036: ldloc.0 - IL_0037: ret + IL_0035: add + IL_0036: stloc.0 + IL_0037: ldloc.0 + IL_0038: ret .line 100001,100001 : 0,0 '' - IL_0038: ldc.i4.0 - IL_0039: ret + IL_0039: ldc.i4.0 + IL_003a: ret } // end of method R::GetHashCode .method public hidebysig virtual final @@ -436,112 +447,118 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 65 (0x41) + // Code size 66 (0x42) .maxstack 4 .locals init ([0] class TestFunction17/R V_0, [1] class TestFunction17/R V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2, [3] class [mscorlib]System.Collections.IEqualityComparer V_3) + .line 4,4 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0039 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003a .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst TestFunction17/R - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0037 + IL_0007: ldarg.1 + IL_0008: isinst TestFunction17/R + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0038 .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.2 - IL_0013: stloc.2 - IL_0014: ldarg.0 - IL_0015: ldfld int32 TestFunction17/R::x@ - IL_001a: ldloc.1 - IL_001b: ldfld int32 TestFunction17/R::x@ - IL_0020: ceq - IL_0022: brfalse.s IL_0035 + IL_0011: ldloc.0 + IL_0012: stloc.1 + .line 100001,100001 : 0,0 '' + IL_0013: ldarg.2 + IL_0014: stloc.2 + IL_0015: ldarg.0 + IL_0016: ldfld int32 TestFunction17/R::x@ + IL_001b: ldloc.1 + IL_001c: ldfld int32 TestFunction17/R::x@ + IL_0021: ceq + IL_0023: brfalse.s IL_0036 .line 100001,100001 : 0,0 '' - IL_0024: ldarg.2 - IL_0025: stloc.3 - IL_0026: ldarg.0 - IL_0027: ldfld int32 TestFunction17/R::y@ - IL_002c: ldloc.1 - IL_002d: ldfld int32 TestFunction17/R::y@ - IL_0032: ceq - IL_0034: ret + IL_0025: ldarg.2 + IL_0026: stloc.3 + IL_0027: ldarg.0 + IL_0028: ldfld int32 TestFunction17/R::y@ + IL_002d: ldloc.1 + IL_002e: ldfld int32 TestFunction17/R::y@ + IL_0033: ceq + IL_0035: ret .line 100001,100001 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 100001,100001 : 0,0 '' - IL_0037: ldc.i4.0 - IL_0038: ret + IL_0038: ldc.i4.0 + IL_0039: ret .line 100001,100001 : 0,0 '' - IL_0039: ldarg.1 - IL_003a: ldnull - IL_003b: cgt.un - IL_003d: ldc.i4.0 - IL_003e: ceq - IL_0040: ret + IL_003a: ldarg.1 + IL_003b: ldnull + IL_003c: cgt.un + IL_003e: ldc.i4.0 + IL_003f: ceq + IL_0041: ret } // end of method R::Equals .method public hidebysig virtual final instance bool Equals(class TestFunction17/R obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 53 (0x35) + // Code size 54 (0x36) .maxstack 8 + .line 4,4 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002e .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_002b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_002c .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 TestFunction17/R::x@ - IL_0012: ldarg.1 - IL_0013: ldfld int32 TestFunction17/R::x@ - IL_0018: bne.un.s IL_0029 + IL_000d: ldarg.0 + IL_000e: ldfld int32 TestFunction17/R::x@ + IL_0013: ldarg.1 + IL_0014: ldfld int32 TestFunction17/R::x@ + IL_0019: bne.un.s IL_002a .line 100001,100001 : 0,0 '' - IL_001a: ldarg.0 - IL_001b: ldfld int32 TestFunction17/R::y@ - IL_0020: ldarg.1 - IL_0021: ldfld int32 TestFunction17/R::y@ - IL_0026: ceq - IL_0028: ret + IL_001b: ldarg.0 + IL_001c: ldfld int32 TestFunction17/R::y@ + IL_0021: ldarg.1 + IL_0022: ldfld int32 TestFunction17/R::y@ + IL_0027: ceq + IL_0029: ret .line 100001,100001 : 0,0 '' - IL_0029: ldc.i4.0 - IL_002a: ret + IL_002a: ldc.i4.0 + IL_002b: ret .line 100001,100001 : 0,0 '' - IL_002b: ldc.i4.0 - IL_002c: ret + IL_002c: ldc.i4.0 + IL_002d: ret .line 100001,100001 : 0,0 '' - IL_002d: ldarg.1 - IL_002e: ldnull - IL_002f: cgt.un - IL_0031: ldc.i4.0 - IL_0032: ceq - IL_0034: ret + IL_002e: ldarg.1 + IL_002f: ldnull + IL_0030: cgt.un + IL_0032: ldc.i4.0 + IL_0033: ceq + IL_0035: ret } // end of method R::Equals .method public hidebysig virtual final @@ -555,6 +572,7 @@ IL_0000: ldarg.1 IL_0001: isinst TestFunction17/R IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction21.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction21.il.bsl index 752ef0b375..3b768e614e 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction21.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction21.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000680 Length: 0x000001CD } .module TestFunction21.exe -// MVID: {60B68B97-A643-45E6-A745-0383978BB660} +// MVID: {611C52B3-A643-45E6-A745-0383B3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05500000 +// Image base: 0x06DD0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -174,7 +174,7 @@ instance int32 CompareTo(class TestFunction21/U obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 120 (0x78) + // Code size 121 (0x79) .maxstack 4 .locals init ([0] class TestFunction21/U V_0, [1] class TestFunction21/U V_1, @@ -186,109 +186,114 @@ [7] int32 V_7, [8] int32 V_8) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 100001,100001 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction21.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006e + .line 4,4 : 6,7 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction21.fs' + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006f .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006c + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006d .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 TestFunction21/U::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 TestFunction21/U::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 TestFunction21/U::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 TestFunction21/U::item1 + IL_0027: stloc.s V_5 + .line 100001,100001 : 0,0 '' + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 100001,100001 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 100001,100001 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 100001,100001 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 100001,100001 : 0,0 '' - IL_0038: nop + IL_0039: nop + .line 100001,100001 : 0,0 '' + IL_003a: stloc.2 .line 100001,100001 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 100001,100001 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 100001,100001 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 100001,100001 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 100001,100001 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.s V_6 - IL_004d: ldloc.0 - IL_004e: ldfld int32 TestFunction21/U::item2 - IL_0053: stloc.s V_7 - IL_0055: ldloc.1 - IL_0056: ldfld int32 TestFunction21/U::item2 - IL_005b: stloc.s V_8 - IL_005d: ldloc.s V_7 - IL_005f: ldloc.s V_8 - IL_0061: bge.s IL_0065 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.s V_6 + IL_004e: ldloc.0 + IL_004f: ldfld int32 TestFunction21/U::item2 + IL_0054: stloc.s V_7 + IL_0056: ldloc.1 + IL_0057: ldfld int32 TestFunction21/U::item2 + IL_005c: stloc.s V_8 + .line 100001,100001 : 0,0 '' + IL_005e: ldloc.s V_7 + IL_0060: ldloc.s V_8 + IL_0062: bge.s IL_0066 .line 100001,100001 : 0,0 '' - IL_0063: ldc.i4.m1 - IL_0064: ret + IL_0064: ldc.i4.m1 + IL_0065: ret .line 100001,100001 : 0,0 '' - IL_0065: ldloc.s V_7 - IL_0067: ldloc.s V_8 - IL_0069: cgt - IL_006b: ret + IL_0066: ldloc.s V_7 + IL_0068: ldloc.s V_8 + IL_006a: cgt + IL_006c: ret .line 100001,100001 : 0,0 '' - IL_006c: ldc.i4.1 - IL_006d: ret + IL_006d: ldc.i4.1 + IL_006e: ret .line 100001,100001 : 0,0 '' - IL_006e: ldarg.1 - IL_006f: ldnull - IL_0070: cgt.un - IL_0072: brfalse.s IL_0076 + IL_006f: ldarg.1 + IL_0070: ldnull + IL_0071: cgt.un + IL_0073: brfalse.s IL_0077 .line 100001,100001 : 0,0 '' - IL_0074: ldc.i4.m1 - IL_0075: ret + IL_0075: ldc.i4.m1 + IL_0076: ret .line 100001,100001 : 0,0 '' - IL_0076: ldc.i4.0 - IL_0077: ret + IL_0077: ldc.i4.0 + IL_0078: ret } // end of method U::CompareTo .method public hidebysig virtual final @@ -326,6 +331,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any TestFunction21/U IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -354,6 +360,7 @@ IL_0029: ldloc.2 IL_002a: ldfld int32 TestFunction21/U::item1 IL_002f: stloc.s V_6 + .line 100001,100001 : 0,0 '' IL_0031: ldloc.s V_5 IL_0033: ldloc.s V_6 IL_0035: bge.s IL_003b @@ -372,6 +379,7 @@ IL_0041: nop .line 100001,100001 : 0,0 '' IL_0042: stloc.3 + .line 100001,100001 : 0,0 '' IL_0043: ldloc.3 IL_0044: ldc.i4.0 IL_0045: bge.s IL_0049 @@ -398,6 +406,7 @@ IL_005a: ldloc.2 IL_005b: ldfld int32 TestFunction21/U::item2 IL_0060: stloc.s V_9 + .line 100001,100001 : 0,0 '' IL_0062: ldloc.s V_8 IL_0064: ldloc.s V_9 IL_0066: bge.s IL_006a @@ -436,64 +445,67 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 64 (0x40) + // Code size 65 (0x41) .maxstack 7 .locals init ([0] int32 V_0, [1] class TestFunction21/U V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2, [3] class [mscorlib]System.Collections.IEqualityComparer V_3) + .line 4,4 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003e + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003f .line 100001,100001 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop + IL_0007: ldc.i4.0 + IL_0008: stloc.0 .line 100001,100001 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldarg.1 - IL_0014: stloc.2 - IL_0015: ldloc.1 - IL_0016: ldfld int32 TestFunction21/U::item2 - IL_001b: ldloc.0 - IL_001c: ldc.i4.6 - IL_001d: shl - IL_001e: ldloc.0 - IL_001f: ldc.i4.2 - IL_0020: shr - IL_0021: add + IL_0009: ldarg.0 + IL_000a: pop + .line 100001,100001 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldarg.1 + IL_0015: stloc.2 + IL_0016: ldloc.1 + IL_0017: ldfld int32 TestFunction21/U::item2 + IL_001c: ldloc.0 + IL_001d: ldc.i4.6 + IL_001e: shl + IL_001f: ldloc.0 + IL_0020: ldc.i4.2 + IL_0021: shr IL_0022: add IL_0023: add - IL_0024: stloc.0 - IL_0025: ldc.i4 0x9e3779b9 - IL_002a: ldarg.1 - IL_002b: stloc.3 - IL_002c: ldloc.1 - IL_002d: ldfld int32 TestFunction21/U::item1 - IL_0032: ldloc.0 - IL_0033: ldc.i4.6 - IL_0034: shl - IL_0035: ldloc.0 - IL_0036: ldc.i4.2 - IL_0037: shr - IL_0038: add + IL_0024: add + IL_0025: stloc.0 + IL_0026: ldc.i4 0x9e3779b9 + IL_002b: ldarg.1 + IL_002c: stloc.3 + IL_002d: ldloc.1 + IL_002e: ldfld int32 TestFunction21/U::item1 + IL_0033: ldloc.0 + IL_0034: ldc.i4.6 + IL_0035: shl + IL_0036: ldloc.0 + IL_0037: ldc.i4.2 + IL_0038: shr IL_0039: add IL_003a: add - IL_003b: stloc.0 - IL_003c: ldloc.0 - IL_003d: ret + IL_003b: add + IL_003c: stloc.0 + IL_003d: ldloc.0 + IL_003e: ret .line 100001,100001 : 0,0 '' - IL_003e: ldc.i4.0 - IL_003f: ret + IL_003f: ldc.i4.0 + IL_0040: ret } // end of method U::GetHashCode .method public hidebysig virtual final @@ -514,7 +526,7 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 73 (0x49) + // Code size 74 (0x4a) .maxstack 4 .locals init ([0] class TestFunction21/U V_0, [1] class TestFunction21/U V_1, @@ -522,122 +534,130 @@ [3] class TestFunction21/U V_3, [4] class [mscorlib]System.Collections.IEqualityComparer V_4, [5] class [mscorlib]System.Collections.IEqualityComparer V_5) + .line 4,4 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0041 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0042 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst TestFunction21/U - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_003f + IL_0007: ldarg.1 + IL_0008: isinst TestFunction21/U + IL_000d: stloc.0 + .line 100001,100001 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0040 .line 100001,100001 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: pop + IL_0011: ldloc.0 + IL_0012: stloc.1 .line 100001,100001 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: stloc.3 - IL_0018: ldarg.2 - IL_0019: stloc.s V_4 - IL_001b: ldloc.2 - IL_001c: ldfld int32 TestFunction21/U::item1 - IL_0021: ldloc.3 - IL_0022: ldfld int32 TestFunction21/U::item1 - IL_0027: ceq - IL_0029: brfalse.s IL_003d + IL_0013: ldarg.0 + IL_0014: pop + .line 100001,100001 : 0,0 '' + IL_0015: ldarg.0 + IL_0016: stloc.2 + IL_0017: ldloc.1 + IL_0018: stloc.3 + .line 100001,100001 : 0,0 '' + IL_0019: ldarg.2 + IL_001a: stloc.s V_4 + IL_001c: ldloc.2 + IL_001d: ldfld int32 TestFunction21/U::item1 + IL_0022: ldloc.3 + IL_0023: ldfld int32 TestFunction21/U::item1 + IL_0028: ceq + IL_002a: brfalse.s IL_003e .line 100001,100001 : 0,0 '' - IL_002b: ldarg.2 - IL_002c: stloc.s V_5 - IL_002e: ldloc.2 - IL_002f: ldfld int32 TestFunction21/U::item2 - IL_0034: ldloc.3 - IL_0035: ldfld int32 TestFunction21/U::item2 - IL_003a: ceq - IL_003c: ret + IL_002c: ldarg.2 + IL_002d: stloc.s V_5 + IL_002f: ldloc.2 + IL_0030: ldfld int32 TestFunction21/U::item2 + IL_0035: ldloc.3 + IL_0036: ldfld int32 TestFunction21/U::item2 + IL_003b: ceq + IL_003d: ret .line 100001,100001 : 0,0 '' - IL_003d: ldc.i4.0 - IL_003e: ret + IL_003e: ldc.i4.0 + IL_003f: ret .line 100001,100001 : 0,0 '' - IL_003f: ldc.i4.0 - IL_0040: ret + IL_0040: ldc.i4.0 + IL_0041: ret .line 100001,100001 : 0,0 '' - IL_0041: ldarg.1 - IL_0042: ldnull - IL_0043: cgt.un - IL_0045: ldc.i4.0 - IL_0046: ceq - IL_0048: ret + IL_0042: ldarg.1 + IL_0043: ldnull + IL_0044: cgt.un + IL_0046: ldc.i4.0 + IL_0047: ceq + IL_0049: ret } // end of method U::Equals .method public hidebysig virtual final instance bool Equals(class TestFunction21/U obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class TestFunction21/U V_0, [1] class TestFunction21/U V_1) + .line 4,4 : 6,7 '' + IL_0000: nop .line 100001,100001 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 100001,100001 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 100001,100001 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 100001,100001 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 .line 100001,100001 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 TestFunction21/U::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 TestFunction21/U::item1 - IL_001e: bne.un.s IL_002f + IL_0013: ldloc.0 + IL_0014: ldfld int32 TestFunction21/U::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 TestFunction21/U::item1 + IL_001f: bne.un.s IL_0030 .line 100001,100001 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 TestFunction21/U::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 TestFunction21/U::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 TestFunction21/U::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 TestFunction21/U::item2 + IL_002d: ceq + IL_002f: ret .line 100001,100001 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 100001,100001 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 100001,100001 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method U::Equals .method public hidebysig virtual final @@ -651,6 +671,7 @@ IL_0000: ldarg.1 IL_0001: isinst TestFunction21/U IL_0006: stloc.0 + .line 100001,100001 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction24.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction24.il.bsl index 1063152863..d946a530d8 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction24.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction24.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000748 Length: 0x00000228 } .module TestFunction24.exe -// MVID: {60B68B97-A643-4587-A745-0383978BB660} +// MVID: {611C52B3-A643-4587-A745-0383B3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06EA0000 +// Image base: 0x07110000 // =============== CLASS MEMBERS DECLARATION =================== @@ -141,7 +141,7 @@ instance int32 CompareTo(class TestFunction24/Point obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 108 (0x6c) + // Code size 109 (0x6d) .maxstack 4 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IComparer V_1, @@ -151,102 +151,107 @@ [5] int32 V_5, [6] int32 V_6) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction24.fs' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0062 + .line 4,4 : 6,11 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction24.fs' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0063 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0060 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0061 .line 16707566,16707566 : 0,0 '' - IL_000c: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: ldfld int32 TestFunction24/Point::x@ - IL_0018: stloc.2 - IL_0019: ldarg.1 - IL_001a: ldfld int32 TestFunction24/Point::x@ - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: bge.s IL_0028 + IL_000d: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: ldfld int32 TestFunction24/Point::x@ + IL_0019: stloc.2 + IL_001a: ldarg.1 + IL_001b: ldfld int32 TestFunction24/Point::x@ + IL_0020: stloc.3 + .line 16707566,16707566 : 0,0 '' + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: bge.s IL_0029 .line 16707566,16707566 : 0,0 '' - IL_0024: ldc.i4.m1 + IL_0025: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_0025: nop - IL_0026: br.s IL_002d + IL_0026: nop + IL_0027: br.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_0028: ldloc.2 - IL_0029: ldloc.3 - IL_002a: cgt + IL_0029: ldloc.2 + IL_002a: ldloc.3 + IL_002b: cgt + .line 16707566,16707566 : 0,0 '' + IL_002d: nop .line 16707566,16707566 : 0,0 '' - IL_002c: nop + IL_002e: stloc.0 .line 16707566,16707566 : 0,0 '' - IL_002d: stloc.0 - IL_002e: ldloc.0 - IL_002f: ldc.i4.0 - IL_0030: bge.s IL_0034 + IL_002f: ldloc.0 + IL_0030: ldc.i4.0 + IL_0031: bge.s IL_0035 .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.0 - IL_0033: ret + IL_0033: ldloc.0 + IL_0034: ret .line 16707566,16707566 : 0,0 '' - IL_0034: ldloc.0 - IL_0035: ldc.i4.0 - IL_0036: ble.s IL_003a + IL_0035: ldloc.0 + IL_0036: ldc.i4.0 + IL_0037: ble.s IL_003b .line 16707566,16707566 : 0,0 '' - IL_0038: ldloc.0 - IL_0039: ret + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_003f: stloc.s V_4 - IL_0041: ldarg.0 - IL_0042: ldfld int32 TestFunction24/Point::y@ - IL_0047: stloc.s V_5 - IL_0049: ldarg.1 - IL_004a: ldfld int32 TestFunction24/Point::y@ - IL_004f: stloc.s V_6 - IL_0051: ldloc.s V_5 - IL_0053: ldloc.s V_6 - IL_0055: bge.s IL_0059 + IL_003b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0040: stloc.s V_4 + IL_0042: ldarg.0 + IL_0043: ldfld int32 TestFunction24/Point::y@ + IL_0048: stloc.s V_5 + IL_004a: ldarg.1 + IL_004b: ldfld int32 TestFunction24/Point::y@ + IL_0050: stloc.s V_6 + .line 16707566,16707566 : 0,0 '' + IL_0052: ldloc.s V_5 + IL_0054: ldloc.s V_6 + IL_0056: bge.s IL_005a .line 16707566,16707566 : 0,0 '' - IL_0057: ldc.i4.m1 - IL_0058: ret + IL_0058: ldc.i4.m1 + IL_0059: ret .line 16707566,16707566 : 0,0 '' - IL_0059: ldloc.s V_5 - IL_005b: ldloc.s V_6 - IL_005d: cgt - IL_005f: ret + IL_005a: ldloc.s V_5 + IL_005c: ldloc.s V_6 + IL_005e: cgt + IL_0060: ret .line 16707566,16707566 : 0,0 '' - IL_0060: ldc.i4.1 - IL_0061: ret + IL_0061: ldc.i4.1 + IL_0062: ret .line 16707566,16707566 : 0,0 '' - IL_0062: ldarg.1 - IL_0063: ldnull - IL_0064: cgt.un - IL_0066: brfalse.s IL_006a + IL_0063: ldarg.1 + IL_0064: ldnull + IL_0065: cgt.un + IL_0067: brfalse.s IL_006b .line 16707566,16707566 : 0,0 '' - IL_0068: ldc.i4.m1 - IL_0069: ret + IL_0069: ldc.i4.m1 + IL_006a: ret .line 16707566,16707566 : 0,0 '' - IL_006a: ldc.i4.0 - IL_006b: ret + IL_006b: ldc.i4.0 + IL_006c: ret } // end of method Point::CompareTo .method public hidebysig virtual final @@ -285,6 +290,7 @@ IL_0006: stloc.0 IL_0007: ldloc.0 IL_0008: stloc.1 + .line 16707566,16707566 : 0,0 '' IL_0009: ldarg.0 IL_000a: ldnull IL_000b: cgt.un @@ -306,6 +312,7 @@ IL_0024: ldloc.1 IL_0025: ldfld int32 TestFunction24/Point::x@ IL_002a: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_002c: ldloc.s V_4 IL_002e: ldloc.s V_5 IL_0030: bge.s IL_0036 @@ -324,6 +331,7 @@ IL_003c: nop .line 16707566,16707566 : 0,0 '' IL_003d: stloc.2 + .line 16707566,16707566 : 0,0 '' IL_003e: ldloc.2 IL_003f: ldc.i4.0 IL_0040: bge.s IL_0044 @@ -350,6 +358,7 @@ IL_0055: ldloc.1 IL_0056: ldfld int32 TestFunction24/Point::y@ IL_005b: stloc.s V_8 + .line 16707566,16707566 : 0,0 '' IL_005d: ldloc.s V_7 IL_005f: ldloc.s V_8 IL_0061: bge.s IL_0065 @@ -388,56 +397,58 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 58 (0x3a) + // Code size 59 (0x3b) .maxstack 7 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IEqualityComparer V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0038 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.1 - IL_000e: stloc.1 - IL_000f: ldarg.0 - IL_0010: ldfld int32 TestFunction24/Point::y@ - IL_0015: ldloc.0 - IL_0016: ldc.i4.6 - IL_0017: shl - IL_0018: ldloc.0 - IL_0019: ldc.i4.2 - IL_001a: shr - IL_001b: add + .line 4,4 : 6,11 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0039 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.1 + IL_000f: stloc.1 + IL_0010: ldarg.0 + IL_0011: ldfld int32 TestFunction24/Point::y@ + IL_0016: ldloc.0 + IL_0017: ldc.i4.6 + IL_0018: shl + IL_0019: ldloc.0 + IL_001a: ldc.i4.2 + IL_001b: shr IL_001c: add IL_001d: add - IL_001e: stloc.0 - IL_001f: ldc.i4 0x9e3779b9 - IL_0024: ldarg.1 - IL_0025: stloc.2 - IL_0026: ldarg.0 - IL_0027: ldfld int32 TestFunction24/Point::x@ - IL_002c: ldloc.0 - IL_002d: ldc.i4.6 - IL_002e: shl - IL_002f: ldloc.0 - IL_0030: ldc.i4.2 - IL_0031: shr - IL_0032: add + IL_001e: add + IL_001f: stloc.0 + IL_0020: ldc.i4 0x9e3779b9 + IL_0025: ldarg.1 + IL_0026: stloc.2 + IL_0027: ldarg.0 + IL_0028: ldfld int32 TestFunction24/Point::x@ + IL_002d: ldloc.0 + IL_002e: ldc.i4.6 + IL_002f: shl + IL_0030: ldloc.0 + IL_0031: ldc.i4.2 + IL_0032: shr IL_0033: add IL_0034: add - IL_0035: stloc.0 - IL_0036: ldloc.0 - IL_0037: ret + IL_0035: add + IL_0036: stloc.0 + IL_0037: ldloc.0 + IL_0038: ret .line 16707566,16707566 : 0,0 '' - IL_0038: ldc.i4.0 - IL_0039: ret + IL_0039: ldc.i4.0 + IL_003a: ret } // end of method Point::GetHashCode .method public hidebysig virtual final @@ -458,112 +469,118 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 65 (0x41) + // Code size 66 (0x42) .maxstack 4 .locals init ([0] class TestFunction24/Point V_0, [1] class TestFunction24/Point V_1, [2] class [mscorlib]System.Collections.IEqualityComparer V_2, [3] class [mscorlib]System.Collections.IEqualityComparer V_3) + .line 4,4 : 6,11 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0039 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst TestFunction24/Point - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0037 + IL_0007: ldarg.1 + IL_0008: isinst TestFunction24/Point + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0038 .line 16707566,16707566 : 0,0 '' - IL_0010: ldloc.0 - IL_0011: stloc.1 - IL_0012: ldarg.2 - IL_0013: stloc.2 - IL_0014: ldarg.0 - IL_0015: ldfld int32 TestFunction24/Point::x@ - IL_001a: ldloc.1 - IL_001b: ldfld int32 TestFunction24/Point::x@ - IL_0020: ceq - IL_0022: brfalse.s IL_0035 + IL_0011: ldloc.0 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldarg.2 + IL_0014: stloc.2 + IL_0015: ldarg.0 + IL_0016: ldfld int32 TestFunction24/Point::x@ + IL_001b: ldloc.1 + IL_001c: ldfld int32 TestFunction24/Point::x@ + IL_0021: ceq + IL_0023: brfalse.s IL_0036 .line 16707566,16707566 : 0,0 '' - IL_0024: ldarg.2 - IL_0025: stloc.3 - IL_0026: ldarg.0 - IL_0027: ldfld int32 TestFunction24/Point::y@ - IL_002c: ldloc.1 - IL_002d: ldfld int32 TestFunction24/Point::y@ - IL_0032: ceq - IL_0034: ret + IL_0025: ldarg.2 + IL_0026: stloc.3 + IL_0027: ldarg.0 + IL_0028: ldfld int32 TestFunction24/Point::y@ + IL_002d: ldloc.1 + IL_002e: ldfld int32 TestFunction24/Point::y@ + IL_0033: ceq + IL_0035: ret .line 16707566,16707566 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 16707566,16707566 : 0,0 '' - IL_0037: ldc.i4.0 - IL_0038: ret + IL_0038: ldc.i4.0 + IL_0039: ret .line 16707566,16707566 : 0,0 '' - IL_0039: ldarg.1 - IL_003a: ldnull - IL_003b: cgt.un - IL_003d: ldc.i4.0 - IL_003e: ceq - IL_0040: ret + IL_003a: ldarg.1 + IL_003b: ldnull + IL_003c: cgt.un + IL_003e: ldc.i4.0 + IL_003f: ceq + IL_0041: ret } // end of method Point::Equals .method public hidebysig virtual final instance bool Equals(class TestFunction24/Point obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 53 (0x35) + // Code size 54 (0x36) .maxstack 8 + .line 4,4 : 6,11 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_002b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_002c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 TestFunction24/Point::x@ - IL_0012: ldarg.1 - IL_0013: ldfld int32 TestFunction24/Point::x@ - IL_0018: bne.un.s IL_0029 + IL_000d: ldarg.0 + IL_000e: ldfld int32 TestFunction24/Point::x@ + IL_0013: ldarg.1 + IL_0014: ldfld int32 TestFunction24/Point::x@ + IL_0019: bne.un.s IL_002a .line 16707566,16707566 : 0,0 '' - IL_001a: ldarg.0 - IL_001b: ldfld int32 TestFunction24/Point::y@ - IL_0020: ldarg.1 - IL_0021: ldfld int32 TestFunction24/Point::y@ - IL_0026: ceq - IL_0028: ret + IL_001b: ldarg.0 + IL_001c: ldfld int32 TestFunction24/Point::y@ + IL_0021: ldarg.1 + IL_0022: ldfld int32 TestFunction24/Point::y@ + IL_0027: ceq + IL_0029: ret .line 16707566,16707566 : 0,0 '' - IL_0029: ldc.i4.0 - IL_002a: ret + IL_002a: ldc.i4.0 + IL_002b: ret .line 16707566,16707566 : 0,0 '' - IL_002b: ldc.i4.0 - IL_002c: ret + IL_002c: ldc.i4.0 + IL_002d: ret .line 16707566,16707566 : 0,0 '' - IL_002d: ldarg.1 - IL_002e: ldnull - IL_002f: cgt.un - IL_0031: ldc.i4.0 - IL_0032: ceq - IL_0034: ret + IL_002e: ldarg.1 + IL_002f: ldnull + IL_0030: cgt.un + IL_0032: ldc.i4.0 + IL_0033: ceq + IL_0035: ret } // end of method Point::Equals .method public hidebysig virtual final @@ -577,6 +594,7 @@ IL_0000: ldarg.1 IL_0001: isinst TestFunction24/Point IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -728,6 +746,7 @@ .line 18,18 : 5,23 '' IL_0067: ldloc.0 IL_0068: stloc.2 + .line 16707566,16707566 : 0,0 '' IL_0069: ldloc.2 IL_006a: brfalse.s IL_0086 @@ -880,6 +899,7 @@ .line 30,30 : 5,26 '' IL_0006: ldloc.0 IL_0007: stloc.2 + .line 16707566,16707566 : 0,0 '' IL_0008: ldloc.2 IL_0009: brfalse.s IL_0016 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction3b.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction3b.il.bsl index 89eb054091..605bb5ca37 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction3b.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction3b.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000200 Length: 0x0000008A } .module TestFunction3b.exe -// MVID: {60BD473A-A662-4FC9-A745-03833A47BD60} +// MVID: {611C4D9E-A662-4FC9-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x059B0000 +// Image base: 0x053D0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -75,53 +75,56 @@ .method public static void TestFunction3b() cil managed { - // Code size 65 (0x41) + // Code size 66 (0x42) .maxstack 3 .locals init ([0] int32 x, [1] string V_1, [2] class [mscorlib]System.Exception V_2, [3] class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 V_3) - .line 11,11 : 8,31 '' + .line 10,10 : 5,8 '' .try { - IL_0000: call int32 TestFunction3b::TestFunction1() - IL_0005: stloc.0 + IL_0000: nop + .line 11,11 : 8,31 '' + IL_0001: call int32 TestFunction3b::TestFunction1() + IL_0006: stloc.0 .line 12,12 : 8,24 '' - IL_0006: ldstr "hello" - IL_000b: stloc.1 - IL_000c: ldloc.1 - IL_000d: call class [mscorlib]System.Exception [FSharp.Core]Microsoft.FSharp.Core.Operators::Failure(string) - IL_0012: throw + IL_0007: ldstr "hello" + IL_000c: stloc.1 + IL_000d: ldloc.1 + IL_000e: call class [mscorlib]System.Exception [FSharp.Core]Microsoft.FSharp.Core.Operators::Failure(string) + IL_0013: throw .line 13,13 : 5,9 '' } // end .try catch [mscorlib]System.Object { - IL_0013: castclass [mscorlib]System.Exception - IL_0018: stloc.2 - IL_0019: ldloc.2 - IL_001a: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::FailurePattern(class [mscorlib]System.Exception) - IL_001f: stloc.3 - IL_0020: ldloc.3 - IL_0021: brfalse.s IL_0035 + IL_0014: castclass [mscorlib]System.Exception + IL_0019: stloc.2 + IL_001a: ldloc.2 + IL_001b: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::FailurePattern(class [mscorlib]System.Exception) + IL_0020: stloc.3 + .line 100001,100001 : 0,0 '' + IL_0021: ldloc.3 + IL_0022: brfalse.s IL_0036 .line 14,14 : 8,23 '' - IL_0023: ldstr "World" - IL_0028: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_002d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0032: pop - IL_0033: leave.s IL_0040 + IL_0024: ldstr "World" + IL_0029: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_002e: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0033: pop + IL_0034: leave.s IL_0041 .line 100001,100001 : 0,0 '' - IL_0035: rethrow - IL_0037: ldnull - IL_0038: unbox.any [FSharp.Core]Microsoft.FSharp.Core.Unit - IL_003d: pop - IL_003e: leave.s IL_0040 + IL_0036: rethrow + IL_0038: ldnull + IL_0039: unbox.any [FSharp.Core]Microsoft.FSharp.Core.Unit + IL_003e: pop + IL_003f: leave.s IL_0041 .line 100001,100001 : 0,0 '' } // end handler - IL_0040: ret + IL_0041: ret } // end of method TestFunction3b::TestFunction3b } // end of class TestFunction3b diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction3c.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction3c.il.bsl index b30fe1df23..6662393865 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction3c.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction3c.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x00000200 Length: 0x0000008A } .module TestFunction3c.exe -// MVID: {60BD4158-A662-4FAC-A745-03835841BD60} +// MVID: {611C4D9E-A662-4FAC-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06570000 +// Image base: 0x06740000 // =============== CLASS MEMBERS DECLARATION =================== @@ -80,7 +80,7 @@ .method public static void TestFunction3c() cil managed { - // Code size 95 (0x5f) + // Code size 97 (0x61) .maxstack 4 .locals init ([0] int32 x, [1] string V_1, @@ -88,59 +88,66 @@ [3] class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 V_3, [4] string msg, [5] string V_5) - .line 11,11 : 8,31 '' + .line 10,10 : 5,8 '' .try { - IL_0000: call int32 TestFunction3c::TestFunction1() - IL_0005: stloc.0 + IL_0000: nop + .line 11,11 : 8,31 '' + IL_0001: call int32 TestFunction3c::TestFunction1() + IL_0006: stloc.0 .line 12,12 : 8,24 '' - IL_0006: ldstr "hello" - IL_000b: stloc.1 - IL_000c: ldloc.1 - IL_000d: call class [mscorlib]System.Exception [FSharp.Core]Microsoft.FSharp.Core.Operators::Failure(string) - IL_0012: throw + IL_0007: ldstr "hello" + IL_000c: stloc.1 + IL_000d: ldloc.1 + IL_000e: call class [mscorlib]System.Exception [FSharp.Core]Microsoft.FSharp.Core.Operators::Failure(string) + IL_0013: throw .line 13,13 : 5,9 '' } // end .try catch [mscorlib]System.Object { - IL_0013: castclass [mscorlib]System.Exception - IL_0018: stloc.2 - IL_0019: ldloc.2 - IL_001a: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::FailurePattern(class [mscorlib]System.Exception) - IL_001f: stloc.3 - IL_0020: ldloc.3 - IL_0021: brfalse.s IL_0053 - - IL_0023: ldloc.3 - IL_0024: call instance !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::get_Value() - IL_0029: stloc.s msg - IL_002b: ldloc.s msg - IL_002d: ldstr "hello" - IL_0032: call bool [netstandard]System.String::Equals(string, + IL_0014: castclass [mscorlib]System.Exception + IL_0019: stloc.2 + IL_001a: ldloc.2 + IL_001b: call class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 [FSharp.Core]Microsoft.FSharp.Core.Operators::FailurePattern(class [mscorlib]System.Exception) + IL_0020: stloc.3 + .line 100001,100001 : 0,0 '' + IL_0021: ldloc.3 + IL_0022: brfalse.s IL_0055 + + .line 13,13 : 27,40 '' + IL_0024: nop + .line 100001,100001 : 0,0 '' + IL_0025: ldloc.3 + IL_0026: call instance !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::get_Value() + IL_002b: stloc.s msg + IL_002d: ldloc.s msg + IL_002f: ldstr "hello" + IL_0034: call bool [netstandard]System.String::Equals(string, string) - IL_0037: brfalse.s IL_0053 + IL_0039: brfalse.s IL_0055 - IL_0039: ldloc.3 - IL_003a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::get_Value() - IL_003f: stloc.s V_5 + .line 100001,100001 : 0,0 '' + IL_003b: ldloc.3 + IL_003c: call instance !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::get_Value() + IL_0041: stloc.s V_5 .line 14,14 : 8,23 '' - IL_0041: ldstr "World" - IL_0046: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_004b: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0050: pop - IL_0051: leave.s IL_005e + IL_0043: ldstr "World" + IL_0048: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_004d: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0052: pop + IL_0053: leave.s IL_0060 .line 100001,100001 : 0,0 '' - IL_0053: rethrow - IL_0055: ldnull - IL_0056: unbox.any [FSharp.Core]Microsoft.FSharp.Core.Unit - IL_005b: pop - IL_005c: leave.s IL_005e + IL_0055: rethrow + IL_0057: ldnull + IL_0058: unbox.any [FSharp.Core]Microsoft.FSharp.Core.Unit + IL_005d: pop + IL_005e: leave.s IL_0060 .line 100001,100001 : 0,0 '' } // end handler - IL_005e: ret + IL_0060: ret } // end of method TestFunction3c::TestFunction3c } // end of class TestFunction3c diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction9b4.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction9b4.il.bsl index 3c3c35b89a..1aede1f2c2 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction9b4.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/TestFunction9b4.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000248 Length: 0x00000085 } .module TestFunction9b4.exe -// MVID: {60B68B97-A091-56C1-A745-0383978BB660} +// MVID: {611C4D9E-A091-56C1-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06CC0000 +// Image base: 0x07100000 // =============== CLASS MEMBERS DECLARATION =================== @@ -90,33 +90,35 @@ .method public static void main@() cil managed { .entrypoint - // Code size 42 (0x2a) + // Code size 43 (0x2b) .maxstack 3 .locals init ([0] int32 x) .line 10,10 : 1,10 '' IL_0000: call int32 TestFunction9b4::get_x() IL_0005: stloc.0 .line 12,12 : 1,17 '' - IL_0006: call int32 TestFunction9b4::get_x() - IL_000b: box [mscorlib]System.Int32 - IL_0010: brfalse.s IL_0014 + IL_0006: nop + .line 100001,100001 : 0,0 '' + IL_0007: call int32 TestFunction9b4::get_x() + IL_000c: box [mscorlib]System.Int32 + IL_0011: brfalse.s IL_0015 - IL_0012: br.s IL_0027 + IL_0013: br.s IL_0028 .line 13,13 : 13,30 '' - IL_0014: ldstr "Is null" - IL_0019: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_001e: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0023: pop + IL_0015: ldstr "Is null" + IL_001a: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_001f: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0024: pop .line 100001,100001 : 0,0 '' - IL_0024: nop - IL_0025: br.s IL_0029 + IL_0025: nop + IL_0026: br.s IL_002a .line 14,14 : 10,12 '' - IL_0027: nop - .line 100001,100001 : 0,0 '' IL_0028: nop - IL_0029: ret + .line 100001,100001 : 0,0 '' + IL_0029: nop + IL_002a: ret } // end of method $TestFunction9b4::main@ } // end of class ''.$TestFunction9b4 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22f.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22f.il.bsl index 1e52b73176..1d17863b46 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22f.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22f.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x00000160 Length: 0x00000056 } .module Testfunction22f.exe -// MVID: {60B68B97-C040-2523-A745-0383978BB660} +// MVID: {611C4D9E-C040-2523-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06DC0000 +// Image base: 0x04D20000 // =============== CLASS MEMBERS DECLARATION =================== @@ -75,6 +75,7 @@ .line 3,3 : 1,15 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\Testfunction22f.fs' IL_0000: ldstr "A" IL_0005: stloc.0 + .line 100001,100001 : 0,0 '' IL_0006: ldloc.0 IL_0007: ldstr "A" IL_000c: call bool [netstandard]System.String::Equals(string, diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22g.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22g.il.bsl index 9553805a4c..67305e6544 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22g.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22g.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000160 Length: 0x00000056 } .module Testfunction22g.exe -// MVID: {60B68B97-CA89-74DB-A745-0383978BB660} +// MVID: {611C4D9E-CA89-74DB-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06FA0000 +// Image base: 0x04D30000 // =============== CLASS MEMBERS DECLARATION =================== @@ -63,24 +63,26 @@ .method public static void main@() cil managed { .entrypoint - // Code size 18 (0x12) + // Code size 19 (0x13) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' .line 3,3 : 1,13 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\Testfunction22g.fs' - IL_0000: ldc.i4.1 - IL_0001: brfalse.s IL_000b + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldc.i4.1 + IL_0002: brfalse.s IL_000c .line 3,3 : 14,40 '' - IL_0003: call void [mscorlib]System.Console::WriteLine() + IL_0004: call void [mscorlib]System.Console::WriteLine() .line 100001,100001 : 0,0 '' - IL_0008: nop - IL_0009: br.s IL_0011 + IL_0009: nop + IL_000a: br.s IL_0012 .line 3,3 : 46,72 '' - IL_000b: call void [mscorlib]System.Console::WriteLine() + IL_000c: call void [mscorlib]System.Console::WriteLine() .line 100001,100001 : 0,0 '' - IL_0010: nop - IL_0011: ret + IL_0011: nop + IL_0012: ret } // end of method $Testfunction22g::main@ } // end of class ''.$Testfunction22g diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22h.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22h.il.bsl index 467c097219..48655e7bed 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22h.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction22h.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000160 Length: 0x00000056 } .module Testfunction22h.exe -// MVID: {60BD4158-0266-39F6-A745-03835841BD60} +// MVID: {611C4D9E-0266-39F6-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07240000 +// Image base: 0x066F0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -63,29 +63,31 @@ .method public static void main@() cil managed { .entrypoint - // Code size 21 (0x15) + // Code size 22 (0x16) .maxstack 3 .locals init ([0] class [mscorlib]System.Exception V_0) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 4,4 : 4,30 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\Testfunction22h.fs' + .line 3,3 : 1,4 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\Testfunction22h.fs' .try { - IL_0000: call void [mscorlib]System.Console::WriteLine() - IL_0005: leave.s IL_0014 + IL_0000: nop + .line 4,4 : 4,30 '' + IL_0001: call void [mscorlib]System.Console::WriteLine() + IL_0006: leave.s IL_0015 .line 5,5 : 1,5 '' } // end .try catch [mscorlib]System.Object { - IL_0007: castclass [mscorlib]System.Exception - IL_000c: stloc.0 + IL_0008: castclass [mscorlib]System.Exception + IL_000d: stloc.0 .line 6,6 : 11,37 '' - IL_000d: call void [mscorlib]System.Console::WriteLine() - IL_0012: leave.s IL_0014 + IL_000e: call void [mscorlib]System.Console::WriteLine() + IL_0013: leave.s IL_0015 .line 100001,100001 : 0,0 '' } // end handler - IL_0014: ret + IL_0015: ret } // end of method $Testfunction22h::main@ } // end of class ''.$Testfunction22h diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction3.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction3.il.bsl index fe0c97e48f..35c8295e14 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction3.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction3.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000200 Length: 0x00000088 } .module TestFunction3.exe -// MVID: {60BD4158-663A-8929-A745-03835841BD60} +// MVID: {611C4D9E-663A-8929-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x050D0000 +// Image base: 0x07360000 // =============== CLASS MEMBERS DECLARATION =================== @@ -75,38 +75,40 @@ .method public static void TestFunction3() cil managed { - // Code size 49 (0x31) + // Code size 50 (0x32) .maxstack 3 .locals init ([0] int32 x, [1] class [mscorlib]System.Exception V_1) - .line 11,11 : 8,31 '' + .line 10,10 : 5,8 '' .try { - IL_0000: call int32 TestFunction3::TestFunction1() - IL_0005: stloc.0 + IL_0000: nop + .line 11,11 : 8,31 '' + IL_0001: call int32 TestFunction3::TestFunction1() + IL_0006: stloc.0 .line 12,12 : 8,23 '' - IL_0006: ldstr "Hello" - IL_000b: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0010: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0015: pop - IL_0016: leave.s IL_0030 + IL_0007: ldstr "Hello" + IL_000c: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0011: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0016: pop + IL_0017: leave.s IL_0031 .line 13,13 : 5,9 '' } // end .try catch [mscorlib]System.Object { - IL_0018: castclass [mscorlib]System.Exception - IL_001d: stloc.1 + IL_0019: castclass [mscorlib]System.Exception + IL_001e: stloc.1 .line 14,14 : 8,23 '' - IL_001e: ldstr "World" - IL_0023: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0028: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_002d: pop - IL_002e: leave.s IL_0030 + IL_001f: ldstr "World" + IL_0024: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0029: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_002e: pop + IL_002f: leave.s IL_0031 .line 100001,100001 : 0,0 '' } // end handler - IL_0030: ret + IL_0031: ret } // end of method TestFunction3::TestFunction3 } // end of class TestFunction3 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction4.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction4.il.bsl index 799c175fb4..d2e49c8e9d 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction4.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction4.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000200 Length: 0x00000088 } .module TestFunction4.exe -// MVID: {60BD4158-665B-8929-A745-03835841BD60} +// MVID: {611C4D9E-665B-8929-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x04B90000 +// Image base: 0x067E0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -75,35 +75,37 @@ .method public static void TestFunction4() cil managed { - // Code size 43 (0x2b) + // Code size 44 (0x2c) .maxstack 3 .locals init ([0] int32 x) - .line 11,11 : 8,31 '' + .line 10,10 : 5,8 '' .try { - IL_0000: call int32 TestFunction4::TestFunction1() - IL_0005: stloc.0 + IL_0000: nop + .line 11,11 : 8,31 '' + IL_0001: call int32 TestFunction4::TestFunction1() + IL_0006: stloc.0 .line 12,12 : 8,23 '' - IL_0006: ldstr "Hello" - IL_000b: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0010: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0015: pop - IL_0016: leave.s IL_002a + IL_0007: ldstr "Hello" + IL_000c: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0011: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0016: pop + IL_0017: leave.s IL_002b .line 13,13 : 5,12 '' } // end .try finally { - IL_0018: nop + IL_0019: nop .line 14,14 : 8,23 '' - IL_0019: ldstr "World" - IL_001e: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) - IL_0023: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) - IL_0028: pop - IL_0029: endfinally + IL_001a: ldstr "World" + IL_001f: newobj instance void class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`5::.ctor(string) + IL_0024: call !!0 [FSharp.Core]Microsoft.FSharp.Core.ExtraTopLevelOperators::PrintFormatLine(class [FSharp.Core]Microsoft.FSharp.Core.PrintfFormat`4) + IL_0029: pop + IL_002a: endfinally .line 100001,100001 : 0,0 '' } // end handler - IL_002a: ret + IL_002b: ret } // end of method TestFunction4::TestFunction4 } // end of class TestFunction4 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction8.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction8.il.bsl index 75cd37c665..4cb5c39cf6 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction8.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction8.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001C8 Length: 0x00000070 } .module TestFunction8.exe -// MVID: {60B68B97-65CF-8929-A745-0383978BB660} +// MVID: {611C4D9E-65CF-8929-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07330000 +// Image base: 0x06DC0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -53,25 +53,27 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static int32 TestFunction8(int32 x) cil managed { - // Code size 12 (0xc) + // Code size 13 (0xd) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' .line 5,5 : 5,18 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction8.fs' - IL_0000: ldarg.0 - IL_0001: ldc.i4.3 - IL_0002: ble.s IL_0008 + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldc.i4.3 + IL_0003: ble.s IL_0009 .line 6,6 : 9,12 '' - IL_0004: ldarg.0 - IL_0005: ldc.i4.4 - IL_0006: add - IL_0007: ret + IL_0005: ldarg.0 + IL_0006: ldc.i4.4 + IL_0007: add + IL_0008: ret .line 7,7 : 10,13 '' - IL_0008: ldarg.0 - IL_0009: ldc.i4.4 - IL_000a: sub - IL_000b: ret + IL_0009: ldarg.0 + IL_000a: ldc.i4.4 + IL_000b: sub + IL_000c: ret } // end of method TestFunction8::TestFunction8 } // end of class TestFunction8 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9.il.bsl index aa1372d9a4..85f0521e67 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001D8 Length: 0x00000070 } .module TestFunction9.exe -// MVID: {60B68B97-64F4-8929-A745-0383978BB660} +// MVID: {611C4D9E-64F4-8929-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06B70000 +// Image base: 0x05890000 // =============== CLASS MEMBERS DECLARATION =================== @@ -53,29 +53,31 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static string TestFunction9(int32 x) cil managed { - // Code size 36 (0x24) + // Code size 37 (0x25) .maxstack 8 .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' .line 5,5 : 5,17 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction9.fs' - IL_0000: ldarg.0 - IL_0001: ldc.i4.3 - IL_0002: sub - IL_0003: switch ( - IL_0012, - IL_0018) - IL_0010: br.s IL_001e + IL_0000: nop + .line 100001,100001 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldc.i4.3 + IL_0003: sub + IL_0004: switch ( + IL_0013, + IL_0019) + IL_0011: br.s IL_001f .line 6,6 : 12,19 '' - IL_0012: ldstr "three" - IL_0017: ret + IL_0013: ldstr "three" + IL_0018: ret .line 7,7 : 12,18 '' - IL_0018: ldstr "four" - IL_001d: ret + IL_0019: ldstr "four" + IL_001e: ret .line 8,8 : 12,18 '' - IL_001e: ldstr "five" - IL_0023: ret + IL_001f: ldstr "five" + IL_0024: ret } // end of method TestFunction9::TestFunction9 } // end of class TestFunction9 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b.il.bsl index 49d2757735..f9085d417d 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000001F8 Length: 0x00000072 } .module TestFunction9b.exe -// MVID: {60B68B97-A52C-4FC9-A745-0383978BB660} +// MVID: {611C4D9E-A52C-4FC9-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00DB0000 +// Image base: 0x06EC0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -53,7 +53,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static string TestFunction9b(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 x) cil managed { - // Code size 409 (0x199) + // Code size 412 (0x19c) .maxstack 4 .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_0, [1] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_1, @@ -72,166 +72,190 @@ .line 5,5 : 5,17 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction9b.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0008: brfalse IL_0193 + IL_0008: brfalse IL_0196 IL_000d: ldloc.0 IL_000e: stloc.1 + .line 100001,100001 : 0,0 '' IL_000f: ldloc.1 IL_0010: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() IL_0015: ldc.i4.1 IL_0016: sub IL_0017: switch ( - IL_00fd) + IL_00ff) + .line 100001,100001 : 0,0 '' IL_0020: ldloc.1 IL_0021: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() IL_0026: ldc.i4.3 IL_0027: sub IL_0028: switch ( - IL_0078) + IL_0079) + .line 100001,100001 : 0,0 '' IL_0031: ldloc.1 IL_0032: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0037: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_003c: brfalse IL_0193 + IL_003c: brfalse IL_0196 IL_0041: ldloc.1 IL_0042: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0047: stloc.2 + .line 100001,100001 : 0,0 '' IL_0048: ldloc.2 IL_0049: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_004e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0053: brtrue IL_0193 - - IL_0058: ldloc.2 - IL_0059: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_005e: stloc.3 - IL_005f: ldloc.1 - IL_0060: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0065: stloc.s a - IL_0067: ldloc.s a - IL_0069: ldloc.3 - IL_006a: add - IL_006b: ldc.i4.4 - IL_006c: ceq - IL_006e: brfalse IL_0193 - - IL_0073: br IL_017d - - IL_0078: ldloc.1 - IL_0079: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_007e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0083: brfalse IL_0193 - - IL_0088: ldloc.1 - IL_0089: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_008e: stloc.s V_7 - IL_0090: ldloc.s V_7 - IL_0092: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0097: ldc.i4.4 - IL_0098: sub - IL_0099: switch ( - IL_00e7) - IL_00a2: ldloc.s V_7 - IL_00a4: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00a9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00ae: brtrue IL_0193 - - IL_00b3: ldloc.s V_7 - IL_00b5: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00ba: stloc.s V_8 - IL_00bc: ldloc.1 - IL_00bd: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00c2: stloc.s V_9 - IL_00c4: ldloc.s V_9 - IL_00c6: ldloc.s V_8 - IL_00c8: add - IL_00c9: ldc.i4.4 - IL_00ca: ceq - IL_00cc: brfalse IL_0193 - - IL_00d1: ldloc.s V_7 - IL_00d3: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00d8: ldloc.1 - IL_00d9: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00de: stloc.s V_6 - IL_00e0: stloc.s V_5 - IL_00e2: br IL_018d - - IL_00e7: ldloc.s V_7 - IL_00e9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00ee: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00f3: brtrue IL_0193 - - IL_00f8: br IL_0177 - - IL_00fd: ldloc.1 - IL_00fe: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0103: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0108: brfalse IL_0193 - - IL_010d: ldloc.1 - IL_010e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0113: stloc.s V_10 - IL_0115: ldloc.s V_10 - IL_0117: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_011c: ldc.i4.2 - IL_011d: sub - IL_011e: switch ( - IL_0163) - IL_0127: ldloc.s V_10 - IL_0129: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_012e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0133: brtrue.s IL_0193 - - IL_0135: ldloc.s V_10 - IL_0137: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_013c: stloc.s V_11 - IL_013e: ldloc.1 - IL_013f: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0144: stloc.s V_12 - IL_0146: ldloc.s V_12 - IL_0148: ldloc.s V_11 - IL_014a: add - IL_014b: ldc.i4.4 - IL_014c: ceq - IL_014e: brfalse.s IL_0193 - - IL_0150: ldloc.s V_10 - IL_0152: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0157: ldloc.1 - IL_0158: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_015d: stloc.s V_6 - IL_015f: stloc.s V_5 - IL_0161: br.s IL_018d - - IL_0163: ldloc.s V_10 - IL_0165: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_016a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_016f: brtrue.s IL_0193 + IL_0053: brtrue IL_0196 + + .line 8,8 : 18,25 '' + IL_0058: nop + .line 100001,100001 : 0,0 '' + IL_0059: ldloc.2 + IL_005a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_005f: stloc.3 + IL_0060: ldloc.1 + IL_0061: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0066: stloc.s a + IL_0068: ldloc.s a + IL_006a: ldloc.3 + IL_006b: add + IL_006c: ldc.i4.4 + IL_006d: ceq + IL_006f: brfalse IL_0196 + + IL_0074: br IL_0180 + + .line 100001,100001 : 0,0 '' + IL_0079: ldloc.1 + IL_007a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_007f: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0084: brfalse IL_0196 + + IL_0089: ldloc.1 + IL_008a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_008f: stloc.s V_7 + .line 100001,100001 : 0,0 '' + IL_0091: ldloc.s V_7 + IL_0093: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0098: ldc.i4.4 + IL_0099: sub + IL_009a: switch ( + IL_00e9) + .line 100001,100001 : 0,0 '' + IL_00a3: ldloc.s V_7 + IL_00a5: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00aa: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00af: brtrue IL_0196 + + .line 8,8 : 18,25 '' + IL_00b4: nop + .line 100001,100001 : 0,0 '' + IL_00b5: ldloc.s V_7 + IL_00b7: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00bc: stloc.s V_8 + IL_00be: ldloc.1 + IL_00bf: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00c4: stloc.s V_9 + IL_00c6: ldloc.s V_9 + IL_00c8: ldloc.s V_8 + IL_00ca: add + IL_00cb: ldc.i4.4 + IL_00cc: ceq + IL_00ce: brfalse IL_0196 + + .line 100001,100001 : 0,0 '' + IL_00d3: ldloc.s V_7 + IL_00d5: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00da: ldloc.1 + IL_00db: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00e0: stloc.s V_6 + IL_00e2: stloc.s V_5 + IL_00e4: br IL_0190 + + .line 100001,100001 : 0,0 '' + IL_00e9: ldloc.s V_7 + IL_00eb: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00f0: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00f5: brtrue IL_0196 + + IL_00fa: br IL_017a + + .line 100001,100001 : 0,0 '' + IL_00ff: ldloc.1 + IL_0100: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0105: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_010a: brfalse IL_0196 + + IL_010f: ldloc.1 + IL_0110: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0115: stloc.s V_10 + .line 100001,100001 : 0,0 '' + IL_0117: ldloc.s V_10 + IL_0119: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_011e: ldc.i4.2 + IL_011f: sub + IL_0120: switch ( + IL_0166) + .line 100001,100001 : 0,0 '' + IL_0129: ldloc.s V_10 + IL_012b: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0130: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0135: brtrue.s IL_0196 + + .line 8,8 : 18,25 '' + IL_0137: nop + .line 100001,100001 : 0,0 '' + IL_0138: ldloc.s V_10 + IL_013a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_013f: stloc.s V_11 + IL_0141: ldloc.1 + IL_0142: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0147: stloc.s V_12 + IL_0149: ldloc.s V_12 + IL_014b: ldloc.s V_11 + IL_014d: add + IL_014e: ldc.i4.4 + IL_014f: ceq + IL_0151: brfalse.s IL_0196 + + .line 100001,100001 : 0,0 '' + IL_0153: ldloc.s V_10 + IL_0155: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_015a: ldloc.1 + IL_015b: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0160: stloc.s V_6 + IL_0162: stloc.s V_5 + IL_0164: br.s IL_0190 + + .line 100001,100001 : 0,0 '' + IL_0166: ldloc.s V_10 + IL_0168: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_016d: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0172: brtrue.s IL_0196 .line 6,6 : 16,23 '' - IL_0171: ldstr "three" - IL_0176: ret + IL_0174: ldstr "three" + IL_0179: ret .line 7,7 : 16,23 '' - IL_0177: ldstr "seven" - IL_017c: ret - - .line 5,5 : 5,17 '' - IL_017d: ldloc.2 - IL_017e: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0183: stloc.s V_5 - IL_0185: ldloc.1 - IL_0186: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_018b: stloc.s V_6 + IL_017a: ldstr "seven" + IL_017f: ret + + .line 100001,100001 : 0,0 '' + IL_0180: ldloc.2 + IL_0181: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0186: stloc.s V_5 + IL_0188: ldloc.1 + IL_0189: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_018e: stloc.s V_6 .line 8,8 : 29,35 '' - IL_018d: ldstr "four" - IL_0192: ret + IL_0190: ldstr "four" + IL_0195: ret .line 9,9 : 12,17 '' - IL_0193: ldstr "big" - IL_0198: ret + IL_0196: ldstr "big" + IL_019b: ret } // end of method TestFunction9b::TestFunction9b } // end of class TestFunction9b diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b1.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b1.il.bsl index 03e2dd2971..1c6f085474 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b1.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b1.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000208 Length: 0x00000083 } .module TestFunction9b1.exe -// MVID: {60B68B97-A406-DAF4-A745-0383978BB660} +// MVID: {611C4D9E-A406-DAF4-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x072C0000 +// Image base: 0x052D0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -53,7 +53,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static string TestFunction9b(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 x) cil managed { - // Code size 409 (0x199) + // Code size 412 (0x19c) .maxstack 4 .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_0, [1] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_1, @@ -72,166 +72,190 @@ .line 5,5 : 5,17 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction9b1.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0008: brfalse IL_0193 + IL_0008: brfalse IL_0196 IL_000d: ldloc.0 IL_000e: stloc.1 + .line 100001,100001 : 0,0 '' IL_000f: ldloc.1 IL_0010: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() IL_0015: ldc.i4.1 IL_0016: sub IL_0017: switch ( - IL_00fd) + IL_00ff) + .line 100001,100001 : 0,0 '' IL_0020: ldloc.1 IL_0021: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() IL_0026: ldc.i4.3 IL_0027: sub IL_0028: switch ( - IL_0078) + IL_0079) + .line 100001,100001 : 0,0 '' IL_0031: ldloc.1 IL_0032: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0037: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_003c: brfalse IL_0193 + IL_003c: brfalse IL_0196 IL_0041: ldloc.1 IL_0042: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0047: stloc.2 + .line 100001,100001 : 0,0 '' IL_0048: ldloc.2 IL_0049: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_004e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0053: brtrue IL_0193 - - IL_0058: ldloc.2 - IL_0059: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_005e: stloc.3 - IL_005f: ldloc.1 - IL_0060: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0065: stloc.s a - IL_0067: ldloc.s a - IL_0069: ldloc.3 - IL_006a: add - IL_006b: ldc.i4.4 - IL_006c: ceq - IL_006e: brfalse IL_0193 - - IL_0073: br IL_017d - - IL_0078: ldloc.1 - IL_0079: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_007e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0083: brfalse IL_0193 - - IL_0088: ldloc.1 - IL_0089: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_008e: stloc.s V_7 - IL_0090: ldloc.s V_7 - IL_0092: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0097: ldc.i4.4 - IL_0098: sub - IL_0099: switch ( - IL_00e7) - IL_00a2: ldloc.s V_7 - IL_00a4: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00a9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00ae: brtrue IL_0193 - - IL_00b3: ldloc.s V_7 - IL_00b5: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00ba: stloc.s V_8 - IL_00bc: ldloc.1 - IL_00bd: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00c2: stloc.s V_9 - IL_00c4: ldloc.s V_9 - IL_00c6: ldloc.s V_8 - IL_00c8: add - IL_00c9: ldc.i4.4 - IL_00ca: ceq - IL_00cc: brfalse IL_0193 - - IL_00d1: ldloc.s V_7 - IL_00d3: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00d8: ldloc.1 - IL_00d9: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00de: stloc.s V_6 - IL_00e0: stloc.s V_5 - IL_00e2: br IL_018d - - IL_00e7: ldloc.s V_7 - IL_00e9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00ee: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00f3: brtrue IL_0193 - - IL_00f8: br IL_0177 - - IL_00fd: ldloc.1 - IL_00fe: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0103: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0108: brfalse IL_0193 - - IL_010d: ldloc.1 - IL_010e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0113: stloc.s V_10 - IL_0115: ldloc.s V_10 - IL_0117: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_011c: ldc.i4.2 - IL_011d: sub - IL_011e: switch ( - IL_0163) - IL_0127: ldloc.s V_10 - IL_0129: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_012e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0133: brtrue.s IL_0193 - - IL_0135: ldloc.s V_10 - IL_0137: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_013c: stloc.s V_11 - IL_013e: ldloc.1 - IL_013f: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0144: stloc.s V_12 - IL_0146: ldloc.s V_12 - IL_0148: ldloc.s V_11 - IL_014a: add - IL_014b: ldc.i4.4 - IL_014c: ceq - IL_014e: brfalse.s IL_0193 - - IL_0150: ldloc.s V_10 - IL_0152: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0157: ldloc.1 - IL_0158: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_015d: stloc.s V_6 - IL_015f: stloc.s V_5 - IL_0161: br.s IL_018d - - IL_0163: ldloc.s V_10 - IL_0165: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_016a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_016f: brtrue.s IL_0193 + IL_0053: brtrue IL_0196 + + .line 8,8 : 18,25 '' + IL_0058: nop + .line 100001,100001 : 0,0 '' + IL_0059: ldloc.2 + IL_005a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_005f: stloc.3 + IL_0060: ldloc.1 + IL_0061: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0066: stloc.s a + IL_0068: ldloc.s a + IL_006a: ldloc.3 + IL_006b: add + IL_006c: ldc.i4.4 + IL_006d: ceq + IL_006f: brfalse IL_0196 + + IL_0074: br IL_0180 + + .line 100001,100001 : 0,0 '' + IL_0079: ldloc.1 + IL_007a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_007f: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0084: brfalse IL_0196 + + IL_0089: ldloc.1 + IL_008a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_008f: stloc.s V_7 + .line 100001,100001 : 0,0 '' + IL_0091: ldloc.s V_7 + IL_0093: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0098: ldc.i4.4 + IL_0099: sub + IL_009a: switch ( + IL_00e9) + .line 100001,100001 : 0,0 '' + IL_00a3: ldloc.s V_7 + IL_00a5: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00aa: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00af: brtrue IL_0196 + + .line 8,8 : 18,25 '' + IL_00b4: nop + .line 100001,100001 : 0,0 '' + IL_00b5: ldloc.s V_7 + IL_00b7: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00bc: stloc.s V_8 + IL_00be: ldloc.1 + IL_00bf: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00c4: stloc.s V_9 + IL_00c6: ldloc.s V_9 + IL_00c8: ldloc.s V_8 + IL_00ca: add + IL_00cb: ldc.i4.4 + IL_00cc: ceq + IL_00ce: brfalse IL_0196 + + .line 100001,100001 : 0,0 '' + IL_00d3: ldloc.s V_7 + IL_00d5: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00da: ldloc.1 + IL_00db: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00e0: stloc.s V_6 + IL_00e2: stloc.s V_5 + IL_00e4: br IL_0190 + + .line 100001,100001 : 0,0 '' + IL_00e9: ldloc.s V_7 + IL_00eb: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00f0: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00f5: brtrue IL_0196 + + IL_00fa: br IL_017a + + .line 100001,100001 : 0,0 '' + IL_00ff: ldloc.1 + IL_0100: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0105: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_010a: brfalse IL_0196 + + IL_010f: ldloc.1 + IL_0110: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0115: stloc.s V_10 + .line 100001,100001 : 0,0 '' + IL_0117: ldloc.s V_10 + IL_0119: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_011e: ldc.i4.2 + IL_011f: sub + IL_0120: switch ( + IL_0166) + .line 100001,100001 : 0,0 '' + IL_0129: ldloc.s V_10 + IL_012b: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0130: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0135: brtrue.s IL_0196 + + .line 8,8 : 18,25 '' + IL_0137: nop + .line 100001,100001 : 0,0 '' + IL_0138: ldloc.s V_10 + IL_013a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_013f: stloc.s V_11 + IL_0141: ldloc.1 + IL_0142: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0147: stloc.s V_12 + IL_0149: ldloc.s V_12 + IL_014b: ldloc.s V_11 + IL_014d: add + IL_014e: ldc.i4.4 + IL_014f: ceq + IL_0151: brfalse.s IL_0196 + + .line 100001,100001 : 0,0 '' + IL_0153: ldloc.s V_10 + IL_0155: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_015a: ldloc.1 + IL_015b: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0160: stloc.s V_6 + IL_0162: stloc.s V_5 + IL_0164: br.s IL_0190 + + .line 100001,100001 : 0,0 '' + IL_0166: ldloc.s V_10 + IL_0168: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_016d: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0172: brtrue.s IL_0196 .line 6,6 : 16,23 '' - IL_0171: ldstr "three" - IL_0176: ret + IL_0174: ldstr "three" + IL_0179: ret .line 7,7 : 16,23 '' - IL_0177: ldstr "seven" - IL_017c: ret - - .line 5,5 : 5,17 '' - IL_017d: ldloc.2 - IL_017e: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0183: stloc.s V_5 - IL_0185: ldloc.1 - IL_0186: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_018b: stloc.s V_6 + IL_017a: ldstr "seven" + IL_017f: ret + + .line 100001,100001 : 0,0 '' + IL_0180: ldloc.2 + IL_0181: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0186: stloc.s V_5 + IL_0188: ldloc.1 + IL_0189: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_018e: stloc.s V_6 .line 8,8 : 29,35 '' - IL_018d: ldstr "four" - IL_0192: ret + IL_0190: ldstr "four" + IL_0195: ret .line 9,9 : 12,17 '' - IL_0193: ldstr "big" - IL_0198: ret + IL_0196: ldstr "big" + IL_019b: ret } // end of method TestFunction9b1::TestFunction9b } // end of class TestFunction9b1 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b2.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b2.il.bsl index 1fa79b615e..2552f87ab2 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b2.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b2.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000208 Length: 0x00000083 } .module TestFunction9b2.exe -// MVID: {60B68B97-9C0B-E35E-A745-0383978BB660} +// MVID: {611C4D9E-9C0B-E35E-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07220000 +// Image base: 0x06C20000 // =============== CLASS MEMBERS DECLARATION =================== @@ -53,7 +53,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static string TestFunction9b(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 x) cil managed { - // Code size 409 (0x199) + // Code size 412 (0x19c) .maxstack 4 .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_0, [1] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_1, @@ -72,166 +72,190 @@ .line 5,5 : 5,17 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction9b2.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0008: brfalse IL_0193 + IL_0008: brfalse IL_0196 IL_000d: ldloc.0 IL_000e: stloc.1 + .line 100001,100001 : 0,0 '' IL_000f: ldloc.1 IL_0010: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() IL_0015: ldc.i4.1 IL_0016: sub IL_0017: switch ( - IL_00fd) + IL_00ff) + .line 100001,100001 : 0,0 '' IL_0020: ldloc.1 IL_0021: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() IL_0026: ldc.i4.3 IL_0027: sub IL_0028: switch ( - IL_0078) + IL_0079) + .line 100001,100001 : 0,0 '' IL_0031: ldloc.1 IL_0032: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0037: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_003c: brfalse IL_0193 + IL_003c: brfalse IL_0196 IL_0041: ldloc.1 IL_0042: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0047: stloc.2 + .line 100001,100001 : 0,0 '' IL_0048: ldloc.2 IL_0049: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_004e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0053: brtrue IL_0193 - - IL_0058: ldloc.2 - IL_0059: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_005e: stloc.3 - IL_005f: ldloc.1 - IL_0060: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0065: stloc.s a - IL_0067: ldloc.s a - IL_0069: ldloc.3 - IL_006a: add - IL_006b: ldc.i4.4 - IL_006c: ceq - IL_006e: brfalse IL_0193 - - IL_0073: br IL_017d - - IL_0078: ldloc.1 - IL_0079: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_007e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0083: brfalse IL_0193 - - IL_0088: ldloc.1 - IL_0089: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_008e: stloc.s V_7 - IL_0090: ldloc.s V_7 - IL_0092: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0097: ldc.i4.4 - IL_0098: sub - IL_0099: switch ( - IL_00e7) - IL_00a2: ldloc.s V_7 - IL_00a4: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00a9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00ae: brtrue IL_0193 - - IL_00b3: ldloc.s V_7 - IL_00b5: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00ba: stloc.s V_8 - IL_00bc: ldloc.1 - IL_00bd: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00c2: stloc.s V_9 - IL_00c4: ldloc.s V_9 - IL_00c6: ldloc.s V_8 - IL_00c8: add - IL_00c9: ldc.i4.4 - IL_00ca: ceq - IL_00cc: brfalse IL_0193 - - IL_00d1: ldloc.s V_7 - IL_00d3: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00d8: ldloc.1 - IL_00d9: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00de: stloc.s V_6 - IL_00e0: stloc.s V_5 - IL_00e2: br IL_018d - - IL_00e7: ldloc.s V_7 - IL_00e9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00ee: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00f3: brtrue IL_0193 - - IL_00f8: br IL_0177 - - IL_00fd: ldloc.1 - IL_00fe: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0103: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0108: brfalse IL_0193 - - IL_010d: ldloc.1 - IL_010e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0113: stloc.s V_10 - IL_0115: ldloc.s V_10 - IL_0117: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_011c: ldc.i4.2 - IL_011d: sub - IL_011e: switch ( - IL_0163) - IL_0127: ldloc.s V_10 - IL_0129: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_012e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0133: brtrue.s IL_0193 - - IL_0135: ldloc.s V_10 - IL_0137: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_013c: stloc.s V_11 - IL_013e: ldloc.1 - IL_013f: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0144: stloc.s V_12 - IL_0146: ldloc.s V_12 - IL_0148: ldloc.s V_11 - IL_014a: add - IL_014b: ldc.i4.4 - IL_014c: ceq - IL_014e: brfalse.s IL_0193 - - IL_0150: ldloc.s V_10 - IL_0152: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0157: ldloc.1 - IL_0158: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_015d: stloc.s V_6 - IL_015f: stloc.s V_5 - IL_0161: br.s IL_018d - - IL_0163: ldloc.s V_10 - IL_0165: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_016a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_016f: brtrue.s IL_0193 + IL_0053: brtrue IL_0196 + + .line 8,8 : 18,25 '' + IL_0058: nop + .line 100001,100001 : 0,0 '' + IL_0059: ldloc.2 + IL_005a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_005f: stloc.3 + IL_0060: ldloc.1 + IL_0061: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0066: stloc.s a + IL_0068: ldloc.s a + IL_006a: ldloc.3 + IL_006b: add + IL_006c: ldc.i4.4 + IL_006d: ceq + IL_006f: brfalse IL_0196 + + IL_0074: br IL_0180 + + .line 100001,100001 : 0,0 '' + IL_0079: ldloc.1 + IL_007a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_007f: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0084: brfalse IL_0196 + + IL_0089: ldloc.1 + IL_008a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_008f: stloc.s V_7 + .line 100001,100001 : 0,0 '' + IL_0091: ldloc.s V_7 + IL_0093: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0098: ldc.i4.4 + IL_0099: sub + IL_009a: switch ( + IL_00e9) + .line 100001,100001 : 0,0 '' + IL_00a3: ldloc.s V_7 + IL_00a5: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00aa: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00af: brtrue IL_0196 + + .line 8,8 : 18,25 '' + IL_00b4: nop + .line 100001,100001 : 0,0 '' + IL_00b5: ldloc.s V_7 + IL_00b7: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00bc: stloc.s V_8 + IL_00be: ldloc.1 + IL_00bf: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00c4: stloc.s V_9 + IL_00c6: ldloc.s V_9 + IL_00c8: ldloc.s V_8 + IL_00ca: add + IL_00cb: ldc.i4.4 + IL_00cc: ceq + IL_00ce: brfalse IL_0196 + + .line 100001,100001 : 0,0 '' + IL_00d3: ldloc.s V_7 + IL_00d5: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00da: ldloc.1 + IL_00db: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00e0: stloc.s V_6 + IL_00e2: stloc.s V_5 + IL_00e4: br IL_0190 + + .line 100001,100001 : 0,0 '' + IL_00e9: ldloc.s V_7 + IL_00eb: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00f0: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00f5: brtrue IL_0196 + + IL_00fa: br IL_017a + + .line 100001,100001 : 0,0 '' + IL_00ff: ldloc.1 + IL_0100: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0105: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_010a: brfalse IL_0196 + + IL_010f: ldloc.1 + IL_0110: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0115: stloc.s V_10 + .line 100001,100001 : 0,0 '' + IL_0117: ldloc.s V_10 + IL_0119: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_011e: ldc.i4.2 + IL_011f: sub + IL_0120: switch ( + IL_0166) + .line 100001,100001 : 0,0 '' + IL_0129: ldloc.s V_10 + IL_012b: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0130: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0135: brtrue.s IL_0196 + + .line 8,8 : 18,25 '' + IL_0137: nop + .line 100001,100001 : 0,0 '' + IL_0138: ldloc.s V_10 + IL_013a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_013f: stloc.s V_11 + IL_0141: ldloc.1 + IL_0142: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0147: stloc.s V_12 + IL_0149: ldloc.s V_12 + IL_014b: ldloc.s V_11 + IL_014d: add + IL_014e: ldc.i4.4 + IL_014f: ceq + IL_0151: brfalse.s IL_0196 + + .line 100001,100001 : 0,0 '' + IL_0153: ldloc.s V_10 + IL_0155: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_015a: ldloc.1 + IL_015b: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0160: stloc.s V_6 + IL_0162: stloc.s V_5 + IL_0164: br.s IL_0190 + + .line 100001,100001 : 0,0 '' + IL_0166: ldloc.s V_10 + IL_0168: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_016d: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0172: brtrue.s IL_0196 .line 6,6 : 16,23 '' - IL_0171: ldstr "three" - IL_0176: ret + IL_0174: ldstr "three" + IL_0179: ret .line 7,7 : 16,23 '' - IL_0177: ldstr "seven" - IL_017c: ret - - .line 5,5 : 5,17 '' - IL_017d: ldloc.2 - IL_017e: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0183: stloc.s V_5 - IL_0185: ldloc.1 - IL_0186: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_018b: stloc.s V_6 + IL_017a: ldstr "seven" + IL_017f: ret + + .line 100001,100001 : 0,0 '' + IL_0180: ldloc.2 + IL_0181: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0186: stloc.s V_5 + IL_0188: ldloc.1 + IL_0189: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_018e: stloc.s V_6 .line 8,8 : 29,35 '' - IL_018d: ldstr "four" - IL_0192: ret + IL_0190: ldstr "four" + IL_0195: ret .line 9,9 : 12,17 '' - IL_0193: ldstr "big" - IL_0198: ret + IL_0196: ldstr "big" + IL_019b: ret } // end of method TestFunction9b2::TestFunction9b } // end of class TestFunction9b2 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b3.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b3.il.bsl index 855fe60eaf..27c44babf3 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b3.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/TestFunctions/Testfunction9b3.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000208 Length: 0x00000083 } .module TestFunction9b3.exe -// MVID: {60B68B97-C1A4-612A-A745-0383978BB660} +// MVID: {611C4D9E-C1A4-612A-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x068C0000 +// Image base: 0x06690000 // =============== CLASS MEMBERS DECLARATION =================== @@ -53,7 +53,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static string TestFunction9b(class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 x) cil managed { - // Code size 409 (0x199) + // Code size 412 (0x19c) .maxstack 4 .locals init ([0] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_0, [1] class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 V_1, @@ -72,166 +72,190 @@ .line 5,5 : 5,17 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\CodeGen\\EmittedIL\\TestFunctions\\TestFunction9b3.fs' IL_0000: ldarg.0 IL_0001: stloc.0 + .line 100001,100001 : 0,0 '' IL_0002: ldloc.0 IL_0003: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0008: brfalse IL_0193 + IL_0008: brfalse IL_0196 IL_000d: ldloc.0 IL_000e: stloc.1 + .line 100001,100001 : 0,0 '' IL_000f: ldloc.1 IL_0010: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() IL_0015: ldc.i4.1 IL_0016: sub IL_0017: switch ( - IL_00fd) + IL_00ff) + .line 100001,100001 : 0,0 '' IL_0020: ldloc.1 IL_0021: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() IL_0026: ldc.i4.3 IL_0027: sub IL_0028: switch ( - IL_0078) + IL_0079) + .line 100001,100001 : 0,0 '' IL_0031: ldloc.1 IL_0032: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0037: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_003c: brfalse IL_0193 + IL_003c: brfalse IL_0196 IL_0041: ldloc.1 IL_0042: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_0047: stloc.2 + .line 100001,100001 : 0,0 '' IL_0048: ldloc.2 IL_0049: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() IL_004e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0053: brtrue IL_0193 - - IL_0058: ldloc.2 - IL_0059: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_005e: stloc.3 - IL_005f: ldloc.1 - IL_0060: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0065: stloc.s a - IL_0067: ldloc.s a - IL_0069: ldloc.3 - IL_006a: add - IL_006b: ldc.i4.4 - IL_006c: ceq - IL_006e: brfalse IL_0193 - - IL_0073: br IL_017d - - IL_0078: ldloc.1 - IL_0079: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_007e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0083: brfalse IL_0193 - - IL_0088: ldloc.1 - IL_0089: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_008e: stloc.s V_7 - IL_0090: ldloc.s V_7 - IL_0092: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0097: ldc.i4.4 - IL_0098: sub - IL_0099: switch ( - IL_00e7) - IL_00a2: ldloc.s V_7 - IL_00a4: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00a9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00ae: brtrue IL_0193 - - IL_00b3: ldloc.s V_7 - IL_00b5: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00ba: stloc.s V_8 - IL_00bc: ldloc.1 - IL_00bd: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00c2: stloc.s V_9 - IL_00c4: ldloc.s V_9 - IL_00c6: ldloc.s V_8 - IL_00c8: add - IL_00c9: ldc.i4.4 - IL_00ca: ceq - IL_00cc: brfalse IL_0193 - - IL_00d1: ldloc.s V_7 - IL_00d3: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00d8: ldloc.1 - IL_00d9: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_00de: stloc.s V_6 - IL_00e0: stloc.s V_5 - IL_00e2: br IL_018d - - IL_00e7: ldloc.s V_7 - IL_00e9: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00ee: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_00f3: brtrue IL_0193 - - IL_00f8: br IL_0177 - - IL_00fd: ldloc.1 - IL_00fe: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0103: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0108: brfalse IL_0193 - - IL_010d: ldloc.1 - IL_010e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0113: stloc.s V_10 - IL_0115: ldloc.s V_10 - IL_0117: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_011c: ldc.i4.2 - IL_011d: sub - IL_011e: switch ( - IL_0163) - IL_0127: ldloc.s V_10 - IL_0129: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_012e: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_0133: brtrue.s IL_0193 - - IL_0135: ldloc.s V_10 - IL_0137: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_013c: stloc.s V_11 - IL_013e: ldloc.1 - IL_013f: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0144: stloc.s V_12 - IL_0146: ldloc.s V_12 - IL_0148: ldloc.s V_11 - IL_014a: add - IL_014b: ldc.i4.4 - IL_014c: ceq - IL_014e: brfalse.s IL_0193 - - IL_0150: ldloc.s V_10 - IL_0152: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0157: ldloc.1 - IL_0158: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_015d: stloc.s V_6 - IL_015f: stloc.s V_5 - IL_0161: br.s IL_018d - - IL_0163: ldloc.s V_10 - IL_0165: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_016a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() - IL_016f: brtrue.s IL_0193 + IL_0053: brtrue IL_0196 + + .line 8,8 : 18,25 '' + IL_0058: nop + .line 100001,100001 : 0,0 '' + IL_0059: ldloc.2 + IL_005a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_005f: stloc.3 + IL_0060: ldloc.1 + IL_0061: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0066: stloc.s a + IL_0068: ldloc.s a + IL_006a: ldloc.3 + IL_006b: add + IL_006c: ldc.i4.4 + IL_006d: ceq + IL_006f: brfalse IL_0196 + + IL_0074: br IL_0180 + + .line 100001,100001 : 0,0 '' + IL_0079: ldloc.1 + IL_007a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_007f: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0084: brfalse IL_0196 + + IL_0089: ldloc.1 + IL_008a: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_008f: stloc.s V_7 + .line 100001,100001 : 0,0 '' + IL_0091: ldloc.s V_7 + IL_0093: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0098: ldc.i4.4 + IL_0099: sub + IL_009a: switch ( + IL_00e9) + .line 100001,100001 : 0,0 '' + IL_00a3: ldloc.s V_7 + IL_00a5: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00aa: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00af: brtrue IL_0196 + + .line 8,8 : 18,25 '' + IL_00b4: nop + .line 100001,100001 : 0,0 '' + IL_00b5: ldloc.s V_7 + IL_00b7: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00bc: stloc.s V_8 + IL_00be: ldloc.1 + IL_00bf: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00c4: stloc.s V_9 + IL_00c6: ldloc.s V_9 + IL_00c8: ldloc.s V_8 + IL_00ca: add + IL_00cb: ldc.i4.4 + IL_00cc: ceq + IL_00ce: brfalse IL_0196 + + .line 100001,100001 : 0,0 '' + IL_00d3: ldloc.s V_7 + IL_00d5: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00da: ldloc.1 + IL_00db: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_00e0: stloc.s V_6 + IL_00e2: stloc.s V_5 + IL_00e4: br IL_0190 + + .line 100001,100001 : 0,0 '' + IL_00e9: ldloc.s V_7 + IL_00eb: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00f0: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_00f5: brtrue IL_0196 + + IL_00fa: br IL_017a + + .line 100001,100001 : 0,0 '' + IL_00ff: ldloc.1 + IL_0100: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0105: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_010a: brfalse IL_0196 + + IL_010f: ldloc.1 + IL_0110: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0115: stloc.s V_10 + .line 100001,100001 : 0,0 '' + IL_0117: ldloc.s V_10 + IL_0119: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_011e: ldc.i4.2 + IL_011f: sub + IL_0120: switch ( + IL_0166) + .line 100001,100001 : 0,0 '' + IL_0129: ldloc.s V_10 + IL_012b: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0130: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0135: brtrue.s IL_0196 + + .line 8,8 : 18,25 '' + IL_0137: nop + .line 100001,100001 : 0,0 '' + IL_0138: ldloc.s V_10 + IL_013a: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_013f: stloc.s V_11 + IL_0141: ldloc.1 + IL_0142: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0147: stloc.s V_12 + IL_0149: ldloc.s V_12 + IL_014b: ldloc.s V_11 + IL_014d: add + IL_014e: ldc.i4.4 + IL_014f: ceq + IL_0151: brfalse.s IL_0196 + + .line 100001,100001 : 0,0 '' + IL_0153: ldloc.s V_10 + IL_0155: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_015a: ldloc.1 + IL_015b: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0160: stloc.s V_6 + IL_0162: stloc.s V_5 + IL_0164: br.s IL_0190 + + .line 100001,100001 : 0,0 '' + IL_0166: ldloc.s V_10 + IL_0168: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_016d: call instance class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_TailOrNull() + IL_0172: brtrue.s IL_0196 .line 6,6 : 16,23 '' - IL_0171: ldstr "three" - IL_0176: ret + IL_0174: ldstr "three" + IL_0179: ret .line 7,7 : 16,23 '' - IL_0177: ldstr "seven" - IL_017c: ret - - .line 5,5 : 5,17 '' - IL_017d: ldloc.2 - IL_017e: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_0183: stloc.s V_5 - IL_0185: ldloc.1 - IL_0186: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() - IL_018b: stloc.s V_6 + IL_017a: ldstr "seven" + IL_017f: ret + + .line 100001,100001 : 0,0 '' + IL_0180: ldloc.2 + IL_0181: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_0186: stloc.s V_5 + IL_0188: ldloc.1 + IL_0189: call instance !0 class [FSharp.Core]Microsoft.FSharp.Collections.FSharpList`1::get_HeadOrDefault() + IL_018e: stloc.s V_6 .line 8,8 : 29,35 '' - IL_018d: ldstr "four" - IL_0192: ret + IL_0190: ldstr "four" + IL_0195: ret .line 9,9 : 12,17 '' - IL_0193: ldstr "big" - IL_0198: ret + IL_0196: ldstr "big" + IL_019b: ret } // end of method TestFunction9b3::TestFunction9b } // end of class TestFunction9b3 diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/OptionalArg01.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/OptionalArg01.il.bsl index 1a3ed26f34..96b5fb284f 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/OptionalArg01.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/OptionalArg01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000460 Length: 0x00000445 } .module OptionalArg01.exe -// MVID: {60EDBC4B-4F48-B5AF-A745-03834BBCED60} +// MVID: {611C4D9E-4F48-B5AF-A745-03839E4D1C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07190000 +// Image base: 0x064B0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -98,7 +98,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.OptionalArgumentAttribute::.ctor() = ( 01 00 00 00 ) .param [2] .custom instance void [FSharp.Core]Microsoft.FSharp.Core.OptionalArgumentAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 91 (0x5b) + // Code size 93 (0x5d) .maxstack 4 .locals init ([0] int32 count, [1] int32 V_1, @@ -106,96 +106,102 @@ [3] class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1 V_3, [4] class OptionalArg01/A v2) .line 10,10 : 9,44 '' - IL_0000: ldarg.0 - IL_0001: brfalse.s IL_0005 + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: brfalse.s IL_0006 - IL_0003: br.s IL_0009 + IL_0004: br.s IL_000a .line 8,8 : 43,48 '' - IL_0005: ldc.i4.0 + IL_0006: ldc.i4.0 .line 16707566,16707566 : 0,0 '' - IL_0006: nop - IL_0007: br.s IL_000b + IL_0007: nop + IL_0008: br.s IL_000c .line 8,8 : 61,70 '' - IL_0009: ldc.i4.1 + IL_000a: ldc.i4.1 .line 16707566,16707566 : 0,0 '' - IL_000a: nop + IL_000b: nop .line 16707566,16707566 : 0,0 '' - IL_000b: stloc.0 + IL_000c: stloc.0 .line 10,10 : 9,44 '' - IL_000c: ldarg.1 - IL_000d: brfalse.s IL_0011 + IL_000d: nop + .line 16707566,16707566 : 0,0 '' + IL_000e: ldarg.1 + IL_000f: brfalse.s IL_0013 - IL_000f: br.s IL_0015 + IL_0011: br.s IL_0017 .line 9,9 : 43,48 '' - IL_0011: ldloc.0 + IL_0013: ldloc.0 .line 16707566,16707566 : 0,0 '' - IL_0012: nop - IL_0013: br.s IL_0019 + IL_0014: nop + IL_0015: br.s IL_001b .line 9,9 : 61,70 '' - IL_0015: ldloc.0 - IL_0016: ldc.i4.1 - IL_0017: add + IL_0017: ldloc.0 + IL_0018: ldc.i4.1 + IL_0019: add .line 16707566,16707566 : 0,0 '' - IL_0018: nop + IL_001a: nop .line 16707566,16707566 : 0,0 '' - IL_0019: stloc.1 + IL_001b: stloc.1 .line 10,10 : 9,44 '' - IL_001a: ldloc.1 - IL_001b: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor(int32) - IL_0020: stloc.2 - IL_0021: ldarg.0 - IL_0022: brfalse.s IL_0026 + IL_001c: ldloc.1 + IL_001d: newobj instance void class [mscorlib]System.Collections.Generic.List`1::.ctor(int32) + IL_0022: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0023: ldarg.0 + IL_0024: brfalse.s IL_0028 - IL_0024: br.s IL_002a + IL_0026: br.s IL_002c .line 11,11 : 31,33 '' - IL_0026: nop + IL_0028: nop .line 16707566,16707566 : 0,0 '' - IL_0027: nop - IL_0028: br.s IL_003d + IL_0029: nop + IL_002a: br.s IL_003f - .line 10,10 : 9,44 '' - IL_002a: ldarg.0 - IL_002b: stloc.3 - IL_002c: ldloc.3 - IL_002d: call instance !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::get_Value() - IL_0032: stloc.s v2 + .line 16707566,16707566 : 0,0 '' + IL_002c: ldarg.0 + IL_002d: stloc.3 + IL_002e: ldloc.3 + IL_002f: call instance !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::get_Value() + IL_0034: stloc.s v2 .line 11,11 : 47,62 '' - IL_0034: ldloc.2 - IL_0035: ldloc.s v2 - IL_0037: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0036: ldloc.2 + IL_0037: ldloc.s v2 + IL_0039: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + .line 16707566,16707566 : 0,0 '' + IL_003e: nop .line 16707566,16707566 : 0,0 '' - IL_003c: nop - IL_003d: ldarg.1 - IL_003e: brfalse.s IL_0042 + IL_003f: ldarg.1 + IL_0040: brfalse.s IL_0044 - IL_0040: br.s IL_0046 + IL_0042: br.s IL_0048 .line 12,12 : 31,33 '' - IL_0042: nop + IL_0044: nop .line 16707566,16707566 : 0,0 '' - IL_0043: nop - IL_0044: br.s IL_0059 + IL_0045: nop + IL_0046: br.s IL_005b - .line 11,11 : 47,62 '' - IL_0046: ldarg.1 - IL_0047: stloc.3 - IL_0048: ldloc.3 - IL_0049: call instance !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::get_Value() - IL_004e: stloc.s v2 + .line 16707566,16707566 : 0,0 '' + IL_0048: ldarg.1 + IL_0049: stloc.3 + IL_004a: ldloc.3 + IL_004b: call instance !0 class [FSharp.Core]Microsoft.FSharp.Core.FSharpOption`1::get_Value() + IL_0050: stloc.s v2 .line 12,12 : 47,62 '' - IL_0050: ldloc.2 - IL_0051: ldloc.s v2 - IL_0053: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) + IL_0052: ldloc.2 + IL_0053: ldloc.s v2 + IL_0055: callvirt instance void class [mscorlib]System.Collections.Generic.List`1::Add(!0) .line 16707566,16707566 : 0,0 '' - IL_0058: nop + IL_005a: nop .line 13,13 : 9,16 '' - IL_0059: ldloc.2 - IL_005a: ret + IL_005b: ldloc.2 + IL_005c: ret } // end of method C::F } // end of class C diff --git a/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/TupleElimination.il.bsl b/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/TupleElimination.il.bsl index 32383a15ef..56515db102 100644 --- a/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/TupleElimination.il.bsl +++ b/tests/fsharpqa/Source/CodeGen/EmittedIL/Tuples/TupleElimination.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x00000230 Length: 0x0000007B } .module TupleElimination.exe -// MVID: {60EF4161-DFDD-92DF-A745-03836141EF60} +// MVID: {611C52B3-DFDD-92DF-A745-0383B3521C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x065E0000 +// Image base: 0x050E0000 // =============== CLASS MEMBERS DECLARATION =================== diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare01.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare01.il.bsl index 74527f0d70..3b7ce52448 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare01.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare01.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000228 Length: 0x000000B2 } .module Compare01.dll -// MVID: {60BE1F16-04A0-F88E-A745-0383161FBE60} +// MVID: {611C550D-04A0-F88E-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05230000 +// Image base: 0x09070000 // =============== CLASS MEMBERS DECLARATION =================== @@ -76,6 +76,7 @@ IL_0007: ldc.i4.1 IL_0008: cgt IL_000a: stloc.2 + .line 16707566,16707566 : 0,0 '' IL_000b: ldloc.2 IL_000c: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare02.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare02.il.bsl index 035762e696..f9763f7b1b 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare02.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare02.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000230 Length: 0x000000B9 } .module Compare02.dll -// MVID: {60BE1F16-0481-F88E-A745-0383161FBE60} +// MVID: {611C550D-0481-F88E-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07180000 +// Image base: 0x05530000 // =============== CLASS MEMBERS DECLARATION =================== @@ -77,6 +77,7 @@ IL_0007: ldc.i4.1 IL_0008: cgt IL_000a: stloc.2 + .line 16707566,16707566 : 0,0 '' IL_000b: ldloc.2 IL_000c: brfalse.s IL_0012 @@ -91,6 +92,7 @@ IL_0013: ldc.i4.2 IL_0014: cgt IL_0016: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0017: ldloc.3 IL_0018: brfalse.s IL_001e diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare03.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare03.il.bsl index f4542c7837..2c32497fb4 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare03.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare03.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x00000238 Length: 0x000000B9 } .module Compare03.dll -// MVID: {60BE1F16-0562-F88E-A745-0383161FBE60} +// MVID: {611C550D-0562-F88E-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x09540000 +// Image base: 0x05000000 // =============== CLASS MEMBERS DECLARATION =================== @@ -83,6 +83,7 @@ IL_0007: ldc.i4.1 IL_0008: cgt IL_000a: stloc.2 + .line 16707566,16707566 : 0,0 '' IL_000b: ldloc.2 IL_000c: brfalse.s IL_0012 @@ -97,6 +98,7 @@ IL_0013: ldc.i4.2 IL_0014: cgt IL_0016: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0017: ldloc.3 IL_0018: brfalse.s IL_001e @@ -111,6 +113,7 @@ IL_001f: ldc.i4.4 IL_0020: cgt IL_0022: stloc.s V_4 + .line 16707566,16707566 : 0,0 '' IL_0024: ldloc.s V_4 IL_0026: brfalse.s IL_002d diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare04.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare04.il.bsl index 3c703ad046..81438746bf 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare04.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare04.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x00000238 Length: 0x000000B9 } .module Compare04.dll -// MVID: {60BE1F16-053B-F88E-A745-0383161FBE60} +// MVID: {611C550D-053B-F88E-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x04FB0000 +// Image base: 0x071C0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -84,6 +84,7 @@ IL_000a: ldc.i4.1 IL_000b: cgt IL_000d: stloc.2 + .line 16707566,16707566 : 0,0 '' IL_000e: ldloc.2 IL_000f: brfalse.s IL_0018 @@ -98,6 +99,7 @@ IL_0019: ldc.i4.2 IL_001a: cgt IL_001c: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_001d: ldloc.3 IL_001e: brfalse.s IL_0027 @@ -112,6 +114,7 @@ IL_0028: ldc.i4.4 IL_0029: cgt IL_002b: stloc.s V_4 + .line 16707566,16707566 : 0,0 '' IL_002d: ldloc.s V_4 IL_002f: brfalse.s IL_0039 @@ -127,6 +130,7 @@ IL_0043: call int32 [netstandard]System.String::CompareOrdinal(string, string) IL_0048: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_004a: ldloc.s V_5 IL_004c: brfalse.s IL_0053 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare05.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare05.il.bsl index 5bf6d5ccbd..7920cf478b 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare05.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare05.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000006E0 Length: 0x000003BA } .module Compare05.dll -// MVID: {60BE1F16-051C-F88E-A745-0383161FBE60} +// MVID: {611C550D-051C-F88E-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06AE0000 +// Image base: 0x070E0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Compare05/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 119 (0x77) + // Code size 120 (0x78) .maxstack 4 .locals init ([0] class Compare05/CompareMicroPerfAndCodeGenerationTests/Key V_0, [1] class Compare05/CompareMicroPerfAndCodeGenerationTests/Key V_1, @@ -187,109 +187,114 @@ [4] int32 V_4, [5] int32 V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Compare05.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006d + .line 4,4 : 10,13 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Compare05.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0027: stloc.s V_5 .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 16707566,16707566 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 16707566,16707566 : 0,0 '' - IL_0038: nop + IL_0039: nop .line 16707566,16707566 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003a: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 16707566,16707566 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 16707566,16707566 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 16707566,16707566 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 16707566,16707566 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.3 - IL_004c: ldloc.0 - IL_004d: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0052: stloc.s V_4 - IL_0054: ldloc.1 - IL_0055: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_005a: stloc.s V_5 - IL_005c: ldloc.s V_4 - IL_005e: ldloc.s V_5 - IL_0060: bge.s IL_0064 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.3 + IL_004d: ldloc.0 + IL_004e: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0053: stloc.s V_4 + IL_0055: ldloc.1 + IL_0056: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_005b: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_005d: ldloc.s V_4 + IL_005f: ldloc.s V_5 + IL_0061: bge.s IL_0065 .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.m1 - IL_0063: ret + IL_0063: ldc.i4.m1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldloc.s V_4 - IL_0066: ldloc.s V_5 - IL_0068: cgt - IL_006a: ret + IL_0065: ldloc.s V_4 + IL_0067: ldloc.s V_5 + IL_0069: cgt + IL_006b: ret .line 16707566,16707566 : 0,0 '' - IL_006b: ldc.i4.1 - IL_006c: ret + IL_006c: ldc.i4.1 + IL_006d: ret .line 16707566,16707566 : 0,0 '' - IL_006d: ldarg.1 - IL_006e: ldnull - IL_006f: cgt.un - IL_0071: brfalse.s IL_0075 + IL_006e: ldarg.1 + IL_006f: ldnull + IL_0070: cgt.un + IL_0072: brfalse.s IL_0076 .line 16707566,16707566 : 0,0 '' - IL_0073: ldc.i4.m1 - IL_0074: ret + IL_0074: ldc.i4.m1 + IL_0075: ret .line 16707566,16707566 : 0,0 '' - IL_0075: ldc.i4.0 - IL_0076: ret + IL_0076: ldc.i4.0 + IL_0077: ret } // end of method Key::CompareTo .method public hidebysig virtual final @@ -323,6 +328,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Compare05/CompareMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -349,6 +355,7 @@ IL_0026: ldloc.2 IL_0027: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 IL_002c: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_002e: ldloc.s V_4 IL_0030: ldloc.s V_5 IL_0032: bge.s IL_0038 @@ -367,6 +374,7 @@ IL_003e: nop .line 16707566,16707566 : 0,0 '' IL_003f: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0040: ldloc.3 IL_0041: ldc.i4.0 IL_0042: bge.s IL_0046 @@ -391,6 +399,7 @@ IL_0054: ldloc.2 IL_0055: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 IL_005a: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_005c: ldloc.s V_4 IL_005e: ldloc.s V_5 IL_0060: bge.s IL_0064 @@ -429,58 +438,61 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 60 (0x3c) + // Code size 61 (0x3d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Compare05/CompareMicroPerfAndCodeGenerationTests/Key V_1) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0019: ldloc.0 - IL_001a: ldc.i4.6 - IL_001b: shl - IL_001c: ldloc.0 - IL_001d: ldc.i4.2 - IL_001e: shr - IL_001f: add + .line 4,4 : 10,13 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr IL_0020: add IL_0021: add - IL_0022: stloc.0 - IL_0023: ldc.i4 0x9e3779b9 - IL_0028: ldloc.1 - IL_0029: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_002e: ldloc.0 - IL_002f: ldc.i4.6 - IL_0030: shl - IL_0031: ldloc.0 - IL_0032: ldc.i4.2 - IL_0033: shr - IL_0034: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldc.i4 0x9e3779b9 + IL_0029: ldloc.1 + IL_002a: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr IL_0035: add IL_0036: add - IL_0037: stloc.0 - IL_0038: ldloc.0 - IL_0039: ret + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: ldc.i4.0 - IL_003b: ret + IL_003b: ldc.i4.0 + IL_003c: ret } // end of method Key::GetHashCode .method public hidebysig virtual final @@ -501,120 +513,127 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 63 (0x3f) + // Code size 64 (0x40) .maxstack 4 .locals init ([0] class Compare05/CompareMicroPerfAndCodeGenerationTests/Key V_0, [1] class Compare05/CompareMicroPerfAndCodeGenerationTests/Key V_1, [2] class Compare05/CompareMicroPerfAndCodeGenerationTests/Key V_2) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0037 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0038 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Compare05/CompareMicroPerfAndCodeGenerationTests/Key - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0035 + IL_0007: ldarg.1 + IL_0008: isinst Compare05/CompareMicroPerfAndCodeGenerationTests/Key + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0036 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop + IL_0011: ldarg.0 + IL_0012: pop + .line 16707566,16707566 : 0,0 '' + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001c: ldloc.2 - IL_001d: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0022: bne.un.s IL_0033 + IL_0017: ldloc.1 + IL_0018: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_001d: ldloc.2 + IL_001e: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0023: bne.un.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0024: ldloc.1 - IL_0025: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_002a: ldloc.2 - IL_002b: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0030: ceq - IL_0032: ret + IL_0025: ldloc.1 + IL_0026: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_002b: ldloc.2 + IL_002c: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0031: ceq + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0034: ldc.i4.0 + IL_0035: ret .line 16707566,16707566 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 16707566,16707566 : 0,0 '' - IL_0037: ldarg.1 - IL_0038: ldnull - IL_0039: cgt.un - IL_003b: ldc.i4.0 - IL_003c: ceq - IL_003e: ret + IL_0038: ldarg.1 + IL_0039: ldnull + IL_003a: cgt.un + IL_003c: ldc.i4.0 + IL_003d: ceq + IL_003f: ret } // end of method Key::Equals .method public hidebysig virtual final instance bool Equals(class Compare05/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class Compare05/CompareMicroPerfAndCodeGenerationTests/Key V_0, [1] class Compare05/CompareMicroPerfAndCodeGenerationTests/Key V_1) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: bne.un.s IL_002f + IL_0013: ldloc.0 + IL_0014: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: bne.un.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 Compare05/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_002d: ceq + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method Key::Equals .method public hidebysig virtual final @@ -628,6 +647,7 @@ IL_0000: ldarg.1 IL_0001: isinst Compare05/CompareMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare06.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare06.il.bsl index f79e000a95..0e4e347ea0 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare06.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare06.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000006D8 Length: 0x000003BC } .module Compare06.dll -// MVID: {60BE1F16-04FD-F88E-A745-0383161FBE60} +// MVID: {611C550D-04FD-F88E-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06A50000 +// Image base: 0x04F30000 // =============== CLASS MEMBERS DECLARATION =================== @@ -123,109 +123,114 @@ instance int32 CompareTo(class Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 101 (0x65) + // Code size 102 (0x66) .maxstack 4 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IComparer V_1, [2] int32 V_2, [3] int32 V_3) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Compare06.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_005b + .line 4,4 : 10,14 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Compare06.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_005c .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0059 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_005a .line 16707566,16707566 : 0,0 '' - IL_000c: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0018: stloc.2 - IL_0019: ldarg.1 - IL_001a: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: bge.s IL_0028 + IL_000d: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0019: stloc.2 + IL_001a: ldarg.1 + IL_001b: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0020: stloc.3 + .line 16707566,16707566 : 0,0 '' + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: bge.s IL_0029 .line 16707566,16707566 : 0,0 '' - IL_0024: ldc.i4.m1 + IL_0025: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_0025: nop - IL_0026: br.s IL_002d + IL_0026: nop + IL_0027: br.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_0028: ldloc.2 - IL_0029: ldloc.3 - IL_002a: cgt + IL_0029: ldloc.2 + IL_002a: ldloc.3 + IL_002b: cgt .line 16707566,16707566 : 0,0 '' - IL_002c: nop + IL_002d: nop .line 16707566,16707566 : 0,0 '' - IL_002d: stloc.0 - IL_002e: ldloc.0 - IL_002f: ldc.i4.0 - IL_0030: bge.s IL_0034 + IL_002e: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_002f: ldloc.0 + IL_0030: ldc.i4.0 + IL_0031: bge.s IL_0035 .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.0 - IL_0033: ret + IL_0033: ldloc.0 + IL_0034: ret .line 16707566,16707566 : 0,0 '' - IL_0034: ldloc.0 - IL_0035: ldc.i4.0 - IL_0036: ble.s IL_003a + IL_0035: ldloc.0 + IL_0036: ldc.i4.0 + IL_0037: ble.s IL_003b .line 16707566,16707566 : 0,0 '' - IL_0038: ldloc.0 - IL_0039: ret + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_003f: stloc.1 - IL_0040: ldarg.0 - IL_0041: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0046: stloc.2 - IL_0047: ldarg.1 - IL_0048: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_004d: stloc.3 - IL_004e: ldloc.2 - IL_004f: ldloc.3 - IL_0050: bge.s IL_0054 + IL_003b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0040: stloc.1 + IL_0041: ldarg.0 + IL_0042: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0047: stloc.2 + IL_0048: ldarg.1 + IL_0049: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_004e: stloc.3 + .line 16707566,16707566 : 0,0 '' + IL_004f: ldloc.2 + IL_0050: ldloc.3 + IL_0051: bge.s IL_0055 .line 16707566,16707566 : 0,0 '' - IL_0052: ldc.i4.m1 - IL_0053: ret + IL_0053: ldc.i4.m1 + IL_0054: ret .line 16707566,16707566 : 0,0 '' - IL_0054: ldloc.2 - IL_0055: ldloc.3 - IL_0056: cgt - IL_0058: ret + IL_0055: ldloc.2 + IL_0056: ldloc.3 + IL_0057: cgt + IL_0059: ret .line 16707566,16707566 : 0,0 '' - IL_0059: ldc.i4.1 - IL_005a: ret + IL_005a: ldc.i4.1 + IL_005b: ret .line 16707566,16707566 : 0,0 '' - IL_005b: ldarg.1 - IL_005c: ldnull - IL_005d: cgt.un - IL_005f: brfalse.s IL_0063 + IL_005c: ldarg.1 + IL_005d: ldnull + IL_005e: cgt.un + IL_0060: brfalse.s IL_0064 .line 16707566,16707566 : 0,0 '' - IL_0061: ldc.i4.m1 - IL_0062: ret + IL_0062: ldc.i4.m1 + IL_0063: ret .line 16707566,16707566 : 0,0 '' - IL_0063: ldc.i4.0 - IL_0064: ret + IL_0064: ldc.i4.0 + IL_0065: ret } // end of method KeyR::CompareTo .method public hidebysig virtual final @@ -257,6 +262,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -276,6 +282,7 @@ IL_001f: ldloc.0 IL_0020: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ IL_0025: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0026: ldloc.2 IL_0027: ldloc.3 IL_0028: bge.s IL_002e @@ -294,6 +301,7 @@ IL_0032: nop .line 16707566,16707566 : 0,0 '' IL_0033: stloc.1 + .line 16707566,16707566 : 0,0 '' IL_0034: ldloc.1 IL_0035: ldc.i4.0 IL_0036: bge.s IL_003a @@ -318,6 +326,7 @@ IL_0047: ldloc.0 IL_0048: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ IL_004d: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_004e: ldloc.2 IL_004f: ldloc.3 IL_0050: bge.s IL_0054 @@ -356,50 +365,52 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 54 (0x36) + // Code size 55 (0x37) .maxstack 7 .locals init ([0] int32 V_0) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0034 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.0 - IL_000e: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0013: ldloc.0 - IL_0014: ldc.i4.6 - IL_0015: shl - IL_0016: ldloc.0 - IL_0017: ldc.i4.2 - IL_0018: shr - IL_0019: add + .line 4,4 : 10,14 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0035 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.0 + IL_000f: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0014: ldloc.0 + IL_0015: ldc.i4.6 + IL_0016: shl + IL_0017: ldloc.0 + IL_0018: ldc.i4.2 + IL_0019: shr IL_001a: add IL_001b: add - IL_001c: stloc.0 - IL_001d: ldc.i4 0x9e3779b9 - IL_0022: ldarg.0 - IL_0023: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0028: ldloc.0 - IL_0029: ldc.i4.6 - IL_002a: shl - IL_002b: ldloc.0 - IL_002c: ldc.i4.2 - IL_002d: shr - IL_002e: add + IL_001c: add + IL_001d: stloc.0 + IL_001e: ldc.i4 0x9e3779b9 + IL_0023: ldarg.0 + IL_0024: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0029: ldloc.0 + IL_002a: ldc.i4.6 + IL_002b: shl + IL_002c: ldloc.0 + IL_002d: ldc.i4.2 + IL_002e: shr IL_002f: add IL_0030: add - IL_0031: stloc.0 - IL_0032: ldloc.0 - IL_0033: ret + IL_0031: add + IL_0032: stloc.0 + IL_0033: ldloc.0 + IL_0034: ret .line 16707566,16707566 : 0,0 '' - IL_0034: ldc.i4.0 - IL_0035: ret + IL_0035: ldc.i4.0 + IL_0036: ret } // end of method KeyR::GetHashCode .method public hidebysig virtual final @@ -420,102 +431,107 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 57 (0x39) + // Code size 58 (0x3a) .maxstack 4 .locals init ([0] class Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR V_0) + .line 4,4 : 10,14 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0031 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_002f + IL_0007: ldarg.1 + IL_0008: isinst Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0016: ldloc.0 - IL_0017: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_001c: bne.un.s IL_002d + IL_0011: ldarg.0 + IL_0012: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0017: ldloc.0 + IL_0018: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_001d: bne.un.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_001e: ldarg.0 - IL_001f: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0024: ldloc.0 - IL_0025: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_002a: ceq - IL_002c: ret + IL_001f: ldarg.0 + IL_0020: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0025: ldloc.0 + IL_0026: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_002b: ceq + IL_002d: ret .line 16707566,16707566 : 0,0 '' - IL_002d: ldc.i4.0 - IL_002e: ret + IL_002e: ldc.i4.0 + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldarg.1 - IL_0032: ldnull - IL_0033: cgt.un - IL_0035: ldc.i4.0 - IL_0036: ceq - IL_0038: ret + IL_0032: ldarg.1 + IL_0033: ldnull + IL_0034: cgt.un + IL_0036: ldc.i4.0 + IL_0037: ceq + IL_0039: ret } // end of method KeyR::Equals .method public hidebysig virtual final instance bool Equals(class Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 53 (0x35) + // Code size 54 (0x36) .maxstack 8 + .line 4,4 : 10,14 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_002b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_002c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0012: ldarg.1 - IL_0013: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0018: bne.un.s IL_0029 + IL_000d: ldarg.0 + IL_000e: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0013: ldarg.1 + IL_0014: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0019: bne.un.s IL_002a .line 16707566,16707566 : 0,0 '' - IL_001a: ldarg.0 - IL_001b: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0020: ldarg.1 - IL_0021: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0026: ceq - IL_0028: ret + IL_001b: ldarg.0 + IL_001c: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0021: ldarg.1 + IL_0022: ldfld int32 Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0027: ceq + IL_0029: ret .line 16707566,16707566 : 0,0 '' - IL_0029: ldc.i4.0 - IL_002a: ret + IL_002a: ldc.i4.0 + IL_002b: ret .line 16707566,16707566 : 0,0 '' - IL_002b: ldc.i4.0 - IL_002c: ret + IL_002c: ldc.i4.0 + IL_002d: ret .line 16707566,16707566 : 0,0 '' - IL_002d: ldarg.1 - IL_002e: ldnull - IL_002f: cgt.un - IL_0031: ldc.i4.0 - IL_0032: ceq - IL_0034: ret + IL_002e: ldarg.1 + IL_002f: ldnull + IL_0030: cgt.un + IL_0032: ldc.i4.0 + IL_0033: ceq + IL_0035: ret } // end of method KeyR::Equals .method public hidebysig virtual final @@ -529,6 +545,7 @@ IL_0000: ldarg.1 IL_0001: isinst Compare06/CompareMicroPerfAndCodeGenerationTests/KeyR IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.bsl index 9effce1baf..400de5cfc7 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare07.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000890 Length: 0x0000068C } .module Compare07.dll -// MVID: {60BE1F16-05DE-F88E-A745-0383161FBE60} +// MVID: {611C550D-05DE-F88E-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05810000 +// Image base: 0x058A0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 110 (0x6e) + // Code size 111 (0x6f) .maxstack 5 .locals init ([0] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, @@ -187,93 +187,96 @@ [4] !a V_4, [5] !a V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Compare07.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0064 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0062 - - .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop - .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.3 - IL_0029: ldloc.s V_4 - IL_002b: ldloc.s V_5 - IL_002d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, + .line 4,4 : 10,20 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Compare07.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0065 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0063 + + .line 16707566,16707566 : 0,0 '' + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0027: stloc.s V_5 + IL_0029: ldloc.3 + IL_002a: ldloc.s V_4 + IL_002c: ldloc.s V_5 + IL_002e: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, !!0, !!0) - IL_0032: stloc.2 - IL_0033: ldloc.2 - IL_0034: ldc.i4.0 - IL_0035: bge.s IL_0039 + IL_0033: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0034: ldloc.2 + IL_0035: ldc.i4.0 + IL_0036: bge.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0037: ldloc.2 - IL_0038: ret + IL_0038: ldloc.2 + IL_0039: ret .line 16707566,16707566 : 0,0 '' - IL_0039: ldloc.2 - IL_003a: ldc.i4.0 - IL_003b: ble.s IL_003f + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: ble.s IL_0040 .line 16707566,16707566 : 0,0 '' - IL_003d: ldloc.2 - IL_003e: ret + IL_003e: ldloc.2 + IL_003f: ret .line 16707566,16707566 : 0,0 '' - IL_003f: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0044: stloc.3 - IL_0045: ldloc.0 - IL_0046: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_004b: stloc.s V_4 - IL_004d: ldloc.1 - IL_004e: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0053: stloc.s V_5 - IL_0055: ldloc.3 - IL_0056: ldloc.s V_4 - IL_0058: ldloc.s V_5 - IL_005a: tail. - IL_005c: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, + IL_0040: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0045: stloc.3 + IL_0046: ldloc.0 + IL_0047: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_004c: stloc.s V_4 + IL_004e: ldloc.1 + IL_004f: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0054: stloc.s V_5 + IL_0056: ldloc.3 + IL_0057: ldloc.s V_4 + IL_0059: ldloc.s V_5 + IL_005b: tail. + IL_005d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, !!0, !!0) - IL_0061: ret + IL_0062: ret .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.1 - IL_0063: ret + IL_0063: ldc.i4.1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldarg.1 - IL_0065: ldnull - IL_0066: cgt.un - IL_0068: brfalse.s IL_006c + IL_0065: ldarg.1 + IL_0066: ldnull + IL_0067: cgt.un + IL_0069: brfalse.s IL_006d .line 16707566,16707566 : 0,0 '' - IL_006a: ldc.i4.m1 - IL_006b: ret + IL_006b: ldc.i4.m1 + IL_006c: ret .line 16707566,16707566 : 0,0 '' - IL_006c: ldc.i4.0 - IL_006d: ret + IL_006d: ldc.i4.0 + IL_006e: ret } // end of method GenericKey`1::CompareTo .method public hidebysig virtual final @@ -308,6 +311,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -341,6 +345,7 @@ !!0, !!0) IL_0038: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0039: ldloc.3 IL_003a: ldc.i4.0 IL_003b: bge.s IL_003f @@ -398,69 +403,72 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 76 (0x4c) + // Code size 77 (0x4d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] !a V_2) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_004a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0019: stloc.2 - IL_001a: ldarg.1 - IL_001b: ldloc.2 - IL_001c: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + .line 4,4 : 10,20 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_004b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_001a: stloc.2 + IL_001b: ldarg.1 + IL_001c: ldloc.2 + IL_001d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0) - IL_0021: ldloc.0 - IL_0022: ldc.i4.6 - IL_0023: shl - IL_0024: ldloc.0 - IL_0025: ldc.i4.2 - IL_0026: shr - IL_0027: add + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr IL_0028: add IL_0029: add - IL_002a: stloc.0 - IL_002b: ldc.i4 0x9e3779b9 - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0036: stloc.2 - IL_0037: ldarg.1 - IL_0038: ldloc.2 - IL_0039: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldc.i4 0x9e3779b9 + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0037: stloc.2 + IL_0038: ldarg.1 + IL_0039: ldloc.2 + IL_003a: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0) - IL_003e: ldloc.0 - IL_003f: ldc.i4.6 - IL_0040: shl - IL_0041: ldloc.0 - IL_0042: ldc.i4.2 - IL_0043: shr - IL_0044: add + IL_003f: ldloc.0 + IL_0040: ldc.i4.6 + IL_0041: shl + IL_0042: ldloc.0 + IL_0043: ldc.i4.2 + IL_0044: shr IL_0045: add IL_0046: add - IL_0047: stloc.0 - IL_0048: ldloc.0 - IL_0049: ret + IL_0047: add + IL_0048: stloc.0 + IL_0049: ldloc.0 + IL_004a: ret .line 16707566,16707566 : 0,0 '' - IL_004a: ldc.i4.0 - IL_004b: ret + IL_004b: ldc.i4.0 + IL_004c: ret } // end of method GenericKey`1::GetHashCode .method public hidebysig virtual final @@ -481,152 +489,159 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 87 (0x57) + // Code size 88 (0x58) .maxstack 5 .locals init ([0] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, [3] !a V_3, [4] !a V_4) + .line 4,4 : 10,20 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_004f - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_004d - - .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop - .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0023: stloc.s V_4 - IL_0025: ldarg.2 - IL_0026: ldloc.3 - IL_0027: ldloc.s V_4 - IL_0029: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0050 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldarg.1 + IL_0008: isinst class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_004e + + .line 16707566,16707566 : 0,0 '' + IL_0011: ldarg.0 + IL_0012: pop + .line 16707566,16707566 : 0,0 '' + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0017: ldloc.1 + IL_0018: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_001d: stloc.3 + IL_001e: ldloc.2 + IL_001f: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0024: stloc.s V_4 + IL_0026: ldarg.2 + IL_0027: ldloc.3 + IL_0028: ldloc.s V_4 + IL_002a: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0, !!0) - IL_002e: brfalse.s IL_004b - - .line 16707566,16707566 : 0,0 '' - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0036: stloc.3 - IL_0037: ldloc.2 - IL_0038: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003d: stloc.s V_4 - IL_003f: ldarg.2 - IL_0040: ldloc.3 - IL_0041: ldloc.s V_4 - IL_0043: tail. - IL_0045: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_002f: brfalse.s IL_004c + + .line 16707566,16707566 : 0,0 '' + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0037: stloc.3 + IL_0038: ldloc.2 + IL_0039: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_003e: stloc.s V_4 + IL_0040: ldarg.2 + IL_0041: ldloc.3 + IL_0042: ldloc.s V_4 + IL_0044: tail. + IL_0046: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0, !!0) - IL_004a: ret + IL_004b: ret .line 16707566,16707566 : 0,0 '' - IL_004b: ldc.i4.0 - IL_004c: ret + IL_004c: ldc.i4.0 + IL_004d: ret .line 16707566,16707566 : 0,0 '' - IL_004d: ldc.i4.0 - IL_004e: ret + IL_004e: ldc.i4.0 + IL_004f: ret .line 16707566,16707566 : 0,0 '' - IL_004f: ldarg.1 - IL_0050: ldnull - IL_0051: cgt.un - IL_0053: ldc.i4.0 - IL_0054: ceq - IL_0056: ret + IL_0050: ldarg.1 + IL_0051: ldnull + IL_0052: cgt.un + IL_0054: ldc.i4.0 + IL_0055: ceq + IL_0057: ret } // end of method GenericKey`1::Equals .method public hidebysig virtual final instance bool Equals(class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 77 (0x4d) + // Code size 78 (0x4e) .maxstack 4 .locals init ([0] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] !a V_2, [3] !a V_3) + .line 4,4 : 10,20 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0045 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0046 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0043 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0044 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0019: stloc.2 + IL_001a: ldloc.1 + IL_001b: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0020: stloc.3 + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, !!0) - IL_0027: brfalse.s IL_0041 - - .line 16707566,16707566 : 0,0 '' - IL_0029: ldloc.0 - IL_002a: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_002f: stloc.2 - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0036: stloc.3 - IL_0037: ldloc.2 - IL_0038: ldloc.3 - IL_0039: tail. - IL_003b: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + IL_0028: brfalse.s IL_0042 + + .line 16707566,16707566 : 0,0 '' + IL_002a: ldloc.0 + IL_002b: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0030: stloc.2 + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0037: stloc.3 + IL_0038: ldloc.2 + IL_0039: ldloc.3 + IL_003a: tail. + IL_003c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, !!0) - IL_0040: ret + IL_0041: ret .line 16707566,16707566 : 0,0 '' - IL_0041: ldc.i4.0 - IL_0042: ret + IL_0042: ldc.i4.0 + IL_0043: ret .line 16707566,16707566 : 0,0 '' - IL_0043: ldc.i4.0 - IL_0044: ret + IL_0044: ldc.i4.0 + IL_0045: ret .line 16707566,16707566 : 0,0 '' - IL_0045: ldarg.1 - IL_0046: ldnull - IL_0047: cgt.un - IL_0049: ldc.i4.0 - IL_004a: ceq - IL_004c: ret + IL_0046: ldarg.1 + IL_0047: ldnull + IL_0048: cgt.un + IL_004a: ldc.i4.0 + IL_004b: ceq + IL_004d: ret } // end of method GenericKey`1::Equals .method public hidebysig virtual final @@ -640,6 +655,7 @@ IL_0000: ldarg.1 IL_0001: isinst class Compare07/CompareMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0014 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.bsl index 5b5491417d..8184984cca 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Compare10.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000A98 Length: 0x0000058E } .module Compare10.dll -// MVID: {60BE1F16-04BF-1753-A745-0383161FBE60} +// MVID: {611C550D-04BF-1753-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06C00000 +// Image base: 0x07060000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Compare10/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 119 (0x77) + // Code size 120 (0x78) .maxstack 4 .locals init ([0] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_0, [1] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_1, @@ -187,109 +187,114 @@ [4] int32 V_4, [5] int32 V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Compare10.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006d + .line 4,4 : 10,13 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Compare10.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0027: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 16707566,16707566 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 16707566,16707566 : 0,0 '' - IL_0038: nop + IL_0039: nop .line 16707566,16707566 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003a: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 16707566,16707566 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 16707566,16707566 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 16707566,16707566 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 16707566,16707566 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.3 - IL_004c: ldloc.0 - IL_004d: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0052: stloc.s V_4 - IL_0054: ldloc.1 - IL_0055: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_005a: stloc.s V_5 - IL_005c: ldloc.s V_4 - IL_005e: ldloc.s V_5 - IL_0060: bge.s IL_0064 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.3 + IL_004d: ldloc.0 + IL_004e: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0053: stloc.s V_4 + IL_0055: ldloc.1 + IL_0056: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_005b: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_005d: ldloc.s V_4 + IL_005f: ldloc.s V_5 + IL_0061: bge.s IL_0065 .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.m1 - IL_0063: ret + IL_0063: ldc.i4.m1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldloc.s V_4 - IL_0066: ldloc.s V_5 - IL_0068: cgt - IL_006a: ret + IL_0065: ldloc.s V_4 + IL_0067: ldloc.s V_5 + IL_0069: cgt + IL_006b: ret .line 16707566,16707566 : 0,0 '' - IL_006b: ldc.i4.1 - IL_006c: ret + IL_006c: ldc.i4.1 + IL_006d: ret .line 16707566,16707566 : 0,0 '' - IL_006d: ldarg.1 - IL_006e: ldnull - IL_006f: cgt.un - IL_0071: brfalse.s IL_0075 + IL_006e: ldarg.1 + IL_006f: ldnull + IL_0070: cgt.un + IL_0072: brfalse.s IL_0076 .line 16707566,16707566 : 0,0 '' - IL_0073: ldc.i4.m1 - IL_0074: ret + IL_0074: ldc.i4.m1 + IL_0075: ret .line 16707566,16707566 : 0,0 '' - IL_0075: ldc.i4.0 - IL_0076: ret + IL_0076: ldc.i4.0 + IL_0077: ret } // end of method Key::CompareTo .method public hidebysig virtual final @@ -323,6 +328,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Compare10/CompareMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -349,6 +355,7 @@ IL_0026: ldloc.2 IL_0027: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 IL_002c: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_002e: ldloc.s V_4 IL_0030: ldloc.s V_5 IL_0032: bge.s IL_0038 @@ -367,6 +374,7 @@ IL_003e: nop .line 16707566,16707566 : 0,0 '' IL_003f: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0040: ldloc.3 IL_0041: ldc.i4.0 IL_0042: bge.s IL_0046 @@ -391,6 +399,7 @@ IL_0054: ldloc.2 IL_0055: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 IL_005a: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_005c: ldloc.s V_4 IL_005e: ldloc.s V_5 IL_0060: bge.s IL_0064 @@ -429,58 +438,61 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 60 (0x3c) + // Code size 61 (0x3d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_1) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0019: ldloc.0 - IL_001a: ldc.i4.6 - IL_001b: shl - IL_001c: ldloc.0 - IL_001d: ldc.i4.2 - IL_001e: shr - IL_001f: add + .line 4,4 : 10,13 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr IL_0020: add IL_0021: add - IL_0022: stloc.0 - IL_0023: ldc.i4 0x9e3779b9 - IL_0028: ldloc.1 - IL_0029: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_002e: ldloc.0 - IL_002f: ldc.i4.6 - IL_0030: shl - IL_0031: ldloc.0 - IL_0032: ldc.i4.2 - IL_0033: shr - IL_0034: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldc.i4 0x9e3779b9 + IL_0029: ldloc.1 + IL_002a: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr IL_0035: add IL_0036: add - IL_0037: stloc.0 - IL_0038: ldloc.0 - IL_0039: ret + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: ldc.i4.0 - IL_003b: ret + IL_003b: ldc.i4.0 + IL_003c: ret } // end of method Key::GetHashCode .method public hidebysig virtual final @@ -501,120 +513,127 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 63 (0x3f) + // Code size 64 (0x40) .maxstack 4 .locals init ([0] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_0, [1] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_1, [2] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_2) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0037 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0038 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Compare10/CompareMicroPerfAndCodeGenerationTests/Key - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0035 + IL_0007: ldarg.1 + IL_0008: isinst Compare10/CompareMicroPerfAndCodeGenerationTests/Key + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0036 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop + IL_0011: ldarg.0 + IL_0012: pop .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001c: ldloc.2 - IL_001d: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0022: bne.un.s IL_0033 + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0017: ldloc.1 + IL_0018: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_001d: ldloc.2 + IL_001e: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0023: bne.un.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0024: ldloc.1 - IL_0025: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_002a: ldloc.2 - IL_002b: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0030: ceq - IL_0032: ret + IL_0025: ldloc.1 + IL_0026: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_002b: ldloc.2 + IL_002c: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0031: ceq + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0034: ldc.i4.0 + IL_0035: ret .line 16707566,16707566 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 16707566,16707566 : 0,0 '' - IL_0037: ldarg.1 - IL_0038: ldnull - IL_0039: cgt.un - IL_003b: ldc.i4.0 - IL_003c: ceq - IL_003e: ret + IL_0038: ldarg.1 + IL_0039: ldnull + IL_003a: cgt.un + IL_003c: ldc.i4.0 + IL_003d: ceq + IL_003f: ret } // end of method Key::Equals .method public hidebysig virtual final instance bool Equals(class Compare10/CompareMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_0, [1] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_1) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: bne.un.s IL_002f + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: bne.un.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::item2 + IL_002d: ceq + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method Key::Equals .method public hidebysig virtual final @@ -628,6 +647,7 @@ IL_0000: ldarg.1 IL_0001: isinst Compare10/CompareMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -792,7 +812,7 @@ instance int32 CompareTo(class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 169 (0xa9) + // Code size 170 (0xaa) .maxstack 5 .locals init ([0] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -805,116 +825,120 @@ [8] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_8, [9] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_9, [10] int32 V_10) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse IL_009f + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse IL_00a0 .line 16707566,16707566 : 0,0 '' - IL_0009: ldarg.1 - IL_000a: ldnull - IL_000b: cgt.un - IL_000d: brfalse IL_009d + IL_000a: ldarg.1 + IL_000b: ldnull + IL_000c: cgt.un + IL_000e: brfalse IL_009e .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: pop + IL_0013: ldarg.0 + IL_0014: pop .line 16707566,16707566 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.0 - IL_0016: ldarg.1 - IL_0017: stloc.1 - IL_0018: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_001d: stloc.3 - IL_001e: ldloc.0 - IL_001f: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0024: stloc.s V_4 - IL_0026: ldloc.1 - IL_0027: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_002c: stloc.s V_5 - IL_002e: ldloc.s V_4 - IL_0030: ldloc.s V_5 - IL_0032: ldloc.3 - IL_0033: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0015: ldarg.0 + IL_0016: stloc.0 + IL_0017: ldarg.1 + IL_0018: stloc.1 + IL_0019: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_001e: stloc.3 + IL_001f: ldloc.0 + IL_0020: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0025: stloc.s V_4 + IL_0027: ldloc.1 + IL_0028: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_002d: stloc.s V_5 + IL_002f: ldloc.s V_4 + IL_0031: ldloc.s V_5 + IL_0033: ldloc.3 + IL_0034: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_0038: stloc.2 - IL_0039: ldloc.2 - IL_003a: ldc.i4.0 - IL_003b: bge.s IL_003f + IL_0039: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: bge.s IL_0040 .line 16707566,16707566 : 0,0 '' - IL_003d: ldloc.2 - IL_003e: ret + IL_003e: ldloc.2 + IL_003f: ret .line 16707566,16707566 : 0,0 '' - IL_003f: ldloc.2 - IL_0040: ldc.i4.0 - IL_0041: ble.s IL_0045 + IL_0040: ldloc.2 + IL_0041: ldc.i4.0 + IL_0042: ble.s IL_0046 .line 16707566,16707566 : 0,0 '' - IL_0043: ldloc.2 - IL_0044: ret + IL_0044: ldloc.2 + IL_0045: ret .line 16707566,16707566 : 0,0 '' - IL_0045: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004a: stloc.3 - IL_004b: ldloc.0 - IL_004c: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0051: stloc.s V_6 - IL_0053: ldloc.1 - IL_0054: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0059: stloc.s V_7 - IL_005b: ldloc.s V_6 - IL_005d: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0062: stloc.s V_4 - IL_0064: ldloc.s V_6 - IL_0066: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_006b: stloc.s V_5 - IL_006d: ldloc.s V_7 - IL_006f: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0074: stloc.s V_8 - IL_0076: ldloc.s V_7 - IL_0078: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_007d: stloc.s V_9 - IL_007f: ldloc.s V_4 - IL_0081: ldloc.s V_8 - IL_0083: ldloc.3 - IL_0084: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004b: stloc.3 + IL_004c: ldloc.0 + IL_004d: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0052: stloc.s V_6 + IL_0054: ldloc.1 + IL_0055: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_005a: stloc.s V_7 + IL_005c: ldloc.s V_6 + IL_005e: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0063: stloc.s V_4 + IL_0065: ldloc.s V_6 + IL_0067: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_006c: stloc.s V_5 + IL_006e: ldloc.s V_7 + IL_0070: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0075: stloc.s V_8 + IL_0077: ldloc.s V_7 + IL_0079: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_007e: stloc.s V_9 + IL_0080: ldloc.s V_4 + IL_0082: ldloc.s V_8 + IL_0084: ldloc.3 + IL_0085: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_0089: stloc.s V_10 - IL_008b: ldloc.s V_10 - IL_008d: brfalse.s IL_0092 + IL_008a: stloc.s V_10 + .line 16707566,16707566 : 0,0 '' + IL_008c: ldloc.s V_10 + IL_008e: brfalse.s IL_0093 .line 16707566,16707566 : 0,0 '' - IL_008f: ldloc.s V_10 - IL_0091: ret + IL_0090: ldloc.s V_10 + IL_0092: ret .line 16707566,16707566 : 0,0 '' - IL_0092: ldloc.s V_5 - IL_0094: ldloc.s V_9 - IL_0096: ldloc.3 - IL_0097: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0093: ldloc.s V_5 + IL_0095: ldloc.s V_9 + IL_0097: ldloc.3 + IL_0098: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_009c: ret + IL_009d: ret .line 16707566,16707566 : 0,0 '' - IL_009d: ldc.i4.1 - IL_009e: ret + IL_009e: ldc.i4.1 + IL_009f: ret .line 16707566,16707566 : 0,0 '' - IL_009f: ldarg.1 - IL_00a0: ldnull - IL_00a1: cgt.un - IL_00a3: brfalse.s IL_00a7 + IL_00a0: ldarg.1 + IL_00a1: ldnull + IL_00a2: cgt.un + IL_00a4: brfalse.s IL_00a8 .line 16707566,16707566 : 0,0 '' - IL_00a5: ldc.i4.m1 - IL_00a6: ret + IL_00a6: ldc.i4.m1 + IL_00a7: ret .line 16707566,16707566 : 0,0 '' - IL_00a7: ldc.i4.0 - IL_00a8: ret + IL_00a8: ldc.i4.0 + IL_00a9: ret } // end of method KeyWithInnerKeys::CompareTo .method public hidebysig virtual final @@ -953,6 +977,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -985,6 +1010,7 @@ IL_0039: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) IL_003e: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_003f: ldloc.3 IL_0040: ldc.i4.0 IL_0041: bge.s IL_0045 @@ -1027,6 +1053,7 @@ IL_0084: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) IL_0089: stloc.s V_10 + .line 16707566,16707566 : 0,0 '' IL_008b: ldloc.s V_10 IL_008d: brfalse.s IL_0092 @@ -1066,7 +1093,7 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 107 (0x6b) + // Code size 108 (0x6c) .maxstack 7 .locals init ([0] int32 V_0, [1] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -1074,76 +1101,79 @@ [3] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_3, [4] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_4, [5] int32 V_5) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0069 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0019: stloc.2 - IL_001a: ldloc.2 - IL_001b: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0020: stloc.3 - IL_0021: ldloc.2 - IL_0022: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0027: stloc.s V_4 - IL_0029: ldloc.3 - IL_002a: ldarg.1 - IL_002b: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_0030: stloc.s V_5 - IL_0032: ldloc.s V_5 - IL_0034: ldc.i4.5 - IL_0035: shl - IL_0036: ldloc.s V_5 - IL_0038: add - IL_0039: ldloc.s V_4 - IL_003b: ldarg.1 - IL_003c: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_0041: xor - IL_0042: ldloc.0 - IL_0043: ldc.i4.6 - IL_0044: shl - IL_0045: ldloc.0 - IL_0046: ldc.i4.2 - IL_0047: shr - IL_0048: add + .line 5,5 : 10,26 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006a + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_001a: stloc.2 + IL_001b: ldloc.2 + IL_001c: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0021: stloc.3 + IL_0022: ldloc.2 + IL_0023: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0028: stloc.s V_4 + IL_002a: ldloc.3 + IL_002b: ldarg.1 + IL_002c: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_0031: stloc.s V_5 + IL_0033: ldloc.s V_5 + IL_0035: ldc.i4.5 + IL_0036: shl + IL_0037: ldloc.s V_5 + IL_0039: add + IL_003a: ldloc.s V_4 + IL_003c: ldarg.1 + IL_003d: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_0042: xor + IL_0043: ldloc.0 + IL_0044: ldc.i4.6 + IL_0045: shl + IL_0046: ldloc.0 + IL_0047: ldc.i4.2 + IL_0048: shr IL_0049: add IL_004a: add - IL_004b: stloc.0 - IL_004c: ldc.i4 0x9e3779b9 - IL_0051: ldloc.1 - IL_0052: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0057: ldarg.1 - IL_0058: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_005d: ldloc.0 - IL_005e: ldc.i4.6 - IL_005f: shl - IL_0060: ldloc.0 - IL_0061: ldc.i4.2 - IL_0062: shr - IL_0063: add + IL_004b: add + IL_004c: stloc.0 + IL_004d: ldc.i4 0x9e3779b9 + IL_0052: ldloc.1 + IL_0053: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0058: ldarg.1 + IL_0059: callvirt instance int32 Compare10/CompareMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_005e: ldloc.0 + IL_005f: ldc.i4.6 + IL_0060: shl + IL_0061: ldloc.0 + IL_0062: ldc.i4.2 + IL_0063: shr IL_0064: add IL_0065: add - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ret + IL_0066: add + IL_0067: stloc.0 + IL_0068: ldloc.0 + IL_0069: ret .line 16707566,16707566 : 0,0 '' - IL_0069: ldc.i4.0 - IL_006a: ret + IL_006a: ldc.i4.0 + IL_006b: ret } // end of method KeyWithInnerKeys::GetHashCode .method public hidebysig virtual final @@ -1164,7 +1194,7 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 138 (0x8a) + // Code size 139 (0x8b) .maxstack 5 .locals init ([0] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -1175,155 +1205,163 @@ [6] class [mscorlib]System.Tuple`2 V_6, [7] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_7, [8] class Compare10/CompareMicroPerfAndCodeGenerationTests/Key V_8) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse IL_0082 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse IL_0083 .line 16707566,16707566 : 0,0 '' - IL_0009: ldarg.1 - IL_000a: isinst Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000f: stloc.0 - IL_0010: ldloc.0 - IL_0011: brfalse.s IL_0080 + IL_000a: ldarg.1 + IL_000b: isinst Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0010: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0011: ldloc.0 + IL_0012: brfalse.s IL_0081 .line 16707566,16707566 : 0,0 '' - IL_0013: ldarg.0 - IL_0014: pop + IL_0014: ldarg.0 + IL_0015: pop .line 16707566,16707566 : 0,0 '' - IL_0015: ldarg.0 - IL_0016: stloc.1 - IL_0017: ldloc.0 - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0026: stloc.s V_4 - IL_0028: ldloc.3 - IL_0029: ldloc.s V_4 - IL_002b: ldarg.2 - IL_002c: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0016: ldarg.0 + IL_0017: stloc.1 + IL_0018: ldloc.0 + IL_0019: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_001a: ldloc.1 + IL_001b: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0020: stloc.3 + IL_0021: ldloc.2 + IL_0022: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0027: stloc.s V_4 + IL_0029: ldloc.3 + IL_002a: ldloc.s V_4 + IL_002c: ldarg.2 + IL_002d: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_0031: brfalse.s IL_007e + IL_0032: brfalse.s IL_007f .line 16707566,16707566 : 0,0 '' - IL_0033: ldloc.1 - IL_0034: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0039: stloc.s V_5 - IL_003b: ldloc.2 - IL_003c: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0041: stloc.s V_6 - IL_0043: ldloc.s V_5 - IL_0045: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_004a: stloc.3 - IL_004b: ldloc.s V_5 - IL_004d: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0052: stloc.s V_4 - IL_0054: ldloc.s V_6 - IL_0056: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_005b: stloc.s V_7 - IL_005d: ldloc.s V_6 - IL_005f: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0064: stloc.s V_8 - IL_0066: ldloc.3 - IL_0067: ldloc.s V_7 - IL_0069: ldarg.2 - IL_006a: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0034: ldloc.1 + IL_0035: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_003a: stloc.s V_5 + IL_003c: ldloc.2 + IL_003d: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0042: stloc.s V_6 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_004b: stloc.3 + IL_004c: ldloc.s V_5 + IL_004e: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0053: stloc.s V_4 + IL_0055: ldloc.s V_6 + IL_0057: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_005c: stloc.s V_7 + IL_005e: ldloc.s V_6 + IL_0060: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0065: stloc.s V_8 + .line 16707566,16707566 : 0,0 '' + IL_0067: ldloc.3 + IL_0068: ldloc.s V_7 + IL_006a: ldarg.2 + IL_006b: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_006f: brfalse.s IL_007c + IL_0070: brfalse.s IL_007d .line 16707566,16707566 : 0,0 '' - IL_0071: ldloc.s V_4 - IL_0073: ldloc.s V_8 - IL_0075: ldarg.2 - IL_0076: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0072: ldloc.s V_4 + IL_0074: ldloc.s V_8 + IL_0076: ldarg.2 + IL_0077: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_007b: ret + IL_007c: ret .line 16707566,16707566 : 0,0 '' - IL_007c: ldc.i4.0 - IL_007d: ret + IL_007d: ldc.i4.0 + IL_007e: ret .line 16707566,16707566 : 0,0 '' - IL_007e: ldc.i4.0 - IL_007f: ret + IL_007f: ldc.i4.0 + IL_0080: ret .line 16707566,16707566 : 0,0 '' - IL_0080: ldc.i4.0 - IL_0081: ret + IL_0081: ldc.i4.0 + IL_0082: ret .line 16707566,16707566 : 0,0 '' - IL_0082: ldarg.1 - IL_0083: ldnull - IL_0084: cgt.un - IL_0086: ldc.i4.0 - IL_0087: ceq - IL_0089: ret + IL_0083: ldarg.1 + IL_0084: ldnull + IL_0085: cgt.un + IL_0087: ldc.i4.0 + IL_0088: ceq + IL_008a: ret } // end of method KeyWithInnerKeys::Equals .method public hidebysig virtual final instance bool Equals(class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 69 (0x45) + // Code size 70 (0x46) .maxstack 4 .locals init ([0] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_003b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_003c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0018: ldloc.1 - IL_0019: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001e: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class Compare10/CompareMicroPerfAndCodeGenerationTests/Key) - IL_0023: brfalse.s IL_0039 - - .line 16707566,16707566 : 0,0 '' - IL_0025: ldloc.0 - IL_0026: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_002b: ldloc.1 - IL_002c: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0031: tail. - IL_0033: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic>(!!0, + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: ldloc.1 + IL_001a: ldfld class Compare10/CompareMicroPerfAndCodeGenerationTests/Key Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_001f: callvirt instance bool Compare10/CompareMicroPerfAndCodeGenerationTests/Key::Equals(class Compare10/CompareMicroPerfAndCodeGenerationTests/Key) + IL_0024: brfalse.s IL_003a + + .line 16707566,16707566 : 0,0 '' + IL_0026: ldloc.0 + IL_0027: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002c: ldloc.1 + IL_002d: ldfld class [mscorlib]System.Tuple`2 Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: tail. + IL_0034: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic>(!!0, !!0) - IL_0038: ret + IL_0039: ret .line 16707566,16707566 : 0,0 '' - IL_0039: ldc.i4.0 - IL_003a: ret + IL_003a: ldc.i4.0 + IL_003b: ret .line 16707566,16707566 : 0,0 '' - IL_003b: ldc.i4.0 - IL_003c: ret + IL_003c: ldc.i4.0 + IL_003d: ret .line 16707566,16707566 : 0,0 '' - IL_003d: ldarg.1 - IL_003e: ldnull - IL_003f: cgt.un - IL_0041: ldc.i4.0 - IL_0042: ceq - IL_0044: ret + IL_003e: ldarg.1 + IL_003f: ldnull + IL_0040: cgt.un + IL_0042: ldc.i4.0 + IL_0043: ceq + IL_0045: ret } // end of method KeyWithInnerKeys::Equals .method public hidebysig virtual final @@ -1337,6 +1375,7 @@ IL_0000: ldarg.1 IL_0001: isinst Compare10/CompareMicroPerfAndCodeGenerationTests/KeyWithInnerKeys IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0014 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals03.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals03.il.bsl index 9942460e50..cc4f7494b6 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals03.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals03.il.bsl @@ -41,13 +41,13 @@ // Offset: 0x00000238 Length: 0x000000B6 } .module Equals03.dll -// MVID: {60BE1F16-0759-3313-A745-0383161FBE60} +// MVID: {611C550D-0759-3313-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05410000 +// Image base: 0x07160000 // =============== CLASS MEMBERS DECLARATION =================== @@ -62,7 +62,7 @@ .custom instance void [FSharp.Core]Microsoft.FSharp.Core.CompilationMappingAttribute::.ctor(valuetype [FSharp.Core]Microsoft.FSharp.Core.SourceConstructFlags) = ( 01 00 07 00 00 00 00 00 ) .method public static bool f4_tuple5() cil managed { - // Code size 63 (0x3f) + // Code size 64 (0x40) .maxstack 4 .locals init ([0] bool x, [1] int32 i) @@ -73,41 +73,43 @@ .line 8,8 : 8,32 '' IL_0002: ldc.i4.0 IL_0003: stloc.1 - IL_0004: br.s IL_0035 + IL_0004: br.s IL_0036 .line 9,9 : 12,26 '' - IL_0006: ldstr "5" - IL_000b: ldstr "5" - IL_0010: call bool [netstandard]System.String::Equals(string, + IL_0006: nop + .line 16707566,16707566 : 0,0 '' + IL_0007: ldstr "5" + IL_000c: ldstr "5" + IL_0011: call bool [netstandard]System.String::Equals(string, string) - IL_0015: brfalse.s IL_002e + IL_0016: brfalse.s IL_002f .line 16707566,16707566 : 0,0 '' - IL_0017: ldc.r8 6. - IL_0020: ldc.r8 7. - IL_0029: ceq + IL_0018: ldc.r8 6. + IL_0021: ldc.r8 7. + IL_002a: ceq .line 16707566,16707566 : 0,0 '' - IL_002b: nop - IL_002c: br.s IL_0030 + IL_002c: nop + IL_002d: br.s IL_0031 .line 16707566,16707566 : 0,0 '' - IL_002e: ldc.i4.0 + IL_002f: ldc.i4.0 .line 16707566,16707566 : 0,0 '' - IL_002f: nop + IL_0030: nop .line 16707566,16707566 : 0,0 '' - IL_0030: stloc.0 - IL_0031: ldloc.1 - IL_0032: ldc.i4.1 - IL_0033: add - IL_0034: stloc.1 + IL_0031: stloc.0 + IL_0032: ldloc.1 + IL_0033: ldc.i4.1 + IL_0034: add + IL_0035: stloc.1 .line 8,8 : 8,32 '' - IL_0035: ldloc.1 - IL_0036: ldc.i4 0x989681 - IL_003b: blt.s IL_0006 + IL_0036: ldloc.1 + IL_0037: ldc.i4 0x989681 + IL_003c: blt.s IL_0006 .line 10,10 : 8,9 '' - IL_003d: ldloc.0 - IL_003e: ret + IL_003e: ldloc.0 + IL_003f: ret } // end of method EqualsMicroPerfAndCodeGenerationTests::f4_tuple5 } // end of class EqualsMicroPerfAndCodeGenerationTests diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals04.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals04.il.bsl index f250eab638..b2b49483a4 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals04.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals04.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000006E0 Length: 0x000003B7 } .module Equals04.dll -// MVID: {60BE1F16-0759-EA8A-A745-0383161FBE60} +// MVID: {611C550D-0759-EA8A-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x07050000 +// Image base: 0x071F0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 119 (0x77) + // Code size 120 (0x78) .maxstack 4 .locals init ([0] class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key V_0, [1] class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key V_1, @@ -187,109 +187,114 @@ [4] int32 V_4, [5] int32 V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Equals04.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006d + .line 4,4 : 10,13 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Equals04.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0027: stloc.s V_5 .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 16707566,16707566 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 16707566,16707566 : 0,0 '' - IL_0038: nop + IL_0039: nop .line 16707566,16707566 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003a: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 16707566,16707566 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 16707566,16707566 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 16707566,16707566 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 16707566,16707566 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.3 - IL_004c: ldloc.0 - IL_004d: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0052: stloc.s V_4 - IL_0054: ldloc.1 - IL_0055: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_005a: stloc.s V_5 - IL_005c: ldloc.s V_4 - IL_005e: ldloc.s V_5 - IL_0060: bge.s IL_0064 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.3 + IL_004d: ldloc.0 + IL_004e: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0053: stloc.s V_4 + IL_0055: ldloc.1 + IL_0056: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_005b: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_005d: ldloc.s V_4 + IL_005f: ldloc.s V_5 + IL_0061: bge.s IL_0065 .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.m1 - IL_0063: ret + IL_0063: ldc.i4.m1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldloc.s V_4 - IL_0066: ldloc.s V_5 - IL_0068: cgt - IL_006a: ret + IL_0065: ldloc.s V_4 + IL_0067: ldloc.s V_5 + IL_0069: cgt + IL_006b: ret .line 16707566,16707566 : 0,0 '' - IL_006b: ldc.i4.1 - IL_006c: ret + IL_006c: ldc.i4.1 + IL_006d: ret .line 16707566,16707566 : 0,0 '' - IL_006d: ldarg.1 - IL_006e: ldnull - IL_006f: cgt.un - IL_0071: brfalse.s IL_0075 + IL_006e: ldarg.1 + IL_006f: ldnull + IL_0070: cgt.un + IL_0072: brfalse.s IL_0076 .line 16707566,16707566 : 0,0 '' - IL_0073: ldc.i4.m1 - IL_0074: ret + IL_0074: ldc.i4.m1 + IL_0075: ret .line 16707566,16707566 : 0,0 '' - IL_0075: ldc.i4.0 - IL_0076: ret + IL_0076: ldc.i4.0 + IL_0077: ret } // end of method Key::CompareTo .method public hidebysig virtual final @@ -323,6 +328,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Equals04/EqualsMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -349,6 +355,7 @@ IL_0026: ldloc.2 IL_0027: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 IL_002c: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_002e: ldloc.s V_4 IL_0030: ldloc.s V_5 IL_0032: bge.s IL_0038 @@ -367,6 +374,7 @@ IL_003e: nop .line 16707566,16707566 : 0,0 '' IL_003f: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0040: ldloc.3 IL_0041: ldc.i4.0 IL_0042: bge.s IL_0046 @@ -391,6 +399,7 @@ IL_0054: ldloc.2 IL_0055: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 IL_005a: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_005c: ldloc.s V_4 IL_005e: ldloc.s V_5 IL_0060: bge.s IL_0064 @@ -429,58 +438,61 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 60 (0x3c) + // Code size 61 (0x3d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key V_1) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0019: ldloc.0 - IL_001a: ldc.i4.6 - IL_001b: shl - IL_001c: ldloc.0 - IL_001d: ldc.i4.2 - IL_001e: shr - IL_001f: add + .line 4,4 : 10,13 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr IL_0020: add IL_0021: add - IL_0022: stloc.0 - IL_0023: ldc.i4 0x9e3779b9 - IL_0028: ldloc.1 - IL_0029: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_002e: ldloc.0 - IL_002f: ldc.i4.6 - IL_0030: shl - IL_0031: ldloc.0 - IL_0032: ldc.i4.2 - IL_0033: shr - IL_0034: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldc.i4 0x9e3779b9 + IL_0029: ldloc.1 + IL_002a: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr IL_0035: add IL_0036: add - IL_0037: stloc.0 - IL_0038: ldloc.0 - IL_0039: ret + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: ldc.i4.0 - IL_003b: ret + IL_003b: ldc.i4.0 + IL_003c: ret } // end of method Key::GetHashCode .method public hidebysig virtual final @@ -501,120 +513,127 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 63 (0x3f) + // Code size 64 (0x40) .maxstack 4 .locals init ([0] class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key V_0, [1] class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key V_1, [2] class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key V_2) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0037 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0038 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Equals04/EqualsMicroPerfAndCodeGenerationTests/Key - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0035 + IL_0007: ldarg.1 + IL_0008: isinst Equals04/EqualsMicroPerfAndCodeGenerationTests/Key + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0036 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop + IL_0011: ldarg.0 + IL_0012: pop + .line 16707566,16707566 : 0,0 '' + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001c: ldloc.2 - IL_001d: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0022: bne.un.s IL_0033 + IL_0017: ldloc.1 + IL_0018: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_001d: ldloc.2 + IL_001e: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0023: bne.un.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0024: ldloc.1 - IL_0025: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_002a: ldloc.2 - IL_002b: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0030: ceq - IL_0032: ret + IL_0025: ldloc.1 + IL_0026: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_002b: ldloc.2 + IL_002c: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0031: ceq + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0034: ldc.i4.0 + IL_0035: ret .line 16707566,16707566 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 16707566,16707566 : 0,0 '' - IL_0037: ldarg.1 - IL_0038: ldnull - IL_0039: cgt.un - IL_003b: ldc.i4.0 - IL_003c: ceq - IL_003e: ret + IL_0038: ldarg.1 + IL_0039: ldnull + IL_003a: cgt.un + IL_003c: ldc.i4.0 + IL_003d: ceq + IL_003f: ret } // end of method Key::Equals .method public hidebysig virtual final instance bool Equals(class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key V_0, [1] class Equals04/EqualsMicroPerfAndCodeGenerationTests/Key V_1) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: bne.un.s IL_002f + IL_0013: ldloc.0 + IL_0014: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: bne.un.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 Equals04/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_002d: ceq + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method Key::Equals .method public hidebysig virtual final @@ -628,6 +647,7 @@ IL_0000: ldarg.1 IL_0001: isinst Equals04/EqualsMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals05.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals05.il.bsl index 0c1255075b..6bdcdf1022 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals05.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals05.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000006D0 Length: 0x000003B9 } .module Equals05.dll -// MVID: {60BE1F16-0759-CBC5-A745-0383161FBE60} +// MVID: {611C550D-0759-CBC5-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x067E0000 +// Image base: 0x053D0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -123,109 +123,114 @@ instance int32 CompareTo(class Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 101 (0x65) + // Code size 102 (0x66) .maxstack 4 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IComparer V_1, [2] int32 V_2, [3] int32 V_3) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Equals05.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_005b + .line 4,4 : 10,14 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Equals05.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_005c .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0059 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_005a .line 16707566,16707566 : 0,0 '' - IL_000c: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0018: stloc.2 - IL_0019: ldarg.1 - IL_001a: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: bge.s IL_0028 + IL_000d: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0019: stloc.2 + IL_001a: ldarg.1 + IL_001b: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0020: stloc.3 + .line 16707566,16707566 : 0,0 '' + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: bge.s IL_0029 .line 16707566,16707566 : 0,0 '' - IL_0024: ldc.i4.m1 + IL_0025: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_0025: nop - IL_0026: br.s IL_002d + IL_0026: nop + IL_0027: br.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_0028: ldloc.2 - IL_0029: ldloc.3 - IL_002a: cgt + IL_0029: ldloc.2 + IL_002a: ldloc.3 + IL_002b: cgt .line 16707566,16707566 : 0,0 '' - IL_002c: nop + IL_002d: nop .line 16707566,16707566 : 0,0 '' - IL_002d: stloc.0 - IL_002e: ldloc.0 - IL_002f: ldc.i4.0 - IL_0030: bge.s IL_0034 + IL_002e: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_002f: ldloc.0 + IL_0030: ldc.i4.0 + IL_0031: bge.s IL_0035 .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.0 - IL_0033: ret + IL_0033: ldloc.0 + IL_0034: ret .line 16707566,16707566 : 0,0 '' - IL_0034: ldloc.0 - IL_0035: ldc.i4.0 - IL_0036: ble.s IL_003a + IL_0035: ldloc.0 + IL_0036: ldc.i4.0 + IL_0037: ble.s IL_003b .line 16707566,16707566 : 0,0 '' - IL_0038: ldloc.0 - IL_0039: ret + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_003f: stloc.1 - IL_0040: ldarg.0 - IL_0041: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0046: stloc.2 - IL_0047: ldarg.1 - IL_0048: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_004d: stloc.3 - IL_004e: ldloc.2 - IL_004f: ldloc.3 - IL_0050: bge.s IL_0054 + IL_003b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0040: stloc.1 + IL_0041: ldarg.0 + IL_0042: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0047: stloc.2 + IL_0048: ldarg.1 + IL_0049: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_004e: stloc.3 + .line 16707566,16707566 : 0,0 '' + IL_004f: ldloc.2 + IL_0050: ldloc.3 + IL_0051: bge.s IL_0055 .line 16707566,16707566 : 0,0 '' - IL_0052: ldc.i4.m1 - IL_0053: ret + IL_0053: ldc.i4.m1 + IL_0054: ret .line 16707566,16707566 : 0,0 '' - IL_0054: ldloc.2 - IL_0055: ldloc.3 - IL_0056: cgt - IL_0058: ret + IL_0055: ldloc.2 + IL_0056: ldloc.3 + IL_0057: cgt + IL_0059: ret .line 16707566,16707566 : 0,0 '' - IL_0059: ldc.i4.1 - IL_005a: ret + IL_005a: ldc.i4.1 + IL_005b: ret .line 16707566,16707566 : 0,0 '' - IL_005b: ldarg.1 - IL_005c: ldnull - IL_005d: cgt.un - IL_005f: brfalse.s IL_0063 + IL_005c: ldarg.1 + IL_005d: ldnull + IL_005e: cgt.un + IL_0060: brfalse.s IL_0064 .line 16707566,16707566 : 0,0 '' - IL_0061: ldc.i4.m1 - IL_0062: ret + IL_0062: ldc.i4.m1 + IL_0063: ret .line 16707566,16707566 : 0,0 '' - IL_0063: ldc.i4.0 - IL_0064: ret + IL_0064: ldc.i4.0 + IL_0065: ret } // end of method KeyR::CompareTo .method public hidebysig virtual final @@ -257,6 +262,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -276,6 +282,7 @@ IL_001f: ldloc.0 IL_0020: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ IL_0025: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0026: ldloc.2 IL_0027: ldloc.3 IL_0028: bge.s IL_002e @@ -294,6 +301,7 @@ IL_0032: nop .line 16707566,16707566 : 0,0 '' IL_0033: stloc.1 + .line 16707566,16707566 : 0,0 '' IL_0034: ldloc.1 IL_0035: ldc.i4.0 IL_0036: bge.s IL_003a @@ -318,6 +326,7 @@ IL_0047: ldloc.0 IL_0048: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ IL_004d: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_004e: ldloc.2 IL_004f: ldloc.3 IL_0050: bge.s IL_0054 @@ -356,50 +365,52 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 54 (0x36) + // Code size 55 (0x37) .maxstack 7 .locals init ([0] int32 V_0) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0034 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.0 - IL_000e: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0013: ldloc.0 - IL_0014: ldc.i4.6 - IL_0015: shl - IL_0016: ldloc.0 - IL_0017: ldc.i4.2 - IL_0018: shr - IL_0019: add + .line 4,4 : 10,14 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0035 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.0 + IL_000f: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0014: ldloc.0 + IL_0015: ldc.i4.6 + IL_0016: shl + IL_0017: ldloc.0 + IL_0018: ldc.i4.2 + IL_0019: shr IL_001a: add IL_001b: add - IL_001c: stloc.0 - IL_001d: ldc.i4 0x9e3779b9 - IL_0022: ldarg.0 - IL_0023: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0028: ldloc.0 - IL_0029: ldc.i4.6 - IL_002a: shl - IL_002b: ldloc.0 - IL_002c: ldc.i4.2 - IL_002d: shr - IL_002e: add + IL_001c: add + IL_001d: stloc.0 + IL_001e: ldc.i4 0x9e3779b9 + IL_0023: ldarg.0 + IL_0024: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0029: ldloc.0 + IL_002a: ldc.i4.6 + IL_002b: shl + IL_002c: ldloc.0 + IL_002d: ldc.i4.2 + IL_002e: shr IL_002f: add IL_0030: add - IL_0031: stloc.0 - IL_0032: ldloc.0 - IL_0033: ret + IL_0031: add + IL_0032: stloc.0 + IL_0033: ldloc.0 + IL_0034: ret .line 16707566,16707566 : 0,0 '' - IL_0034: ldc.i4.0 - IL_0035: ret + IL_0035: ldc.i4.0 + IL_0036: ret } // end of method KeyR::GetHashCode .method public hidebysig virtual final @@ -420,102 +431,107 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 57 (0x39) + // Code size 58 (0x3a) .maxstack 4 .locals init ([0] class Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR V_0) + .line 4,4 : 10,14 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0031 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_002f + IL_0007: ldarg.1 + IL_0008: isinst Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0016: ldloc.0 - IL_0017: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_001c: bne.un.s IL_002d + IL_0011: ldarg.0 + IL_0012: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0017: ldloc.0 + IL_0018: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_001d: bne.un.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_001e: ldarg.0 - IL_001f: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0024: ldloc.0 - IL_0025: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_002a: ceq - IL_002c: ret + IL_001f: ldarg.0 + IL_0020: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0025: ldloc.0 + IL_0026: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_002b: ceq + IL_002d: ret .line 16707566,16707566 : 0,0 '' - IL_002d: ldc.i4.0 - IL_002e: ret + IL_002e: ldc.i4.0 + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldarg.1 - IL_0032: ldnull - IL_0033: cgt.un - IL_0035: ldc.i4.0 - IL_0036: ceq - IL_0038: ret + IL_0032: ldarg.1 + IL_0033: ldnull + IL_0034: cgt.un + IL_0036: ldc.i4.0 + IL_0037: ceq + IL_0039: ret } // end of method KeyR::Equals .method public hidebysig virtual final instance bool Equals(class Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 53 (0x35) + // Code size 54 (0x36) .maxstack 8 + .line 4,4 : 10,14 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_002b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_002c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0012: ldarg.1 - IL_0013: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0018: bne.un.s IL_0029 + IL_000d: ldarg.0 + IL_000e: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0013: ldarg.1 + IL_0014: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0019: bne.un.s IL_002a .line 16707566,16707566 : 0,0 '' - IL_001a: ldarg.0 - IL_001b: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0020: ldarg.1 - IL_0021: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0026: ceq - IL_0028: ret + IL_001b: ldarg.0 + IL_001c: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0021: ldarg.1 + IL_0022: ldfld int32 Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0027: ceq + IL_0029: ret .line 16707566,16707566 : 0,0 '' - IL_0029: ldc.i4.0 - IL_002a: ret + IL_002a: ldc.i4.0 + IL_002b: ret .line 16707566,16707566 : 0,0 '' - IL_002b: ldc.i4.0 - IL_002c: ret + IL_002c: ldc.i4.0 + IL_002d: ret .line 16707566,16707566 : 0,0 '' - IL_002d: ldarg.1 - IL_002e: ldnull - IL_002f: cgt.un - IL_0031: ldc.i4.0 - IL_0032: ceq - IL_0034: ret + IL_002e: ldarg.1 + IL_002f: ldnull + IL_0030: cgt.un + IL_0032: ldc.i4.0 + IL_0033: ceq + IL_0035: ret } // end of method KeyR::Equals .method public hidebysig virtual final @@ -529,6 +545,7 @@ IL_0000: ldarg.1 IL_0001: isinst Equals05/EqualsMicroPerfAndCodeGenerationTests/KeyR IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals06.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals06.il.bsl index 0a53da50d6..1aa09e5000 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals06.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals06.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000890 Length: 0x00000688 } .module Equals06.dll -// MVID: {60BE1F16-0759-31EC-A745-0383161FBE60} +// MVID: {611C550D-0759-31EC-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06DA0000 +// Image base: 0x056C0000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 110 (0x6e) + // Code size 111 (0x6f) .maxstack 5 .locals init ([0] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, @@ -187,93 +187,96 @@ [4] !a V_4, [5] !a V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Equals06.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0064 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0062 - - .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop - .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.3 - IL_0029: ldloc.s V_4 - IL_002b: ldloc.s V_5 - IL_002d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, + .line 4,4 : 10,20 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Equals06.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0065 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0063 + + .line 16707566,16707566 : 0,0 '' + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0027: stloc.s V_5 + IL_0029: ldloc.3 + IL_002a: ldloc.s V_4 + IL_002c: ldloc.s V_5 + IL_002e: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, !!0, !!0) - IL_0032: stloc.2 - IL_0033: ldloc.2 - IL_0034: ldc.i4.0 - IL_0035: bge.s IL_0039 + IL_0033: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0034: ldloc.2 + IL_0035: ldc.i4.0 + IL_0036: bge.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0037: ldloc.2 - IL_0038: ret + IL_0038: ldloc.2 + IL_0039: ret .line 16707566,16707566 : 0,0 '' - IL_0039: ldloc.2 - IL_003a: ldc.i4.0 - IL_003b: ble.s IL_003f + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: ble.s IL_0040 .line 16707566,16707566 : 0,0 '' - IL_003d: ldloc.2 - IL_003e: ret + IL_003e: ldloc.2 + IL_003f: ret .line 16707566,16707566 : 0,0 '' - IL_003f: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0044: stloc.3 - IL_0045: ldloc.0 - IL_0046: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_004b: stloc.s V_4 - IL_004d: ldloc.1 - IL_004e: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0053: stloc.s V_5 - IL_0055: ldloc.3 - IL_0056: ldloc.s V_4 - IL_0058: ldloc.s V_5 - IL_005a: tail. - IL_005c: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, + IL_0040: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0045: stloc.3 + IL_0046: ldloc.0 + IL_0047: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_004c: stloc.s V_4 + IL_004e: ldloc.1 + IL_004f: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0054: stloc.s V_5 + IL_0056: ldloc.3 + IL_0057: ldloc.s V_4 + IL_0059: ldloc.s V_5 + IL_005b: tail. + IL_005d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, !!0, !!0) - IL_0061: ret + IL_0062: ret .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.1 - IL_0063: ret + IL_0063: ldc.i4.1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldarg.1 - IL_0065: ldnull - IL_0066: cgt.un - IL_0068: brfalse.s IL_006c + IL_0065: ldarg.1 + IL_0066: ldnull + IL_0067: cgt.un + IL_0069: brfalse.s IL_006d .line 16707566,16707566 : 0,0 '' - IL_006a: ldc.i4.m1 - IL_006b: ret + IL_006b: ldc.i4.m1 + IL_006c: ret .line 16707566,16707566 : 0,0 '' - IL_006c: ldc.i4.0 - IL_006d: ret + IL_006d: ldc.i4.0 + IL_006e: ret } // end of method GenericKey`1::CompareTo .method public hidebysig virtual final @@ -308,6 +311,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -341,6 +345,7 @@ !!0, !!0) IL_0038: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0039: ldloc.3 IL_003a: ldc.i4.0 IL_003b: bge.s IL_003f @@ -398,69 +403,72 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 76 (0x4c) + // Code size 77 (0x4d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] !a V_2) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_004a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0019: stloc.2 - IL_001a: ldarg.1 - IL_001b: ldloc.2 - IL_001c: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + .line 4,4 : 10,20 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_004b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_001a: stloc.2 + IL_001b: ldarg.1 + IL_001c: ldloc.2 + IL_001d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0) - IL_0021: ldloc.0 - IL_0022: ldc.i4.6 - IL_0023: shl - IL_0024: ldloc.0 - IL_0025: ldc.i4.2 - IL_0026: shr - IL_0027: add + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr IL_0028: add IL_0029: add - IL_002a: stloc.0 - IL_002b: ldc.i4 0x9e3779b9 - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0036: stloc.2 - IL_0037: ldarg.1 - IL_0038: ldloc.2 - IL_0039: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldc.i4 0x9e3779b9 + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0037: stloc.2 + IL_0038: ldarg.1 + IL_0039: ldloc.2 + IL_003a: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0) - IL_003e: ldloc.0 - IL_003f: ldc.i4.6 - IL_0040: shl - IL_0041: ldloc.0 - IL_0042: ldc.i4.2 - IL_0043: shr - IL_0044: add + IL_003f: ldloc.0 + IL_0040: ldc.i4.6 + IL_0041: shl + IL_0042: ldloc.0 + IL_0043: ldc.i4.2 + IL_0044: shr IL_0045: add IL_0046: add - IL_0047: stloc.0 - IL_0048: ldloc.0 - IL_0049: ret + IL_0047: add + IL_0048: stloc.0 + IL_0049: ldloc.0 + IL_004a: ret .line 16707566,16707566 : 0,0 '' - IL_004a: ldc.i4.0 - IL_004b: ret + IL_004b: ldc.i4.0 + IL_004c: ret } // end of method GenericKey`1::GetHashCode .method public hidebysig virtual final @@ -481,152 +489,159 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 87 (0x57) + // Code size 88 (0x58) .maxstack 5 .locals init ([0] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, [3] !a V_3, [4] !a V_4) + .line 4,4 : 10,20 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_004f - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_004d - - .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop - .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0023: stloc.s V_4 - IL_0025: ldarg.2 - IL_0026: ldloc.3 - IL_0027: ldloc.s V_4 - IL_0029: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0050 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldarg.1 + IL_0008: isinst class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_004e + + .line 16707566,16707566 : 0,0 '' + IL_0011: ldarg.0 + IL_0012: pop + .line 16707566,16707566 : 0,0 '' + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0017: ldloc.1 + IL_0018: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_001d: stloc.3 + IL_001e: ldloc.2 + IL_001f: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0024: stloc.s V_4 + IL_0026: ldarg.2 + IL_0027: ldloc.3 + IL_0028: ldloc.s V_4 + IL_002a: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0, !!0) - IL_002e: brfalse.s IL_004b - - .line 16707566,16707566 : 0,0 '' - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0036: stloc.3 - IL_0037: ldloc.2 - IL_0038: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003d: stloc.s V_4 - IL_003f: ldarg.2 - IL_0040: ldloc.3 - IL_0041: ldloc.s V_4 - IL_0043: tail. - IL_0045: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_002f: brfalse.s IL_004c + + .line 16707566,16707566 : 0,0 '' + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0037: stloc.3 + IL_0038: ldloc.2 + IL_0039: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_003e: stloc.s V_4 + IL_0040: ldarg.2 + IL_0041: ldloc.3 + IL_0042: ldloc.s V_4 + IL_0044: tail. + IL_0046: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0, !!0) - IL_004a: ret + IL_004b: ret .line 16707566,16707566 : 0,0 '' - IL_004b: ldc.i4.0 - IL_004c: ret + IL_004c: ldc.i4.0 + IL_004d: ret .line 16707566,16707566 : 0,0 '' - IL_004d: ldc.i4.0 - IL_004e: ret + IL_004e: ldc.i4.0 + IL_004f: ret .line 16707566,16707566 : 0,0 '' - IL_004f: ldarg.1 - IL_0050: ldnull - IL_0051: cgt.un - IL_0053: ldc.i4.0 - IL_0054: ceq - IL_0056: ret + IL_0050: ldarg.1 + IL_0051: ldnull + IL_0052: cgt.un + IL_0054: ldc.i4.0 + IL_0055: ceq + IL_0057: ret } // end of method GenericKey`1::Equals .method public hidebysig virtual final instance bool Equals(class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 77 (0x4d) + // Code size 78 (0x4e) .maxstack 4 .locals init ([0] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] !a V_2, [3] !a V_3) + .line 4,4 : 10,20 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0045 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0046 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0043 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0044 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0019: stloc.2 + IL_001a: ldloc.1 + IL_001b: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0020: stloc.3 + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, !!0) - IL_0027: brfalse.s IL_0041 - - .line 16707566,16707566 : 0,0 '' - IL_0029: ldloc.0 - IL_002a: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_002f: stloc.2 - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0036: stloc.3 - IL_0037: ldloc.2 - IL_0038: ldloc.3 - IL_0039: tail. - IL_003b: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + IL_0028: brfalse.s IL_0042 + + .line 16707566,16707566 : 0,0 '' + IL_002a: ldloc.0 + IL_002b: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0030: stloc.2 + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0037: stloc.3 + IL_0038: ldloc.2 + IL_0039: ldloc.3 + IL_003a: tail. + IL_003c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, !!0) - IL_0040: ret + IL_0041: ret .line 16707566,16707566 : 0,0 '' - IL_0041: ldc.i4.0 - IL_0042: ret + IL_0042: ldc.i4.0 + IL_0043: ret .line 16707566,16707566 : 0,0 '' - IL_0043: ldc.i4.0 - IL_0044: ret + IL_0044: ldc.i4.0 + IL_0045: ret .line 16707566,16707566 : 0,0 '' - IL_0045: ldarg.1 - IL_0046: ldnull - IL_0047: cgt.un - IL_0049: ldc.i4.0 - IL_004a: ceq - IL_004c: ret + IL_0046: ldarg.1 + IL_0047: ldnull + IL_0048: cgt.un + IL_004a: ldc.i4.0 + IL_004b: ceq + IL_004d: ret } // end of method GenericKey`1::Equals .method public hidebysig virtual final @@ -640,6 +655,7 @@ IL_0000: ldarg.1 IL_0001: isinst class Equals06/EqualsMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0014 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals09.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals09.il.bsl index c22e81d41e..bf09abc529 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals09.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Equals09.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000A98 Length: 0x0000058B } .module Equals09.dll -// MVID: {60BE1F16-0759-46D9-A745-0383161FBE60} +// MVID: {611C550D-0759-46D9-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x066B0000 +// Image base: 0x06950000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 119 (0x77) + // Code size 120 (0x78) .maxstack 4 .locals init ([0] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_0, [1] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_1, @@ -187,109 +187,114 @@ [4] int32 V_4, [5] int32 V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Equals09.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006d + .line 4,4 : 10,13 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Equals09.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0027: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 16707566,16707566 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 16707566,16707566 : 0,0 '' - IL_0038: nop + IL_0039: nop .line 16707566,16707566 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003a: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 16707566,16707566 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 16707566,16707566 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 16707566,16707566 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 16707566,16707566 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.3 - IL_004c: ldloc.0 - IL_004d: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0052: stloc.s V_4 - IL_0054: ldloc.1 - IL_0055: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_005a: stloc.s V_5 - IL_005c: ldloc.s V_4 - IL_005e: ldloc.s V_5 - IL_0060: bge.s IL_0064 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.3 + IL_004d: ldloc.0 + IL_004e: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0053: stloc.s V_4 + IL_0055: ldloc.1 + IL_0056: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_005b: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_005d: ldloc.s V_4 + IL_005f: ldloc.s V_5 + IL_0061: bge.s IL_0065 .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.m1 - IL_0063: ret + IL_0063: ldc.i4.m1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldloc.s V_4 - IL_0066: ldloc.s V_5 - IL_0068: cgt - IL_006a: ret + IL_0065: ldloc.s V_4 + IL_0067: ldloc.s V_5 + IL_0069: cgt + IL_006b: ret .line 16707566,16707566 : 0,0 '' - IL_006b: ldc.i4.1 - IL_006c: ret + IL_006c: ldc.i4.1 + IL_006d: ret .line 16707566,16707566 : 0,0 '' - IL_006d: ldarg.1 - IL_006e: ldnull - IL_006f: cgt.un - IL_0071: brfalse.s IL_0075 + IL_006e: ldarg.1 + IL_006f: ldnull + IL_0070: cgt.un + IL_0072: brfalse.s IL_0076 .line 16707566,16707566 : 0,0 '' - IL_0073: ldc.i4.m1 - IL_0074: ret + IL_0074: ldc.i4.m1 + IL_0075: ret .line 16707566,16707566 : 0,0 '' - IL_0075: ldc.i4.0 - IL_0076: ret + IL_0076: ldc.i4.0 + IL_0077: ret } // end of method Key::CompareTo .method public hidebysig virtual final @@ -323,6 +328,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Equals09/EqualsMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -349,6 +355,7 @@ IL_0026: ldloc.2 IL_0027: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 IL_002c: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_002e: ldloc.s V_4 IL_0030: ldloc.s V_5 IL_0032: bge.s IL_0038 @@ -367,6 +374,7 @@ IL_003e: nop .line 16707566,16707566 : 0,0 '' IL_003f: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0040: ldloc.3 IL_0041: ldc.i4.0 IL_0042: bge.s IL_0046 @@ -391,6 +399,7 @@ IL_0054: ldloc.2 IL_0055: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 IL_005a: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_005c: ldloc.s V_4 IL_005e: ldloc.s V_5 IL_0060: bge.s IL_0064 @@ -429,58 +438,61 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 60 (0x3c) + // Code size 61 (0x3d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_1) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0019: ldloc.0 - IL_001a: ldc.i4.6 - IL_001b: shl - IL_001c: ldloc.0 - IL_001d: ldc.i4.2 - IL_001e: shr - IL_001f: add + .line 4,4 : 10,13 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr IL_0020: add IL_0021: add - IL_0022: stloc.0 - IL_0023: ldc.i4 0x9e3779b9 - IL_0028: ldloc.1 - IL_0029: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_002e: ldloc.0 - IL_002f: ldc.i4.6 - IL_0030: shl - IL_0031: ldloc.0 - IL_0032: ldc.i4.2 - IL_0033: shr - IL_0034: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldc.i4 0x9e3779b9 + IL_0029: ldloc.1 + IL_002a: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr IL_0035: add IL_0036: add - IL_0037: stloc.0 - IL_0038: ldloc.0 - IL_0039: ret + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: ldc.i4.0 - IL_003b: ret + IL_003b: ldc.i4.0 + IL_003c: ret } // end of method Key::GetHashCode .method public hidebysig virtual final @@ -501,120 +513,127 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 63 (0x3f) + // Code size 64 (0x40) .maxstack 4 .locals init ([0] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_0, [1] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_1, [2] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_2) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0037 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0038 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Equals09/EqualsMicroPerfAndCodeGenerationTests/Key - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0035 + IL_0007: ldarg.1 + IL_0008: isinst Equals09/EqualsMicroPerfAndCodeGenerationTests/Key + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0036 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop + IL_0011: ldarg.0 + IL_0012: pop .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001c: ldloc.2 - IL_001d: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0022: bne.un.s IL_0033 + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0017: ldloc.1 + IL_0018: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_001d: ldloc.2 + IL_001e: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0023: bne.un.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0024: ldloc.1 - IL_0025: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_002a: ldloc.2 - IL_002b: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0030: ceq - IL_0032: ret + IL_0025: ldloc.1 + IL_0026: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_002b: ldloc.2 + IL_002c: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0031: ceq + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0034: ldc.i4.0 + IL_0035: ret .line 16707566,16707566 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 16707566,16707566 : 0,0 '' - IL_0037: ldarg.1 - IL_0038: ldnull - IL_0039: cgt.un - IL_003b: ldc.i4.0 - IL_003c: ceq - IL_003e: ret + IL_0038: ldarg.1 + IL_0039: ldnull + IL_003a: cgt.un + IL_003c: ldc.i4.0 + IL_003d: ceq + IL_003f: ret } // end of method Key::Equals .method public hidebysig virtual final instance bool Equals(class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_0, [1] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_1) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: bne.un.s IL_002f + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: bne.un.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::item2 + IL_002d: ceq + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method Key::Equals .method public hidebysig virtual final @@ -628,6 +647,7 @@ IL_0000: ldarg.1 IL_0001: isinst Equals09/EqualsMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -792,7 +812,7 @@ instance int32 CompareTo(class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 169 (0xa9) + // Code size 170 (0xaa) .maxstack 5 .locals init ([0] class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -805,116 +825,120 @@ [8] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_8, [9] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_9, [10] int32 V_10) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse IL_009f + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse IL_00a0 .line 16707566,16707566 : 0,0 '' - IL_0009: ldarg.1 - IL_000a: ldnull - IL_000b: cgt.un - IL_000d: brfalse IL_009d + IL_000a: ldarg.1 + IL_000b: ldnull + IL_000c: cgt.un + IL_000e: brfalse IL_009e .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: pop + IL_0013: ldarg.0 + IL_0014: pop .line 16707566,16707566 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.0 - IL_0016: ldarg.1 - IL_0017: stloc.1 - IL_0018: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_001d: stloc.3 - IL_001e: ldloc.0 - IL_001f: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0024: stloc.s V_4 - IL_0026: ldloc.1 - IL_0027: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_002c: stloc.s V_5 - IL_002e: ldloc.s V_4 - IL_0030: ldloc.s V_5 - IL_0032: ldloc.3 - IL_0033: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0015: ldarg.0 + IL_0016: stloc.0 + IL_0017: ldarg.1 + IL_0018: stloc.1 + IL_0019: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_001e: stloc.3 + IL_001f: ldloc.0 + IL_0020: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0025: stloc.s V_4 + IL_0027: ldloc.1 + IL_0028: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_002d: stloc.s V_5 + IL_002f: ldloc.s V_4 + IL_0031: ldloc.s V_5 + IL_0033: ldloc.3 + IL_0034: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_0038: stloc.2 - IL_0039: ldloc.2 - IL_003a: ldc.i4.0 - IL_003b: bge.s IL_003f + IL_0039: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: bge.s IL_0040 .line 16707566,16707566 : 0,0 '' - IL_003d: ldloc.2 - IL_003e: ret + IL_003e: ldloc.2 + IL_003f: ret .line 16707566,16707566 : 0,0 '' - IL_003f: ldloc.2 - IL_0040: ldc.i4.0 - IL_0041: ble.s IL_0045 + IL_0040: ldloc.2 + IL_0041: ldc.i4.0 + IL_0042: ble.s IL_0046 .line 16707566,16707566 : 0,0 '' - IL_0043: ldloc.2 - IL_0044: ret + IL_0044: ldloc.2 + IL_0045: ret .line 16707566,16707566 : 0,0 '' - IL_0045: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004a: stloc.3 - IL_004b: ldloc.0 - IL_004c: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0051: stloc.s V_6 - IL_0053: ldloc.1 - IL_0054: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0059: stloc.s V_7 - IL_005b: ldloc.s V_6 - IL_005d: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0062: stloc.s V_4 - IL_0064: ldloc.s V_6 - IL_0066: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_006b: stloc.s V_5 - IL_006d: ldloc.s V_7 - IL_006f: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0074: stloc.s V_8 - IL_0076: ldloc.s V_7 - IL_0078: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_007d: stloc.s V_9 - IL_007f: ldloc.s V_4 - IL_0081: ldloc.s V_8 - IL_0083: ldloc.3 - IL_0084: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004b: stloc.3 + IL_004c: ldloc.0 + IL_004d: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0052: stloc.s V_6 + IL_0054: ldloc.1 + IL_0055: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_005a: stloc.s V_7 + IL_005c: ldloc.s V_6 + IL_005e: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0063: stloc.s V_4 + IL_0065: ldloc.s V_6 + IL_0067: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_006c: stloc.s V_5 + IL_006e: ldloc.s V_7 + IL_0070: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0075: stloc.s V_8 + IL_0077: ldloc.s V_7 + IL_0079: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_007e: stloc.s V_9 + IL_0080: ldloc.s V_4 + IL_0082: ldloc.s V_8 + IL_0084: ldloc.3 + IL_0085: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_0089: stloc.s V_10 - IL_008b: ldloc.s V_10 - IL_008d: brfalse.s IL_0092 + IL_008a: stloc.s V_10 + .line 16707566,16707566 : 0,0 '' + IL_008c: ldloc.s V_10 + IL_008e: brfalse.s IL_0093 .line 16707566,16707566 : 0,0 '' - IL_008f: ldloc.s V_10 - IL_0091: ret + IL_0090: ldloc.s V_10 + IL_0092: ret .line 16707566,16707566 : 0,0 '' - IL_0092: ldloc.s V_5 - IL_0094: ldloc.s V_9 - IL_0096: ldloc.3 - IL_0097: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0093: ldloc.s V_5 + IL_0095: ldloc.s V_9 + IL_0097: ldloc.3 + IL_0098: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_009c: ret + IL_009d: ret .line 16707566,16707566 : 0,0 '' - IL_009d: ldc.i4.1 - IL_009e: ret + IL_009e: ldc.i4.1 + IL_009f: ret .line 16707566,16707566 : 0,0 '' - IL_009f: ldarg.1 - IL_00a0: ldnull - IL_00a1: cgt.un - IL_00a3: brfalse.s IL_00a7 + IL_00a0: ldarg.1 + IL_00a1: ldnull + IL_00a2: cgt.un + IL_00a4: brfalse.s IL_00a8 .line 16707566,16707566 : 0,0 '' - IL_00a5: ldc.i4.m1 - IL_00a6: ret + IL_00a6: ldc.i4.m1 + IL_00a7: ret .line 16707566,16707566 : 0,0 '' - IL_00a7: ldc.i4.0 - IL_00a8: ret + IL_00a8: ldc.i4.0 + IL_00a9: ret } // end of method KeyWithInnerKeys::CompareTo .method public hidebysig virtual final @@ -953,6 +977,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -985,6 +1010,7 @@ IL_0039: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) IL_003e: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_003f: ldloc.3 IL_0040: ldc.i4.0 IL_0041: bge.s IL_0045 @@ -1027,6 +1053,7 @@ IL_0084: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) IL_0089: stloc.s V_10 + .line 16707566,16707566 : 0,0 '' IL_008b: ldloc.s V_10 IL_008d: brfalse.s IL_0092 @@ -1066,7 +1093,7 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 107 (0x6b) + // Code size 108 (0x6c) .maxstack 7 .locals init ([0] int32 V_0, [1] class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -1074,76 +1101,79 @@ [3] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_3, [4] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_4, [5] int32 V_5) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0069 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0019: stloc.2 - IL_001a: ldloc.2 - IL_001b: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0020: stloc.3 - IL_0021: ldloc.2 - IL_0022: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0027: stloc.s V_4 - IL_0029: ldloc.3 - IL_002a: ldarg.1 - IL_002b: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_0030: stloc.s V_5 - IL_0032: ldloc.s V_5 - IL_0034: ldc.i4.5 - IL_0035: shl - IL_0036: ldloc.s V_5 - IL_0038: add - IL_0039: ldloc.s V_4 - IL_003b: ldarg.1 - IL_003c: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_0041: xor - IL_0042: ldloc.0 - IL_0043: ldc.i4.6 - IL_0044: shl - IL_0045: ldloc.0 - IL_0046: ldc.i4.2 - IL_0047: shr - IL_0048: add + .line 5,5 : 10,26 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006a + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_001a: stloc.2 + IL_001b: ldloc.2 + IL_001c: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0021: stloc.3 + IL_0022: ldloc.2 + IL_0023: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0028: stloc.s V_4 + IL_002a: ldloc.3 + IL_002b: ldarg.1 + IL_002c: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_0031: stloc.s V_5 + IL_0033: ldloc.s V_5 + IL_0035: ldc.i4.5 + IL_0036: shl + IL_0037: ldloc.s V_5 + IL_0039: add + IL_003a: ldloc.s V_4 + IL_003c: ldarg.1 + IL_003d: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_0042: xor + IL_0043: ldloc.0 + IL_0044: ldc.i4.6 + IL_0045: shl + IL_0046: ldloc.0 + IL_0047: ldc.i4.2 + IL_0048: shr IL_0049: add IL_004a: add - IL_004b: stloc.0 - IL_004c: ldc.i4 0x9e3779b9 - IL_0051: ldloc.1 - IL_0052: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0057: ldarg.1 - IL_0058: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_005d: ldloc.0 - IL_005e: ldc.i4.6 - IL_005f: shl - IL_0060: ldloc.0 - IL_0061: ldc.i4.2 - IL_0062: shr - IL_0063: add + IL_004b: add + IL_004c: stloc.0 + IL_004d: ldc.i4 0x9e3779b9 + IL_0052: ldloc.1 + IL_0053: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0058: ldarg.1 + IL_0059: callvirt instance int32 Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_005e: ldloc.0 + IL_005f: ldc.i4.6 + IL_0060: shl + IL_0061: ldloc.0 + IL_0062: ldc.i4.2 + IL_0063: shr IL_0064: add IL_0065: add - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ret + IL_0066: add + IL_0067: stloc.0 + IL_0068: ldloc.0 + IL_0069: ret .line 16707566,16707566 : 0,0 '' - IL_0069: ldc.i4.0 - IL_006a: ret + IL_006a: ldc.i4.0 + IL_006b: ret } // end of method KeyWithInnerKeys::GetHashCode .method public hidebysig virtual final @@ -1164,7 +1194,7 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 138 (0x8a) + // Code size 139 (0x8b) .maxstack 5 .locals init ([0] class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -1175,155 +1205,163 @@ [6] class [mscorlib]System.Tuple`2 V_6, [7] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_7, [8] class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key V_8) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse IL_0082 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse IL_0083 .line 16707566,16707566 : 0,0 '' - IL_0009: ldarg.1 - IL_000a: isinst Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000f: stloc.0 - IL_0010: ldloc.0 - IL_0011: brfalse.s IL_0080 + IL_000a: ldarg.1 + IL_000b: isinst Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0010: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0011: ldloc.0 + IL_0012: brfalse.s IL_0081 .line 16707566,16707566 : 0,0 '' - IL_0013: ldarg.0 - IL_0014: pop + IL_0014: ldarg.0 + IL_0015: pop .line 16707566,16707566 : 0,0 '' - IL_0015: ldarg.0 - IL_0016: stloc.1 - IL_0017: ldloc.0 - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0026: stloc.s V_4 - IL_0028: ldloc.3 - IL_0029: ldloc.s V_4 - IL_002b: ldarg.2 - IL_002c: callvirt instance bool Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0016: ldarg.0 + IL_0017: stloc.1 + IL_0018: ldloc.0 + IL_0019: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_001a: ldloc.1 + IL_001b: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0020: stloc.3 + IL_0021: ldloc.2 + IL_0022: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0027: stloc.s V_4 + IL_0029: ldloc.3 + IL_002a: ldloc.s V_4 + IL_002c: ldarg.2 + IL_002d: callvirt instance bool Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_0031: brfalse.s IL_007e + IL_0032: brfalse.s IL_007f .line 16707566,16707566 : 0,0 '' - IL_0033: ldloc.1 - IL_0034: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0039: stloc.s V_5 - IL_003b: ldloc.2 - IL_003c: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0041: stloc.s V_6 - IL_0043: ldloc.s V_5 - IL_0045: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_004a: stloc.3 - IL_004b: ldloc.s V_5 - IL_004d: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0052: stloc.s V_4 - IL_0054: ldloc.s V_6 - IL_0056: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_005b: stloc.s V_7 - IL_005d: ldloc.s V_6 - IL_005f: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0064: stloc.s V_8 - IL_0066: ldloc.3 - IL_0067: ldloc.s V_7 - IL_0069: ldarg.2 - IL_006a: callvirt instance bool Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0034: ldloc.1 + IL_0035: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_003a: stloc.s V_5 + IL_003c: ldloc.2 + IL_003d: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0042: stloc.s V_6 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_004b: stloc.3 + IL_004c: ldloc.s V_5 + IL_004e: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0053: stloc.s V_4 + IL_0055: ldloc.s V_6 + IL_0057: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_005c: stloc.s V_7 + IL_005e: ldloc.s V_6 + IL_0060: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0065: stloc.s V_8 + .line 16707566,16707566 : 0,0 '' + IL_0067: ldloc.3 + IL_0068: ldloc.s V_7 + IL_006a: ldarg.2 + IL_006b: callvirt instance bool Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_006f: brfalse.s IL_007c + IL_0070: brfalse.s IL_007d .line 16707566,16707566 : 0,0 '' - IL_0071: ldloc.s V_4 - IL_0073: ldloc.s V_8 - IL_0075: ldarg.2 - IL_0076: callvirt instance bool Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0072: ldloc.s V_4 + IL_0074: ldloc.s V_8 + IL_0076: ldarg.2 + IL_0077: callvirt instance bool Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_007b: ret + IL_007c: ret .line 16707566,16707566 : 0,0 '' - IL_007c: ldc.i4.0 - IL_007d: ret + IL_007d: ldc.i4.0 + IL_007e: ret .line 16707566,16707566 : 0,0 '' - IL_007e: ldc.i4.0 - IL_007f: ret + IL_007f: ldc.i4.0 + IL_0080: ret .line 16707566,16707566 : 0,0 '' - IL_0080: ldc.i4.0 - IL_0081: ret + IL_0081: ldc.i4.0 + IL_0082: ret .line 16707566,16707566 : 0,0 '' - IL_0082: ldarg.1 - IL_0083: ldnull - IL_0084: cgt.un - IL_0086: ldc.i4.0 - IL_0087: ceq - IL_0089: ret + IL_0083: ldarg.1 + IL_0084: ldnull + IL_0085: cgt.un + IL_0087: ldc.i4.0 + IL_0088: ceq + IL_008a: ret } // end of method KeyWithInnerKeys::Equals .method public hidebysig virtual final instance bool Equals(class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 69 (0x45) + // Code size 70 (0x46) .maxstack 4 .locals init ([0] class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_003b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_003c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0018: ldloc.1 - IL_0019: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001e: callvirt instance bool Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key) - IL_0023: brfalse.s IL_0039 - - .line 16707566,16707566 : 0,0 '' - IL_0025: ldloc.0 - IL_0026: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_002b: ldloc.1 - IL_002c: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0031: tail. - IL_0033: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic>(!!0, + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: ldloc.1 + IL_001a: ldfld class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_001f: callvirt instance bool Equals09/EqualsMicroPerfAndCodeGenerationTests/Key::Equals(class Equals09/EqualsMicroPerfAndCodeGenerationTests/Key) + IL_0024: brfalse.s IL_003a + + .line 16707566,16707566 : 0,0 '' + IL_0026: ldloc.0 + IL_0027: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002c: ldloc.1 + IL_002d: ldfld class [mscorlib]System.Tuple`2 Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: tail. + IL_0034: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic>(!!0, !!0) - IL_0038: ret + IL_0039: ret .line 16707566,16707566 : 0,0 '' - IL_0039: ldc.i4.0 - IL_003a: ret + IL_003a: ldc.i4.0 + IL_003b: ret .line 16707566,16707566 : 0,0 '' - IL_003b: ldc.i4.0 - IL_003c: ret + IL_003c: ldc.i4.0 + IL_003d: ret .line 16707566,16707566 : 0,0 '' - IL_003d: ldarg.1 - IL_003e: ldnull - IL_003f: cgt.un - IL_0041: ldc.i4.0 - IL_0042: ceq - IL_0044: ret + IL_003e: ldarg.1 + IL_003f: ldnull + IL_0040: cgt.un + IL_0042: ldc.i4.0 + IL_0043: ceq + IL_0045: ret } // end of method KeyWithInnerKeys::Equals .method public hidebysig virtual final @@ -1337,6 +1375,7 @@ IL_0000: ldarg.1 IL_0001: isinst Equals09/EqualsMicroPerfAndCodeGenerationTests/KeyWithInnerKeys IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0014 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash05.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash05.il.bsl index c2c0f3a262..aa19d121fe 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash05.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash05.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000006D8 Length: 0x000003B1 } .module Hash05.dll -// MVID: {60BE1F16-9642-7857-A745-0383161FBE60} +// MVID: {611C550D-9642-7857-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x067C0000 +// Image base: 0x06960000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Hash05/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 119 (0x77) + // Code size 120 (0x78) .maxstack 4 .locals init ([0] class Hash05/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash05/HashMicroPerfAndCodeGenerationTests/Key V_1, @@ -187,109 +187,114 @@ [4] int32 V_4, [5] int32 V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash05.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006d + .line 5,5 : 10,13 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash05.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0027: stloc.s V_5 .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 16707566,16707566 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 16707566,16707566 : 0,0 '' - IL_0038: nop + IL_0039: nop .line 16707566,16707566 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003a: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 16707566,16707566 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 16707566,16707566 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 16707566,16707566 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 16707566,16707566 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.3 - IL_004c: ldloc.0 - IL_004d: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0052: stloc.s V_4 - IL_0054: ldloc.1 - IL_0055: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_005a: stloc.s V_5 - IL_005c: ldloc.s V_4 - IL_005e: ldloc.s V_5 - IL_0060: bge.s IL_0064 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.3 + IL_004d: ldloc.0 + IL_004e: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0053: stloc.s V_4 + IL_0055: ldloc.1 + IL_0056: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_005b: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_005d: ldloc.s V_4 + IL_005f: ldloc.s V_5 + IL_0061: bge.s IL_0065 .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.m1 - IL_0063: ret + IL_0063: ldc.i4.m1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldloc.s V_4 - IL_0066: ldloc.s V_5 - IL_0068: cgt - IL_006a: ret + IL_0065: ldloc.s V_4 + IL_0067: ldloc.s V_5 + IL_0069: cgt + IL_006b: ret .line 16707566,16707566 : 0,0 '' - IL_006b: ldc.i4.1 - IL_006c: ret + IL_006c: ldc.i4.1 + IL_006d: ret .line 16707566,16707566 : 0,0 '' - IL_006d: ldarg.1 - IL_006e: ldnull - IL_006f: cgt.un - IL_0071: brfalse.s IL_0075 + IL_006e: ldarg.1 + IL_006f: ldnull + IL_0070: cgt.un + IL_0072: brfalse.s IL_0076 .line 16707566,16707566 : 0,0 '' - IL_0073: ldc.i4.m1 - IL_0074: ret + IL_0074: ldc.i4.m1 + IL_0075: ret .line 16707566,16707566 : 0,0 '' - IL_0075: ldc.i4.0 - IL_0076: ret + IL_0076: ldc.i4.0 + IL_0077: ret } // end of method Key::CompareTo .method public hidebysig virtual final @@ -323,6 +328,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Hash05/HashMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -349,6 +355,7 @@ IL_0026: ldloc.2 IL_0027: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 IL_002c: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_002e: ldloc.s V_4 IL_0030: ldloc.s V_5 IL_0032: bge.s IL_0038 @@ -367,6 +374,7 @@ IL_003e: nop .line 16707566,16707566 : 0,0 '' IL_003f: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0040: ldloc.3 IL_0041: ldc.i4.0 IL_0042: bge.s IL_0046 @@ -391,6 +399,7 @@ IL_0054: ldloc.2 IL_0055: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 IL_005a: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_005c: ldloc.s V_4 IL_005e: ldloc.s V_5 IL_0060: bge.s IL_0064 @@ -429,58 +438,61 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 60 (0x3c) + // Code size 61 (0x3d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Hash05/HashMicroPerfAndCodeGenerationTests/Key V_1) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0019: ldloc.0 - IL_001a: ldc.i4.6 - IL_001b: shl - IL_001c: ldloc.0 - IL_001d: ldc.i4.2 - IL_001e: shr - IL_001f: add + .line 5,5 : 10,13 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr IL_0020: add IL_0021: add - IL_0022: stloc.0 - IL_0023: ldc.i4 0x9e3779b9 - IL_0028: ldloc.1 - IL_0029: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_002e: ldloc.0 - IL_002f: ldc.i4.6 - IL_0030: shl - IL_0031: ldloc.0 - IL_0032: ldc.i4.2 - IL_0033: shr - IL_0034: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldc.i4 0x9e3779b9 + IL_0029: ldloc.1 + IL_002a: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr IL_0035: add IL_0036: add - IL_0037: stloc.0 - IL_0038: ldloc.0 - IL_0039: ret + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: ldc.i4.0 - IL_003b: ret + IL_003b: ldc.i4.0 + IL_003c: ret } // end of method Key::GetHashCode .method public hidebysig virtual final @@ -501,120 +513,127 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 63 (0x3f) + // Code size 64 (0x40) .maxstack 4 .locals init ([0] class Hash05/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash05/HashMicroPerfAndCodeGenerationTests/Key V_1, [2] class Hash05/HashMicroPerfAndCodeGenerationTests/Key V_2) + .line 5,5 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0037 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0038 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Hash05/HashMicroPerfAndCodeGenerationTests/Key - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0035 + IL_0007: ldarg.1 + IL_0008: isinst Hash05/HashMicroPerfAndCodeGenerationTests/Key + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0036 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop + IL_0011: ldarg.0 + IL_0012: pop + .line 16707566,16707566 : 0,0 '' + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001c: ldloc.2 - IL_001d: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0022: bne.un.s IL_0033 + IL_0017: ldloc.1 + IL_0018: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001d: ldloc.2 + IL_001e: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0023: bne.un.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0024: ldloc.1 - IL_0025: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002a: ldloc.2 - IL_002b: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0030: ceq - IL_0032: ret + IL_0025: ldloc.1 + IL_0026: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_002b: ldloc.2 + IL_002c: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0031: ceq + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0034: ldc.i4.0 + IL_0035: ret .line 16707566,16707566 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 16707566,16707566 : 0,0 '' - IL_0037: ldarg.1 - IL_0038: ldnull - IL_0039: cgt.un - IL_003b: ldc.i4.0 - IL_003c: ceq - IL_003e: ret + IL_0038: ldarg.1 + IL_0039: ldnull + IL_003a: cgt.un + IL_003c: ldc.i4.0 + IL_003d: ceq + IL_003f: ret } // end of method Key::Equals .method public hidebysig virtual final instance bool Equals(class Hash05/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class Hash05/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash05/HashMicroPerfAndCodeGenerationTests/Key V_1) + .line 5,5 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: bne.un.s IL_002f + IL_0013: ldloc.0 + IL_0014: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: bne.un.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 Hash05/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_002d: ceq + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method Key::Equals .method public hidebysig virtual final @@ -628,6 +647,7 @@ IL_0000: ldarg.1 IL_0001: isinst Hash05/HashMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash06.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash06.il.bsl index e89af0b76f..bad5e3f191 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash06.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash06.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000006D8 Length: 0x000003B2 } .module Hash06.dll -// MVID: {60BE1F16-9642-78F2-A745-0383161FBE60} +// MVID: {611C550D-9642-78F2-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x05280000 +// Image base: 0x06F60000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Hash06/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 119 (0x77) + // Code size 120 (0x78) .maxstack 4 .locals init ([0] class Hash06/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash06/HashMicroPerfAndCodeGenerationTests/Key V_1, @@ -187,109 +187,114 @@ [4] int32 V_4, [5] int32 V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash06.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006d + .line 4,4 : 10,13 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash06.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0027: stloc.s V_5 .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 16707566,16707566 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 16707566,16707566 : 0,0 '' - IL_0038: nop + IL_0039: nop .line 16707566,16707566 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003a: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 16707566,16707566 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 16707566,16707566 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 16707566,16707566 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 16707566,16707566 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.3 - IL_004c: ldloc.0 - IL_004d: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0052: stloc.s V_4 - IL_0054: ldloc.1 - IL_0055: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_005a: stloc.s V_5 - IL_005c: ldloc.s V_4 - IL_005e: ldloc.s V_5 - IL_0060: bge.s IL_0064 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.3 + IL_004d: ldloc.0 + IL_004e: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0053: stloc.s V_4 + IL_0055: ldloc.1 + IL_0056: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_005b: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_005d: ldloc.s V_4 + IL_005f: ldloc.s V_5 + IL_0061: bge.s IL_0065 .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.m1 - IL_0063: ret + IL_0063: ldc.i4.m1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldloc.s V_4 - IL_0066: ldloc.s V_5 - IL_0068: cgt - IL_006a: ret + IL_0065: ldloc.s V_4 + IL_0067: ldloc.s V_5 + IL_0069: cgt + IL_006b: ret .line 16707566,16707566 : 0,0 '' - IL_006b: ldc.i4.1 - IL_006c: ret + IL_006c: ldc.i4.1 + IL_006d: ret .line 16707566,16707566 : 0,0 '' - IL_006d: ldarg.1 - IL_006e: ldnull - IL_006f: cgt.un - IL_0071: brfalse.s IL_0075 + IL_006e: ldarg.1 + IL_006f: ldnull + IL_0070: cgt.un + IL_0072: brfalse.s IL_0076 .line 16707566,16707566 : 0,0 '' - IL_0073: ldc.i4.m1 - IL_0074: ret + IL_0074: ldc.i4.m1 + IL_0075: ret .line 16707566,16707566 : 0,0 '' - IL_0075: ldc.i4.0 - IL_0076: ret + IL_0076: ldc.i4.0 + IL_0077: ret } // end of method Key::CompareTo .method public hidebysig virtual final @@ -323,6 +328,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Hash06/HashMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -349,6 +355,7 @@ IL_0026: ldloc.2 IL_0027: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 IL_002c: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_002e: ldloc.s V_4 IL_0030: ldloc.s V_5 IL_0032: bge.s IL_0038 @@ -367,6 +374,7 @@ IL_003e: nop .line 16707566,16707566 : 0,0 '' IL_003f: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0040: ldloc.3 IL_0041: ldc.i4.0 IL_0042: bge.s IL_0046 @@ -391,6 +399,7 @@ IL_0054: ldloc.2 IL_0055: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 IL_005a: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_005c: ldloc.s V_4 IL_005e: ldloc.s V_5 IL_0060: bge.s IL_0064 @@ -429,58 +438,61 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 60 (0x3c) + // Code size 61 (0x3d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Hash06/HashMicroPerfAndCodeGenerationTests/Key V_1) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0019: ldloc.0 - IL_001a: ldc.i4.6 - IL_001b: shl - IL_001c: ldloc.0 - IL_001d: ldc.i4.2 - IL_001e: shr - IL_001f: add + .line 4,4 : 10,13 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr IL_0020: add IL_0021: add - IL_0022: stloc.0 - IL_0023: ldc.i4 0x9e3779b9 - IL_0028: ldloc.1 - IL_0029: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_002e: ldloc.0 - IL_002f: ldc.i4.6 - IL_0030: shl - IL_0031: ldloc.0 - IL_0032: ldc.i4.2 - IL_0033: shr - IL_0034: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldc.i4 0x9e3779b9 + IL_0029: ldloc.1 + IL_002a: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr IL_0035: add IL_0036: add - IL_0037: stloc.0 - IL_0038: ldloc.0 - IL_0039: ret + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: ldc.i4.0 - IL_003b: ret + IL_003b: ldc.i4.0 + IL_003c: ret } // end of method Key::GetHashCode .method public hidebysig virtual final @@ -501,120 +513,127 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 63 (0x3f) + // Code size 64 (0x40) .maxstack 4 .locals init ([0] class Hash06/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash06/HashMicroPerfAndCodeGenerationTests/Key V_1, [2] class Hash06/HashMicroPerfAndCodeGenerationTests/Key V_2) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0037 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0038 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Hash06/HashMicroPerfAndCodeGenerationTests/Key - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0035 + IL_0007: ldarg.1 + IL_0008: isinst Hash06/HashMicroPerfAndCodeGenerationTests/Key + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0036 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop + IL_0011: ldarg.0 + IL_0012: pop + .line 16707566,16707566 : 0,0 '' + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001c: ldloc.2 - IL_001d: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0022: bne.un.s IL_0033 + IL_0017: ldloc.1 + IL_0018: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001d: ldloc.2 + IL_001e: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0023: bne.un.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0024: ldloc.1 - IL_0025: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002a: ldloc.2 - IL_002b: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0030: ceq - IL_0032: ret + IL_0025: ldloc.1 + IL_0026: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_002b: ldloc.2 + IL_002c: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0031: ceq + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0034: ldc.i4.0 + IL_0035: ret .line 16707566,16707566 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 16707566,16707566 : 0,0 '' - IL_0037: ldarg.1 - IL_0038: ldnull - IL_0039: cgt.un - IL_003b: ldc.i4.0 - IL_003c: ceq - IL_003e: ret + IL_0038: ldarg.1 + IL_0039: ldnull + IL_003a: cgt.un + IL_003c: ldc.i4.0 + IL_003d: ceq + IL_003f: ret } // end of method Key::Equals .method public hidebysig virtual final instance bool Equals(class Hash06/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class Hash06/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash06/HashMicroPerfAndCodeGenerationTests/Key V_1) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: bne.un.s IL_002f + IL_0013: ldloc.0 + IL_0014: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: bne.un.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 Hash06/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_002d: ceq + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method Key::Equals .method public hidebysig virtual final @@ -628,6 +647,7 @@ IL_0000: ldarg.1 IL_0001: isinst Hash06/HashMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash08.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash08.il.bsl index b2d3f9d1c9..b8dedc27dc 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash08.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash08.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x000006C8 Length: 0x000003B3 } .module Hash08.dll -// MVID: {60BE1F16-9642-77BC-A745-0383161FBE60} +// MVID: {611C550D-9642-77BC-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x06A70000 +// Image base: 0x06580000 // =============== CLASS MEMBERS DECLARATION =================== @@ -123,109 +123,114 @@ instance int32 CompareTo(class Hash08/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 101 (0x65) + // Code size 102 (0x66) .maxstack 4 .locals init ([0] int32 V_0, [1] class [mscorlib]System.Collections.IComparer V_1, [2] int32 V_2, [3] int32 V_3) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash08.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_005b + .line 4,4 : 10,14 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash08.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_005c .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0059 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_005a .line 16707566,16707566 : 0,0 '' - IL_000c: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0011: stloc.1 - IL_0012: ldarg.0 - IL_0013: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0018: stloc.2 - IL_0019: ldarg.1 - IL_001a: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: bge.s IL_0028 + IL_000d: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0012: stloc.1 + IL_0013: ldarg.0 + IL_0014: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0019: stloc.2 + IL_001a: ldarg.1 + IL_001b: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0020: stloc.3 + .line 16707566,16707566 : 0,0 '' + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: bge.s IL_0029 .line 16707566,16707566 : 0,0 '' - IL_0024: ldc.i4.m1 + IL_0025: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_0025: nop - IL_0026: br.s IL_002d + IL_0026: nop + IL_0027: br.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_0028: ldloc.2 - IL_0029: ldloc.3 - IL_002a: cgt + IL_0029: ldloc.2 + IL_002a: ldloc.3 + IL_002b: cgt .line 16707566,16707566 : 0,0 '' - IL_002c: nop + IL_002d: nop .line 16707566,16707566 : 0,0 '' - IL_002d: stloc.0 - IL_002e: ldloc.0 - IL_002f: ldc.i4.0 - IL_0030: bge.s IL_0034 + IL_002e: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_002f: ldloc.0 + IL_0030: ldc.i4.0 + IL_0031: bge.s IL_0035 .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.0 - IL_0033: ret + IL_0033: ldloc.0 + IL_0034: ret .line 16707566,16707566 : 0,0 '' - IL_0034: ldloc.0 - IL_0035: ldc.i4.0 - IL_0036: ble.s IL_003a + IL_0035: ldloc.0 + IL_0036: ldc.i4.0 + IL_0037: ble.s IL_003b .line 16707566,16707566 : 0,0 '' - IL_0038: ldloc.0 - IL_0039: ret + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_003f: stloc.1 - IL_0040: ldarg.0 - IL_0041: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0046: stloc.2 - IL_0047: ldarg.1 - IL_0048: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_004d: stloc.3 - IL_004e: ldloc.2 - IL_004f: ldloc.3 - IL_0050: bge.s IL_0054 + IL_003b: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0040: stloc.1 + IL_0041: ldarg.0 + IL_0042: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0047: stloc.2 + IL_0048: ldarg.1 + IL_0049: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_004e: stloc.3 + .line 16707566,16707566 : 0,0 '' + IL_004f: ldloc.2 + IL_0050: ldloc.3 + IL_0051: bge.s IL_0055 .line 16707566,16707566 : 0,0 '' - IL_0052: ldc.i4.m1 - IL_0053: ret + IL_0053: ldc.i4.m1 + IL_0054: ret .line 16707566,16707566 : 0,0 '' - IL_0054: ldloc.2 - IL_0055: ldloc.3 - IL_0056: cgt - IL_0058: ret + IL_0055: ldloc.2 + IL_0056: ldloc.3 + IL_0057: cgt + IL_0059: ret .line 16707566,16707566 : 0,0 '' - IL_0059: ldc.i4.1 - IL_005a: ret + IL_005a: ldc.i4.1 + IL_005b: ret .line 16707566,16707566 : 0,0 '' - IL_005b: ldarg.1 - IL_005c: ldnull - IL_005d: cgt.un - IL_005f: brfalse.s IL_0063 + IL_005c: ldarg.1 + IL_005d: ldnull + IL_005e: cgt.un + IL_0060: brfalse.s IL_0064 .line 16707566,16707566 : 0,0 '' - IL_0061: ldc.i4.m1 - IL_0062: ret + IL_0062: ldc.i4.m1 + IL_0063: ret .line 16707566,16707566 : 0,0 '' - IL_0063: ldc.i4.0 - IL_0064: ret + IL_0064: ldc.i4.0 + IL_0065: ret } // end of method KeyR::CompareTo .method public hidebysig virtual final @@ -257,6 +262,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Hash08/HashMicroPerfAndCodeGenerationTests/KeyR IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -276,6 +282,7 @@ IL_001f: ldloc.0 IL_0020: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ IL_0025: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0026: ldloc.2 IL_0027: ldloc.3 IL_0028: bge.s IL_002e @@ -294,6 +301,7 @@ IL_0032: nop .line 16707566,16707566 : 0,0 '' IL_0033: stloc.1 + .line 16707566,16707566 : 0,0 '' IL_0034: ldloc.1 IL_0035: ldc.i4.0 IL_0036: bge.s IL_003a @@ -318,6 +326,7 @@ IL_0047: ldloc.0 IL_0048: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ IL_004d: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_004e: ldloc.2 IL_004f: ldloc.3 IL_0050: bge.s IL_0054 @@ -356,50 +365,52 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 54 (0x36) + // Code size 55 (0x37) .maxstack 7 .locals init ([0] int32 V_0) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0034 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldc.i4 0x9e3779b9 - IL_000d: ldarg.0 - IL_000e: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0013: ldloc.0 - IL_0014: ldc.i4.6 - IL_0015: shl - IL_0016: ldloc.0 - IL_0017: ldc.i4.2 - IL_0018: shr - IL_0019: add + .line 4,4 : 10,14 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0035 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + IL_0009: ldc.i4 0x9e3779b9 + IL_000e: ldarg.0 + IL_000f: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0014: ldloc.0 + IL_0015: ldc.i4.6 + IL_0016: shl + IL_0017: ldloc.0 + IL_0018: ldc.i4.2 + IL_0019: shr IL_001a: add IL_001b: add - IL_001c: stloc.0 - IL_001d: ldc.i4 0x9e3779b9 - IL_0022: ldarg.0 - IL_0023: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0028: ldloc.0 - IL_0029: ldc.i4.6 - IL_002a: shl - IL_002b: ldloc.0 - IL_002c: ldc.i4.2 - IL_002d: shr - IL_002e: add + IL_001c: add + IL_001d: stloc.0 + IL_001e: ldc.i4 0x9e3779b9 + IL_0023: ldarg.0 + IL_0024: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0029: ldloc.0 + IL_002a: ldc.i4.6 + IL_002b: shl + IL_002c: ldloc.0 + IL_002d: ldc.i4.2 + IL_002e: shr IL_002f: add IL_0030: add - IL_0031: stloc.0 - IL_0032: ldloc.0 - IL_0033: ret + IL_0031: add + IL_0032: stloc.0 + IL_0033: ldloc.0 + IL_0034: ret .line 16707566,16707566 : 0,0 '' - IL_0034: ldc.i4.0 - IL_0035: ret + IL_0035: ldc.i4.0 + IL_0036: ret } // end of method KeyR::GetHashCode .method public hidebysig virtual final @@ -420,102 +431,107 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 57 (0x39) + // Code size 58 (0x3a) .maxstack 4 .locals init ([0] class Hash08/HashMicroPerfAndCodeGenerationTests/KeyR V_0) + .line 4,4 : 10,14 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0031 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Hash08/HashMicroPerfAndCodeGenerationTests/KeyR - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_002f + IL_0007: ldarg.1 + IL_0008: isinst Hash08/HashMicroPerfAndCodeGenerationTests/KeyR + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0016: ldloc.0 - IL_0017: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_001c: bne.un.s IL_002d + IL_0011: ldarg.0 + IL_0012: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0017: ldloc.0 + IL_0018: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_001d: bne.un.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_001e: ldarg.0 - IL_001f: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0024: ldloc.0 - IL_0025: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_002a: ceq - IL_002c: ret + IL_001f: ldarg.0 + IL_0020: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0025: ldloc.0 + IL_0026: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_002b: ceq + IL_002d: ret .line 16707566,16707566 : 0,0 '' - IL_002d: ldc.i4.0 - IL_002e: ret + IL_002e: ldc.i4.0 + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldarg.1 - IL_0032: ldnull - IL_0033: cgt.un - IL_0035: ldc.i4.0 - IL_0036: ceq - IL_0038: ret + IL_0032: ldarg.1 + IL_0033: ldnull + IL_0034: cgt.un + IL_0036: ldc.i4.0 + IL_0037: ceq + IL_0039: ret } // end of method KeyR::Equals .method public hidebysig virtual final instance bool Equals(class Hash08/HashMicroPerfAndCodeGenerationTests/KeyR obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 53 (0x35) + // Code size 54 (0x36) .maxstack 8 + .line 4,4 : 10,14 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_002d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_002e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_002b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_002c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0012: ldarg.1 - IL_0013: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ - IL_0018: bne.un.s IL_0029 + IL_000d: ldarg.0 + IL_000e: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0013: ldarg.1 + IL_0014: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key1@ + IL_0019: bne.un.s IL_002a .line 16707566,16707566 : 0,0 '' - IL_001a: ldarg.0 - IL_001b: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0020: ldarg.1 - IL_0021: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ - IL_0026: ceq - IL_0028: ret + IL_001b: ldarg.0 + IL_001c: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0021: ldarg.1 + IL_0022: ldfld int32 Hash08/HashMicroPerfAndCodeGenerationTests/KeyR::key2@ + IL_0027: ceq + IL_0029: ret .line 16707566,16707566 : 0,0 '' - IL_0029: ldc.i4.0 - IL_002a: ret + IL_002a: ldc.i4.0 + IL_002b: ret .line 16707566,16707566 : 0,0 '' - IL_002b: ldc.i4.0 - IL_002c: ret + IL_002c: ldc.i4.0 + IL_002d: ret .line 16707566,16707566 : 0,0 '' - IL_002d: ldarg.1 - IL_002e: ldnull - IL_002f: cgt.un - IL_0031: ldc.i4.0 - IL_0032: ceq - IL_0034: ret + IL_002e: ldarg.1 + IL_002f: ldnull + IL_0030: cgt.un + IL_0032: ldc.i4.0 + IL_0033: ceq + IL_0035: ret } // end of method KeyR::Equals .method public hidebysig virtual final @@ -529,6 +545,7 @@ IL_0000: ldarg.1 IL_0001: isinst Hash08/HashMicroPerfAndCodeGenerationTests/KeyR IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash09.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash09.il.bsl index dec226fde7..1de6d05480 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash09.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash09.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000888 Length: 0x00000680 } .module Hash09.dll -// MVID: {60BE1F16-9642-77DB-A745-0383161FBE60} +// MVID: {611C550D-9642-77DB-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x071B0000 +// Image base: 0x07230000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 110 (0x6e) + // Code size 111 (0x6f) .maxstack 5 .locals init ([0] class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, @@ -187,93 +187,96 @@ [4] !a V_4, [5] !a V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash09.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0064 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0062 - - .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop - .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.3 - IL_0029: ldloc.s V_4 - IL_002b: ldloc.s V_5 - IL_002d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, + .line 4,4 : 10,20 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash09.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0065 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0063 + + .line 16707566,16707566 : 0,0 '' + IL_000d: ldarg.0 + IL_000e: pop + .line 16707566,16707566 : 0,0 '' + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0027: stloc.s V_5 + IL_0029: ldloc.3 + IL_002a: ldloc.s V_4 + IL_002c: ldloc.s V_5 + IL_002e: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, !!0, !!0) - IL_0032: stloc.2 - IL_0033: ldloc.2 - IL_0034: ldc.i4.0 - IL_0035: bge.s IL_0039 + IL_0033: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0034: ldloc.2 + IL_0035: ldc.i4.0 + IL_0036: bge.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0037: ldloc.2 - IL_0038: ret + IL_0038: ldloc.2 + IL_0039: ret .line 16707566,16707566 : 0,0 '' - IL_0039: ldloc.2 - IL_003a: ldc.i4.0 - IL_003b: ble.s IL_003f + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: ble.s IL_0040 .line 16707566,16707566 : 0,0 '' - IL_003d: ldloc.2 - IL_003e: ret + IL_003e: ldloc.2 + IL_003f: ret .line 16707566,16707566 : 0,0 '' - IL_003f: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0044: stloc.3 - IL_0045: ldloc.0 - IL_0046: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_004b: stloc.s V_4 - IL_004d: ldloc.1 - IL_004e: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0053: stloc.s V_5 - IL_0055: ldloc.3 - IL_0056: ldloc.s V_4 - IL_0058: ldloc.s V_5 - IL_005a: tail. - IL_005c: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, + IL_0040: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0045: stloc.3 + IL_0046: ldloc.0 + IL_0047: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_004c: stloc.s V_4 + IL_004e: ldloc.1 + IL_004f: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0054: stloc.s V_5 + IL_0056: ldloc.3 + IL_0057: ldloc.s V_4 + IL_0059: ldloc.s V_5 + IL_005b: tail. + IL_005d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericComparisonWithComparerIntrinsic(class [mscorlib]System.Collections.IComparer, !!0, !!0) - IL_0061: ret + IL_0062: ret .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.1 - IL_0063: ret + IL_0063: ldc.i4.1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldarg.1 - IL_0065: ldnull - IL_0066: cgt.un - IL_0068: brfalse.s IL_006c + IL_0065: ldarg.1 + IL_0066: ldnull + IL_0067: cgt.un + IL_0069: brfalse.s IL_006d .line 16707566,16707566 : 0,0 '' - IL_006a: ldc.i4.m1 - IL_006b: ret + IL_006b: ldc.i4.m1 + IL_006c: ret .line 16707566,16707566 : 0,0 '' - IL_006c: ldc.i4.0 - IL_006d: ret + IL_006d: ldc.i4.0 + IL_006e: ret } // end of method GenericKey`1::CompareTo .method public hidebysig virtual final @@ -308,6 +311,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -341,6 +345,7 @@ !!0, !!0) IL_0038: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0039: ldloc.3 IL_003a: ldc.i4.0 IL_003b: bge.s IL_003f @@ -398,69 +403,72 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 76 (0x4c) + // Code size 77 (0x4d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] !a V_2) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_004a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0019: stloc.2 - IL_001a: ldarg.1 - IL_001b: ldloc.2 - IL_001c: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + .line 4,4 : 10,20 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_004b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_001a: stloc.2 + IL_001b: ldarg.1 + IL_001c: ldloc.2 + IL_001d: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0) - IL_0021: ldloc.0 - IL_0022: ldc.i4.6 - IL_0023: shl - IL_0024: ldloc.0 - IL_0025: ldc.i4.2 - IL_0026: shr - IL_0027: add + IL_0022: ldloc.0 + IL_0023: ldc.i4.6 + IL_0024: shl + IL_0025: ldloc.0 + IL_0026: ldc.i4.2 + IL_0027: shr IL_0028: add IL_0029: add - IL_002a: stloc.0 - IL_002b: ldc.i4 0x9e3779b9 - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0036: stloc.2 - IL_0037: ldarg.1 - IL_0038: ldloc.2 - IL_0039: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_002a: add + IL_002b: stloc.0 + IL_002c: ldc.i4 0x9e3779b9 + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0037: stloc.2 + IL_0038: ldarg.1 + IL_0039: ldloc.2 + IL_003a: call int32 [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericHashWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0) - IL_003e: ldloc.0 - IL_003f: ldc.i4.6 - IL_0040: shl - IL_0041: ldloc.0 - IL_0042: ldc.i4.2 - IL_0043: shr - IL_0044: add + IL_003f: ldloc.0 + IL_0040: ldc.i4.6 + IL_0041: shl + IL_0042: ldloc.0 + IL_0043: ldc.i4.2 + IL_0044: shr IL_0045: add IL_0046: add - IL_0047: stloc.0 - IL_0048: ldloc.0 - IL_0049: ret + IL_0047: add + IL_0048: stloc.0 + IL_0049: ldloc.0 + IL_004a: ret .line 16707566,16707566 : 0,0 '' - IL_004a: ldc.i4.0 - IL_004b: ret + IL_004b: ldc.i4.0 + IL_004c: ret } // end of method GenericKey`1::GetHashCode .method public hidebysig virtual final @@ -481,152 +489,159 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 87 (0x57) + // Code size 88 (0x58) .maxstack 5 .locals init ([0] class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_2, [3] !a V_3, [4] !a V_4) + .line 4,4 : 10,20 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_004f - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_004d - - .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop - .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001c: stloc.3 - IL_001d: ldloc.2 - IL_001e: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0023: stloc.s V_4 - IL_0025: ldarg.2 - IL_0026: ldloc.3 - IL_0027: ldloc.s V_4 - IL_0029: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0050 + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldarg.1 + IL_0008: isinst class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_004e + + .line 16707566,16707566 : 0,0 '' + IL_0011: ldarg.0 + IL_0012: pop + .line 16707566,16707566 : 0,0 '' + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0017: ldloc.1 + IL_0018: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_001d: stloc.3 + IL_001e: ldloc.2 + IL_001f: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0024: stloc.s V_4 + IL_0026: ldarg.2 + IL_0027: ldloc.3 + IL_0028: ldloc.s V_4 + IL_002a: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0, !!0) - IL_002e: brfalse.s IL_004b - - .line 16707566,16707566 : 0,0 '' - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0036: stloc.3 - IL_0037: ldloc.2 - IL_0038: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_003d: stloc.s V_4 - IL_003f: ldarg.2 - IL_0040: ldloc.3 - IL_0041: ldloc.s V_4 - IL_0043: tail. - IL_0045: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, + IL_002f: brfalse.s IL_004c + + .line 16707566,16707566 : 0,0 '' + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0037: stloc.3 + IL_0038: ldloc.2 + IL_0039: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_003e: stloc.s V_4 + IL_0040: ldarg.2 + IL_0041: ldloc.3 + IL_0042: ldloc.s V_4 + IL_0044: tail. + IL_0046: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityWithComparerIntrinsic(class [mscorlib]System.Collections.IEqualityComparer, !!0, !!0) - IL_004a: ret + IL_004b: ret .line 16707566,16707566 : 0,0 '' - IL_004b: ldc.i4.0 - IL_004c: ret + IL_004c: ldc.i4.0 + IL_004d: ret .line 16707566,16707566 : 0,0 '' - IL_004d: ldc.i4.0 - IL_004e: ret + IL_004e: ldc.i4.0 + IL_004f: ret .line 16707566,16707566 : 0,0 '' - IL_004f: ldarg.1 - IL_0050: ldnull - IL_0051: cgt.un - IL_0053: ldc.i4.0 - IL_0054: ceq - IL_0056: ret + IL_0050: ldarg.1 + IL_0051: ldnull + IL_0052: cgt.un + IL_0054: ldc.i4.0 + IL_0055: ceq + IL_0057: ret } // end of method GenericKey`1::Equals .method public hidebysig virtual final instance bool Equals(class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 77 (0x4d) + // Code size 78 (0x4e) .maxstack 4 .locals init ([0] class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_0, [1] class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 V_1, [2] !a V_2, [3] !a V_3) + .line 4,4 : 10,20 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0045 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0046 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0043 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0044 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldloc.3 - IL_0022: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0019: stloc.2 + IL_001a: ldloc.1 + IL_001b: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item1 + IL_0020: stloc.3 + IL_0021: ldloc.2 + IL_0022: ldloc.3 + IL_0023: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, !!0) - IL_0027: brfalse.s IL_0041 - - .line 16707566,16707566 : 0,0 '' - IL_0029: ldloc.0 - IL_002a: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_002f: stloc.2 - IL_0030: ldloc.1 - IL_0031: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 - IL_0036: stloc.3 - IL_0037: ldloc.2 - IL_0038: ldloc.3 - IL_0039: tail. - IL_003b: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, + IL_0028: brfalse.s IL_0042 + + .line 16707566,16707566 : 0,0 '' + IL_002a: ldloc.0 + IL_002b: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0030: stloc.2 + IL_0031: ldloc.1 + IL_0032: ldfld !0 class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1::item2 + IL_0037: stloc.3 + IL_0038: ldloc.2 + IL_0039: ldloc.3 + IL_003a: tail. + IL_003c: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic(!!0, !!0) - IL_0040: ret + IL_0041: ret .line 16707566,16707566 : 0,0 '' - IL_0041: ldc.i4.0 - IL_0042: ret + IL_0042: ldc.i4.0 + IL_0043: ret .line 16707566,16707566 : 0,0 '' - IL_0043: ldc.i4.0 - IL_0044: ret + IL_0044: ldc.i4.0 + IL_0045: ret .line 16707566,16707566 : 0,0 '' - IL_0045: ldarg.1 - IL_0046: ldnull - IL_0047: cgt.un - IL_0049: ldc.i4.0 - IL_004a: ceq - IL_004c: ret + IL_0046: ldarg.1 + IL_0047: ldnull + IL_0048: cgt.un + IL_004a: ldc.i4.0 + IL_004b: ceq + IL_004d: ret } // end of method GenericKey`1::Equals .method public hidebysig virtual final @@ -640,6 +655,7 @@ IL_0000: ldarg.1 IL_0001: isinst class Hash09/HashMicroPerfAndCodeGenerationTests/GenericKey`1 IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0014 diff --git a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash12.il.bsl b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash12.il.bsl index 458e033bb0..dd4511bb60 100644 --- a/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash12.il.bsl +++ b/tests/fsharpqa/Source/Optimizations/GenericComparison/Hash12.il.bsl @@ -36,13 +36,13 @@ // Offset: 0x00000A90 Length: 0x00000585 } .module Hash12.dll -// MVID: {60BE1F16-9661-796E-A745-0383161FBE60} +// MVID: {611C550D-9661-796E-A745-03830D551C61} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY -// Image base: 0x00BB0000 +// Image base: 0x05130000 // =============== CLASS MEMBERS DECLARATION =================== @@ -178,7 +178,7 @@ instance int32 CompareTo(class Hash12/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 119 (0x77) + // Code size 120 (0x78) .maxstack 4 .locals init ([0] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_1, @@ -187,109 +187,114 @@ [4] int32 V_4, [5] int32 V_5) .language '{AB4F38C9-B6E6-43BA-BE3B-58080B2CCCE3}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' - .line 16707566,16707566 : 0,0 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash12.fsx' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_006d + .line 4,4 : 10,13 'C:\\GitHub\\dsyme\\fsharp\\tests\\fsharpqa\\source\\Optimizations\\GenericComparison\\Hash12.fsx' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_006b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_006c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_0017: stloc.3 - IL_0018: ldloc.0 - IL_0019: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: stloc.s V_4 - IL_0020: ldloc.1 - IL_0021: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0026: stloc.s V_5 - IL_0028: ldloc.s V_4 - IL_002a: ldloc.s V_5 - IL_002c: bge.s IL_0032 + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + IL_0013: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_0018: stloc.3 + IL_0019: ldloc.0 + IL_001a: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: stloc.s V_4 + IL_0021: ldloc.1 + IL_0022: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0027: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_0029: ldloc.s V_4 + IL_002b: ldloc.s V_5 + IL_002d: bge.s IL_0033 .line 16707566,16707566 : 0,0 '' - IL_002e: ldc.i4.m1 + IL_002f: ldc.i4.m1 .line 16707566,16707566 : 0,0 '' - IL_002f: nop - IL_0030: br.s IL_0039 + IL_0030: nop + IL_0031: br.s IL_003a .line 16707566,16707566 : 0,0 '' - IL_0032: ldloc.s V_4 - IL_0034: ldloc.s V_5 - IL_0036: cgt + IL_0033: ldloc.s V_4 + IL_0035: ldloc.s V_5 + IL_0037: cgt .line 16707566,16707566 : 0,0 '' - IL_0038: nop + IL_0039: nop .line 16707566,16707566 : 0,0 '' - IL_0039: stloc.2 - IL_003a: ldloc.2 - IL_003b: ldc.i4.0 - IL_003c: bge.s IL_0040 + IL_003a: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003b: ldloc.2 + IL_003c: ldc.i4.0 + IL_003d: bge.s IL_0041 .line 16707566,16707566 : 0,0 '' - IL_003e: ldloc.2 - IL_003f: ret + IL_003f: ldloc.2 + IL_0040: ret .line 16707566,16707566 : 0,0 '' - IL_0040: ldloc.2 - IL_0041: ldc.i4.0 - IL_0042: ble.s IL_0046 + IL_0041: ldloc.2 + IL_0042: ldc.i4.0 + IL_0043: ble.s IL_0047 .line 16707566,16707566 : 0,0 '' - IL_0044: ldloc.2 - IL_0045: ret + IL_0045: ldloc.2 + IL_0046: ret .line 16707566,16707566 : 0,0 '' - IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004b: stloc.3 - IL_004c: ldloc.0 - IL_004d: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0052: stloc.s V_4 - IL_0054: ldloc.1 - IL_0055: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_005a: stloc.s V_5 - IL_005c: ldloc.s V_4 - IL_005e: ldloc.s V_5 - IL_0060: bge.s IL_0064 + IL_0047: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004c: stloc.3 + IL_004d: ldloc.0 + IL_004e: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0053: stloc.s V_4 + IL_0055: ldloc.1 + IL_0056: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_005b: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' + IL_005d: ldloc.s V_4 + IL_005f: ldloc.s V_5 + IL_0061: bge.s IL_0065 .line 16707566,16707566 : 0,0 '' - IL_0062: ldc.i4.m1 - IL_0063: ret + IL_0063: ldc.i4.m1 + IL_0064: ret .line 16707566,16707566 : 0,0 '' - IL_0064: ldloc.s V_4 - IL_0066: ldloc.s V_5 - IL_0068: cgt - IL_006a: ret + IL_0065: ldloc.s V_4 + IL_0067: ldloc.s V_5 + IL_0069: cgt + IL_006b: ret .line 16707566,16707566 : 0,0 '' - IL_006b: ldc.i4.1 - IL_006c: ret + IL_006c: ldc.i4.1 + IL_006d: ret .line 16707566,16707566 : 0,0 '' - IL_006d: ldarg.1 - IL_006e: ldnull - IL_006f: cgt.un - IL_0071: brfalse.s IL_0075 + IL_006e: ldarg.1 + IL_006f: ldnull + IL_0070: cgt.un + IL_0072: brfalse.s IL_0076 .line 16707566,16707566 : 0,0 '' - IL_0073: ldc.i4.m1 - IL_0074: ret + IL_0074: ldc.i4.m1 + IL_0075: ret .line 16707566,16707566 : 0,0 '' - IL_0075: ldc.i4.0 - IL_0076: ret + IL_0076: ldc.i4.0 + IL_0077: ret } // end of method Key::CompareTo .method public hidebysig virtual final @@ -323,6 +328,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Hash12/HashMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -349,6 +355,7 @@ IL_0026: ldloc.2 IL_0027: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 IL_002c: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_002e: ldloc.s V_4 IL_0030: ldloc.s V_5 IL_0032: bge.s IL_0038 @@ -367,6 +374,7 @@ IL_003e: nop .line 16707566,16707566 : 0,0 '' IL_003f: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_0040: ldloc.3 IL_0041: ldc.i4.0 IL_0042: bge.s IL_0046 @@ -391,6 +399,7 @@ IL_0054: ldloc.2 IL_0055: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 IL_005a: stloc.s V_5 + .line 16707566,16707566 : 0,0 '' IL_005c: ldloc.s V_4 IL_005e: ldloc.s V_5 IL_0060: bge.s IL_0064 @@ -429,58 +438,61 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 60 (0x3c) + // Code size 61 (0x3d) .maxstack 7 .locals init ([0] int32 V_0, [1] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_1) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003a - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0019: ldloc.0 - IL_001a: ldc.i4.6 - IL_001b: shl - IL_001c: ldloc.0 - IL_001d: ldc.i4.2 - IL_001e: shr - IL_001f: add + .line 4,4 : 10,13 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003b + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_001a: ldloc.0 + IL_001b: ldc.i4.6 + IL_001c: shl + IL_001d: ldloc.0 + IL_001e: ldc.i4.2 + IL_001f: shr IL_0020: add IL_0021: add - IL_0022: stloc.0 - IL_0023: ldc.i4 0x9e3779b9 - IL_0028: ldloc.1 - IL_0029: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_002e: ldloc.0 - IL_002f: ldc.i4.6 - IL_0030: shl - IL_0031: ldloc.0 - IL_0032: ldc.i4.2 - IL_0033: shr - IL_0034: add + IL_0022: add + IL_0023: stloc.0 + IL_0024: ldc.i4 0x9e3779b9 + IL_0029: ldloc.1 + IL_002a: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_002f: ldloc.0 + IL_0030: ldc.i4.6 + IL_0031: shl + IL_0032: ldloc.0 + IL_0033: ldc.i4.2 + IL_0034: shr IL_0035: add IL_0036: add - IL_0037: stloc.0 - IL_0038: ldloc.0 - IL_0039: ret + IL_0037: add + IL_0038: stloc.0 + IL_0039: ldloc.0 + IL_003a: ret .line 16707566,16707566 : 0,0 '' - IL_003a: ldc.i4.0 - IL_003b: ret + IL_003b: ldc.i4.0 + IL_003c: ret } // end of method Key::GetHashCode .method public hidebysig virtual final @@ -501,120 +513,127 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 63 (0x3f) + // Code size 64 (0x40) .maxstack 4 .locals init ([0] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_1, [2] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_2) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0037 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0038 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: isinst Hash12/HashMicroPerfAndCodeGenerationTests/Key - IL_000c: stloc.0 - IL_000d: ldloc.0 - IL_000e: brfalse.s IL_0035 + IL_0007: ldarg.1 + IL_0008: isinst Hash12/HashMicroPerfAndCodeGenerationTests/Key + IL_000d: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_000e: ldloc.0 + IL_000f: brfalse.s IL_0036 .line 16707566,16707566 : 0,0 '' - IL_0010: ldarg.0 - IL_0011: pop + IL_0011: ldarg.0 + IL_0012: pop .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: stloc.1 - IL_0014: ldloc.0 - IL_0015: stloc.2 - IL_0016: ldloc.1 - IL_0017: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001c: ldloc.2 - IL_001d: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0022: bne.un.s IL_0033 + IL_0013: ldarg.0 + IL_0014: stloc.1 + IL_0015: ldloc.0 + IL_0016: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_0017: ldloc.1 + IL_0018: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001d: ldloc.2 + IL_001e: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0023: bne.un.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0024: ldloc.1 - IL_0025: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002a: ldloc.2 - IL_002b: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0030: ceq - IL_0032: ret + IL_0025: ldloc.1 + IL_0026: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_002b: ldloc.2 + IL_002c: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0031: ceq + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldc.i4.0 - IL_0034: ret + IL_0034: ldc.i4.0 + IL_0035: ret .line 16707566,16707566 : 0,0 '' - IL_0035: ldc.i4.0 - IL_0036: ret + IL_0036: ldc.i4.0 + IL_0037: ret .line 16707566,16707566 : 0,0 '' - IL_0037: ldarg.1 - IL_0038: ldnull - IL_0039: cgt.un - IL_003b: ldc.i4.0 - IL_003c: ceq - IL_003e: ret + IL_0038: ldarg.1 + IL_0039: ldnull + IL_003a: cgt.un + IL_003c: ldc.i4.0 + IL_003d: ceq + IL_003f: ret } // end of method Key::Equals .method public hidebysig virtual final instance bool Equals(class Hash12/HashMicroPerfAndCodeGenerationTests/Key obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 59 (0x3b) + // Code size 60 (0x3c) .maxstack 4 .locals init ([0] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_0, [1] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_1) + .line 4,4 : 10,13 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0033 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_0034 .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_0031 + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_0032 .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_0018: ldloc.1 - IL_0019: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 - IL_001e: bne.un.s IL_002f + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_0019: ldloc.1 + IL_001a: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item1 + IL_001f: bne.un.s IL_0030 .line 16707566,16707566 : 0,0 '' - IL_0020: ldloc.0 - IL_0021: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_0026: ldloc.1 - IL_0027: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 - IL_002c: ceq - IL_002e: ret + IL_0021: ldloc.0 + IL_0022: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_0027: ldloc.1 + IL_0028: ldfld int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::item2 + IL_002d: ceq + IL_002f: ret .line 16707566,16707566 : 0,0 '' - IL_002f: ldc.i4.0 - IL_0030: ret + IL_0030: ldc.i4.0 + IL_0031: ret .line 16707566,16707566 : 0,0 '' - IL_0031: ldc.i4.0 - IL_0032: ret + IL_0032: ldc.i4.0 + IL_0033: ret .line 16707566,16707566 : 0,0 '' - IL_0033: ldarg.1 - IL_0034: ldnull - IL_0035: cgt.un - IL_0037: ldc.i4.0 - IL_0038: ceq - IL_003a: ret + IL_0034: ldarg.1 + IL_0035: ldnull + IL_0036: cgt.un + IL_0038: ldc.i4.0 + IL_0039: ceq + IL_003b: ret } // end of method Key::Equals .method public hidebysig virtual final @@ -628,6 +647,7 @@ IL_0000: ldarg.1 IL_0001: isinst Hash12/HashMicroPerfAndCodeGenerationTests/Key IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0012 @@ -792,7 +812,7 @@ instance int32 CompareTo(class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 169 (0xa9) + // Code size 170 (0xaa) .maxstack 5 .locals init ([0] class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -805,116 +825,120 @@ [8] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_8, [9] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_9, [10] int32 V_10) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse IL_009f + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse IL_00a0 .line 16707566,16707566 : 0,0 '' - IL_0009: ldarg.1 - IL_000a: ldnull - IL_000b: cgt.un - IL_000d: brfalse IL_009d + IL_000a: ldarg.1 + IL_000b: ldnull + IL_000c: cgt.un + IL_000e: brfalse IL_009e .line 16707566,16707566 : 0,0 '' - IL_0012: ldarg.0 - IL_0013: pop + IL_0013: ldarg.0 + IL_0014: pop .line 16707566,16707566 : 0,0 '' - IL_0014: ldarg.0 - IL_0015: stloc.0 - IL_0016: ldarg.1 - IL_0017: stloc.1 - IL_0018: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_001d: stloc.3 - IL_001e: ldloc.0 - IL_001f: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0024: stloc.s V_4 - IL_0026: ldloc.1 - IL_0027: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_002c: stloc.s V_5 - IL_002e: ldloc.s V_4 - IL_0030: ldloc.s V_5 - IL_0032: ldloc.3 - IL_0033: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0015: ldarg.0 + IL_0016: stloc.0 + IL_0017: ldarg.1 + IL_0018: stloc.1 + IL_0019: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_001e: stloc.3 + IL_001f: ldloc.0 + IL_0020: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0025: stloc.s V_4 + IL_0027: ldloc.1 + IL_0028: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_002d: stloc.s V_5 + IL_002f: ldloc.s V_4 + IL_0031: ldloc.s V_5 + IL_0033: ldloc.3 + IL_0034: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_0038: stloc.2 - IL_0039: ldloc.2 - IL_003a: ldc.i4.0 - IL_003b: bge.s IL_003f + IL_0039: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_003a: ldloc.2 + IL_003b: ldc.i4.0 + IL_003c: bge.s IL_0040 .line 16707566,16707566 : 0,0 '' - IL_003d: ldloc.2 - IL_003e: ret + IL_003e: ldloc.2 + IL_003f: ret .line 16707566,16707566 : 0,0 '' - IL_003f: ldloc.2 - IL_0040: ldc.i4.0 - IL_0041: ble.s IL_0045 + IL_0040: ldloc.2 + IL_0041: ldc.i4.0 + IL_0042: ble.s IL_0046 .line 16707566,16707566 : 0,0 '' - IL_0043: ldloc.2 - IL_0044: ret + IL_0044: ldloc.2 + IL_0045: ret .line 16707566,16707566 : 0,0 '' - IL_0045: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() - IL_004a: stloc.3 - IL_004b: ldloc.0 - IL_004c: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0051: stloc.s V_6 - IL_0053: ldloc.1 - IL_0054: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0059: stloc.s V_7 - IL_005b: ldloc.s V_6 - IL_005d: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0062: stloc.s V_4 - IL_0064: ldloc.s V_6 - IL_0066: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_006b: stloc.s V_5 - IL_006d: ldloc.s V_7 - IL_006f: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0074: stloc.s V_8 - IL_0076: ldloc.s V_7 - IL_0078: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_007d: stloc.s V_9 - IL_007f: ldloc.s V_4 - IL_0081: ldloc.s V_8 - IL_0083: ldloc.3 - IL_0084: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0046: call class [mscorlib]System.Collections.IComparer [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives::get_GenericComparer() + IL_004b: stloc.3 + IL_004c: ldloc.0 + IL_004d: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0052: stloc.s V_6 + IL_0054: ldloc.1 + IL_0055: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_005a: stloc.s V_7 + IL_005c: ldloc.s V_6 + IL_005e: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0063: stloc.s V_4 + IL_0065: ldloc.s V_6 + IL_0067: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_006c: stloc.s V_5 + IL_006e: ldloc.s V_7 + IL_0070: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0075: stloc.s V_8 + IL_0077: ldloc.s V_7 + IL_0079: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_007e: stloc.s V_9 + IL_0080: ldloc.s V_4 + IL_0082: ldloc.s V_8 + IL_0084: ldloc.3 + IL_0085: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_0089: stloc.s V_10 - IL_008b: ldloc.s V_10 - IL_008d: brfalse.s IL_0092 + IL_008a: stloc.s V_10 + .line 16707566,16707566 : 0,0 '' + IL_008c: ldloc.s V_10 + IL_008e: brfalse.s IL_0093 .line 16707566,16707566 : 0,0 '' - IL_008f: ldloc.s V_10 - IL_0091: ret + IL_0090: ldloc.s V_10 + IL_0092: ret .line 16707566,16707566 : 0,0 '' - IL_0092: ldloc.s V_5 - IL_0094: ldloc.s V_9 - IL_0096: ldloc.3 - IL_0097: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::CompareTo(object, + IL_0093: ldloc.s V_5 + IL_0095: ldloc.s V_9 + IL_0097: ldloc.3 + IL_0098: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) - IL_009c: ret + IL_009d: ret .line 16707566,16707566 : 0,0 '' - IL_009d: ldc.i4.1 - IL_009e: ret + IL_009e: ldc.i4.1 + IL_009f: ret .line 16707566,16707566 : 0,0 '' - IL_009f: ldarg.1 - IL_00a0: ldnull - IL_00a1: cgt.un - IL_00a3: brfalse.s IL_00a7 + IL_00a0: ldarg.1 + IL_00a1: ldnull + IL_00a2: cgt.un + IL_00a4: brfalse.s IL_00a8 .line 16707566,16707566 : 0,0 '' - IL_00a5: ldc.i4.m1 - IL_00a6: ret + IL_00a6: ldc.i4.m1 + IL_00a7: ret .line 16707566,16707566 : 0,0 '' - IL_00a7: ldc.i4.0 - IL_00a8: ret + IL_00a8: ldc.i4.0 + IL_00a9: ret } // end of method KeyWithInnerKeys::CompareTo .method public hidebysig virtual final @@ -953,6 +977,7 @@ IL_0000: ldarg.1 IL_0001: unbox.any Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldarg.0 IL_0008: ldnull IL_0009: cgt.un @@ -985,6 +1010,7 @@ IL_0039: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) IL_003e: stloc.3 + .line 16707566,16707566 : 0,0 '' IL_003f: ldloc.3 IL_0040: ldc.i4.0 IL_0041: bge.s IL_0045 @@ -1027,6 +1053,7 @@ IL_0084: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::CompareTo(object, class [mscorlib]System.Collections.IComparer) IL_0089: stloc.s V_10 + .line 16707566,16707566 : 0,0 '' IL_008b: ldloc.s V_10 IL_008d: brfalse.s IL_0092 @@ -1066,7 +1093,7 @@ instance int32 GetHashCode(class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 107 (0x6b) + // Code size 108 (0x6c) .maxstack 7 .locals init ([0] int32 V_0, [1] class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -1074,76 +1101,79 @@ [3] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_3, [4] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_4, [5] int32 V_5) - .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_0069 - - .line 16707566,16707566 : 0,0 '' - IL_0006: ldc.i4.0 - IL_0007: stloc.0 - IL_0008: ldarg.0 - IL_0009: pop - .line 16707566,16707566 : 0,0 '' - IL_000a: ldarg.0 - IL_000b: stloc.1 - IL_000c: ldc.i4.0 - IL_000d: stloc.0 - IL_000e: ldc.i4 0x9e3779b9 - IL_0013: ldloc.1 - IL_0014: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0019: stloc.2 - IL_001a: ldloc.2 - IL_001b: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_0020: stloc.3 - IL_0021: ldloc.2 - IL_0022: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0027: stloc.s V_4 - IL_0029: ldloc.3 - IL_002a: ldarg.1 - IL_002b: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_0030: stloc.s V_5 - IL_0032: ldloc.s V_5 - IL_0034: ldc.i4.5 - IL_0035: shl - IL_0036: ldloc.s V_5 - IL_0038: add - IL_0039: ldloc.s V_4 - IL_003b: ldarg.1 - IL_003c: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_0041: xor - IL_0042: ldloc.0 - IL_0043: ldc.i4.6 - IL_0044: shl - IL_0045: ldloc.0 - IL_0046: ldc.i4.2 - IL_0047: shr - IL_0048: add + .line 5,5 : 10,26 '' + IL_0000: nop + .line 16707566,16707566 : 0,0 '' + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_006a + + .line 16707566,16707566 : 0,0 '' + IL_0007: ldc.i4.0 + IL_0008: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0009: ldarg.0 + IL_000a: pop + .line 16707566,16707566 : 0,0 '' + IL_000b: ldarg.0 + IL_000c: stloc.1 + IL_000d: ldc.i4.0 + IL_000e: stloc.0 + IL_000f: ldc.i4 0x9e3779b9 + IL_0014: ldloc.1 + IL_0015: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_001a: stloc.2 + IL_001b: ldloc.2 + IL_001c: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_0021: stloc.3 + IL_0022: ldloc.2 + IL_0023: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0028: stloc.s V_4 + IL_002a: ldloc.3 + IL_002b: ldarg.1 + IL_002c: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_0031: stloc.s V_5 + IL_0033: ldloc.s V_5 + IL_0035: ldc.i4.5 + IL_0036: shl + IL_0037: ldloc.s V_5 + IL_0039: add + IL_003a: ldloc.s V_4 + IL_003c: ldarg.1 + IL_003d: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_0042: xor + IL_0043: ldloc.0 + IL_0044: ldc.i4.6 + IL_0045: shl + IL_0046: ldloc.0 + IL_0047: ldc.i4.2 + IL_0048: shr IL_0049: add IL_004a: add - IL_004b: stloc.0 - IL_004c: ldc.i4 0x9e3779b9 - IL_0051: ldloc.1 - IL_0052: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0057: ldarg.1 - IL_0058: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) - IL_005d: ldloc.0 - IL_005e: ldc.i4.6 - IL_005f: shl - IL_0060: ldloc.0 - IL_0061: ldc.i4.2 - IL_0062: shr - IL_0063: add + IL_004b: add + IL_004c: stloc.0 + IL_004d: ldc.i4 0x9e3779b9 + IL_0052: ldloc.1 + IL_0053: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0058: ldarg.1 + IL_0059: callvirt instance int32 Hash12/HashMicroPerfAndCodeGenerationTests/Key::GetHashCode(class [mscorlib]System.Collections.IEqualityComparer) + IL_005e: ldloc.0 + IL_005f: ldc.i4.6 + IL_0060: shl + IL_0061: ldloc.0 + IL_0062: ldc.i4.2 + IL_0063: shr IL_0064: add IL_0065: add - IL_0066: stloc.0 - IL_0067: ldloc.0 - IL_0068: ret + IL_0066: add + IL_0067: stloc.0 + IL_0068: ldloc.0 + IL_0069: ret .line 16707566,16707566 : 0,0 '' - IL_0069: ldc.i4.0 - IL_006a: ret + IL_006a: ldc.i4.0 + IL_006b: ret } // end of method KeyWithInnerKeys::GetHashCode .method public hidebysig virtual final @@ -1164,7 +1194,7 @@ class [mscorlib]System.Collections.IEqualityComparer comp) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 138 (0x8a) + // Code size 139 (0x8b) .maxstack 5 .locals init ([0] class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1, @@ -1175,155 +1205,163 @@ [6] class [mscorlib]System.Tuple`2 V_6, [7] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_7, [8] class Hash12/HashMicroPerfAndCodeGenerationTests/Key V_8) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse IL_0082 + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse IL_0083 .line 16707566,16707566 : 0,0 '' - IL_0009: ldarg.1 - IL_000a: isinst Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys - IL_000f: stloc.0 - IL_0010: ldloc.0 - IL_0011: brfalse.s IL_0080 + IL_000a: ldarg.1 + IL_000b: isinst Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys + IL_0010: stloc.0 + .line 16707566,16707566 : 0,0 '' + IL_0011: ldloc.0 + IL_0012: brfalse.s IL_0081 .line 16707566,16707566 : 0,0 '' - IL_0013: ldarg.0 - IL_0014: pop + IL_0014: ldarg.0 + IL_0015: pop .line 16707566,16707566 : 0,0 '' - IL_0015: ldarg.0 - IL_0016: stloc.1 - IL_0017: ldloc.0 - IL_0018: stloc.2 - IL_0019: ldloc.1 - IL_001a: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001f: stloc.3 - IL_0020: ldloc.2 - IL_0021: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0026: stloc.s V_4 - IL_0028: ldloc.3 - IL_0029: ldloc.s V_4 - IL_002b: ldarg.2 - IL_002c: callvirt instance bool Hash12/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0016: ldarg.0 + IL_0017: stloc.1 + IL_0018: ldloc.0 + IL_0019: stloc.2 + .line 16707566,16707566 : 0,0 '' + IL_001a: ldloc.1 + IL_001b: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0020: stloc.3 + IL_0021: ldloc.2 + IL_0022: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0027: stloc.s V_4 + IL_0029: ldloc.3 + IL_002a: ldloc.s V_4 + IL_002c: ldarg.2 + IL_002d: callvirt instance bool Hash12/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_0031: brfalse.s IL_007e + IL_0032: brfalse.s IL_007f .line 16707566,16707566 : 0,0 '' - IL_0033: ldloc.1 - IL_0034: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0039: stloc.s V_5 - IL_003b: ldloc.2 - IL_003c: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0041: stloc.s V_6 - IL_0043: ldloc.s V_5 - IL_0045: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_004a: stloc.3 - IL_004b: ldloc.s V_5 - IL_004d: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0052: stloc.s V_4 - IL_0054: ldloc.s V_6 - IL_0056: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() - IL_005b: stloc.s V_7 - IL_005d: ldloc.s V_6 - IL_005f: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() - IL_0064: stloc.s V_8 - IL_0066: ldloc.3 - IL_0067: ldloc.s V_7 - IL_0069: ldarg.2 - IL_006a: callvirt instance bool Hash12/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0034: ldloc.1 + IL_0035: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_003a: stloc.s V_5 + IL_003c: ldloc.2 + IL_003d: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0042: stloc.s V_6 + IL_0044: ldloc.s V_5 + IL_0046: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_004b: stloc.3 + IL_004c: ldloc.s V_5 + IL_004e: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0053: stloc.s V_4 + IL_0055: ldloc.s V_6 + IL_0057: call instance !0 class [mscorlib]System.Tuple`2::get_Item1() + IL_005c: stloc.s V_7 + IL_005e: ldloc.s V_6 + IL_0060: call instance !1 class [mscorlib]System.Tuple`2::get_Item2() + IL_0065: stloc.s V_8 + .line 16707566,16707566 : 0,0 '' + IL_0067: ldloc.3 + IL_0068: ldloc.s V_7 + IL_006a: ldarg.2 + IL_006b: callvirt instance bool Hash12/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_006f: brfalse.s IL_007c + IL_0070: brfalse.s IL_007d .line 16707566,16707566 : 0,0 '' - IL_0071: ldloc.s V_4 - IL_0073: ldloc.s V_8 - IL_0075: ldarg.2 - IL_0076: callvirt instance bool Hash12/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, + IL_0072: ldloc.s V_4 + IL_0074: ldloc.s V_8 + IL_0076: ldarg.2 + IL_0077: callvirt instance bool Hash12/HashMicroPerfAndCodeGenerationTests/Key::Equals(object, class [mscorlib]System.Collections.IEqualityComparer) - IL_007b: ret + IL_007c: ret .line 16707566,16707566 : 0,0 '' - IL_007c: ldc.i4.0 - IL_007d: ret + IL_007d: ldc.i4.0 + IL_007e: ret .line 16707566,16707566 : 0,0 '' - IL_007e: ldc.i4.0 - IL_007f: ret + IL_007f: ldc.i4.0 + IL_0080: ret .line 16707566,16707566 : 0,0 '' - IL_0080: ldc.i4.0 - IL_0081: ret + IL_0081: ldc.i4.0 + IL_0082: ret .line 16707566,16707566 : 0,0 '' - IL_0082: ldarg.1 - IL_0083: ldnull - IL_0084: cgt.un - IL_0086: ldc.i4.0 - IL_0087: ceq - IL_0089: ret + IL_0083: ldarg.1 + IL_0084: ldnull + IL_0085: cgt.un + IL_0087: ldc.i4.0 + IL_0088: ceq + IL_008a: ret } // end of method KeyWithInnerKeys::Equals .method public hidebysig virtual final instance bool Equals(class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys obj) cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) - // Code size 69 (0x45) + // Code size 70 (0x46) .maxstack 4 .locals init ([0] class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_0, [1] class Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys V_1) + .line 5,5 : 10,26 '' + IL_0000: nop .line 16707566,16707566 : 0,0 '' - IL_0000: ldarg.0 - IL_0001: ldnull - IL_0002: cgt.un - IL_0004: brfalse.s IL_003d + IL_0001: ldarg.0 + IL_0002: ldnull + IL_0003: cgt.un + IL_0005: brfalse.s IL_003e .line 16707566,16707566 : 0,0 '' - IL_0006: ldarg.1 - IL_0007: ldnull - IL_0008: cgt.un - IL_000a: brfalse.s IL_003b + IL_0007: ldarg.1 + IL_0008: ldnull + IL_0009: cgt.un + IL_000b: brfalse.s IL_003c .line 16707566,16707566 : 0,0 '' - IL_000c: ldarg.0 - IL_000d: pop + IL_000d: ldarg.0 + IL_000e: pop .line 16707566,16707566 : 0,0 '' - IL_000e: ldarg.0 - IL_000f: stloc.0 - IL_0010: ldarg.1 - IL_0011: stloc.1 - IL_0012: ldloc.0 - IL_0013: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_0018: ldloc.1 - IL_0019: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 - IL_001e: callvirt instance bool Hash12/HashMicroPerfAndCodeGenerationTests/Key::Equals(class Hash12/HashMicroPerfAndCodeGenerationTests/Key) - IL_0023: brfalse.s IL_0039 - - .line 16707566,16707566 : 0,0 '' - IL_0025: ldloc.0 - IL_0026: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_002b: ldloc.1 - IL_002c: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 - IL_0031: tail. - IL_0033: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic>(!!0, + IL_000f: ldarg.0 + IL_0010: stloc.0 + IL_0011: ldarg.1 + IL_0012: stloc.1 + .line 16707566,16707566 : 0,0 '' + IL_0013: ldloc.0 + IL_0014: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_0019: ldloc.1 + IL_001a: ldfld class Hash12/HashMicroPerfAndCodeGenerationTests/Key Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item1 + IL_001f: callvirt instance bool Hash12/HashMicroPerfAndCodeGenerationTests/Key::Equals(class Hash12/HashMicroPerfAndCodeGenerationTests/Key) + IL_0024: brfalse.s IL_003a + + .line 16707566,16707566 : 0,0 '' + IL_0026: ldloc.0 + IL_0027: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_002c: ldloc.1 + IL_002d: ldfld class [mscorlib]System.Tuple`2 Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys::item2 + IL_0032: tail. + IL_0034: call bool [FSharp.Core]Microsoft.FSharp.Core.LanguagePrimitives/HashCompare::GenericEqualityERIntrinsic>(!!0, !!0) - IL_0038: ret + IL_0039: ret .line 16707566,16707566 : 0,0 '' - IL_0039: ldc.i4.0 - IL_003a: ret + IL_003a: ldc.i4.0 + IL_003b: ret .line 16707566,16707566 : 0,0 '' - IL_003b: ldc.i4.0 - IL_003c: ret + IL_003c: ldc.i4.0 + IL_003d: ret .line 16707566,16707566 : 0,0 '' - IL_003d: ldarg.1 - IL_003e: ldnull - IL_003f: cgt.un - IL_0041: ldc.i4.0 - IL_0042: ceq - IL_0044: ret + IL_003e: ldarg.1 + IL_003f: ldnull + IL_0040: cgt.un + IL_0042: ldc.i4.0 + IL_0043: ceq + IL_0045: ret } // end of method KeyWithInnerKeys::Equals .method public hidebysig virtual final @@ -1337,6 +1375,7 @@ IL_0000: ldarg.1 IL_0001: isinst Hash12/HashMicroPerfAndCodeGenerationTests/KeyWithInnerKeys IL_0006: stloc.0 + .line 16707566,16707566 : 0,0 '' IL_0007: ldloc.0 IL_0008: brfalse.s IL_0014 diff --git a/tests/service/EditorTests.fs b/tests/service/EditorTests.fs index d0cb818acf..6a303c7290 100644 --- a/tests/service/EditorTests.fs +++ b/tests/service/EditorTests.fs @@ -1504,6 +1504,67 @@ let f () = ((6, 16), (6, 7, 6, 18, "List.unzip3")); ((6, 17), (6, 7, 6, 18, "List.unzip3"))] +[] +let ``ValidateBreakpointLocation tests for lambda with pattern arg`` () = + let input = + """ +let bodyWrapper () = + id (fun (A(b,c)) -> + let x = 1 + x)""" + let file = "/home/user/Test.fsx" + let parseResult, _typeCheckResults = parseAndCheckScript(file, input) + let results = getBreakpointLocations input parseResult + printfn "%A" results + // The majority of the breakpoints here get the entire expression, except the start-of-line ones + // on line 4 and 5, and the ones actually on the interior text of the lambda. + // + // This is correct + results |> shouldEqual + [((3, 0), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 1), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 2), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 3), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 4), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 5), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 6), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 7), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 8), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 9), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 10), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 11), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 12), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 13), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 14), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 15), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 16), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 17), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 18), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 19), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 20), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((3, 21), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((4, 0), (4, 8, 4, 17, "let x = 1")); + ((4, 1), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((4, 2), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((4, 3), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((4, 4), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((4, 5), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((4, 6), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((4, 7), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((4, 8), (4, 8, 4, 17, "let x = 1")); ((4, 9), (4, 8, 4, 17, "let x = 1")); + ((4, 10), (4, 8, 4, 17, "let x = 1")); ((4, 11), (4, 8, 4, 17, "let x = 1")); + ((4, 12), (4, 8, 4, 17, "let x = 1")); ((4, 13), (4, 8, 4, 17, "let x = 1")); + ((4, 14), (4, 8, 4, 17, "let x = 1")); ((4, 15), (4, 8, 4, 17, "let x = 1")); + ((4, 16), (4, 8, 4, 17, "let x = 1")); ((5, 0), (5, 8, 5, 9, "x")); + ((5, 1), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((5, 2), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((5, 3), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((5, 4), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((5, 5), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((5, 6), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((5, 7), (3, 3, 5, 10, "id (fun (A(b,c)) ->$ let x = 1$ x)")); + ((5, 8), (5, 8, 5, 9, "x")); ((5, 9), (5, 8, 5, 9, "x"))] + [] let ``Partially valid namespaces should be reported`` () = let input = diff --git a/tests/walkthroughs/DebugStepping/TheBigFileOfDebugStepping.fsx b/tests/walkthroughs/DebugStepping/TheBigFileOfDebugStepping.fsx index 52800ce3c9..9e1f794aa9 100644 --- a/tests/walkthroughs/DebugStepping/TheBigFileOfDebugStepping.fsx +++ b/tests/walkthroughs/DebugStepping/TheBigFileOfDebugStepping.fsx @@ -890,3 +890,117 @@ TaskBreakpoints1() |> Task.RunSynchronously InlinedCode.test() Pipelined.testListPipeline() Pipelined.testArrayPipeline() + +module BooleanLogic = + + let testFunctionWithAnd x y = + x && y + + let testFunctionWithOr x y = + x || y + + let testFunctionWithMultipleAnd x y z = + x && y && z + + let testFunctionWithMultipleOr x y z = + x || y || z + + let testFunctionWithIfOfAnd x y = + if x && y then + 1 + else + 2 + + let testFunctionWithIfOfOr x y = + if x || y then + 1 + else + 2 + + testFunctionWithAnd true false + testFunctionWithMultipleAnd true true false + testFunctionWithMultipleOr false false true + testFunctionWithOr true false + testFunctionWithIfOfAnd true false + testFunctionWithIfOfOr false false + +// See https://github.com/dotnet/fsharp/issues/11977 +module FalseSteppingBug = + type U = + | A1 of int + | A2 of int + | A3 of int + | A4 of int + + let testFunc f u = + match u with + | A1 n -> f n + | A2 n when n > 4 -> f n // this was falsely hit + | A2 n -> f n + | A3 n -> f n + | A4 n -> f n + + testFunc id (A3 4) + + + +// https://github.com/dotnet/fsharp/pull/11981 +module MissingFirstTry = + let TestFunction3() = + try + let x = 1+1 + System.Console.WriteLine "Hello"; + with _ -> + System.Console.WriteLine "World" + + TestFunction3() + + +// https://github.com/dotnet/fsharp/issues/11979 +// +// Check debug points exist for 'when' +module DebuggingSteppingForMatchWithWhen1 = + + let TestMatchWithWhen x y = + match x with + | [_] when y > 4 -> 5 + | [_] when y < 4 -> -5 + | _ -> 2 + + + TestMatchWithWhen [1] 4 + TestMatchWithWhen [1] 5 + TestMatchWithWhen [1] 6 + + +// https://github.com/dotnet/fsharp/issues/11979 +// +// Check debug points exist for 'when' +module DebuggingSteppingForMatchWithWhenWithVariableBinding = + + let TestMatchWithWhen x = + match x with + | [x] when x > 4 -> 5 + | [x] when x < 4 -> -5 + | _ -> 2 + + + TestMatchWithWhen [4] + TestMatchWithWhen [5] + TestMatchWithWhen [6] + +// https://github.com/dotnet/fsharp/issues/11979 +// +// Check debug points exist for 'when' +module DebuggingSteppingForMatchWithWhenWithUnionClauses= + + let TestMatchWithWhen x = + match x with + | [_;x] + | [x] when x < 4 -> -5 + | _ -> 2 + + + TestMatchWithWhen [4;5] + TestMatchWithWhen [5;4] + TestMatchWithWhen [6]