Top Description Fields Methods
org.lwjgl.llvm

public Interface LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunctionI

extends CallbackI
Known Direct Implementers
org.lwjgl.llvm.LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction
Annotations
@FunctionalInterface
@NativeType:LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction
Imports
org.lwjgl.system.*, org.lwjgl.system.libffi.*

Instances of this interface may be passed to the OrcCreateCustomCAPIDefinitionGenerator method.

Type


LLVMErrorRef (*invoke) (
    LLVMOrcDefinitionGeneratorRef GeneratorObj,
    void *Ctx,
    LLVMOrcLookupStateRef *LookupState,
    LLVMOrcLookupKind Kind,
    LLVMOrcJITDylibRef JD,
    LLVMOrcJITDylibLookupFlags JDLookupFlags,
    LLVMOrcCLookupSet LookupSet,
    size_t LookupSetSize
)

Field Summary

Modifier and TypeField and Description
public static final FFICIF

Method Summary

Modifier and TypeMethod and Description
public default void
callback(long
a pointer to the memory used for the function's return value.

If the function is declared as returning void, then this value is garbage and should not be used.

Otherwise, the callback must fill the object to which this points, following the same special promotion behavior as LibFFI#ffi_call. That is, in most cases, ret points to an object of exactly the size of the type specified when CIF was constructed. However, integral types narrower than the system register size are widened. In these cases your program may assume that ret points to an ffi_arg object.

ret
,
long
a vector of pointers to memory holding the arguments to the function
args
)

Implements org.lwjgl.system.CallbackI.callback.

The Java method that will be called from native code when the native callback function is invoked.
public default FFICIF
getCallInterface()

Implements org.lwjgl.system.CallbackI.getCallInterface.

Returns the libffi Call Interface for this callback function.
public long
invoke(long
will contain the address of the custom generator object
GeneratorObj
,
long
will contain the context object passed to LLVMOrcCreateCustomCAPIDefinitionGenerator.
Ctx
,
long
will contain a pointer to an LLVMOrcLookupStateRef object.

This can optionally be modified to make the definition generation process asynchronous: If the LookupStateRef value is copied, and the original LLVMOrcLookupStateRef set to null, the lookup will be suspended. Once the asynchronous definition process has been completed clients must call LLVMOrcLookupStateContinueLookup to continue the lookup (this should be done unconditionally, even if errors have occurred in the mean time, to free the lookup state memory and notify the query object of the failures). If LookupState is captured this function must return ErrorSuccess.

LookupState
,
int
can be inspected to determine the lookup kind (e.g. as-if-during-static-link, or as-if-during-dlsym)
Kind
,
long
specifies which JITDylib the definitions should be generated into
JD
,
int
can be inspected to determine whether the original lookup included non-exported symbols
JDLookupFlags
,
long
contains the set of symbols that could not be found in JD already (the set of generation candidates)
LookupSet
,
long LookupSetSize)

A custom generator function.

Inherited from org.lwjgl.system.CallbackI:
address

Field Detail

CIFback to summary
public static final FFICIF CIF

Method Detail

callbackback to summary
public default void callback(long ret, long args)

Implements org.lwjgl.system.CallbackI.callback.

Doc from org.lwjgl.system.CallbackI.callback.

The Java method that will be called from native code when the native callback function is invoked.

Parameters
ret:long

a pointer to the memory used for the function's return value.

If the function is declared as returning void, then this value is garbage and should not be used.

Otherwise, the callback must fill the object to which this points, following the same special promotion behavior as LibFFI#ffi_call. That is, in most cases, ret points to an object of exactly the size of the type specified when CIF was constructed. However, integral types narrower than the system register size are widened. In these cases your program may assume that ret points to an ffi_arg object.

args:long

a vector of pointers to memory holding the arguments to the function

Annotations
@Override
getCallInterfaceback to summary
public default FFICIF getCallInterface()

Implements org.lwjgl.system.CallbackI.getCallInterface.

Doc from org.lwjgl.system.CallbackI.getCallInterface.

Returns the libffi Call Interface for this callback function. [INTERNAL API]

Returns:FFICIF

the CIF structure for this callback function

Annotations
@Override
invokeback to summary
public long invoke(long GeneratorObj, long Ctx, long LookupState, int Kind, long JD, int JDLookupFlags, long LookupSet, long LookupSetSize)

A custom generator function.

This can be used to create a custom generator object using OrcCreateCustomCAPIDefinitionGenerator. The resulting object can be attached to a JITDylib, via OrcJITDylibAddGenerator, to receive callbacks when lookups fail to match existing definitions.

Parameters
GeneratorObj:long

will contain the address of the custom generator object

Ctx:long

will contain the context object passed to LLVMOrcCreateCustomCAPIDefinitionGenerator.

LookupState:long

will contain a pointer to an LLVMOrcLookupStateRef object.

This can optionally be modified to make the definition generation process asynchronous: If the LookupStateRef value is copied, and the original LLVMOrcLookupStateRef set to null, the lookup will be suspended. Once the asynchronous definition process has been completed clients must call LLVMOrcLookupStateContinueLookup to continue the lookup (this should be done unconditionally, even if errors have occurred in the mean time, to free the lookup state memory and notify the query object of the failures). If LookupState is captured this function must return ErrorSuccess.

Kind:int

can be inspected to determine the lookup kind (e.g. as-if-during-static-link, or as-if-during-dlsym)

JD:long

specifies which JITDylib the definitions should be generated into

JDLookupFlags:int

can be inspected to determine whether the original lookup included non-exported symbols

LookupSet:long

contains the set of symbols that could not be found in JD already (the set of generation candidates)

Annotations
@NativeType:LLVMErrorRef