summaryrefslogtreecommitdiff
path: root/src/test/java/com/seaofnodes/simple/PhaseTest.java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-08-10 11:11:18 -0700
committerCliff Click <cliffc@acm.org>2026-10-24 15:56:44 -0700
commit741d78b6e840c88b7b183010c812ad982b342da1 (patch)
tree84a75eb7ad351bffd20cd5fb152bab032b74271c /src/test/java/com/seaofnodes/simple/PhaseTest.java
parent8d90d2292bbdb23596849c3c3d1cda2f6cad783e (diff)
downloadSimple-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.java43
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));
}
+
}