Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Compiler/AbstractIL/ilwritepdb.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1037,6 +1037,6 @@ let rec pushShadowedLocals (stackGuard: StackGuard) (localsToPush: PdbLocalVar[]
// adding the text " (shadowed)" to the names of those with name conflicts.
let unshadowScopes rootScope =
// Avoid stack overflow when writing linearly nested scopes
let stackGuard = StackGuard(100)
let stackGuard = StackGuard(100, "ILPdbWriter.unshadowScopes")
let result, _ = pushShadowedLocals stackGuard [||] rootScope
result
2 changes: 1 addition & 1 deletion src/Compiler/Checking/CheckBasics.fs
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ type TcFileState =
{ g = g
amap = amap
recUses = ValMultiMap<_>.Empty
stackGuard = StackGuard(TcStackGuardDepth)
stackGuard = StackGuard(TcStackGuardDepth, "TcFileState")
createsGeneratedProvidedTypes = false
thisCcu = thisCcu
isScript = isScript
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Checking/CheckIncrementalClasses.fs
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ type IncrClassReprInfo =
PostTransform = (fun _ -> None)
PreInterceptBinding = None
RewriteQuotations = true
StackGuard = StackGuard(TcClassRewriteStackGuardDepth) } expr
StackGuard = StackGuard(TcClassRewriteStackGuardDepth, "FixupIncrClassExprPhase2C") } expr

type IncrClassConstructionBindingsPhase2C =
| Phase2CBindings of IncrClassBindingGroup list
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Checking/FindUnsolved.fs
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ let UnsolvedTyparsOfModuleDef g amap denv mdef extraAttribs =
amap=amap
denv=denv
unsolved = []
stackGuard = StackGuard(FindUnsolvedStackGuardDepth) }
stackGuard = StackGuard(FindUnsolvedStackGuardDepth, "UnsolvedTyparsOfModuleDef") }
accModuleOrNamespaceDef cenv NoEnv mdef
accAttribs cenv NoEnv extraAttribs
List.rev cenv.unsolved
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Checking/PostInferenceChecks.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2615,7 +2615,7 @@ let CheckImplFile (g, amap, reportErrors, infoReader, internalsVisibleToPaths, v
reportErrors = reportErrors
boundVals = Dictionary<_, _>(100, HashIdentity.Structural)
limitVals = Dictionary<_, _>(100, HashIdentity.Structural)
stackGuard = StackGuard(PostInferenceChecksStackGuardDepth)
stackGuard = StackGuard(PostInferenceChecksStackGuardDepth, "CheckImplFile")
potentialUnboundUsesOfVals = Map.empty
anonRecdTypes = StampMap.Empty
usesQuotations = false
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/CodeGen/IlxGen.fs
Original file line number Diff line number Diff line change
Expand Up @@ -11863,7 +11863,7 @@ type IlxAssemblyGenerator(amap: ImportMap, tcGlobals: TcGlobals, tcVal: Constrai
intraAssemblyInfo = intraAssemblyInfo
optionsOpt = None
optimizeDuringCodeGen = (fun _flag expr -> expr)
stackGuard = StackGuard(IlxGenStackGuardDepth)
stackGuard = StackGuard(IlxGenStackGuardDepth, "IlxAssemblyGenerator")
}

/// Register a set of referenced assemblies with the ILX code generator
Expand Down
4 changes: 2 additions & 2 deletions src/Compiler/Facilities/DiagnosticsLogger.fs
Original file line number Diff line number Diff line change
Expand Up @@ -813,7 +813,7 @@ let internal languageFeatureNotSupportedInLibraryError (langFeature: LanguageFea
error (Error(FSComp.SR.chkFeatureNotSupportedInLibrary (featureStr, suggestedVersionStr), m))

/// Guard against depth of expression nesting, by moving to new stack when a maximum depth is reached
type StackGuard(maxDepth: int) =
type StackGuard(maxDepth: int, name: string) =

let mutable depth = 1

Expand All @@ -828,7 +828,7 @@ type StackGuard(maxDepth: int) =

async {
do! Async.SwitchToNewThread()
Thread.CurrentThread.Name <- "F# Extra Compilation Thread"
Thread.CurrentThread.Name <- $"F# Extra Compilation Thread for {name} (depth {depth})"
use _scope = new CompilationGlobalsScope(diagnosticsLogger, buildPhase)
return f ()
}
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Facilities/DiagnosticsLogger.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ val tryLanguageFeatureErrorOption:
val languageFeatureNotSupportedInLibraryError: langFeature: LanguageFeature -> m: range -> 'T

type StackGuard =
new: maxDepth: int -> StackGuard
new: maxDepth: int * name: string -> StackGuard

/// Execute the new function, on a new thread if necessary
member Guard: f: (unit -> 'T) -> 'T
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Optimize/DetupleArgs.fs
Original file line number Diff line number Diff line change
Expand Up @@ -864,7 +864,7 @@ let passImplFile penv assembly =
PreInterceptBinding = None
PostTransform = postTransformExpr penv
RewriteQuotations = false
StackGuard = StackGuard(DetupleRewriteStackGuardDepth) }
StackGuard = StackGuard(DetupleRewriteStackGuardDepth, "RewriteImplFile") }
assembly |> RewriteImplFile rwenv

//-------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Optimize/InnerLambdasToTopLevelFuncs.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1366,7 +1366,7 @@ let MakeTopLevelRepresentationDecisions ccu g expr =
recShortCallS = recShortCallS
envPackM = envPackM
fHatM = fHatM
stackGuard = StackGuard(InnerLambdasToTopLevelFunctionsStackGuardDepth) }
stackGuard = StackGuard(InnerLambdasToTopLevelFunctionsStackGuardDepth, "InnerLambdasToTopLevelFunctionsStackGuardDepth") }
let z = Pass4_RewriteAssembly.rewriteState0
Pass4_RewriteAssembly.TransImplFile penv z expr

Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Optimize/LowerCalls.fs
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,5 @@ let LowerImplFile g assembly =
PreInterceptBinding=None
PostTransform= (fun _ -> None)
RewriteQuotations=false
StackGuard = StackGuard(LowerCallsRewriteStackGuardDepth) }
StackGuard = StackGuard(LowerCallsRewriteStackGuardDepth, "LowerCallsRewriteStackGuardDepth") }
assembly |> RewriteImplFile rwenv
2 changes: 1 addition & 1 deletion src/Compiler/Optimize/LowerLocalMutables.fs
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,6 @@ let TransformImplFile g amap implFile =
PreInterceptBinding = Some(TransformBinding g heapValMap)
PostTransform = (fun _ -> None)
RewriteQuotations = true
StackGuard = StackGuard(AutoboxRewriteStackGuardDepth) }
StackGuard = StackGuard(AutoboxRewriteStackGuardDepth, "AutoboxRewriteStackGuardDepth") }


2 changes: 1 addition & 1 deletion src/Compiler/Optimize/LowerStateMachines.fs
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ type LowerStateMachine(g: TcGlobals) =
PostTransform = (fun _ -> None)
PreInterceptBinding = None
RewriteQuotations=true
StackGuard = StackGuard(LowerStateMachineStackGuardDepth) }
StackGuard = StackGuard(LowerStateMachineStackGuardDepth, "LowerStateMachineStackGuardDepth") }

let ConvertStateMachineLeafExpression (env: env) expr =
if sm_verbose then printfn "ConvertStateMachineLeafExpression for %A..." expr
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Optimize/Optimizer.fs
Original file line number Diff line number Diff line change
Expand Up @@ -4325,7 +4325,7 @@ let OptimizeImplFile (settings, ccu, tcGlobals, tcVal, importMap, optEnv, isIncr
localInternalVals=Dictionary<Stamp, ValInfo>(10000)
emitTailcalls=emitTailcalls
casApplied=Dictionary<Stamp, bool>()
stackGuard = StackGuard(OptimizerStackGuardDepth)
stackGuard = StackGuard(OptimizerStackGuardDepth, "OptimizerStackGuardDepth")
}

let env, _, _, _ as results = OptimizeImplFileInternal cenv optEnv isIncrementalFragment fsiMultiAssemblyEmit hidden mimpls
Expand Down
20 changes: 10 additions & 10 deletions src/Compiler/TypedTree/TypedTreeOps.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2209,7 +2209,7 @@ let CollectTypars = CollectTyparsAndLocals
let CollectLocals = CollectTyparsAndLocals

let CollectTyparsAndLocalsWithStackGuard() =
let stackGuard = StackGuard(AccFreeVarsStackGuardDepth)
let stackGuard = StackGuard(AccFreeVarsStackGuardDepth, "AccFreeVarsStackGuardDepth")
CollectTyparsAndLocalsImpl (Some stackGuard)

let CollectLocalsWithStackGuard() = CollectTyparsAndLocalsWithStackGuard()
Expand Down Expand Up @@ -6248,31 +6248,31 @@ and remapImplFile ctxt compgen tmenv implFile =
// Entry points

let remapAttrib g tmenv attrib =
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth) }
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth, "RemapExprStackGuardDepth") }
remapAttribImpl ctxt tmenv attrib

let remapExpr g (compgen: ValCopyFlag) (tmenv: Remap) expr =
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth) }
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth, "RemapExprStackGuardDepth") }
remapExprImpl ctxt compgen tmenv expr

let remapPossibleForallTy g tmenv ty =
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth) }
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth, "RemapExprStackGuardDepth") }
remapPossibleForallTyImpl ctxt tmenv ty

let copyModuleOrNamespaceType g compgen mtyp =
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth) }
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth, "RemapExprStackGuardDepth") }
copyAndRemapAndBindModTy ctxt compgen Remap.Empty mtyp |> fst

let copyExpr g compgen e =
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth) }
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth, "RemapExprStackGuardDepth") }
remapExprImpl ctxt compgen Remap.Empty e

let copyImplFile g compgen e =
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth) }
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth, "RemapExprStackGuardDepth") }
remapImplFile ctxt compgen Remap.Empty e |> fst

let instExpr g tpinst e =
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth) }
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth, "RemapExprStackGuardDepth") }
remapExprImpl ctxt CloneAll (mkInstRemap tpinst) e

//--------------------------------------------------------------------------
Expand Down Expand Up @@ -7162,7 +7162,7 @@ let ExprFolder0 =
type ExprFolders<'State> (folders: ExprFolder<'State>) =
let mutable exprFClosure = Unchecked.defaultof<'State -> Expr -> 'State> // prevent reallocation of closure
let mutable exprNoInterceptFClosure = Unchecked.defaultof<'State -> Expr -> 'State> // prevent reallocation of closure
let stackGuard = StackGuard(FoldExprStackGuardDepth)
let stackGuard = StackGuard(FoldExprStackGuardDepth, "FoldExprStackGuardDepth")

let rec exprsF z xs =
List.fold exprFClosure z xs
Expand Down Expand Up @@ -9493,7 +9493,7 @@ and remapValToNonLocal ctxt tmenv inp =
inp |> Construct.NewModifiedVal (remapValData ctxt tmenv)

let ApplyExportRemappingToEntity g tmenv x =
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth) }
let ctxt = { g = g; stackGuard = StackGuard(RemapExprStackGuardDepth, "RemapExprStackGuardDepth") }
remapTyconToNonLocal ctxt tmenv x

(* Which constraints actually get compiled to .NET constraints? *)
Expand Down