@Specialization(replaces = "doOverloadedCached") Object doOverloadedUncached(OverloadedMethodDesc method, Object obj, Object[] args, Object languageContext, @Cached("create()") ToJavaNode toJavaNode, @Cached("createBinaryProfile()") ConditionProfile isVarArgsProfile) { SingleMethodDesc overload = selectOverload(method, args, languageContext, toJavaNode); Object[] convertedArguments = prepareArgumentsUncached(overload, args, languageContext, toJavaNode, isVarArgsProfile); return doInvoke(overload, obj, convertedArguments, languageContext); }
@Specialization(replaces = {"doFixed", "doVarArgs"}) Object doSingleUncached(SingleMethodDesc method, Object obj, Object[] args, Object languageContext, @Cached("create()") ToJavaNode toJavaNode, @Cached("createBinaryProfile()") ConditionProfile isVarArgsProfile) { int parameterCount = method.getParameterCount(); int minArity = method.isVarArgs() ? parameterCount - 1 : parameterCount; if (args.length < minArity) { throw ArityException.raise(minArity, args.length); } Object[] convertedArguments = prepareArgumentsUncached(method, args, languageContext, toJavaNode, isVarArgsProfile); return doInvoke(method, obj, convertedArguments, languageContext); }