Skip to content

Commit 0f96178

Browse files
committed
Use InteropNodes.readMember and invokeMember instead of local copies
1 parent 351b0ea commit 0f96178

File tree

1 file changed

+10
-36
lines changed

1 file changed

+10
-36
lines changed

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

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import com.oracle.truffle.api.dsl.GenerateInline;
3131
import com.oracle.truffle.api.dsl.ImportStatic;
3232
import com.oracle.truffle.api.dsl.NeverDefault;
33-
import com.oracle.truffle.api.interop.InteropException;
3433
import com.oracle.truffle.api.interop.InteropLibrary;
3534
import com.oracle.truffle.api.library.CachedLibrary;
3635
import com.oracle.truffle.api.profiles.InlinedBranchProfile;
@@ -68,6 +67,7 @@
6867
import org.truffleruby.core.string.StringNodes.StringAppendPrimitiveNode;
6968
import org.truffleruby.core.string.StringOperations;
7069
import org.truffleruby.core.string.StringUtils;
70+
import org.truffleruby.interop.InteropNodes;
7171
import org.truffleruby.interop.TranslateInteropExceptionNode;
7272
import org.truffleruby.language.LazyWarnNode;
7373
import org.truffleruby.language.RubyBaseNode;
@@ -965,16 +965,18 @@ static Object matchInRegionTRegex(
965965
tstringToMatch = tstring;
966966
execMethod = "execBoolean";
967967
}
968-
final Object result = invoke(node, regexInterop, tRegex, execMethod, translateInteropExceptionNode,
969-
tstringToMatch, fromIndex);
968+
969+
final Object[] arguments = new Object[]{ tstringToMatch, fromIndex };
970+
final Object result = InteropNodes.invokeMember(node, regexInterop, tRegex, execMethod, arguments,
971+
translateInteropExceptionNode);
970972

971973
if (createMatchDataProfile.profile(node, createMatchData)) {
972-
final boolean isMatch = (boolean) readMember(node, resultInterop, result, "isMatch",
974+
final boolean isMatch = (boolean) InteropNodes.readMember(node, resultInterop, result, "isMatch",
973975
translateInteropExceptionNode);
974976

975977
if (matchFoundProfile.profile(node, isMatch)) {
976978
final int groupCount = groupCountProfile
977-
.profile(node, (int) readMember(node, regexInterop, tRegex, "groupCount",
979+
.profile(node, (int) InteropNodes.readMember(node, regexInterop, tRegex, "groupCount",
978980
translateInteropExceptionNode));
979981
final Region region = new Region(groupCount);
980982

@@ -1033,24 +1035,6 @@ private static Object createMatchData(Node node, RubyRegexp regexp, Object strin
10331035
return matchData;
10341036
}
10351037

1036-
private static Object readMember(Node node, InteropLibrary interop, Object receiver, String name,
1037-
TranslateInteropExceptionNode translateInteropExceptionNode) {
1038-
try {
1039-
return interop.readMember(receiver, name);
1040-
} catch (InteropException e) {
1041-
throw translateInteropExceptionNode.execute(node, e);
1042-
}
1043-
}
1044-
1045-
private static Object invoke(Node node, InteropLibrary interop, Object receiver, String member,
1046-
TranslateInteropExceptionNode translateInteropExceptionNode, Object... args) {
1047-
try {
1048-
return interop.invokeMember(receiver, member, args);
1049-
} catch (InteropException e) {
1050-
throw translateInteropExceptionNode.executeInInvokeMember(node, e, receiver, args);
1051-
}
1052-
}
1053-
10541038
private static Object dupString(Object string, DispatchNode stringDupNode) {
10551039
return stringDupNode.call(string, "dup");
10561040
}
@@ -1072,22 +1056,12 @@ Object isLinearTime(RubyRegexp regexp,
10721056
return nil;
10731057
}
10741058

1075-
Object isBacktracking = readMember(node, regexInterop, compiledRegex, "isBacktracking",
1076-
translateInteropExceptionNode);
1077-
return !(boolean) isBacktracking;
1078-
}
1079-
1080-
private static Object readMember(Node node, InteropLibrary interop, Object receiver, String name,
1081-
TranslateInteropExceptionNode translateInteropExceptionNode) {
1082-
try {
1083-
return interop.readMember(receiver, name);
1084-
} catch (InteropException e) {
1085-
throw translateInteropExceptionNode.execute(node, e);
1086-
}
1059+
boolean isBacktracking = (boolean) InteropNodes.readMember(node, regexInterop, compiledRegex,
1060+
"isBacktracking", translateInteropExceptionNode);
1061+
return !isBacktracking;
10871062
}
10881063
}
10891064

1090-
10911065
public abstract static class MatchNode extends RubyBaseNode {
10921066

10931067
@Child private DispatchNode dupNode = DispatchNode.create();

0 commit comments

Comments
 (0)