Skip to content

Commit

Permalink
Fix indirect cases of prim 188
Browse files Browse the repository at this point in the history
  • Loading branch information
fniephaus committed Jan 4, 2025
1 parent badb24f commit b1004cc
Showing 1 changed file with 20 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1190,6 +1190,16 @@ protected static final Object doExecute(final VirtualFrame frame, final Object r
@Cached final GetOrCreateContextOrMarkerNode senderNode,
@Cached final IndirectCallNode callNode) {
final Object[] arguments = arrayNode.execute(node, argArray);
if (method.hasPrimitive()) {
final AbstractPrimitiveNode primitiveNode = method.getPrimitiveNode();
if (primitiveNode != null) {
try {
return primitiveNode.executeWithArguments(frame, receiver, arguments);
} catch (final PrimitiveFailed pf) {
DispatchUtils.handlePrimitiveFailedIndirect(node, primitiveNode, method, pf);
}
}
}
return callNode.call(method.getCallTarget(), FrameAccess.newWith(senderNode.execute(frame, node, method), null, receiver, arguments));
}
}
Expand Down Expand Up @@ -1218,6 +1228,16 @@ protected static final Object doExecute(final VirtualFrame frame, @SuppressWarni
@Cached final GetOrCreateContextOrMarkerNode senderNode,
@Cached final IndirectCallNode callNode) {
final Object[] arguments = arrayNode.execute(node, argArray);
if (method.hasPrimitive()) {
final AbstractPrimitiveNode primitiveNode = method.getPrimitiveNode();
if (primitiveNode != null) {
try {
return primitiveNode.executeWithArguments(frame, receiver, arguments);
} catch (final PrimitiveFailed pf) {
DispatchUtils.handlePrimitiveFailedIndirect(node, primitiveNode, method, pf);
}
}
}
return callNode.call(method.getCallTarget(), FrameAccess.newWith(senderNode.execute(frame, node, method), null, receiver, arguments));
}
}
Expand Down

0 comments on commit b1004cc

Please sign in to comment.