Skip to content

Commit c36757d

Browse files
committed
[GR-45042] Address more sharing warnings [3/3]
PullRequest: truffleruby/3786
2 parents 5d52e0b + c57fbdf commit c36757d

29 files changed

+292
-274
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@SuppressPackageWarnings({ "truffle-sharing", "truffle-inlining" })
1+
@SuppressPackageWarnings({ "truffle-inlining" })
22
package org.truffleruby.core.array.library;
33

44
import com.oracle.truffle.api.dsl.SuppressPackageWarnings;

src/main/java/org/truffleruby/core/cast/NameToJavaStringNode.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.truffleruby.utils.Utils;
2121

2222
import com.oracle.truffle.api.dsl.Cached;
23+
import com.oracle.truffle.api.dsl.Cached.Exclusive;
2324
import com.oracle.truffle.api.dsl.GenerateUncached;
2425
import com.oracle.truffle.api.dsl.NodeChild;
2526
import com.oracle.truffle.api.dsl.Specialization;
@@ -48,9 +49,9 @@ public static NameToJavaStringNode getUncached() {
4849

4950
public abstract RubyBaseNodeWithExecute getValueNode();
5051

51-
@Specialization(guards = "strings.isRubyString(value)", limit = "1")
52+
@Specialization(guards = "libString.isRubyString(value)", limit = "1")
5253
protected String stringNameToJavaString(Object value,
53-
@Cached RubyStringLibrary strings,
54+
@Cached @Exclusive RubyStringLibrary libString,
5455
@Cached @Shared ToJavaStringNode toJavaStringNode) {
5556
return toJavaStringNode.executeToJavaString(value);
5657
}
@@ -70,8 +71,8 @@ protected String nameToJavaString(String value) {
7071
protected String nameToJavaString(Object object,
7172
@Cached BranchProfile errorProfile,
7273
@Cached DispatchNode toStr,
73-
@Cached RubyStringLibrary libString,
74-
@Cached @Shared ToJavaStringNode toJavaStringNode) {
74+
@Cached @Exclusive RubyStringLibrary libString,
75+
@Cached @Exclusive ToJavaStringNode toJavaStringNode) {
7576
final Object coerced;
7677
try {
7778
coerced = toStr.call(object, "to_str");

src/main/java/org/truffleruby/core/cast/ToFNode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package org.truffleruby.core.cast;
1212

1313
import com.oracle.truffle.api.dsl.Cached;
14+
import com.oracle.truffle.api.dsl.NeverDefault;
1415
import com.oracle.truffle.api.dsl.Specialization;
1516
import org.truffleruby.core.numeric.BigIntegerOps;
1617
import org.truffleruby.core.numeric.RubyBignum;
@@ -21,6 +22,7 @@ public abstract class ToFNode extends RubyBaseNode {
2122

2223
@Child private DispatchNode toFNode;
2324

25+
@NeverDefault
2426
public static ToFNode create() {
2527
return ToFNodeGen.create();
2628
}

src/main/java/org/truffleruby/core/cast/ToRubyEncodingNode.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package org.truffleruby.core.cast;
1111

1212
import com.oracle.truffle.api.dsl.Cached;
13+
import com.oracle.truffle.api.dsl.Cached.Exclusive;
1314
import com.oracle.truffle.api.dsl.NeverDefault;
1415
import org.truffleruby.core.encoding.RubyEncoding;
1516
import org.truffleruby.core.regexp.RubyRegexp;
@@ -34,13 +35,13 @@ public static ToRubyEncodingNode create() {
3435

3536
@Specialization
3637
protected RubyEncoding stringToEncoding(RubyString value,
37-
@Cached RubyStringLibrary libString) {
38+
@Cached @Exclusive RubyStringLibrary libString) {
3839
return libString.getEncoding(value);
3940
}
4041

4142
@Specialization
4243
protected RubyEncoding immutableStringToEncoding(ImmutableRubyString value,
43-
@Cached RubyStringLibrary libString) {
44+
@Cached @Exclusive RubyStringLibrary libString) {
4445
return libString.getEncoding(value);
4546
}
4647

src/main/java/org/truffleruby/core/cast/ToSymbolNode.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
package org.truffleruby.core.cast;
1111

1212
import com.oracle.truffle.api.dsl.Cached;
13+
import com.oracle.truffle.api.dsl.Cached.Shared;
14+
import com.oracle.truffle.api.dsl.Cached.Exclusive;
1315
import com.oracle.truffle.api.dsl.NeverDefault;
1416
import com.oracle.truffle.api.dsl.NodeChild;
1517
import com.oracle.truffle.api.profiles.BranchProfile;
@@ -67,7 +69,7 @@ protected RubySymbol javaStringUncached(String str) {
6769
guards = { "strings.isRubyString(str)", "equalNode.execute(strings, str, cachedTString, cachedEncoding)" },
6870
limit = "getCacheLimit()")
6971
protected RubySymbol rubyString(Object str,
70-
@Cached RubyStringLibrary strings,
72+
@Cached @Shared RubyStringLibrary strings,
7173
@Cached(value = "asTruffleStringUncached(str)") TruffleString cachedTString,
7274
@Cached(value = "strings.getEncoding(str)") RubyEncoding cachedEncoding,
7375
@Cached StringHelperNodes.EqualSameEncodingNode equalNode,
@@ -77,15 +79,15 @@ protected RubySymbol rubyString(Object str,
7779

7880
@Specialization(guards = "strings.isRubyString(str)", replaces = "rubyString", limit = "1")
7981
protected RubySymbol rubyStringUncached(Object str,
80-
@Cached RubyStringLibrary strings) {
82+
@Cached @Shared RubyStringLibrary strings) {
8183
return getSymbol(strings.getTString(str), strings.getEncoding(str));
8284
}
8385

8486
@Specialization(guards = { "!isRubySymbol(object)", "!isString(object)", "isNotRubyString(object)" })
8587
protected RubySymbol toStr(Object object,
8688
@Cached BranchProfile errorProfile,
8789
@Cached DispatchNode toStrNode,
88-
@Cached RubyStringLibrary libString,
90+
@Cached @Exclusive RubyStringLibrary strings,
8991
@Cached ToSymbolNode toSymbolNode) {
9092
var coerced = toStrNode.call(
9193
coreLibrary().truffleTypeModule,
@@ -94,7 +96,7 @@ protected RubySymbol toStr(Object object,
9496
coreLibrary().stringClass,
9597
coreSymbols().TO_STR);
9698

97-
if (libString.isRubyString(coerced)) {
99+
if (strings.isRubyString(coerced)) {
98100
return toSymbolNode.execute(coerced);
99101
} else {
100102
errorProfile.enter();
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@SuppressPackageWarnings({ "truffle-sharing", "truffle-inlining" })
1+
@SuppressPackageWarnings({ "truffle-inlining" })
22
package org.truffleruby.core.cast;
33

44
import com.oracle.truffle.api.dsl.SuppressPackageWarnings;

src/main/java/org/truffleruby/core/format/convert/ToDoubleNode.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
2020
import com.oracle.truffle.api.dsl.Cached;
21+
import com.oracle.truffle.api.dsl.Cached.Shared;
2122
import com.oracle.truffle.api.dsl.NodeChild;
2223
import com.oracle.truffle.api.dsl.Specialization;
2324
import org.truffleruby.language.objects.IsANode;
@@ -55,14 +56,14 @@ protected double toDouble(RubyBignum bignum) {
5556

5657
@Specialization(guards = { "!isRubyNumber(object)", "isNumeric(object, isANode)" }, limit = "1")
5758
protected double toDouble(RubyDynamicObject object,
58-
@Cached IsANode isANode,
59+
@Cached @Shared IsANode isANode,
5960
@Cached ToFNode toFNode) {
6061
return toFNode.executeToDouble(object);
6162
}
6263

6364
@Specialization(guards = { "!isRubyNumber(object)", "!isNumeric(object, isANode)" }, limit = "1")
6465
protected double toDouble(Object object,
65-
@Cached IsANode isANode) {
66+
@Cached @Shared IsANode isANode) {
6667
throw new RaiseException(
6768
getContext(),
6869
coreExceptions().typeErrorCantConvertInto(object, "Float", this));

src/main/java/org/truffleruby/core/format/convert/ToStringNode.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import java.nio.charset.StandardCharsets;
1313

1414
import com.oracle.truffle.api.dsl.Cached;
15+
import com.oracle.truffle.api.dsl.Cached.Shared;
16+
import com.oracle.truffle.api.dsl.Cached.Exclusive;
1517
import com.oracle.truffle.api.strings.TruffleString;
1618
import org.truffleruby.core.array.RubyArray;
1719
import org.truffleruby.core.encoding.Encodings;
@@ -91,7 +93,7 @@ protected RubyString toString(double value,
9193
@TruffleBoundary
9294
@Specialization(guards = "specialClassBehaviour")
9395
protected Object toStringSpecialClass(RubyClass rubyClass,
94-
@Cached RubyStringLibrary libString) {
96+
@Cached @Shared RubyStringLibrary libString) {
9597
if (rubyClass == getContext().getCoreLibrary().trueClass) {
9698
return createString(TStringConstants.TRUE, Encodings.US_ASCII);
9799
} else if (rubyClass == getContext().getCoreLibrary().falseClass) {
@@ -103,14 +105,14 @@ protected Object toStringSpecialClass(RubyClass rubyClass,
103105
}
104106
}
105107

106-
@Specialization(guards = "libString.isRubyString(string)", limit = "1")
108+
@Specialization(guards = "argLibString.isRubyString(string)", limit = "1")
107109
protected Object toStringString(Object string,
108-
@Cached RubyStringLibrary libValue,
109-
@Cached RubyStringLibrary libString) {
110+
@Cached @Shared RubyStringLibrary libString,
111+
@Cached @Exclusive RubyStringLibrary argLibString) {
110112
if ("inspect".equals(conversionMethod)) {
111113
final Object value = getToStrNode().call(string, conversionMethod);
112114

113-
if (libValue.isRubyString(value)) {
115+
if (libString.isRubyString(value)) {
114116
return value;
115117
} else {
116118
throw new NoImplicitConversionException(string, "String");
@@ -121,7 +123,7 @@ protected Object toStringString(Object string,
121123

122124
@Specialization
123125
protected Object toString(RubyArray array,
124-
@Cached RubyStringLibrary libString) {
126+
@Cached @Shared RubyStringLibrary libString) {
125127
if (toSNode == null) {
126128
CompilerDirectives.transferToInterpreterAndInvalidate();
127129
toSNode = insert(DispatchNode.create(PRIVATE_RETURN_MISSING));
@@ -139,7 +141,7 @@ protected Object toString(RubyArray array,
139141
@Specialization(
140142
guards = { "isNotRubyString(object)", "!isRubyArray(object)", "!isForeignObject(object)" })
141143
protected Object toString(Object object,
142-
@Cached RubyStringLibrary libString) {
144+
@Cached @Shared RubyStringLibrary libString) {
143145
final Object value = getToStrNode().call(object, conversionMethod);
144146

145147
if (libString.isRubyString(value)) {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@SuppressPackageWarnings({ "truffle-sharing", "truffle-inlining" })
1+
@SuppressPackageWarnings({ "truffle-inlining" })
22
package org.truffleruby.core.format.convert;
33

44
import com.oracle.truffle.api.dsl.SuppressPackageWarnings;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@SuppressPackageWarnings({ "truffle-sharing", "truffle-inlining" })
1+
@SuppressPackageWarnings({ "truffle-inlining" })
22
package org.truffleruby.core.format.format;
33

44
import com.oracle.truffle.api.dsl.SuppressPackageWarnings;

0 commit comments

Comments
 (0)