summaryrefslogtreecommitdiff
path: root/src/test/java/com/seaofnodes/simple/Eval2.java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2025-06-13 15:42:08 -0700
committerCliff Click <cliffc@acm.org>2026-10-24 15:56:44 -0700
commit89dd0a79da85b2c7102b7c8918a1466e6238fe94 (patch)
treecfa3d1457e9c40ad79ae78ded15c7c2ff286d79d /src/test/java/com/seaofnodes/simple/Eval2.java
parent8309071562b63f77a15425ab2146e05dbcb5acfd (diff)
downloadSimple-linear-chapter24a.tar.gz
Simple-linear-chapter24a.zip
Chapter 24a: SCCP Within a Functionlinear-chapter24a
Co-authored-by: Tamás Hadházy <85063808+Hels15@users.noreply.github.com> 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: Hadházy Tamás <helsgithub15@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/test/java/com/seaofnodes/simple/Eval2.java')
-rw-r--r--src/test/java/com/seaofnodes/simple/Eval2.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/test/java/com/seaofnodes/simple/Eval2.java b/src/test/java/com/seaofnodes/simple/Eval2.java
index 908cc2e0..98e0f18a 100644
--- a/src/test/java/com/seaofnodes/simple/Eval2.java
+++ b/src/test/java/com/seaofnodes/simple/Eval2.java
@@ -319,14 +319,23 @@ public abstract class Eval2 {
// Unknown-caller inputs are type placeholders, not heap constants.
if( !tmp.isConstant() ) yield tmp;
if( tmp._obj.isAry() ) { // Constant array ptr
- TypeConAry con = (TypeConAry)tmp._obj.field("[]")._t;
- Object[] xs = new Object[con.len()];
- for( int i=0; i<con.len(); i++ )
- xs[i] = con.at8(i);
- yield xs;
+ Type elem = tmp._obj.field("[]")._t;
+ if( elem instanceof TypeConAry con ) {
+ Object[] xs = new Object[con.len()];
+ for( int i=0; i<con.len(); i++ )
+ xs[i] = con.at8(i);
+ yield xs;
+ } else {
+ // Generic constant array, used as a default input to a
+ // function; should never execute.
+ yield new Object[0];
+ }
} else {
- throw Utils.TODO(); // Constant non-array ptr
+ // Generic TMP (since Simple is not currently making actual
+ // memory constants), used as a default input to a function;
+ // should never execute.
+ yield tmp.toString();
}
}
default -> null;