Skip to content

Commit b5936a9

Browse files
committed
Move getJavaString()/asTruffleStringUncached() out of RubyGuards to StringOperations
1 parent c46dbdc commit b5936a9

33 files changed

+150
-121
lines changed

src/main/java/org/truffleruby/cext/CExtNodes.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import org.truffleruby.core.numeric.RubyBignum;
7474
import org.truffleruby.core.proc.RubyProc;
7575
import org.truffleruby.core.string.RubyString;
76+
import org.truffleruby.core.string.StringOperations;
7677
import org.truffleruby.core.string.StringSupport;
7778
import org.truffleruby.core.string.StringUtils;
7879
import org.truffleruby.core.string.TStringWithEncoding;
@@ -1472,7 +1473,7 @@ Object debug(Object... objects) {
14721473

14731474
representation = tstring + " (" + builder + ")";
14741475
} else if (RubyGuards.isRubyValue(object)) {
1475-
representation = object.toString() + " (" + RubyGuards.getJavaString(callToS(object)) + ")";
1476+
representation = object.toString() + " (" + StringOperations.getJavaString(callToS(object)) + ")";
14761477
} else {
14771478
representation = object.toString();
14781479
}

src/main/java/org/truffleruby/core/TruffleSystemNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@
6060
import org.truffleruby.core.encoding.Encodings;
6161
import org.truffleruby.core.encoding.RubyEncoding;
6262
import org.truffleruby.core.string.RubyString;
63+
import org.truffleruby.core.string.StringOperations;
6364
import org.truffleruby.core.string.StringUtils;
6465
import org.truffleruby.interop.FromJavaStringNode;
6566
import org.truffleruby.interop.ToJavaStringNode;
66-
import org.truffleruby.language.RubyGuards;
6767
import org.truffleruby.language.control.RaiseException;
6868
import org.truffleruby.language.library.RubyStringLibrary;
6969
import org.truffleruby.shared.Platform;
@@ -133,7 +133,7 @@ Object setTruffleWorkingDir(Object dir,
133133
@Cached RubyStringLibrary stringsDir) {
134134
TruffleFile truffleFile = getContext()
135135
.getEnv()
136-
.getPublicTruffleFile(RubyGuards.getJavaString(dir));
136+
.getPublicTruffleFile(StringOperations.getJavaString(dir));
137137
final TruffleFile canonicalFile;
138138
try {
139139
canonicalFile = truffleFile.getCanonicalFile();

src/main/java/org/truffleruby/core/VMPrimitiveNodes.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@
6868
import org.truffleruby.core.proc.ProcOperations;
6969
import org.truffleruby.core.proc.RubyProc;
7070
import org.truffleruby.core.string.RubyString;
71+
import org.truffleruby.core.string.StringOperations;
7172
import org.truffleruby.core.support.RubyIO;
7273
import org.truffleruby.core.symbol.RubySymbol;
7374
import org.truffleruby.core.thread.RubyThread;
7475
import org.truffleruby.extra.ffi.Pointer;
7576
import org.truffleruby.interop.TranslateInteropExceptionNode;
76-
import org.truffleruby.language.RubyGuards;
7777
import org.truffleruby.language.SafepointAction;
7878
import org.truffleruby.language.arguments.ArgumentsDescriptor;
7979
import org.truffleruby.language.arguments.NoKeywordArgumentsDescriptor;
@@ -279,8 +279,8 @@ public abstract static class VMWatchSignalNode extends PrimitiveArrayArgumentsNo
279279
boolean watchSignalString(Object signalString, boolean isRubyDefaultHandler, Object action,
280280
@Cached @Shared RubyStringLibrary libSignalString,
281281
@Cached @Exclusive RubyStringLibrary libAction) {
282-
final String actionString = RubyGuards.getJavaString(action);
283-
final String signalName = RubyGuards.getJavaString(signalString);
282+
final String actionString = StringOperations.getJavaString(action);
283+
final String signalName = StringOperations.getJavaString(signalString);
284284

285285
switch (actionString) {
286286
case "DEFAULT":
@@ -305,7 +305,7 @@ boolean watchSignalProc(Object signalString, boolean isRubyDefaultHandler, RubyP
305305
SharedObjects.writeBarrier(getLanguage(), proc);
306306
}
307307

308-
final String signalName = RubyGuards.getJavaString(signalString);
308+
final String signalName = StringOperations.getJavaString(signalString);
309309

310310
return registerHandler(signalName, signal -> {
311311
var rootThread = context.getThreadManager().getRootThread();
@@ -395,7 +395,7 @@ public abstract static class VMGetConfigItemNode extends PrimitiveArrayArguments
395395
@TruffleBoundary
396396
@Specialization
397397
Object get(Object key) {
398-
final String keyString = RubyGuards.getJavaString(key);
398+
final String keyString = StringOperations.getJavaString(key);
399399
final Object value = getContext().getNativeConfiguration().get(keyString);
400400

401401
if (value == null) {
@@ -417,7 +417,7 @@ Object getSection(Object section, RubyProc block,
417417
@Cached CallBlockNode yieldNode) {
418418
for (Entry<String, Object> entry : getContext()
419419
.getNativeConfiguration()
420-
.getSection(RubyGuards.getJavaString(section))) {
420+
.getSection(StringOperations.getJavaString(section))) {
421421
final RubyString key = createString(fromJavaStringNode, entry.getKey(), Encodings.UTF_8); // CR_7BIT
422422
yieldNode.yield(this, block, key, entry.getValue());
423423
}
@@ -576,7 +576,7 @@ public abstract static class ShouldNotReachHereNode extends PrimitiveArrayArgume
576576
Object shouldNotReachHere(Object message,
577577
@Cached RubyStringLibrary libString) {
578578
CompilerDirectives.transferToInterpreterAndInvalidate();
579-
throw CompilerDirectives.shouldNotReachHere(RubyGuards.getJavaString(message));
579+
throw CompilerDirectives.shouldNotReachHere(StringOperations.getJavaString(message));
580580
}
581581

582582
}

src/main/java/org/truffleruby/core/array/ArrayNodes.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import org.truffleruby.core.range.RangeNodes.NormalizedStartLengthNode;
7272
import org.truffleruby.core.string.RubyString;
7373
import org.truffleruby.core.string.StringHelperNodes;
74+
import org.truffleruby.core.string.StringOperations;
7475
import org.truffleruby.core.support.TypeNodes.CheckFrozenNode;
7576
import org.truffleruby.extra.ffi.Pointer;
7677
import org.truffleruby.interop.ToJavaStringNode;
@@ -1524,6 +1525,7 @@ RubyString pack(RubyArray array, Object format, Object buffer,
15241525
@GenerateCached(false)
15251526
@GenerateInline
15261527
@ReportPolymorphism // inline cache, CallTarget cache
1528+
@ImportStatic(StringOperations.class)
15271529
public abstract static class PackNode extends RubyBaseNode {
15281530

15291531
public abstract RubyString execute(Node node, RubyArray array, Object format, Object buffer);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
import org.truffleruby.core.method.RubyMethod;
1818
import org.truffleruby.core.method.RubyUnboundMethod;
1919
import org.truffleruby.core.proc.RubyProc;
20+
import org.truffleruby.core.string.StringOperations;
2021
import org.truffleruby.core.string.TStringWithEncoding;
2122
import org.truffleruby.language.RubyBaseNode;
2223

2324
import com.oracle.truffle.api.RootCallTarget;
2425
import com.oracle.truffle.api.dsl.Specialization;
25-
import org.truffleruby.language.RubyGuards;
2626
import org.truffleruby.language.library.RubyStringLibrary;
2727
import org.truffleruby.language.loader.ByteBasedCharSequence;
2828
import org.truffleruby.parser.ParserContext;
@@ -53,7 +53,7 @@ static RootCallTarget proc(RubyProc proc) {
5353
@TruffleBoundary
5454
@Specialization
5555
static RootCallTarget string(Node node, Object string) {
56-
var code = new TStringWithEncoding(RubyGuards.asTruffleStringUncached(string),
56+
var code = new TStringWithEncoding(StringOperations.asTruffleStringUncached(string),
5757
RubyStringLibrary.getEncodingUncached(string));
5858
Source source = Source.newBuilder("ruby", new ByteBasedCharSequence(code), "<parse_ast>").build();
5959
TranslatorEnvironment.resetTemporaryVariablesIndex();

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
import com.oracle.truffle.api.dsl.Cached.Exclusive;
1414
import com.oracle.truffle.api.dsl.GenerateCached;
1515
import com.oracle.truffle.api.dsl.GenerateInline;
16+
import com.oracle.truffle.api.dsl.ImportStatic;
1617
import com.oracle.truffle.api.nodes.Node;
1718
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
1819
import com.oracle.truffle.api.strings.TruffleString;
1920
import org.truffleruby.core.encoding.RubyEncoding;
2021
import org.truffleruby.core.string.StringHelperNodes;
22+
import org.truffleruby.core.string.StringOperations;
2123
import org.truffleruby.core.symbol.RubySymbol;
2224

2325
import com.oracle.truffle.api.dsl.GenerateUncached;
@@ -30,6 +32,7 @@
3032
@GenerateUncached
3133
@GenerateCached
3234
@GenerateInline(inlineByDefault = true)
35+
@ImportStatic(StringOperations.class)
3336
public abstract class ToSymbolNode extends RubyBaseNode {
3437

3538
public final RubySymbol executeCached(Object object) {

src/main/java/org/truffleruby/core/encoding/EncodingNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@
3535
import org.truffleruby.core.string.RubyString;
3636
import org.truffleruby.core.string.StringGuards;
3737
import org.truffleruby.core.string.ImmutableRubyString;
38+
import org.truffleruby.core.string.StringOperations;
3839
import org.truffleruby.core.symbol.RubySymbol;
3940
import org.truffleruby.interop.ToJavaStringNode;
4041
import org.truffleruby.language.Nil;
4142
import org.truffleruby.language.RubyBaseNode;
42-
import org.truffleruby.language.RubyGuards;
4343
import org.truffleruby.annotations.Visibility;
4444
import org.truffleruby.language.control.RaiseException;
4545
import org.truffleruby.language.library.RubyStringLibrary;
@@ -446,7 +446,7 @@ public abstract static class GetDefaultEncodingNode extends PrimitiveArrayArgume
446446
@TruffleBoundary
447447
@Specialization
448448
Object getDefaultEncoding(Object name) {
449-
final RubyEncoding encoding = getEncoding(RubyGuards.getJavaString(name));
449+
final RubyEncoding encoding = getEncoding(StringOperations.getJavaString(name));
450450
if (encoding == null) {
451451
return nil;
452452
} else {

src/main/java/org/truffleruby/core/exception/CoreExceptions.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.truffleruby.core.fiber.FiberNodes.FiberGetExceptionNode;
3535
import org.truffleruby.language.Nil;
3636
import org.truffleruby.language.RubyBaseNode;
37-
import org.truffleruby.language.RubyGuards;
3837
import org.truffleruby.language.backtrace.Backtrace;
3938
import org.truffleruby.language.backtrace.BacktraceFormatter;
4039
import org.truffleruby.language.backtrace.BacktraceFormatter.FormattingFlags;
@@ -90,7 +89,7 @@ public void showExceptionIfDebug(RubyClass rubyClass, Object message, Backtrace
9089
from = " at " + debugBacktraceFormatter.formatLine(backtrace.getStackTrace(), 0, null);
9190
}
9291
if (RubyStringLibrary.isRubyStringUncached(message)) {
93-
message = RubyGuards.getJavaString(message);
92+
message = StringOperations.getJavaString(message);
9493
}
9594
final String output = "Exception `" + exceptionClass + "'" + from + " - " + message + "\n";
9695
if (context.getCoreLibrary().isLoaded()) {
@@ -108,21 +107,21 @@ public void showExceptionIfDebug(RubyClass rubyClass, Object message, Backtrace
108107
public String inspect(Object value) {
109108
Object rubyString = DispatchNode.getUncached().call(
110109
context.getCoreLibrary().truffleTypeModule, "rb_inspect", value);
111-
return RubyGuards.getJavaString(rubyString);
110+
return StringOperations.getJavaString(rubyString);
112111
}
113112

114113
@TruffleBoundary
115114
public String inspectReceiver(Object receiver) {
116115
Object rubyString = DispatchNode.getUncached().call(
117116
context.getCoreLibrary().truffleExceptionOperationsModule, "receiver_string", receiver);
118-
return RubyGuards.getJavaString(rubyString);
117+
return StringOperations.getJavaString(rubyString);
119118
}
120119

121120
@TruffleBoundary
122121
public String inspectFrozenObject(Object object) {
123122
Object rubyString = DispatchNode.getUncached().call(
124123
context.getCoreLibrary().truffleExceptionOperationsModule, "inspect_frozen_object", object);
125-
return RubyGuards.getJavaString(rubyString);
124+
return StringOperations.getJavaString(rubyString);
126125
}
127126

128127
// ArgumentError
@@ -703,7 +702,8 @@ public RubyException typeErrorUnsupportedTypeException(UnsupportedTypeException
703702
String message = exception.getMessage();
704703
if (message == null) {
705704
RubyArray rubyArray = createArray(context, language, exception.getSuppliedValues());
706-
String formattedValues = RubyGuards.getJavaString(DispatchNode.getUncached().call(rubyArray, "inspect"));
705+
String formattedValues = StringOperations
706+
.getJavaString(DispatchNode.getUncached().call(rubyArray, "inspect"));
707707
message = "unsupported type " + formattedValues;
708708
}
709709
return typeError(message, currentNode);

src/main/java/org/truffleruby/core/exception/ExceptionOperations.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
import org.truffleruby.core.module.ModuleFields;
2121
import org.truffleruby.core.module.RubyModule;
2222
import org.truffleruby.core.proc.RubyProc;
23+
import org.truffleruby.core.string.StringOperations;
2324
import org.truffleruby.language.Nil;
2425
import org.truffleruby.language.RubyConstant;
25-
import org.truffleruby.language.RubyGuards;
2626
import org.truffleruby.language.backtrace.Backtrace;
2727

2828
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
@@ -108,7 +108,7 @@ public static String messageFieldToString(RubyException exception) {
108108
final ModuleFields exceptionClass = exception.getLogicalClass().fields;
109109
return exceptionClass.getName(); // What Exception#message would return if no message is set
110110
} else if (RubyStringLibrary.isRubyStringUncached(message)) {
111-
return RubyGuards.getJavaString(message);
111+
return StringOperations.getJavaString(message);
112112
} else {
113113
return message.toString();
114114
}
@@ -123,7 +123,7 @@ public static String messageToString(RubyException exception) {
123123
// Fall back to the internal message field
124124
}
125125
if (messageObject != null && RubyStringLibrary.isRubyStringUncached(messageObject)) {
126-
return RubyGuards.getJavaString(messageObject);
126+
return StringOperations.getJavaString(messageObject);
127127
} else {
128128
return messageFieldToString(exception);
129129
}

src/main/java/org/truffleruby/core/exception/RubySyntaxError.java

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

1212
import org.truffleruby.core.klass.RubyClass;
13-
import org.truffleruby.language.RubyGuards;
13+
import org.truffleruby.core.string.StringOperations;
1414
import org.truffleruby.language.backtrace.Backtrace;
1515

1616
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
@@ -50,7 +50,7 @@ public ExceptionType getExceptionType() {
5050
@ExportMessage
5151
public boolean isExceptionIncompleteSource() {
5252
if (RubyStringLibrary.isRubyStringUncached(message)) {
53-
String messageString = RubyGuards.getJavaString(message);
53+
String messageString = StringOperations.getJavaString(message);
5454
return messageString.endsWith(" unexpected end-of-file") ||
5555
messageString.endsWith(" meets end of file");
5656
} else {

src/main/java/org/truffleruby/core/kernel/KernelNodes.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
import org.truffleruby.core.string.RubyString;
8787
import org.truffleruby.core.string.StringHelperNodes;
8888
import org.truffleruby.core.string.StringNodes;
89+
import org.truffleruby.core.string.StringOperations;
8990
import org.truffleruby.core.string.StringSupport;
9091
import org.truffleruby.core.support.TypeNodes;
9192
import org.truffleruby.core.support.TypeNodes.CheckFrozenNode;
@@ -270,7 +271,7 @@ static RubyString getCallerPath(Object feature,
270271
@Bind Node node,
271272
@Cached RubyStringLibrary libFeature,
272273
@Cached TruffleString.FromJavaStringNode fromJavaStringNode) {
273-
final String featureString = RubyGuards.getJavaString(feature);
274+
final String featureString = StringOperations.getJavaString(feature);
274275
final String featurePath;
275276
if (new File(featureString).isAbsolute()) {
276277
featurePath = featureString;
@@ -380,7 +381,7 @@ static RubyString canonicalPath(Object string,
380381
@Cached TruffleString.FromJavaStringNode fromJavaStringNode) {
381382
final String expandedPath = getContext(node)
382383
.getFeatureLoader()
383-
.canonicalize(RubyGuards.getJavaString(string), null);
384+
.canonicalize(StringOperations.getJavaString(string), null);
384385
return createString(node, fromJavaStringNode, expandedPath, Encodings.UTF_8);
385386
}
386387

@@ -714,6 +715,7 @@ Object eval(Frame callerFrame, Object callerSelf, Object[] rubyArgs, RootCallTar
714715

715716
@ReportPolymorphism // inline cache
716717
@GenerateUncached
718+
@ImportStatic(StringOperations.class)
717719
public abstract static class EvalInternalNode extends RubyBaseNode {
718720

719721
public abstract Object execute(Object self, Object source, RubyBinding binding, Object file, int line);

src/main/java/org/truffleruby/core/kernel/TruffleKernelNodes.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
import org.truffleruby.core.encoding.Encodings;
3030
import org.truffleruby.core.module.RubyModule;
3131
import org.truffleruby.core.proc.RubyProc;
32+
import org.truffleruby.core.string.StringOperations;
3233
import org.truffleruby.core.symbol.RubySymbol;
3334
import org.truffleruby.language.LexicalScope;
3435
import org.truffleruby.language.Nil;
3536
import org.truffleruby.language.RubyBaseNode;
36-
import org.truffleruby.language.RubyGuards;
3737
import org.truffleruby.language.arguments.ReadCallerVariablesIfAvailableNode;
3838
import org.truffleruby.language.arguments.ReadCallerVariablesNode;
3939
import org.truffleruby.language.arguments.RubyArguments;
@@ -84,7 +84,7 @@ public abstract static class LoadNode extends PrimitiveArrayArgumentsNode {
8484
boolean load(Object file, Nil wrapModule,
8585
@Cached @Shared RubyStringLibrary strings,
8686
@Cached @Shared IndirectCallNode callNode) {
87-
final String feature = RubyGuards.getJavaString(file);
87+
final String feature = StringOperations.getJavaString(file);
8888
final RubySource rubySource = getRubySource(feature);
8989

9090
final DeclarationContext declarationContext = DeclarationContext.topLevel(getContext());
@@ -110,7 +110,7 @@ boolean load(Object file, Nil wrapModule,
110110
boolean load(Object file, RubyModule wrapModule,
111111
@Cached @Shared RubyStringLibrary strings,
112112
@Cached @Shared IndirectCallNode callNode) {
113-
final String feature = RubyGuards.getJavaString(file);
113+
final String feature = StringOperations.getJavaString(file);
114114
final RubySource rubySource = getRubySource(feature);
115115

116116
final DeclarationContext declarationContext = DeclarationContext.topLevel(wrapModule);
@@ -324,7 +324,7 @@ Object getOriginalRequire(Object string,
324324
final String originalRequire = getContext()
325325
.getCoreLibrary()
326326
.getOriginalRequires()
327-
.get(RubyGuards.getJavaString(string));
327+
.get(StringOperations.getJavaString(string));
328328
if (originalRequire == null) {
329329
return Nil.INSTANCE;
330330
} else {

src/main/java/org/truffleruby/core/module/ModuleFields.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.truffleruby.core.method.MethodEntry;
3939
import org.truffleruby.core.method.MethodFilter;
4040
import org.truffleruby.core.string.ImmutableRubyString;
41+
import org.truffleruby.core.string.StringOperations;
4142
import org.truffleruby.core.string.StringUtils;
4243
import org.truffleruby.core.symbol.RubySymbol;
4344
import org.truffleruby.language.Nil;
@@ -477,7 +478,7 @@ private RubyConstant setConstantInternal(RubyContext context, Node currentNode,
477478
SharedObjects.propagate(context.getLanguageSlow(), rubyModule, value);
478479

479480
final String autoloadPath = autoload
480-
? RubyGuards.getJavaString(value)
481+
? StringOperations.getJavaString(value)
481482
: null;
482483
RubyConstant previous;
483484
RubyConstant newConstant;

0 commit comments

Comments
 (0)