diff options
| author | Cliff Click <cliffc@acm.org> | 2026-10-30 16:55:06 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-10-30 16:55:06 -0700 |
| commit | bed724c88722f332693f41e2329b75c6ce492880 (patch) | |
| tree | 8191f1130d6e783d6a111a520347b14890b687f0 /chapter28a/src/main/java | |
| parent | f3a4a64db05574854341e737f1ac066f7f7aad89 (diff) | |
| download | Simple-bed724c88722f332693f41e2329b75c6ce492880.tar.gz Simple-bed724c88722f332693f41e2329b75c6ce492880.zip | |
Preserve escape bounds when splitting bulk memory Phis
Diffstat (limited to 'chapter28a/src/main/java')
| -rw-r--r-- | chapter28a/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java | 12 |
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); |
