Skip to content

Commit 37183ab

Browse files
committed
feat: Actually 'implement' lazy mark scan
1 parent 7e99344 commit 37183ab

File tree

3 files changed

+414
-1
lines changed

3 files changed

+414
-1
lines changed

src/main/scala/fred/Translator.scala

+10-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,16 @@ object Translator {
1717
typer: Typer
1818
): String = {
1919
given Bindings = Bindings.fromFile(file)
20-
given cycles: Cycles = Cycles.fromFile(file)
20+
given cycles: Cycles = settings.algo match {
21+
case RcAlgo.LazyMarkScan =>
22+
// For lazy mark scan, put every type in the same SCC
23+
Cycles(
24+
List(file.typeDefs.toSet),
25+
file.typeDefs.map(_ -> 0).toMap,
26+
Set.empty
27+
)
28+
case RcAlgo.Mine => Cycles.fromFile(file)
29+
}
2130
val helper = Helper(typer)
2231
val (genDecls, genImpls) =
2332
List(Freer, Decrementer, MarkGray, Scan, ScanBlack, CollectWhite, Printer)

src/test/resources/snapshot/exec/lazy-mark-scan-83wesh.c

+378
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)