Skip to content

Commit 181ecc4

Browse files
committed
[GR-37493] Use @DenyReplace for non-adoptable nodes
1 parent b01678d commit 181ecc4

File tree

4 files changed

+25
-12
lines changed

4 files changed

+25
-12
lines changed

src/main/java/org/truffleruby/language/WarnNode.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
package org.truffleruby.language;
1111

12+
import com.oracle.truffle.api.nodes.DenyReplace;
1213
import com.oracle.truffle.api.nodes.NodeCost;
1314
import org.truffleruby.RubyContext;
1415
import org.truffleruby.RubyLanguage;
@@ -75,16 +76,9 @@ private static String buildWarningMessage(SourceSection sourceSection, String me
7576
return sourceLocation + "warning: " + message;
7677
}
7778

78-
public static class UncachedWarnNode extends RubyBaseNode {
79+
abstract static class AbstractUncachedWarnNode extends RubyBaseNode {
7980

80-
public static final UncachedWarnNode INSTANCE = new UncachedWarnNode();
81-
82-
UncachedWarnNode() {
83-
}
84-
85-
public boolean shouldWarn() {
86-
return coreLibrary().warningsEnabled();
87-
}
81+
public abstract boolean shouldWarn();
8882

8983
public void warningMessage(SourceSection sourceSection, String message) {
9084
assert shouldWarn();
@@ -108,4 +102,17 @@ public boolean isAdoptable() {
108102

109103
}
110104

105+
@DenyReplace
106+
public static final class UncachedWarnNode extends AbstractUncachedWarnNode {
107+
108+
public static final UncachedWarnNode INSTANCE = new UncachedWarnNode();
109+
110+
UncachedWarnNode() {
111+
}
112+
113+
public boolean shouldWarn() {
114+
return coreLibrary().warningsEnabled();
115+
}
116+
}
117+
111118
}

src/main/java/org/truffleruby/language/WarningNode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
package org.truffleruby.language;
1111

12+
import com.oracle.truffle.api.nodes.DenyReplace;
1213

1314
/** Warns only if $VERBOSE is true. Corresponds to Kernel#warn(message, uplevel: 1) if $VERBOSE, but in Java with a
1415
* given SourceSection. */
@@ -20,7 +21,8 @@ public boolean shouldWarn() {
2021
return verbosity == Boolean.TRUE;
2122
}
2223

23-
public static class UncachedWarningNode extends UncachedWarnNode {
24+
@DenyReplace
25+
public static final class UncachedWarningNode extends AbstractUncachedWarnNode {
2426

2527
public static final UncachedWarningNode INSTANCE = new UncachedWarningNode();
2628

src/main/java/org/truffleruby/language/dispatch/DispatchNode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.oracle.truffle.api.RootCallTarget;
1414
import com.oracle.truffle.api.frame.Frame;
1515
import com.oracle.truffle.api.interop.TruffleObject;
16+
import com.oracle.truffle.api.nodes.DenyReplace;
1617
import com.oracle.truffle.api.nodes.DirectCallNode;
1718
import com.oracle.truffle.api.nodes.NodeCost;
1819
import com.oracle.truffle.api.profiles.BranchProfile;
@@ -372,7 +373,8 @@ public final void applySplittingInliningStrategy(RootCallTarget callTarget, Stri
372373
}
373374
}
374375

375-
private static class Uncached extends DispatchNode {
376+
@DenyReplace
377+
private static final class Uncached extends DispatchNode {
376378

377379
static final Uncached[] UNCACHED_NODES = new Uncached[DispatchConfiguration.values().length];
378380
static {

src/main/java/org/truffleruby/language/dispatch/InternalRespondToNode.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package org.truffleruby.language.dispatch;
1111

1212
import com.oracle.truffle.api.frame.VirtualFrame;
13+
import com.oracle.truffle.api.nodes.DenyReplace;
1314
import com.oracle.truffle.api.nodes.NodeCost;
1415
import org.truffleruby.core.kernel.KernelNodes.RespondToNode;
1516
import org.truffleruby.core.klass.RubyClass;
@@ -71,7 +72,8 @@ public boolean execute(VirtualFrame frame, Object receiver, String methodName) {
7172
return method != null && method.isDefined() && method.isImplemented();
7273
}
7374

74-
private static class Uncached extends InternalRespondToNode {
75+
@DenyReplace
76+
private static final class Uncached extends InternalRespondToNode {
7577

7678
static final Uncached[] UNCACHED_NODES = new Uncached[DispatchConfiguration.values().length];
7779
static {

0 commit comments

Comments
 (0)