From 741d78b6e840c88b7b183010c812ad982b342da1 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Mon, 10 Aug 2026 11:11:18 -0700 Subject: Chapter 28a: Modules and Lazy Class Initialization Co-authored-by: Hsiang-Ying Fu <66062782+fuhsnn@users.noreply.github.com> Co-authored-by: fuhsnn <66062782+fuhsnn@users.noreply.github.com> Co-authored-by: Symious <14933944+symious@users.noreply.github.com> Co-authored-by: Jun Kawasaki Co-authored-by: Claude Opus 5 --- src/test/java/com/seaofnodes/simple/PhaseTest.java | 43 ++++++++-------------- 1 file changed, 15 insertions(+), 28 deletions(-) (limited to 'src/test/java/com/seaofnodes/simple/PhaseTest.java') diff --git a/src/test/java/com/seaofnodes/simple/PhaseTest.java b/src/test/java/com/seaofnodes/simple/PhaseTest.java index 899f42fe..5ff7fcd6 100644 --- a/src/test/java/com/seaofnodes/simple/PhaseTest.java +++ b/src/test/java/com/seaofnodes/simple/PhaseTest.java @@ -11,7 +11,7 @@ import static org.junit.Assert.*; public class PhaseTest { private static final String SRC = "int sum=0; for(int i=0; i phases = new ArrayList<>(); CodeGen code = new CodeGen(SRC); code._obs = new GraphObserver() { @@ -19,38 +19,25 @@ public class PhaseTest { @Override public void after(Node n, Node repl, boolean applied) {} @Override public void phase(String phase) { phases.add(phase); } }; - code.driver(Phase.Iter); - assertEquals(Phase.Iter,code._phase); - assertEquals("Parse Iter",String.join(" ",phases)); code.driver(Phase.TypeCheck); - code.driver(Phase.TypeCheck); // Repeated requests do not rerun phases. - code.driver(Phase.LoopTree); - assertEquals(Phase.LoopTree,code._phase); + code.driver(Phase.TypeCheck); // A repeated request does not rerun anything. code.driver(Phase.LocalSched); - assertEquals("Parse Iter Opto IterPostOpto FinalizeIR TypeCheck LoopTree Schedule LocalSched",String.join(" ",phases)); + assertEquals("Parse Iter Opto IterPostOpto FinalizeIR TypeCheck Lower LoopTree Schedule LocalSched", + String.join(" ",phases)); + assertNull(code._mach); assertEquals("45",Eval2.eval(code,10)); } - @Test public void testResumeMachineCompilation() { - CodeGen staged = new CodeGen(SRC).driver(Phase.TypeCheck); - staged.driver(Phase.Select,"x86_64_v2","SystemV"); - staged.driver(Phase.Encoding,"x86_64_v2","SystemV"); - byte[] bits = staged._encoding._bits.toByteArray(); - CodeGen direct = new CodeGen(SRC).driver(Phase.Encoding,"x86_64_v2","SystemV"); - assertArrayEquals(bits,direct._encoding._bits.toByteArray()); - } - - @Test public void testOptoRequiresIter() { - CodeGen code = new CodeGen(SRC).parse(); - try { - code.opto(); - fail("Opto must not implicitly run Iter"); - } catch( AssertionError expected ) { - assertEquals("Cannot run Opto after Parse",expected.getMessage()); + @Test public void testEncodingAndResume() { + for( String cpu : new String[]{"x86_64_v2","arm","riscv"} ) { + CodeGen code = new CodeGen(SRC).driver(Phase.TypeCheck); + code.driver(Phase.LoopTree,cpu,"SystemV"); + code.driver(Phase.Select,cpu,"SystemV"); + code.driver(Phase.Encoding,cpu,"SystemV"); + byte[] staged = code._encoding._bits.toByteArray(); + CodeGen direct = new CodeGen(SRC).driver(Phase.Encoding,cpu,"SystemV"); + assertArrayEquals(staged,direct._encoding._bits.toByteArray()); } - code.iter().opto(); - assertEquals(Phase.Opto,code._phase); - code.driver(Phase.LocalSched); - assertEquals("45",Eval2.eval(code,10)); } + } -- cgit v1.2.3