StreamSubscriber(String queueName, BFunctionPointer functionPointer) { this.queueName = queueName; this.functionPointer = functionPointer; for (BClosure closure : functionPointer.getClosureVars()) { closureArgs.add(closure.value()); } }
/** * Invokes a callable function pointer. * * @param functionPointer function pointer * @return return values */ protected BValue[] invokeFunction(BFunctionPointer functionPointer) { List<BValue> lambdaFunctionArgs = new ArrayList<>(); for (BClosure closure : functionPointer.getClosureVars()) { lambdaFunctionArgs.add(closure.value()); } return BVMExecutor.executeFunction(functionPointer.value().getPackageInfo().getProgramFile(), functionPointer.value(), lambdaFunctionArgs.toArray(new BValue[0])); }
for (BClosure closure : functionPointer.getClosureVars()) { closureArgs.add(closure.value());
private static Strand invokeCallable(Strand ctx, BFunctionPointer fp, FunctionCallCPEntry funcCallCPEntry, FunctionInfo functionInfo, StackFrame sf, int flags) { List<BClosure> closureVars = fp.getClosureVars(); int[] argRegs = funcCallCPEntry.getArgRegs(); if (closureVars.isEmpty()) {