summaryrefslogtreecommitdiff
path: root/chapter28a/src/main
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-30 16:55:06 -0700
committerCliff Click <cliffc@acm.org>2026-10-30 16:55:06 -0700
commitbed724c88722f332693f41e2329b75c6ce492880 (patch)
tree8191f1130d6e783d6a111a520347b14890b687f0 /chapter28a/src/main
parentf3a4a64db05574854341e737f1ac066f7f7aad89 (diff)
downloadSimple-bed724c88722f332693f41e2329b75c6ce492880.tar.gz
Simple-bed724c88722f332693f41e2329b75c6ce492880.zip
Preserve escape bounds when splitting bulk memory Phis
Diffstat (limited to 'chapter28a/src/main')
-rw-r--r--chapter28a/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java12
1 files changed, 4 insertions, 8 deletions
diff --git a/chapter28a/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java b/chapter28a/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java
index df9e4fff..b7372e87 100644
--- a/chapter28a/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java
+++ b/chapter28a/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java
@@ -208,13 +208,6 @@ public class BulkMemPhiNode extends PhiNode {
mmm.alias(alias,precise);
assert checkMerge(mmm);
mmm.init();
- // Slicing changes representation, not the set of values in memory.
- // Newly exposed precise inputs can carry conservative bulk escape
- // summaries; do not let those invent escapes absent from this Phi.
- TypeMem old = (TypeMem)_type;
- TypeMem mem = (TypeMem) mmm._type;
- mmm._type = TypeMem.make(mem._alias,mem._t,mem._one,mem._clz,
- mem._final,old._escFs,old._escAs);
return mmm;
}
@@ -226,7 +219,10 @@ public class BulkMemPhiNode extends PhiNode {
mphi = new MemPhiNode("$"+alias,alias);
mphi.addDef(region());
// Due to cycles, must set before calling peephole
- mphi.setType(TypeMem.BOT.makeFrom(alias));
+ // Splitting preserves the bulk Phi's established escape bound. Starting
+ // at BOT would temporarily invent escapes when the new slice is merged.
+ TypeMem old = (TypeMem)_type;
+ mphi.setType(TypeMem.make(alias,old._t,old._one,old._clz,false,old._escFs,old._escAs));
for( int i=1; i<nIns(); i++ )
mphi.addDef(CodeGen.CODE.add(preciseInput(in(i),alias)));
return CodeGen.CODE.add(mphi);