MODULE = LLVM PACKAGE = LLVM::ExecutionEngine
ExecutionEngine
new(class, mod)
SV *class
Module mod
CODE:
char *err;
ExecutionEngine engine;
if (LLVMCreateExecutionEngineForModule(&engine, mod, &err)) {
Perl_croak(aTHX_ "%s", err);
}
RETVAL = engine;
OUTPUT: RETVAL
GenericValue
run_func(self, func, ...)
ExecutionEngine self
Value func
CODE:
int i;
GenericValue *params = malloc(
sizeof(GenericValue) * (items - 2)
);
for (i = 2; i < items; i++) {
GenericValue param;
SV *arg = ST(i);
if (sv_isobject(arg) &&
sv_derived_from(arg, "LLVM::GenericValue"))
param = INT2PTR(GenericValue, SvIV((SV *) SvRV(arg)));
else
Perl_croak(aTHX_
"arg is not of type LLVM::GenericValue");
params[i - 2] = param;
}
RETVAL = LLVMRunFunction(self, func, (items - 2), params);
OUTPUT: RETVAL