diff options
| author | Cliff Click <cliffc@acm.org> | 2026-10-27 19:06:47 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-10-27 19:06:47 -0700 |
| commit | 19f9ea99114e9c1819239508f812d6521661f7bb (patch) | |
| tree | df8b80611f04faceb0e64880bb70eaf17a08c2b6 /chapter19/src/main/java/com/seaofnodes | |
| parent | eb9f6b86720c8a5c6c66e1c1837c65a4637aabee (diff) | |
| download | Simple-19f9ea99114e9c1819239508f812d6521661f7bb.tar.gz Simple-19f9ea99114e9c1819239508f812d6521661f7bb.zip | |
Backport a bunch of fixes
ARM encoding
Extra fidx burned with no constructor
Getting types during a parse to avoid a whole-program walk later
Diffstat (limited to 'chapter19/src/main/java/com/seaofnodes')
| -rw-r--r-- | chapter19/src/main/java/com/seaofnodes/simple/node/cpus/riscv/CallRRISC.java | 7 | ||||
| -rw-r--r-- | chapter19/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/CallRX86.java | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/chapter19/src/main/java/com/seaofnodes/simple/node/cpus/riscv/CallRRISC.java b/chapter19/src/main/java/com/seaofnodes/simple/node/cpus/riscv/CallRRISC.java index 02850582..09855b7d 100644 --- a/chapter19/src/main/java/com/seaofnodes/simple/node/cpus/riscv/CallRRISC.java +++ b/chapter19/src/main/java/com/seaofnodes/simple/node/cpus/riscv/CallRRISC.java @@ -1,17 +1,20 @@ package com.seaofnodes.simple.node.cpus.riscv; +import com.seaofnodes.simple.type.TypeFunPtr; import com.seaofnodes.simple.*; import com.seaofnodes.simple.node.*; import java.io.ByteArrayOutputStream; public class CallRRISC extends CallNode implements MachNode{ - CallRRISC( CallNode call ) { super(call); } + final TypeFunPtr _tfp; + CallRRISC( CallNode call ) { super(call); _tfp = call.tfp(); } + @Override public TypeFunPtr tfp() { return _tfp; } @Override public String label() { return op(); } @Override public RegMask regmap(int i) { // Todo: float or int? - return i==_inputs._len + return i==_inputs._len-1 ? riscv.RMASK // Function call target : riscv.callInMaskInt(i); // Normal argument } diff --git a/chapter19/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/CallRX86.java b/chapter19/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/CallRX86.java index 99260a27..c170d7e4 100644 --- a/chapter19/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/CallRX86.java +++ b/chapter19/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/CallRX86.java @@ -7,11 +7,13 @@ import com.seaofnodes.simple.type.TypeFunPtr; import java.io.ByteArrayOutputStream; public class CallRX86 extends CallNode implements MachNode { - CallRX86( CallNode call ) { super(call); } + final TypeFunPtr _tfp; + CallRX86( CallNode call ) { super(call); _tfp = call.tfp(); } + @Override public TypeFunPtr tfp() { return _tfp; } @Override public String label() { return op(); } @Override public RegMask regmap(int i) { - return i==_inputs._len + return i==_inputs._len-1 ? x86_64_v2.WMASK // Function call target : x86_64_v2.callInMask(tfp(),i); // Normal argument } |
