module volt.llvm.host
Backend | LLVM Backend

Host or JIT compilation code.

Code Map

//! Host or JIT compilation code.
module volt.llvm.host;


class HostResult : BackendHostResult
{
public:
	this(state: VoltState) { }
	fn getFunction(func: ir.Function) BackendHostResult.CompiledDg { }
	fn close() { }


protected:
	state: VoltState;
	ee: LLVMExecutionEngineRef;
	mCompiledFunctions: BackendHostResult.CompiledDg[u64];
	mModules: LLVMModuleRef[];


protected:
	fn createAndTrackModule(name: string) LLVMModuleRef { }
}

class SpringBoard
{
public:
	loc: Location;
	dgt: BackendHostResult.CompiledDg;


public:
	this(host: HostResult, func: ir.Function) { }
	fn buildSpringBoard(host: HostResult, name: string, type: ir.FunctionType) { }
	fn callFvZi(ir.Constant[]) ir.Constant { }
	fn callFviZi(a: ir.Constant[]) ir.Constant { }
	fn callSpring(a: ir.Constant[]) ir.Constant { }


protected:
	alias FvZi = fn () (i32);
	alias FviZi = fn (i32) (i32);
	alias Call = fn (void*) (void);


protected:
	mPtr: void*;
	mSpring: Call;
	mArgs: void*;
	mPos: size_t[];
	mRetType: ir.Type;
}

fn writeConstantToPtr(constant: ir.Constant, ptr: void*) { }
fn getConstantFromPtr(loc: Location, type: ir.Type, ptr: void*) ir.Constant { }