diff options
| author | Cliff Click <cliffc@acm.org> | 2024-07-26 11:46:59 +0300 |
|---|---|---|
| committer | Dibyendu Majumdar <dibyendumajumdar@users.noreply.github.com> | 2024-08-05 23:28:33 +0100 |
| commit | f985590bee537977952dd3017fc6cb16f014161b (patch) | |
| tree | 35f47daf174077a1b1d3bd04940e860fcacb403d /chapter12/src/main/java/com | |
| parent | 799ba3a8d2603a51fc5b860f7845e72e6af61c38 (diff) | |
| download | Simple-f985590bee537977952dd3017fc6cb16f014161b.tar.gz Simple-f985590bee537977952dd3017fc6cb16f014161b.zip | |
Better filter on Load clone
Diffstat (limited to 'chapter12/src/main/java/com')
| -rw-r--r-- | chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java b/chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java index 4ed06da4..95d49662 100644 --- a/chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java +++ b/chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java @@ -61,9 +61,13 @@ public class LoadNode extends MemOpNode { if( profit(memphi,2) || // Else must not be a loop to count profit on LHS. (!(memphi.region() instanceof LoopNode) && profit(memphi,1)) ) { - Node ld1 = new LoadNode(_name,_alias,_declaredType,memphi.in(1),ptr()).peephole(); - Node ld2 = new LoadNode(_name,_alias,_declaredType,memphi.in(2),ptr()).peephole(); - return new PhiNode(_name,_type,memphi.region(),ld1,ld2); + if( ptr() instanceof NewNode || !(ptr() instanceof CastNode) ) { + if( !(ptr() instanceof NewNode) ) throw Utils.TODO(); // Validate + + Node ld1 = new LoadNode(_name,_alias,_declaredType,memphi.in(1),ptr()).peephole(); + Node ld2 = new LoadNode(_name,_alias,_declaredType,memphi.in(2),ptr()).peephole(); + return new PhiNode(_name,_type,memphi.region(),ld1,ld2); + } } } |
