Skip to content

Commit 1ac7fee

Browse files
committed
[GR-54900] Delete snippet template return node duplicate if alive.
PullRequest: graal/18135
2 parents d5a5d12 + 1c85a84 commit 1ac7fee

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/nodes/gc/CardTableBarrierSet.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ public BarrierType readBarrierType(LocationIdentity location, ValueNode address,
6565

6666
@Override
6767
public BarrierType writeBarrierType(RawStoreNode store) {
68+
if (store.object().isNullConstant()) {
69+
return BarrierType.NONE;
70+
}
6871
return store.needsBarrier() ? readWriteBarrier(store.object(), store.value()) : BarrierType.NONE;
6972
}
7073

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/nodes/gc/G1BarrierSet.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ public BarrierType readBarrierType(LocationIdentity location, ValueNode address,
6363

6464
@Override
6565
public BarrierType writeBarrierType(RawStoreNode store) {
66+
if (store.object().isNullConstant()) {
67+
return BarrierType.NONE;
68+
}
6669
return store.needsBarrier() ? readWriteBarrier(store.object(), store.value()) : BarrierType.NONE;
6770
}
6871

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/replacements/SnippetTemplate.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2463,12 +2463,6 @@ public void instantiate(MetaAccessProvider metaAccess, FloatingNode replacee, Us
24632463
anchorDuplicate = replaceeGraph.add(new MemoryAnchorNode(info.privateLocations));
24642464
replacements.put(memoryAnchor, anchorDuplicate);
24652465
}
2466-
List<Node> floatingNodes = new ArrayList<>(nodes.size() - 2);
2467-
for (Node n : nodes) {
2468-
if (n != entryPointNode && n != returnNode) {
2469-
floatingNodes.add(n);
2470-
}
2471-
}
24722466
UnmodifiableEconomicMap<Node, Node> duplicates = inlineSnippet(replacee, debug, replaceeGraph, replacements);
24732467

24742468
// floating nodes are not state-splits not need to re-wire frame states
@@ -2481,6 +2475,10 @@ public void instantiate(MetaAccessProvider metaAccess, FloatingNode replacee, Us
24812475
// Replace all usages of the replacee with the value returned by the snippet
24822476
ValueNode returnValue = (ValueNode) duplicates.get(returnNode.result());
24832477
replacer.replace(replacee, returnValue);
2478+
Node returnNodeDuplicate = duplicates.get(returnNode);
2479+
if (returnNodeDuplicate.isAlive()) {
2480+
returnNodeDuplicate.safeDelete();
2481+
}
24842482

24852483
debug.dump(DebugContext.DETAILED_LEVEL, replaceeGraph, "After lowering %s with %s", replacee, this);
24862484
} catch (Throwable e) {

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/FeatureImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import com.oracle.graal.pointsto.BigBang;
5656
import com.oracle.graal.pointsto.ObjectScanner;
5757
import com.oracle.graal.pointsto.heap.ImageHeapConstant;
58+
import com.oracle.graal.pointsto.heap.ImageHeapScanner;
5859
import com.oracle.graal.pointsto.infrastructure.SubstitutionProcessor;
5960
import com.oracle.graal.pointsto.meta.AnalysisField;
6061
import com.oracle.graal.pointsto.meta.AnalysisMetaAccess;
@@ -631,6 +632,10 @@ public Collection<? extends SharedField> getFields() {
631632
public Collection<? extends SharedMethod> getMethods() {
632633
return hUniverse.getMethods();
633634
}
635+
636+
public ImageHeapScanner getHeapScanner() {
637+
return aUniverse.getHeapScanner();
638+
}
634639
}
635640

636641
public static class BeforeCompilationAccessImpl extends CompilationAccessImpl implements Feature.BeforeCompilationAccess {

0 commit comments

Comments
 (0)