Skip to content

Commit 74196ae

Browse files
committed
Moved local rec functions into top module
1 parent 8ddce91 commit 74196ae

File tree

1 file changed

+34
-32
lines changed

1 file changed

+34
-32
lines changed

src/fsharp/IlxGen.fs

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4858,42 +4858,44 @@ and GenJoinPoint cenv cgbuf pos eenv ty m sequel =
48584858
// go to the join point
48594859
Br afterJoin, afterJoin, stackAfterJoin, sequel
48604860

4861-
// Accumulate the decision graph as we go
4862-
and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets repeatSP sequel : (Queue<unit -> (IlxGenEnv * EmitSequencePointState * Expr * sequel) option>) =
4863-
let rec genDecisions targetInfos decisions (queue: Queue<_>) =
4864-
match decisions with
4865-
| [] ->
4866-
let remaining =
4867-
targetInfos
4868-
|> Seq.sortBy (fun (KeyValue(targetIdx, _)) -> targetIdx)
4869-
|> Seq.filter (fun (KeyValue(_, (_, isTargetPostponed))) -> isTargetPostponed)
4870-
|> List.ofSeq
4871-
4872-
let rec genRemaining remaining (queue: Queue<_>) =
4873-
match remaining with
4874-
| [] -> None
4875-
| (KeyValue(_, (targetInfo, _))) :: rest ->
4876-
queue.Enqueue(fun () -> genRemaining rest queue)
4877-
Some(GenDecisionTreeTarget cenv cgbuf stackAtTargets targetInfo sequel)
4878-
4879-
genRemaining remaining queue
4861+
and GenPostponedAndQueueTargets cenv cgbuf (queue: Queue<_>) targetInfos stackAtTargets sequel =
4862+
match targetInfos with
4863+
| [] -> None
4864+
| (KeyValue(_, (targetInfo, isTargetPostponed))) :: rest ->
4865+
if isTargetPostponed then
4866+
queue.Enqueue(fun () -> GenPostponedAndQueueTargets cenv cgbuf queue rest stackAtTargets sequel)
4867+
Some(GenDecisionTreeTarget cenv cgbuf stackAtTargets targetInfo sequel)
4868+
else
4869+
GenPostponedAndQueueTargets cenv cgbuf queue rest stackAtTargets sequel
4870+
4871+
and GenDecisionTreesAndQueueTargets cenv cgbuf (queue: Queue<_>) targetInfos decisions stackAtTargets targets repeatSP sequel =
4872+
match decisions with
4873+
| [] ->
4874+
let sortedTargetInfos =
4875+
targetInfos
4876+
|> Seq.sortBy (fun (KeyValue(targetIdx, _)) -> targetIdx)
4877+
|> List.ofSeq
4878+
4879+
GenPostponedAndQueueTargets cenv cgbuf queue sortedTargetInfos stackAtTargets sequel
48804880

4881-
| (inplabOpt, eenv, tree) :: rest ->
4882-
match tree with
4883-
| TDSuccess(es, targetIdx) ->
4884-
let targetInfos, genTargetInfoOpt = GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targets repeatSP targetInfos sequel
4885-
match genTargetInfoOpt with
4886-
| Some _ ->
4887-
queue.Enqueue(fun () -> genDecisions targetInfos rest queue)
4888-
genTargetInfoOpt
4889-
| _ ->
4890-
genDecisions targetInfos rest queue
4881+
| (inplabOpt, eenv, tree) :: rest ->
4882+
match tree with
4883+
| TDSuccess(es, targetIdx) ->
4884+
let targetInfos, genTargetInfoOpt = GenDecisionTreeSuccess cenv cgbuf inplabOpt stackAtTargets eenv es targetIdx targets repeatSP targetInfos sequel
4885+
match genTargetInfoOpt with
4886+
| Some _ ->
4887+
queue.Enqueue(fun () -> GenDecisionTreesAndQueueTargets cenv cgbuf queue targetInfos rest stackAtTargets targets repeatSP sequel)
4888+
genTargetInfoOpt
48914889
| _ ->
4892-
let newDecisions = GenDecisionTreeAndTargetsInner cenv cgbuf inplabOpt stackAtTargets eenv tree targets repeatSP targetInfos sequel
4893-
genDecisions targetInfos (newDecisions @ rest) queue
4890+
GenDecisionTreesAndQueueTargets cenv cgbuf queue targetInfos rest stackAtTargets targets repeatSP sequel
4891+
| _ ->
4892+
let newDecisions = GenDecisionTreeAndTargetsInner cenv cgbuf inplabOpt stackAtTargets eenv tree targets repeatSP targetInfos sequel
4893+
GenDecisionTreesAndQueueTargets cenv cgbuf queue targetInfos (newDecisions @ rest) stackAtTargets targets repeatSP sequel
48944894

4895+
// Accumulate the decision graph as we go
4896+
and GenDecisionTreeAndTargets cenv cgbuf stackAtTargets eenv tree targets repeatSP sequel : (Queue<unit -> (IlxGenEnv * EmitSequencePointState * Expr * sequel) option>) =
48954897
let queue = Queue()
4896-
queue.Enqueue (fun () -> genDecisions (IntMap.empty()) [(None, eenv, tree)] queue)
4898+
queue.Enqueue (fun () -> GenDecisionTreesAndQueueTargets cenv cgbuf queue (IntMap.empty()) [(None, eenv, tree)] stackAtTargets targets repeatSP sequel)
48974899
queue
48984900

48994901
and TryFindTargetInfo targetInfos n =

0 commit comments

Comments
 (0)