diff options
| author | Cliff Click <cliffc@acm.org> | 2026-08-10 11:11:18 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-10-24 15:56:44 -0700 |
| commit | 741d78b6e840c88b7b183010c812ad982b342da1 (patch) | |
| tree | 84a75eb7ad351bffd20cd5fb152bab032b74271c /src/test/java/com/seaofnodes/simple/PhaseTest.java | |
| parent | 8d90d2292bbdb23596849c3c3d1cda2f6cad783e (diff) | |
| download | Simple-linear-chapter28a.tar.gz Simple-linear-chapter28a.zip | |
Chapter 28a: Modules and Lazy Class Initializationlinear-chapter28a
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 <jun784@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/test/java/com/seaofnodes/simple/PhaseTest.java')
| -rw-r--r-- | src/test/java/com/seaofnodes/simple/PhaseTest.java | 43 |
1 files changed, 15 insertions, 28 deletions
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<arg; i++) sum+=i; return sum;"; - @Test public void testStopAndResume() { + @Test public void testIdealPhasesAndResume() { ArrayList<String> phases = new ArrayList<>(); CodeGen code = new CodeGen(SRC); code._obs = new GraphObserver<Node>() { @@ -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)); } + } |
