Skip to content

Commit 17025f0

Browse files
committed
Revert "TruffleString.ConcatNode currently needs both sides to be of the same encoding if one side is MutableTruffleString"
* This reverts commit d3f95ab. * Not needed anymore.
1 parent 4c773e2 commit 17025f0

File tree

3 files changed

+9
-24
lines changed

3 files changed

+9
-24
lines changed

src/main/java/org/truffleruby/core/string/StringHelperNodes.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -591,9 +591,7 @@ protected RubyString stringAppend(Object string, Object other,
591591
@Cached RubyStringLibrary libString,
592592
@Cached RubyStringLibrary libOther,
593593
@Cached EncodingNodes.CheckStringEncodingNode checkEncodingNode,
594-
@Cached TruffleString.ConcatNode concatNode,
595-
@Cached TruffleString.ForceEncodingNode forceEncodingNodeLeft,
596-
@Cached TruffleString.ForceEncodingNode forceEncodingNodeRight) {
594+
@Cached TruffleString.ConcatNode concatNode) {
597595

598596
var left = libString.getTString(string);
599597
var leftEncoding = libString.getEncoding(string);
@@ -603,11 +601,7 @@ protected RubyString stringAppend(Object string, Object other,
603601
final RubyEncoding compatibleEncoding = checkEncodingNode.executeCheckEncoding(left, leftEncoding,
604602
right, rightEncoding);
605603

606-
var result = concatNode.execute(
607-
forceEncodingNodeLeft.execute(left, leftEncoding.tencoding, compatibleEncoding.tencoding),
608-
forceEncodingNodeRight.execute(right, rightEncoding.tencoding, compatibleEncoding.tencoding),
609-
compatibleEncoding.tencoding,
610-
true);
604+
var result = concatNode.execute(left, right, compatibleEncoding.tencoding, true);
611605
return createString(result, compatibleEncoding);
612606
}
613607
}

src/main/java/org/truffleruby/core/string/StringNodes.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4008,12 +4008,10 @@ protected Object splicePrepend(
40084008
@Cached RubyStringLibrary libString,
40094009
@Cached RubyStringLibrary libOther,
40104010
@Cached TruffleString.SubstringByteIndexNode prependSubstringNode,
4011-
@Cached TruffleString.ConcatNode prependConcatNode,
4012-
@Cached TruffleString.ForceEncodingNode forceEncodingNode) {
4011+
@Cached TruffleString.ConcatNode prependConcatNode) {
40134012
var original = string.tstring;
40144013
var originalTEncoding = libString.getTEncoding(string);
4015-
var left = forceEncodingNode.execute(libOther.getTString(other), libOther.getTEncoding(other),
4016-
rubyEncoding.tencoding);
4014+
var left = libOther.getTString(other);
40174015
var right = prependSubstringNode.execute(original, byteCountToReplace,
40184016
original.byteLength(originalTEncoding) - byteCountToReplace, originalTEncoding, true);
40194017

@@ -4029,13 +4027,9 @@ protected Object spliceAppend(
40294027
@Cached RubyStringLibrary libString,
40304028
@Cached RubyStringLibrary libOther,
40314029
@Cached TruffleString.ConcatNode appendConcatNode,
4032-
@Cached TruffleString.ForceEncodingNode forceEncodingNodeLeft,
4033-
@Cached TruffleString.ForceEncodingNode forceEncodingNodeRight,
40344030
@Bind("libString.byteLength(string)") int byteLength) {
4035-
var left = forceEncodingNodeLeft.execute(string.tstring, libString.getTEncoding(string),
4036-
rubyEncoding.tencoding);
4037-
var right = forceEncodingNodeRight.execute(libOther.getTString(other), libOther.getTEncoding(other),
4038-
rubyEncoding.tencoding);
4031+
var left = string.tstring;
4032+
var right = libOther.getTString(other);
40394033

40404034
var concatResult = appendConcatNode.execute(left, right, rubyEncoding.tencoding, true);
40414035
string.setTString(concatResult, rubyEncoding);
@@ -4055,7 +4049,6 @@ protected RubyString splice(
40554049
@Cached TruffleString.ConcatNode leftConcatNode,
40564050
@Cached TruffleString.ConcatNode rightConcatNode,
40574051
@Cached TruffleString.ForceEncodingNode forceEncodingNode,
4058-
@Cached TruffleString.ForceEncodingNode forceEncodingNodeOther,
40594052
@Bind("libString.byteLength(string)") int byteLength) {
40604053
var sourceTEncoding = libString.getTEncoding(string);
40614054
var resultTEncoding = rubyEncoding.tencoding;
@@ -4071,9 +4064,7 @@ protected RubyString splice(
40714064
if (insertStringIsEmptyProfile.profile(insert.isEmpty())) {
40724065
joinedLeft = forceEncodingNode.execute(splitLeft, sourceTEncoding, resultTEncoding);
40734066
} else {
4074-
joinedLeft = leftConcatNode.execute(splitLeft,
4075-
forceEncodingNodeOther.execute(insert, libOther.getTEncoding(other), resultTEncoding),
4076-
resultTEncoding, true);
4067+
joinedLeft = leftConcatNode.execute(splitLeft, insert, resultTEncoding, true);
40774068
}
40784069

40794070
final TruffleString joinedRight; // always in resultTEncoding

src/main/ruby/truffleruby/core/string.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -894,7 +894,7 @@ def scrub(replace = nil, &block)
894894
begin
895895
replace = "\xEF\xBF\xBD".encode(self.encoding, :undef => :replace, :replace => '?')
896896
rescue Encoding::ConverterNotFoundError
897-
replace = '?'.encode(self.encoding)
897+
replace = '?'.encode(encoding)
898898
end
899899
end
900900

@@ -907,7 +907,7 @@ def scrub(replace = nil, &block)
907907
if str.ascii_only? ? !encoding.ascii_compatible? : encoding != str.encoding
908908
raise Encoding::CompatibilityError, 'incompatible character encodings'
909909
end
910-
str.dup.force_encoding(self.encoding)
910+
str
911911
}
912912

913913
if replace

0 commit comments

Comments
 (0)