Skip to content

Commit b284570

Browse files
committed
cleanups
1 parent 2992d81 commit b284570

File tree

4 files changed

+27
-55
lines changed

4 files changed

+27
-55
lines changed

compiler/cgen.nim

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1311,9 +1311,8 @@ proc genProcLvl3*(m: BModule, prc: PSym) =
13111311
assert(prc.ast != nil)
13121312

13131313
var procBody = transformBody(m.g.graph, m.idgen, prc, {})
1314-
when not defined(nimExperimentalPreLiftDestruct):
1315-
if sfInjectDestructors in prc.flags:
1316-
procBody = injectDestructorCalls(m.g.graph, m.idgen, prc, procBody)
1314+
if sfInjectDestructors in prc.flags:
1315+
procBody = injectDestructorCalls(m.g.graph, m.idgen, prc, procBody)
13171316

13181317
let tmpInfo = prc.info
13191318
discard freshLineInfo(p, prc.info)
@@ -2449,9 +2448,8 @@ proc handleProcGlobals(m: BModule) =
24492448
# fixes recursive calls #24997
24502449
swap stmts, m.preInitProc.s(cpsStmts)
24512450
var transformedN = procGlobals[i]
2452-
when not defined(nimExperimentalPreLiftDestruct):
2453-
if sfInjectDestructors in m.module.flags:
2454-
transformedN = injectDestructorCalls(m.g.graph, m.idgen, m.module, transformedN)
2451+
if sfInjectDestructors in m.module.flags:
2452+
transformedN = injectDestructorCalls(m.g.graph, m.idgen, m.module, transformedN)
24552453
genStmts(m.preInitProc, transformedN)
24562454
swap stmts, m.preInitProc.s(cpsStmts)
24572455

@@ -2465,9 +2463,8 @@ proc genTopLevelStmt*(m: BModule; n: PNode) =
24652463
#softRnl = if optLineDir in m.config.options: noRnl else: rnl
24662464
# XXX replicate this logic!
24672465
var transformedN = transformStmt(m.g.graph, m.idgen, m.module, n)
2468-
when not defined(nimExperimentalPreLiftDestruct):
2469-
if sfInjectDestructors in m.module.flags:
2470-
transformedN = injectDestructorCalls(m.g.graph, m.idgen, m.module, transformedN)
2466+
if sfInjectDestructors in m.module.flags:
2467+
transformedN = injectDestructorCalls(m.g.graph, m.idgen, m.module, transformedN)
24712468

24722469
if m.hcrOn:
24732470
addHcrInitGuards(m.initProc, transformedN, m.inHcrInitGuard, m.hcrInitGuard)

compiler/dfa.nim

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import ast, lineinfos, renderer, aliasanalysis
2626
import std/private/asciitables
2727
import std/intsets
2828
import std/tables
29-
import std/algorithm
3029

3130
when defined(nimPreviewSlimSystem):
3231
import std/assertions
@@ -296,33 +295,23 @@ proc genCase(c: var Con; n: PNode) =
296295
traverse(n)
297296
result = res
298297
let isStateCase = isStateAccess(n[0])
299-
var branchOrder: seq[int] = @[]
300-
if isStateCase:
301-
var labeled: seq[(int, int)] = @[]
302-
var others: seq[int] = @[]
303-
var elseIdx = -1
304-
for i in 1..<n.len:
305-
let it = n[i]
306-
if it.len == 1:
307-
elseIdx = i
308-
else:
309-
var stateId = high(int)
310-
for j in 0..it.len-2:
311-
if it[j].kind == nkIntLit:
312-
stateId = it[j].intVal.int
313-
break
314-
if stateId != high(int):
315-
labeled.add (stateId, i)
316-
else:
317-
others.add i
318-
labeled.sort(proc (a, b: (int, int)): int = cmp(a[0], b[0]))
319-
for it in labeled: branchOrder.add it[1]
320-
for i in others: branchOrder.add i
321-
if elseIdx >= 0: branchOrder.add elseIdx
322-
else:
323-
for i in 1..<n.len: branchOrder.add i
298+
# State case branches are already sorted by closureiters.nim, so we can
299+
# process them in order without needing to sort here.
300+
when defined(debug):
301+
if isStateCase:
302+
# Verify that state branches are in sorted order
303+
var lastStateId = -1
304+
for i in 1..<n.len:
305+
let it = n[i]
306+
if it.len >= 2:
307+
for j in 0..it.len-2:
308+
if it[j].kind == nkIntLit:
309+
let stateId = it[j].intVal.int
310+
assert stateId > lastStateId, "State case branches are not sorted: " & $lastStateId & " >= " & $stateId
311+
lastStateId = stateId
312+
break
324313

325-
for i in branchOrder:
314+
for i in 1..<n.len:
326315
let it = n[i]
327316
if isStateCase and it.len >= 2:
328317
for j in 0..it.len-2:

compiler/jsgen.nim

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2792,9 +2792,8 @@ proc genProc(oldProc: PProc, prc: PSym): Rope =
27922792
returnStmt = "return $#;$n" % [a.res]
27932793

27942794
var transformedBody = transformBody(p.module.graph, p.module.idgen, prc, {})
2795-
when not defined(nimExperimentalPreLiftDestruct):
2796-
if sfInjectDestructors in prc.flags:
2797-
transformedBody = injectDestructorCalls(p.module.graph, p.module.idgen, prc, transformedBody)
2795+
if sfInjectDestructors in prc.flags:
2796+
transformedBody = injectDestructorCalls(p.module.graph, p.module.idgen, prc, transformedBody)
27982797

27992798
p.nested: genStmt(p, transformedBody)
28002799

@@ -3141,9 +3140,8 @@ proc genModule(p: PProc, n: PNode) =
31413140
makeJSString("module " & p.module.module.name.s),
31423141
makeJSString(toFilenameOption(p.config, p.module.module.info.fileIndex, foStacktrace))))
31433142
var transformedN = transformStmt(p.module.graph, p.module.idgen, p.module.module, n)
3144-
when not defined(nimExperimentalPreLiftDestruct):
3145-
if sfInjectDestructors in p.module.module.flags:
3146-
transformedN = injectDestructorCalls(p.module.graph, p.module.idgen, p.module.module, transformedN)
3143+
if sfInjectDestructors in p.module.module.flags:
3144+
transformedN = injectDestructorCalls(p.module.graph, p.module.idgen, p.module.module, transformedN)
31473145
if p.config.hcrOn and n.kind == nkStmtList:
31483146
let moduleSym = p.module.module
31493147
var moduleLoadedVar = rope(moduleSym.name.s) & "_loaded" &

compiler/transf.nim

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ import
2626
lowerings, liftlocals,
2727
modulegraphs, lineinfos
2828

29-
when defined(nimExperimentalPreLiftDestruct):
30-
import injectdestructors
31-
3229
when defined(nimPreviewSlimSystem):
3330
import std/assertions
3431

@@ -1313,16 +1310,7 @@ proc transformBody*(g: ModuleGraph; idgen: IdGenerator; prc: PSym; flags: Transf
13131310
else:
13141311
prc.transformedBody = newNode(nkEmpty) # protects from recursion
13151312
var c = openTransf(g, prc.getModule, "", idgen, flags)
1316-
1317-
when defined(nimExperimentalPreLiftDestruct):
1318-
# EXPERIMENTAL: Inject destructors BEFORE lambda lifting
1319-
# This allows DFA to work on pre-lifted AST without closure-specific hacks
1320-
var body = getBody(g, prc)
1321-
if sfInjectDestructors in prc.flags:
1322-
body = injectDestructorCalls(g, idgen, prc, body)
1323-
result = liftLambdas(g, prc, body, c.tooEarly, c.idgen, flags)
1324-
else:
1325-
result = liftLambdas(g, prc, getBody(g, prc), c.tooEarly, c.idgen, flags)
1313+
result = liftLambdas(g, prc, getBody(g, prc), c.tooEarly, c.idgen, flags)
13261314

13271315
result = processTransf(c, result, prc)
13281316
liftDefer(c, result)

0 commit comments

Comments
 (0)