Skip to content

Commit 087b4b0

Browse files
committed
Add a profile to make better use of a regexp's encoding cache.
1 parent a63ba65 commit 087b4b0

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,7 @@ public abstract static class MatchInRegionNode extends PrimitiveArrayArgumentsNo
423423
@Specialization(guards = "libString.isRubyString(string)")
424424
protected Object matchInRegion(
425425
RubyRegexp regexp, Object string, int fromPos, int toPos, boolean atStart, int startPos,
426+
@Cached ConditionProfile encodingMismatchProfile,
426427
@Cached RopeNodes.BytesNode bytesNode,
427428
@Cached TruffleRegexpNodes.MatchNode matchNode,
428429
@Cached TruffleRegexpNodes.CheckEncodingNode checkEncodingNode,
@@ -431,7 +432,7 @@ protected Object matchInRegion(
431432
final Encoding enc = checkEncodingNode.executeCheckEncoding(regexp, string);
432433
Regex regex = regexp.regex;
433434

434-
if (regex.getEncoding() != enc) {
435+
if (encodingMismatchProfile.profile(regex.getEncoding() != enc)) {
435436
final EncodingCache encodingCache = regexp.cachedEncodings;
436437
regex = encodingCache.getOrCreate(enc, e -> makeRegexpForEncoding(getContext(), regexp, e, this));
437438
}

0 commit comments

Comments
 (0)