Skip to content

Commit 314e73b

Browse files
committed
Check rope.isAsciiOnly() inside the TruffleBoundary
* There is no much gain to check it outside.
1 parent 8f78a16 commit 314e73b

File tree

3 files changed

+4
-6
lines changed

3 files changed

+4
-6
lines changed

src/main/java/org/truffleruby/core/regexp/ClassicRegexp.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,8 @@ private static Encoding processDRegexpElement(RubyContext context, RegexpOptions
669669
private static final int QUOTED_V = 11;
670670

671671
@TruffleBoundary
672-
public static Rope quote19(Rope bs, boolean asciiOnly) {
672+
public static Rope quote19(Rope bs) {
673+
final boolean asciiOnly = bs.isAsciiOnly();
673674
int p = 0;
674675
int end = bs.byteLength();
675676
final byte[] bytes = bs.getBytes();

src/main/java/org/truffleruby/core/regexp/RegexpNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ public abstract static class QuoteNode extends CoreMethodArrayArgumentsNode {
211211
@Specialization(guards = "isRubyString(raw)")
212212
protected DynamicObject quoteString(DynamicObject raw) {
213213
final Rope rope = StringOperations.rope(raw);
214-
return getMakeStringNode().fromRope(ClassicRegexp.quote19(rope, rope.isAsciiOnly()));
214+
return getMakeStringNode().fromRope(ClassicRegexp.quote19(rope));
215215
}
216216

217217
@Specialization(guards = "isRubySymbol(raw)")

src/main/java/org/truffleruby/core/regexp/TruffleRegexpNodes.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import org.truffleruby.core.regexp.TruffleRegexpNodesFactory.MatchNodeGen;
4040
import org.truffleruby.core.rope.Rope;
4141
import org.truffleruby.core.rope.RopeBuilder;
42-
import org.truffleruby.core.rope.RopeNodes;
4342
import org.truffleruby.core.rope.RopeOperations;
4443
import org.truffleruby.core.string.StringNodes;
4544
import org.truffleruby.core.string.StringNodes.StringAppendPrimitiveNode;
@@ -71,7 +70,6 @@ public static abstract class RegexpUnionNode extends CoreMethodArrayArgumentsNod
7170
@Child CallDispatchHeadNode copyNode = CallDispatchHeadNode.createPrivate();
7271
@Child private SameOrEqualNode sameOrEqualNode = SameOrEqualNode.create();
7372
@Child private StringNodes.MakeStringNode makeStringNode = StringNodes.MakeStringNode.create();
74-
@Child private RopeNodes.AsciiOnlyNode asciiOnlyNode = RopeNodes.AsciiOnlyNode.create();
7573

7674
@Specialization(guards = "argsMatch(frame, cachedArgs, args)", limit = "getDefaultCacheLimit()")
7775
protected Object executeFastUnion(VirtualFrame frame, DynamicObject str, DynamicObject sep, Object[] args,
@@ -101,8 +99,7 @@ public DynamicObject buildUnion(DynamicObject str, DynamicObject sep, Object[] a
10199
public DynamicObject string(Object obj) {
102100
if (RubyGuards.isRubyString(obj)) {
103101
final Rope rope = StringOperations.rope((DynamicObject) obj);
104-
final boolean isAsciiOnly = asciiOnlyNode.execute(rope);
105-
return makeStringNode.fromRope(ClassicRegexp.quote19(rope, isAsciiOnly));
102+
return makeStringNode.fromRope(ClassicRegexp.quote19(rope));
106103
} else {
107104
return toSNode.execute((DynamicObject) obj);
108105
}

0 commit comments

Comments
 (0)