Skip to content

Commit e99f071

Browse files
committed
perf: avoid kernel env block in realizeConst
1 parent 19e1fe5 commit e99f071

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/Lean/Environment.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2446,14 +2446,14 @@ def replayConsts (dest : Environment) (oldEnv newEnv : Environment) (skipExistin
24462446
}
24472447
checked := dest.checked.map fun kenv =>
24482448
replayKernel
2449-
oldEnv.toKernelEnv.extensions newEnv.toKernelEnv.extensions exts newPrivateConsts kenv
2449+
oldEnv.checked newEnv.checked exts newPrivateConsts kenv
24502450
|>.toOption.getD kenv
24512451
allRealizations := dest.allRealizations.map (sync := true) fun allRealizations =>
24522452
newPrivateConsts.foldl (init := allRealizations) fun allRealizations c =>
24532453
allRealizations.insert c.constInfo.name c
24542454
}
24552455
where
2456-
replayKernel (oldState newState : Array EnvExtensionState)
2456+
replayKernel (oldEnv newEnv : Task Kernel.Environment)
24572457
(exts : Array (EnvExtension EnvExtensionState)) (consts : List AsyncConst)
24582458
(kenv : Kernel.Environment) : Except Kernel.Exception Kernel.Environment := do
24592459
let mut kenv := kenv
@@ -2464,8 +2464,8 @@ where
24642464
-- safety: like in `modifyState`, but that one takes an elab env instead of a kernel env
24652465
extensions := unsafe (ext.modifyStateImpl kenv.extensions <|
24662466
replay
2467-
(ext.getStateImpl oldState)
2468-
(ext.getStateImpl newState)
2467+
(ext.getStateImpl oldEnv.get.extensions)
2468+
(ext.getStateImpl newEnv.get.extensions)
24692469
(consts.map (·.constInfo.name))) }
24702470
for c in consts do
24712471
if skipExisting && (kenv.find? c.constInfo.name).isSome then
@@ -2611,7 +2611,7 @@ def realizeConst (env : Environment) (forConst : Name) (constName : Name)
26112611
-- (such as by storing `realizeEnv` or `realizeEnv'` in a field or the closure) as `res` will be
26122612
-- stored in a promise in there, creating a cycle.
26132613
let replayKernel := replayConsts.replayKernel (skipExisting := true)
2614-
realizeEnv.toKernelEnv.extensions realizeEnv'.toKernelEnv.extensions exts newPrivateConsts
2614+
realizeEnv.checked realizeEnv'.checked exts newPrivateConsts
26152615
let res : RealizeConstResult := { newConsts.private := newPrivateConsts, newConsts.public := newPublicConsts, replayKernel, dyn }
26162616
pure (.mk res)
26172617
let some res := res.get? RealizeConstResult | unreachable!

0 commit comments

Comments
 (0)