summaryrefslogtreecommitdiff
path: root/chapter21/src/main/java/com
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-28 13:39:05 -0700
committerCliff Click <cliffc@acm.org>2026-10-28 13:39:05 -0700
commit86ce5bc5d5018dcb62054d214b23f7a59b9c0d7d (patch)
tree7b564b142c32924db354edfd8553d34cb66fff3e /chapter21/src/main/java/com
parente481e3d215882faa82b19f29cfde5746d4e51863 (diff)
downloadSimple-86ce5bc5d5018dcb62054d214b23f7a59b9c0d7d.tar.gz
Simple-86ce5bc5d5018dcb62054d214b23f7a59b9c0d7d.zip
Fix bugs x86 storing only 32bits of a large constant
Missed field narrowing in a few cases
Diffstat (limited to 'chapter21/src/main/java/com')
-rw-r--r--chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java2
1 files changed, 1 insertions, 1 deletions
diff --git a/chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java b/chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java
index 1dc47188..253a8135 100644
--- a/chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java
+++ b/chapter21/src/main/java/com/seaofnodes/simple/node/cpus/x86_64_v2/x86_64_v2.java
@@ -544,7 +544,7 @@ public class x86_64_v2 extends Machine {
private int imm( Node xval ) {
assert val == null && imm == 0;
- if( xval instanceof ConstantNode con && con._con instanceof TypeInteger ti) {
+ if( xval instanceof ConstantNode con && con._con instanceof TypeInteger ti && ti.isConstant() && imm32(ti.value()) ) {
val = null;
imm = (int) ti.value();
assert imm == ti.value(); // In 32-bit range