summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2025-02-07 09:09:26 -0800
committerCliff Click <cliffc@acm.org>2025-02-07 09:09:26 -0800
commit4650aca029b98f92c1a3e66192c6f7735818ad74 (patch)
treec8646a25821530c5bc68a2f5b9133e60a461e546
parent34e7282dd7c58b49702c7ecd9f80a46398efd0c1 (diff)
downloadSimple-4650aca029b98f92c1a3e66192c6f7735818ad74.tar.gz
Simple-4650aca029b98f92c1a3e66192c6f7735818ad74.zip
Late arrive ch19 bugfix
-rw-r--r--chapter19/src/main/java/com/seaofnodes/simple/node/LoadNode.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/chapter19/src/main/java/com/seaofnodes/simple/node/LoadNode.java b/chapter19/src/main/java/com/seaofnodes/simple/node/LoadNode.java
index 6c74042b..4004f87f 100644
--- a/chapter19/src/main/java/com/seaofnodes/simple/node/LoadNode.java
+++ b/chapter19/src/main/java/com/seaofnodes/simple/node/LoadNode.java
@@ -201,10 +201,10 @@ public class LoadNode extends MemOpNode {
return new AndNode(null,val,con(ti._max));
// Signed extension
int shift = Long.numberOfLeadingZeros(ti._max)-1;
- Node shf = con(shift);
- if( shf._type==TypeInteger.ZERO )
+ if( shift==0 )
return val;
- //return peep(new SarNode(null,peep(new ShlNode(null,val,shf.keep())),shf.unkeep()));
- throw Utils.TODO();
+ Node shf = con(shift);
+ Node shl = new ShlNode(null,val,shf.keep()).peephole();
+ return new SarNode(null,shl,shf.unkeep());
}
}