public Function(Block block, string name, ImmutableList<Argument> arguments, string returnType) { Debug.Assert(block != null); _block = block; _name = name; _args = arguments; _returnType = returnType; }
private LLVMValueRef GenerateBlock(Block block, LLVMValueRef llvmFunc, LLVMBuilderRef builder) { _table.EnterContext(); LLVMBasicBlockRef basicBlock; if (LLVM.GetBasicBlocks(llvmFunc).Count() == 0) { basicBlock = LLVM.AppendBasicBlock(llvmFunc, "basicblock"); } else { basicBlock = LLVM.GetBasicBlocks(llvmFunc).First(); } LLVM.PositionBuilderAtEnd(builder, basicBlock); foreach (Expression exp in block.Expressions) { GenerateExpression(exp, builder); } _table.LeaveContext(); return basicBlock; }