public void installBuiltin(NodeFactory<? extends LuaNode> factory) { int argumentCount = factory.getExecutionSignature().size(); Object[] argumentNodes = new Object[argumentCount]; for (int i = 0; i < argumentCount; i++) { argumentNodes[i] = new LuaReadArgumentNode(i); } for (int i = 0; i < argumentCount; i++) { argumentNodes[i] = new LuaReadArgumentNode(i); } LuaNode builtinBodyNode = factory.createNode(argumentNodes); String name = builtinBodyNode.getClass().getAnnotation(NodeInfo.class).shortName(); LuaRootNode rootNode = new LuaRootNode(builtinBodyNode, null); luaFunctionRegistry.register(name, rootNode); }
public static MumblerFunction createBuiltinFunction( NodeFactory<? extends BuiltinNode> factory, VirtualFrame outerFrame) { int argumentCount = factory.getExecutionSignature().size(); MumblerNode[] argumentNodes = new MumblerNode[argumentCount]; for (int i=0; i<argumentCount; i++) { argumentNodes[i] = new ReadArgumentNode(i); } BuiltinNode node = factory.createNode((Object) argumentNodes); return new MumblerFunction(Truffle.getRuntime().createCallTarget( new MumblerRootNode(new MumblerNode[] {node}, new FrameDescriptor()))); } }