Vuo  2.2.1
Static Public Member Functions | List of all members
VuoCompilerCodeGenUtilities Class Reference

Description

Handy methods for generating code.

Definition at line 22 of file VuoCompilerCodeGenUtilities.hh.

Static Public Member Functions

static Value * generateCreateDispatchSemaphore (Module *module, BasicBlock *block, int initialValue=1)
 Generates code that constructs a dispatch_semaphore_t. More...
 
static Value * generateWaitForSemaphore (Module *module, BasicBlock *block, Value *semaphoreValue)
 Generates code that waits for and claims a dispatch_semaphore_t, with a timeout of DISPATCH_TIME_FOREVER. More...
 
static Value * generateWaitForSemaphore (Module *module, BasicBlock *block, AllocaInst *semaphoreVariable)
 Generates code that waits for and claims a dispatch_semaphore_t, with a timeout of DISPATCH_TIME_FOREVER. More...
 
static Value * generateWaitForSemaphore (Module *module, BasicBlock *block, Value *semaphoreValue, Value *timeoutValue)
 Generates code that waits for and possibly claims a dispatch_semaphore_t. More...
 
static Value * generateWaitForSemaphore (Module *module, BasicBlock *block, AllocaInst *semaphoreVariable, Value *timeoutValue)
 Generates code that waits for and possibly claims a dispatch_semaphore_t. More...
 
static void generateSignalForSemaphore (Module *module, BasicBlock *block, Value *semaphoreValue)
 Generates code that signals a dispatch_semaphore_t. More...
 
static void generateSignalForSemaphore (Module *module, BasicBlock *block, AllocaInst *semaphoreVariable)
 Generates code that signals a dispatch_semaphore_t. More...
 
static Value * generateCreateDispatchGroup (Module *module, BasicBlock *block)
 Generates code that constructs a dispatch_group_t. More...
 
static void generateEnterDispatchGroup (Module *module, BasicBlock *block, Value *dispatchGroupValue)
 Generates code that increments the block count of a dispatch_group_t. More...
 
static void generateLeaveDispatchGroup (Module *module, BasicBlock *block, Value *dispatchGroupValue)
 Generates code that decrements the block count of a dispatch_group_t. More...
 
static void generateWaitForDispatchGroup (Module *module, BasicBlock *block, Value *dispatchGroupValue, dispatch_time_t timeout=DISPATCH_TIME_FOREVER)
 Generates code that waits on a dispatch_group_t. More...
 
static Value * generateGetGlobalDispatchQueue (Module *module, BasicBlock *block)
 Generates code that retrieves the global dispatch queue. More...
 
static Value * generateCreateDispatchQueue (Module *module, BasicBlock *block, string dispatchQueueName)
 Generates code that constructs a dispatch_queue_t. More...
 
static void generateAsynchronousSubmissionToDispatchQueue (Module *module, BasicBlock *block, Value *dispatchQueueValue, Function *workerFunction, Value *contextValue)
 Generates code that submits a function for asynchronous execution on a dispatch queue. More...
 
static void generateSynchronousSubmissionToDispatchQueue (Module *module, BasicBlock *block, Value *dispatchQueueValue, Function *workerFunction, Value *contextValue)
 Generates code that submits a function for synchronous execution on a dispatch queue. More...
 
static void generateRetainForDispatchObject (Module *module, BasicBlock *block, Value *dispatchObjectVariable)
 Generates code that retains a dispatch_object_t (dispatch_queue_t, dispatch_group_t, dispatch_semaphore_t, etc.). More...
 
static void generateFinalizationForDispatchObject (Module *module, BasicBlock *block, Value *dispatchObjectVariable)
 Generates code that releases a dispatch_object_t (dispatch_queue_t, dispatch_group_t, dispatch_semaphore_t, etc.). More...
 
static Value * generateCreateDispatchTime (Module *module, BasicBlock *block, Value *deltaValue)
 Generates code that creates a dispatch_time_t by calling dispatch_time_create(DISPATCH_TIME_NOW, ...). More...
 
static Value * generateCreatePortContext (Module *module, BasicBlock *block, Type *dataType, bool isTrigger, std::string triggerQueueName)
 Generates code that allocates a PortContext on the heap and initializes it with default values. More...
 
static void generateSetPortContextEvent (Module *module, BasicBlock *block, Value *portContextValue, Value *eventValue)
 Generates code that sets the event field of a PortContext. More...
 
static void generateSetPortContextData (Module *module, BasicBlock *block, Value *portContextValue, Value *dataValue)
 Generates code that sets the data field of a PortContext to a heap-allocated copy of dataValue. More...
 
static void generateSetPortContextTriggerFunction (Module *module, BasicBlock *block, Value *portContextValue, Value *triggerFunctionValue)
 Generates code that sets the triggerFunction field of a PortContext. More...
 
static Value * generateGetPortContextEvent (Module *module, BasicBlock *block, Value *portContextValue)
 Generates code that gets the event field of a PortContext. More...
 
static Value * generateGetPortContextData (Module *module, BasicBlock *block, Value *portContextValue, Type *dataType)
 Generates code that gets the data field of a PortContext (and dereferences it to extract the actual data). More...
 
static Value * generateGetPortContextDataVariable (Module *module, BasicBlock *block, Value *portContextValue, Type *dataType)
 Generates code that gets the address of the data field of a PortContext. More...
 
static Value * generateGetPortContextDataVariableAsVoidPointer (Module *module, BasicBlock *block, Value *portContextValue)
 Generates code that gets the address of the data field of a PortContext as a void pointer. More...
 
static Value * generateGetPortContextTriggerQueue (Module *module, BasicBlock *block, Value *portContextValue)
 Generates code that gets the triggerQueue field of a PortContext. More...
 
static Value * generateGetPortContextTriggerSemaphore (Module *module, BasicBlock *block, Value *portContextValue)
 Generates code that gets the triggerSemaphore field of a PortContext. More...
 
static Value * generateGetPortContextTriggerFunction (Module *module, BasicBlock *block, Value *portContextValue, FunctionType *functionType)
 Generates code that gets the triggerFunction field of a PortContext. More...
 
static void generateRetainPortContextData (Module *module, BasicBlock *block, Value *portContextValue)
 Generates code that calls vuoRetainPortContextData(). More...
 
static Value * generateCreateNodeContext (Module *module, BasicBlock *block, bool hasInstanceData, bool isComposition, size_t outputEventCount)
 Generates code that allocates a NodeContext on the heap and initializes it with default values. More...
 
static void generateSetNodeContextPortContexts (Module *module, BasicBlock *block, Value *nodeContextValue, vector< Value * > portContextValues)
 Generates code that sets the portContexts and portContextCount fields of a NodeContext. More...
 
static void generateSetNodeContextInstanceData (Module *module, BasicBlock *block, Value *nodeContextValue, Value *instanceDataValue)
 Generates code that sets the instanceData field of a NodeContext (to a heap-allocated copy of instanceDataValue) and frees the old value. More...
 
static void generateSetNodeContextClaimingEventId (Module *module, BasicBlock *block, Value *nodeContextValue, Value *claimingEventIdValue)
 Generates code that sets the claimingEventId field of a NodeContext. More...
 
static void generateSetNodeContextOutputEvent (Module *module, BasicBlock *block, Value *nodeContextValue, size_t index, Value *eventValue)
 Generates code that sets an element of the outputEvents field of a NodeContext. More...
 
static Value * generateGetNodeContextPortContext (Module *module, BasicBlock *block, Value *nodeContextValue, int index)
 Generates code that gets an element of the portContexts field of a NodeContext. More...
 
static Value * generateGetNodeContextInstanceData (Module *module, BasicBlock *block, Value *nodeContextValue, Type *instanceDataType)
 Generates code that gets the instanceData field of a NodeContext (and dereference it to get the actual instance data). More...
 
static Value * generateGetNodeContextInstanceDataVariable (Module *module, BasicBlock *block, Value *nodeContextValue, Type *instanceDataType)
 Generates code that gets the address of the instanceData field of a NodeContext. More...
 
static Value * generateGetNodeContextClaimingEventId (Module *module, BasicBlock *block, Value *nodeContextValue)
 Generates code that gets the claimingEventId field of a NodeContext. More...
 
static Value * generateGetNodeContextExecutingGroup (Module *module, BasicBlock *block, Value *nodeContextValue)
 Generates code that gets the executingGroup field of a NodeContext. More...
 
static Value * generateGetNodeContextOutputEvent (Module *module, BasicBlock *block, Value *nodeContextValue, size_t index)
 Generates code that gets an element of the outputEvents field of a NodeContext. More...
 
static void generateResetNodeContextEvents (Module *module, BasicBlock *block, Value *nodeContextValue)
 Generates code that sets the event field to false for all PortContexts in a NodeContext. More...
 
static void generateStartedExecutingEvent (Module *module, BasicBlock *block, Value *nodeContextValue, Value *eventIdValue)
 Generates a call to vuoStartedExecutingEvent. More...
 
static void generateSpunOffExecutingEvent (Module *module, BasicBlock *block, Value *nodeContextValue, Value *eventIdValue)
 Generates a call to vuoSpunOffExecutingEvent. More...
 
static Value * generateFinishedExecutingEvent (Module *module, BasicBlock *block, Value *nodeContextValue, Value *eventIdValue)
 Generates a call to vuoFinishedExecutingEvent. More...
 
static Value * generateGetOneExecutingEvent (Module *module, BasicBlock *block, Value *nodeContextValue)
 Generates a call to vuoGetOneExecutingEvent. More...
 
static Value * generateCreateCompositionState (Module *module, BasicBlock *block, Value *runtimeStateValue, Value *compositionIdentifierValue)
 Generates code that creates a VuoCompositionState * from the given void *runtimeState and char *compositionIdentifier. More...
 
static Value * generateGetCompositionStateRuntimeState (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates code that gets the runtimeState field of a VuoCompositionState *. More...
 
static Value * generateGetCompositionStateCompositionIdentifier (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates code that gets the compositionIdentifier field of a VuoCompositionState *. More...
 
static void generateFreeCompositionState (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates code that frees a VuoCompositionState * (but not its fields). More...
 
static Value * generateGetDataForPort (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue)
 Generates code that retrives the data field in a port's context, given the port's identifier. More...
 
static Value * generateGetNodeIndexForPort (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue)
 Generates code that retrieves the index (in VuoCompilerBitcodeGenerator::orderedNodes) of a node, given the identifier of a port on the node. More...
 
static Value * generateGetTypeIndexForPort (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue)
 Generates code that retrieves the index (in VuoCompilerBitcodeGenerator::orderedTypes) of a port's type, given the port's identifier. More...
 
static void generateScheduleTriggerWorker (Module *module, BasicBlock *block, Value *queueValue, Value *contextValue, Value *workerFunctionValue, int minThreadsNeeded, int maxThreadsNeeded, Value *eventIdValue, Value *compositionStateValue, int chainCount)
 Generates a call to vuoScheduleTriggerWorker. More...
 
static void generateScheduleChainWorker (Module *module, BasicBlock *block, Value *queueValue, Value *contextValue, Value *workerFunctionValue, int minThreadsNeeded, int maxThreadsNeeded, Value *eventIdValue, Value *compositionStateValue, size_t chainIndex, vector< size_t > upstreamChainIndices)
 Generates a call to vuoScheduleChainWorker. More...
 
static void generateGrantThreadsToChain (Module *module, BasicBlock *block, int minThreadsNeeded, int maxThreadsNeeded, Value *eventIdValue, Value *compositionStateValue, size_t chainIndex)
 Generates a call to vuoGrantThreadsToChain. More...
 
static void generateGrantThreadsToSubcomposition (Module *module, BasicBlock *block, Value *eventIdValue, Value *compositionStateValue, Value *chainIndexValue, Value *subcompositionIdentifierValue)
 Generates a call to vuoGrantThreadsToSubcomposition. More...
 
static void generateReturnThreadsForTriggerWorker (Module *module, BasicBlock *block, Value *eventIdValue, Value *compositionStateValue)
 Generates a call to vuoReturnThreadsForTriggerWorker. More...
 
static void generateReturnThreadsForChainWorker (Module *module, BasicBlock *block, Value *eventIdValue, Value *compositionStateValue, Value *chainIndexValue)
 Generates a call to vuoReturnThreadsForChainWorker. More...
 
static void generateLockNodes (Module *module, BasicBlock *&block, Value *compositionStateValue, const vector< size_t > &nodeIndices, Value *eventIdValue, VuoCompilerConstantsCache *constantsCache)
 Generates a call to vuoLockNodes(). More...
 
static void generateLockNode (Module *module, BasicBlock *&block, Value *compositionStateValue, size_t nodeIndex, Value *eventIdValue)
 Generates a call to vuoLockNode(). More...
 
static void generateLockNode (Module *module, BasicBlock *&block, Value *compositionStateValue, Value *nodeIndexValue, Value *eventIdValue)
 Generates a call to vuoLockNode(). More...
 
static void generateUnlockNodes (Module *module, BasicBlock *block, Value *compositionStateValue, const vector< size_t > &nodeIndices, VuoCompilerConstantsCache *constantsCache)
 Generates a call to vuoUnlockNodes(). More...
 
static void generateUnlockNode (Module *module, BasicBlock *block, Value *compositionStateValue, size_t nodeIndex)
 Generates a call to vuoUnlockNode(). More...
 
static void generateUnlockNode (Module *module, BasicBlock *block, Value *compositionStateValue, Value *nodeIndexValue)
 Generates a call to vuoUnlockNode(). More...
 
static void generateSetArrayElement (Module *module, BasicBlock *block, Value *arrayValue, size_t elementIndex, Value *value)
 Generates code that sets the array element at the given index. More...
 
static Value * generateGetArrayElement (Module *module, BasicBlock *block, Value *arrayValue, size_t elementIndex)
 Generates code that gets the array element at the given index. More...
 
static Value * generateGetArrayElement (Module *module, BasicBlock *block, Value *arrayValue, Value *elementIndexValue)
 Generates code that gets the array element at the given index. More...
 
static void generateSetStructPointerElement (Module *module, BasicBlock *block, Value *structPointer, size_t elementIndex, Value *value)
 Generates code that sets the struct element at the given index. More...
 
static Value * generateGetStructPointerElement (Module *module, BasicBlock *block, Value *structPointer, size_t elementIndex)
 Generates code that gets the struct element at the given index. More...
 
static Value * generatePointerToValue (BasicBlock *block, Value *value)
 Generates code that creates a pointer to value (on the stack), and returns the pointer. More...
 
static Constant * generatePointerToConstantString (Module *module, string stringValue, string globalVariableName="")
 Generates code that creates a global string variable. More...
 
static Constant * generatePointerToConstantArrayOfStrings (Module *module, vector< string > stringValues, string globalVariableName="")
 Generates code that creates a global array-of-strings variable. More...
 
static Constant * generatePointerToConstantArrayOfUnsignedLongs (Module *module, const vector< unsigned long > &values, string globalVariableName="")
 Generates a global array-of-unsigned-longs variable. More...
 
static void generateStringMatchingCode (Module *module, Function *function, BasicBlock *initialBlock, BasicBlock *finalBlock, Value *inputStringValue, map< string, pair< BasicBlock *, BasicBlock * > > blocksForString, VuoCompilerConstantsCache *constantsCache)
 Generates a series of if-else statements for testing if an input string is equal to any of a set of constant strings, and executing the corresponding block of code if it is. More...
 
static void generateIndexMatchingCode (Module *module, Function *function, BasicBlock *initialBlock, BasicBlock *finalBlock, Value *inputIndexValue, vector< pair< BasicBlock *, BasicBlock * > > blocksForIndex)
 Generates a series of if-else statements for testing if an input index is equal to any of a set of indices, and executing the corresponding block of code if it is. More...
 
static Value * generateFormattedString (Module *module, BasicBlock *block, string formatString, vector< Value * > replacementValues, VuoCompilerConstantsCache *constantsCache)
 Generates code that allocates a buffer to hold the composite string, then calls snprintf to combine the format string and replacement values into the composite string. More...
 
static Value * generateStringConcatenation (Module *module, BasicBlock *block, vector< Value * > stringsToConcatenate, VuoCompilerConstantsCache *constantsCache)
 Generates code that allocates a buffer to hold the composite string, then concatenates each member of stringsToConcatenate into the composite string. More...
 
static Value * generateMemoryAllocation (Module *module, BasicBlock *block, Type *elementType, int elementCount)
 Generates code that dynamically allocates memory for an array. More...
 
static Value * generateMemoryAllocation (Module *module, BasicBlock *block, Type *elementType, Value *elementCountValue)
 Generates code that dynamically allocates memory for an array. More...
 
static Value * generateTypeCast (Module *module, BasicBlock *block, Value *valueToCast, Type *typeToCastTo)
 Generates code to cast the value to the desired type (if it doesn't already have that type). More...
 
static void generateAnnotation (Module *module, BasicBlock *block, Value *value, string annotation, string fileName, unsigned int lineNumber, VuoCompilerConstantsCache *constantsCache)
 Generates a call to llvm.var.annotation, which annotates a value with a string. More...
 
static void generateModuleMetadata (Module *module, string metadata, string moduleKey)
 Generates code equivalent to the VuoModuleMetadata macro. More...
 
static void generateRegisterCall (Module *module, BasicBlock *block, Value *argument, Function *freeFunction)
 Generates code to register argument. More...
 
static void generateRetainCall (Module *module, BasicBlock *block, Value *argument)
 Generates any code needed to retain argument. More...
 
static void generateReleaseCall (Module *module, BasicBlock *block, Value *argument)
 Generates any code needed to release argument. More...
 
static bool isRetainOrReleaseNeeded (Type *type)
 Returns true if VuoCompilerCodeGenUtilities::generateRetainCall and VuoCompilerCodeGenUtilities::generateReleaseCall would generate any code for type. More...
 
static void generateFreeCall (Module *module, BasicBlock *block, Value *argument)
 Generates a call to free argument (after casting it to a void pointer). More...
 
static void generateJsonObjectPut (Module *module, BasicBlock *block, Value *jsonObjectValue)
 Generates a call to json_object_put(). More...
 
static void generateNullCheck (Module *module, Function *function, Value *valueToCheck, BasicBlock *initialBlock, BasicBlock *&nullBlock, BasicBlock *&notNullBlock)
 Generates code that checks if valueToCheck (assumed to have a pointer type) is null. More...
 
static Value * generateSerialization (Module *module, BasicBlock *block, Value *valueToSerialize, VuoCompilerConstantsCache *constantsCache)
 Generates code that creates a string representation of the given value. More...
 
static void generateUnserialization (Module *module, BasicBlock *block, Value *stringToUnserialize, Value *destinationVariable, VuoCompilerConstantsCache *constantsCache)
 Generates code that creates a value of the given type from the given string representation, and stores it in the destination variable. More...
 
static ICmpInst * generateIsPausedComparison (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates code that gets the return value of vuoIsPaused() as a comparison value. More...
 
static void generateSendNodeExecutionStarted (Module *module, BasicBlock *block, Value *compositionStateValue, Value *nodeIdentifierValue)
 Generates a call to vuoSendNodeExecutionStarted(). More...
 
static void generateSendNodeExecutionFinished (Module *module, BasicBlock *block, Value *compositionStateValue, Value *nodeIdentifierValue)
 Generates a call to vuoSendNodeExecutionFinished(). More...
 
static void generateSendInputPortsUpdated (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue, bool receivedEvent, bool receivedData, Value *portDataSummaryValue)
 Generates a call to vuoSendInputPortsUpdated(). More...
 
static void generateSendInputPortsUpdated (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue, Value *receivedEventValue, Value *receivedDataValue, Value *portDataSummaryValue)
 Generates a call to vuoSendInputPortsUpdated(). More...
 
static void generateSendOutputPortsUpdated (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue, Value *sentEventValue, Value *sentDataValue, Value *portDataSummaryValue)
 Generates a call to vuoSendOutputPortsUpdated(). More...
 
static void generateSendPublishedOutputPortsUpdated (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue, Value *sentDataValue, Value *portDataSummaryValue)
 Generates a call to vuoSendPublishedOutputPortsUpdated(). More...
 
static void generateSendEventFinished (Module *module, BasicBlock *block, Value *compositionStateValue, Value *eventIdValue)
 Generates a call to vuoSendEventFinished(). More...
 
static void generateSendEventDropped (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue)
 Generates a call to vuoSendEventDropped(). More...
 
static ICmpInst * generateShouldSendDataTelemetryComparison (Module *module, BasicBlock *block, string portIdentifier, Value *compositionStateValue, VuoCompilerConstantsCache *constantsCache)
 Generates code that gets the return value of the vuoShouldSendPortDataTelemetry() function as a comparison value. More...
 
static void generateIsNodeBeingRemovedOrReplacedCheck (Module *module, Function *function, string nodeIdentifier, Value *compositionStateValue, BasicBlock *initialBlock, BasicBlock *&trueBlock, BasicBlock *&falseBlock, VuoCompilerConstantsCache *constantsCache, Value *&replacementJsonValue)
 Generates code that checks if vuoIsNodeBeingRemovedOrReplaced() returns true for nodeIdentifier. More...
 
static ICmpInst * generateIsNodeBeingAddedOrReplacedCheck (Module *module, Function *function, string nodeIdentifier, Value *compositionStateValue, BasicBlock *initialBlock, BasicBlock *&trueBlock, BasicBlock *&falseBlock, VuoCompilerConstantsCache *constantsCache, Value *&replacementJsonValue)
 Generates code that checks if vuoIsNodeBeingAddedOrReplaced() returns true for nodeIdentifier. More...
 
static ConstantInt * generateNoEventIdConstant (Module *module)
 Generates a dummy event ID to represent that no event is claiming a node. More...
 
static Value * generateGetNodeContext (Module *module, BasicBlock *block, Value *compositionStateValue, size_t nodeIndex)
 Generates a call to vuoGetNodeContext(). More...
 
static Value * generateGetNodeContext (Module *module, BasicBlock *block, Value *compositionStateValue, Value *nodeIndexValue)
 Generates a call to vuoGetNodeContext(). More...
 
static Value * generateGetCompositionContext (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates a call to vuoGetCompositionContext(). More...
 
static void generateAddNodeMetadata (Module *module, BasicBlock *block, Value *compositionStateValue, Value *nodeIdentifierValue, Function *compositionCreateContextForNodeFunction, Function *compositionSetPortValueFunction, Function *compositionGetPortValueFunction, Function *compositionFireTriggerPortEventFunction, Function *compositionReleasePortDataFunction)
 Generates a call to vuoAddNodeMetadata(). More...
 
static void generateAddPortMetadata (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue, Value *portNameValue, size_t typeIndex, Value *initialValueValue)
 Generates a call to vuoAddPortMetadata(). More...
 
static void generateInitContextForTopLevelComposition (Module *module, BasicBlock *block, Value *compositionStateValue, bool isStatefulComposition, size_t publishedOutputPortCount)
 Generates a call to vuoInitContextForTopLevelComposition(). More...
 
static void generateFiniContextForTopLevelComposition (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates a call to vuoFiniContextForTopLevelComposition(). More...
 
static Value * getTriggerWorkersScheduledValue (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates a call to vuoGetTriggerWorkersScheduled(). More...
 
static Value * generateGetInputPortString (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue, Value *interprocessSerializationValue)
 Generates a call to vuoGetInputPortString(). More...
 
static Value * generateGetOutputPortString (Module *module, BasicBlock *block, Value *compositionStateValue, Value *portIdentifierValue, Value *interprocessSerializationValue)
 Generates a call to vuoGetOutputPortString(). More...
 
static Value * generateRuntimeStateValue (Module *module, BasicBlock *block)
 Generates code that gets the value of the vuoRuntimeState global variable. More...
 
static Value * generateGetNextEventId (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates a call to vuoGetNextEventId(). More...
 
static Value * generateCreateTriggerWorkerContext (Module *module, BasicBlock *block, Value *compositionStateValue, Value *dataCopyValue, Value *eventIdCopyValue)
 Generates a call to vuoCreateTriggerWorkerContext(). More...
 
static void generateFreeTriggerWorkerContext (Module *module, BasicBlock *block, Value *contextValue)
 Generates a call to vuoFreeTriggerWorkerContext(). More...
 
static Value * generateCreatePublishedInputWorkerContext (Module *module, BasicBlock *block, Value *compositionStateValue, Value *inputPortIdentifierValue, Value *valueAsStringValue, Value *isCompositionRunningValue)
 Generates a call to vuoCreatePublishedInputWorkerContext(). More...
 
static void generateAddCompositionStateToThreadLocalStorage (Module *module, BasicBlock *block, Value *compositionStateValue)
 Generates a call to vuoAddCompositionStateToThreadLocalStorage(). More...
 
static void generateRemoveCompositionStateFromThreadLocalStorage (Module *module, BasicBlock *block)
 Generates a call to vuoRemoveCompositionStateFromThreadLocalStorage(). More...
 
static void generatePrint (Module *module, BasicBlock *block, string formatString, Value *value=NULL)
 Generates code that prints to stderr either a string literal or a formatted string with a value. More...
 
static void generatePrint (Module *module, BasicBlock *block, string formatString, const vector< Value * > &values)
 Generates code that prints to stderr either a string literal or a formatted string with a value. More...
 
static Type * getParameterTypeBeforeLowering (Function *function, Module *module, string typeName)
 Guesses the type that the parameter of the function had in the source code, before it was possibly converted ("lowered") to some other type by Clang/LLVM when the module was compiled. More...
 
static Value * unlowerArgument (VuoCompilerType *unloweredVuoType, Function *function, int parameterIndex, Module *module, BasicBlock *block)
 If needed, generates code to convert a function argument from the "lowered" type of the function parameter to an un-lowered type. More...
 
static Value * convertArgumentToParameterType (Value *argument, Function *function, int parameterIndex, Value **secondArgument, Module *module, BasicBlock *block)
 If needed, generates code to convert the argument to the (possibly "lowered") type(s) of the function parameter(s). More...
 
static Value * convertArgumentToParameterType (Value *argument, FunctionType *functionType, int parameterIndex, bool isPassedByValue, Value **secondArgument, Module *module, BasicBlock *block)
 If needed, generates code to convert the argument to the (possibly "lowered") type(s) of the function parameter(s). More...
 
static Value * callFunctionWithStructReturn (Function *function, vector< Value * > args, BasicBlock *block)
 Generates a call to the function, whose first parameter is assumed to have LLVM's sret attribute. More...
 
static bool isFunctionReturningStructViaParameter (Function *function)
 Returns true if the function's first parameter has LLVM's sret attribute, or in other words, LLVM has transformed struct MyType foo(...) to void foo(struct MyType *, ...). More...
 
static FunctionType * getFunctionType (Module *module, VuoType *paramType)
 Returns a function type that accepts a vuoType (or its lowered form) as its parameter and has a void return type. More...
 
static Value * getArgumentAtIndex (Function *function, size_t index)
 Returns the argument at index (numbered from 0) in the function's argument list. More...
 
static AttributeSet copyAttributesToIndex (AttributeSet attributesToCopy, int destinationIndex)
 Creates a new AttributeSet with the attributes from attributesToCopy's index 1 (the AttributeSet's first function parameter) placed in the output AttributeSet's index destinationIndex (0 for the return value, 1 for the first parameter, …). More...
 
static PointerType * getDispatchSemaphoreType (Module *module)
 Returns a Type reference, generating code for the declaration if needed. More...
 
static PointerType * getDispatchGroupType (Module *module)
 Returns a Type reference, generating code for the declaration if needed. More...
 
static StructType * getDispatchObjectType (Module *module)
 Returns a Type reference, generating code for the declaration if needed. More...
 
static StructType * getNodeContextType (Module *module)
 Returns a Type reference, generating code for the declaration if needed. More...
 
static StructType * getPortContextType (Module *module)
 Returns a Type reference, generating code for the declaration if needed. More...
 
static StructType * getCompositionStateType (Module *module)
 Returns a Type reference, generating code for the declaration if needed. More...
 
static StructType * getJsonObjectType (Module *module)
 Returns a Type reference, generating code for the declaration if needed. More...
 
static PointerType * getCompositionInstanceDataType (Module *module)
 Returns a Type reference, generating code for the declaration if needed. More...
 
static Function * getStrcatFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getStrcmpFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getStrdupFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getStrlenFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getSnprintfFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getSscanfFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getFprintfFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getPutsFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getMallocFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getFreeFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getAnnotateFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getJsonObjectPutFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getJsonObjectToJsonStringExtFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getJsonTokenerParseFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getVuoShaderMakeFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getVuoShaderAddSourceFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getVuoShaderSetTransparentFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getVuoShaderSetUniformFunction (Module *module, VuoCompilerType *type)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getVuoSamplerRectCoordinatesFromNormalizedCoordinatesFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getVuoImageGetColorDepthFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getVuoImageRendererRenderFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCompositionAddNodeMetadataFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCompositionCreateContextForNodeFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCompositionPerformDataOnlyTransmissionsFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCompositionReleasePortDataFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getSetupFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCleanupFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getInstanceInitFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getInstanceFiniFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getInstanceTriggerStartFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getInstanceTriggerStopFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getNodeInstanceInitFunction (Module *module, string moduleKey, bool isSubcomposition, Type *instanceDataType, const vector< VuoPort * > &modelInputPorts, map< VuoPort *, size_t > &indexOfParameter, VuoCompilerConstantsCache *constantsCache)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getNodeInstanceFiniFunction (Module *module, string moduleKey, Type *instanceDataType, VuoCompilerConstantsCache *constantsCache)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getNodeInstanceTriggerStartFunction (Module *module, string moduleKey, Type *instanceDataType, const vector< VuoPort * > &modelInputPorts, map< VuoPort *, size_t > &indexOfParameter, VuoCompilerConstantsCache *constantsCache)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getNodeInstanceTriggerStopFunction (Module *module, string moduleKey, Type *instanceDataType, VuoCompilerConstantsCache *constantsCache)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getNodeInstanceTriggerUpdateFunction (Module *module, string moduleKey, Type *instanceDataType, const vector< VuoPort * > &modelInputPorts, map< VuoPort *, size_t > &indexOfParameter, VuoCompilerConstantsCache *constantsCache)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getNodeEventFunction (Module *module, string moduleKey, bool isSubcomposition, bool isStateful, Type *instanceDataType, const vector< VuoPort * > &modelInputPorts, const vector< VuoPort * > &modelOutputPorts, const map< VuoPort *, json_object * > &detailsForPorts, const map< VuoPort *, string > &displayNamesForPorts, const map< VuoPort *, string > &defaultValuesForInputPorts, const map< VuoPort *, VuoPortClass::EventBlocking > &eventBlockingForInputPorts, map< VuoPort *, size_t > &indexOfParameter, map< VuoPort *, size_t > &indexOfEventParameter, VuoCompilerConstantsCache *constantsCache)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCompositionGetPortValueFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getSetInputPortValueFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCompositionSetPortValueFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCompositionFireTriggerPortEventFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getGetPublishedInputPortValueFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getGetPublishedOutputPortValueFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getCompositionSetPublishedInputPortValueFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 
static Function * getSetPublishedInputPortValueFunction (Module *module)
 Returns a Function reference, generating code for the declaration if needed. More...
 

Member Function Documentation

◆ callFunctionWithStructReturn()

Value * VuoCompilerCodeGenUtilities::callFunctionWithStructReturn ( Function *  function,
vector< Value * >  args,
BasicBlock *  block 
)
static

Generates a call to the function, whose first parameter is assumed to have LLVM's sret attribute.

Definition at line 5309 of file VuoCompilerCodeGenUtilities.cc.

◆ convertArgumentToParameterType() [1/2]

Value * VuoCompilerCodeGenUtilities::convertArgumentToParameterType ( Value *  argument,
Function *  function,
int  parameterIndex,
Value **  secondArgument,
Module *  module,
BasicBlock *  block 
)
static

If needed, generates code to convert the argument to the (possibly "lowered") type(s) of the function parameter(s).

Parameters
argumentThe argument to be converted.
functionThe function the argument is being passed to.
parameterIndexThe index of the first (and possibly only) function parameter corresponding to argument.
[out]secondArgumentPointer to the second converted argument, to be passed to the second function parameter corresponding to argument. If none, pass NULL.
moduleThe module in which to generate code.
blockThe block in which to generate code.
Returns
The first converted argument, to be passed to the first (and possibly only) function parameter corresponding to argument. May be the same as argument.
Exceptions
VuoCompilerExceptionargument couldn't be converted to the function's parameter type.

Definition at line 5137 of file VuoCompilerCodeGenUtilities.cc.

◆ convertArgumentToParameterType() [2/2]

Value * VuoCompilerCodeGenUtilities::convertArgumentToParameterType ( Value *  argument,
FunctionType *  functionType,
int  parameterIndex,
bool  isPassedByValue,
Value **  secondArgument,
Module *  module,
BasicBlock *  block 
)
static

If needed, generates code to convert the argument to the (possibly "lowered") type(s) of the function parameter(s).

Parameters
argumentThe argument to be converted.
functionTypeThe type of the function that the argument is being passed to.
parameterIndexThe index of the first (and possibly only) function parameter corresponding to argument.
isPassedByValueWhether the parameter corresponding to argument has the "byval" attribute.
[out]secondArgumentPointer to the second converted argument, to be passed to the second function parameter corresponding to argument. If none, pass NULL.
moduleThe module in which to generate code.
blockThe block in which to generate code.
Returns
The first converted argument, to be passed to the first (and possibly only) function parameter corresponding to argument. May be the same as argument.
Exceptions
VuoCompilerExceptionargument couldn't be converted to the function's parameter type.

Definition at line 5157 of file VuoCompilerCodeGenUtilities.cc.

◆ copyAttributesToIndex()

AttributeSet VuoCompilerCodeGenUtilities::copyAttributesToIndex ( AttributeSet  attributesToCopy,
int  destinationIndex 
)
static

Creates a new AttributeSet with the attributes from attributesToCopy's index 1 (the AttributeSet's first function parameter) placed in the output AttributeSet's index destinationIndex (0 for the return value, 1 for the first parameter, …).

Definition at line 5369 of file VuoCompilerCodeGenUtilities.cc.

◆ generateAddCompositionStateToThreadLocalStorage()

void VuoCompilerCodeGenUtilities::generateAddCompositionStateToThreadLocalStorage ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates a call to vuoAddCompositionStateToThreadLocalStorage().

Definition at line 3531 of file VuoCompilerCodeGenUtilities.cc.

◆ generateAddNodeMetadata()

void VuoCompilerCodeGenUtilities::generateAddNodeMetadata ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  nodeIdentifierValue,
Function *  compositionCreateContextForNodeFunction,
Function *  compositionSetPortValueFunction,
Function *  compositionGetPortValueFunction,
Function *  compositionFireTriggerPortEventFunction,
Function *  compositionReleasePortDataFunction 
)
static

Generates a call to vuoAddNodeMetadata().

Definition at line 3190 of file VuoCompilerCodeGenUtilities.cc.

◆ generateAddPortMetadata()

void VuoCompilerCodeGenUtilities::generateAddPortMetadata ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue,
Value *  portNameValue,
size_t  typeIndex,
Value *  initialValueValue 
)
static

Generates a call to vuoAddPortMetadata().

Definition at line 3235 of file VuoCompilerCodeGenUtilities.cc.

◆ generateAnnotation()

void VuoCompilerCodeGenUtilities::generateAnnotation ( Module *  module,
BasicBlock *  block,
Value *  value,
string  annotation,
string  fileName,
unsigned int  lineNumber,
VuoCompilerConstantsCache constantsCache 
)
static

Generates a call to llvm.var.annotation, which annotates a value with a string.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
valueThe value to be annotated.
annotationThe annotation to be associated with the value.
fileNameThe name of the file for the module (or an empty string if no file).
lineNumberThe line number in the file for the module (or 0 if no file).
constantsCacheThe cache of LLVM constants used to generate string values.

Definition at line 2393 of file VuoCompilerCodeGenUtilities.cc.

◆ generateAsynchronousSubmissionToDispatchQueue()

void VuoCompilerCodeGenUtilities::generateAsynchronousSubmissionToDispatchQueue ( Module *  module,
BasicBlock *  block,
Value *  dispatchQueueValue,
Function *  workerFunction,
Value *  contextValue 
)
static

Generates code that submits a function for asynchronous execution on a dispatch queue.

Definition at line 341 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreateCompositionState()

Value * VuoCompilerCodeGenUtilities::generateCreateCompositionState ( Module *  module,
BasicBlock *  block,
Value *  runtimeStateValue,
Value *  compositionIdentifierValue 
)
static

Generates code that creates a VuoCompositionState * from the given void *runtimeState and char *compositionIdentifier.

Definition at line 1335 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreateDispatchGroup()

Value * VuoCompilerCodeGenUtilities::generateCreateDispatchGroup ( Module *  module,
BasicBlock *  block 
)
static

Generates code that constructs a dispatch_group_t.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
Returns
The return value of dispatch_group_create().

Definition at line 159 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreateDispatchQueue()

Value * VuoCompilerCodeGenUtilities::generateCreateDispatchQueue ( Module *  module,
BasicBlock *  block,
string  dispatchQueueName 
)
static

Generates code that constructs a dispatch_queue_t.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
dispatchQueueNameThe argument to pass to dispatch_queue_create().
Returns
The return value of dispatch_queue_create().

Definition at line 288 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreateDispatchSemaphore()

Value * VuoCompilerCodeGenUtilities::generateCreateDispatchSemaphore ( Module *  module,
BasicBlock *  block,
int  initialValue = 1 
)
static

Generates code that constructs a dispatch_semaphore_t.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
initialValueThe argument to pass to dispatch_semaphore_create().
Returns
The return value of dispatch_semaphore_create().

Definition at line 29 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreateDispatchTime()

Value * VuoCompilerCodeGenUtilities::generateCreateDispatchTime ( Module *  module,
BasicBlock *  block,
Value *  deltaValue 
)
static

Generates code that creates a dispatch_time_t by calling dispatch_time_create(DISPATCH_TIME_NOW, ...).

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
deltaValueThe 2nd argument to dispatch_time_create.
Returns
The created dispatch_time_t.

Definition at line 495 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreateNodeContext()

Value * VuoCompilerCodeGenUtilities::generateCreateNodeContext ( Module *  module,
BasicBlock *  block,
bool  hasInstanceData,
bool  isComposition,
size_t  outputEventCount 
)
static

Generates code that allocates a NodeContext on the heap and initializes it with default values.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
hasInstanceDataWhether this node has instance data.
isCompositionWhether this node is a subcomposition.
outputEventCountThe number of output ports, used to create the outputEvents field for subcompositions.
Returns
A value of type NodeContext *.

Definition at line 844 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreatePortContext()

Value * VuoCompilerCodeGenUtilities::generateCreatePortContext ( Module *  module,
BasicBlock *  block,
Type *  dataType,
bool  isTrigger,
std::string  triggerQueueName 
)
static

Generates code that allocates a PortContext on the heap and initializes it with default values.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
dataTypeThe type of the port's data, or null if the port is event-only.
isTriggerWhether the port is a trigger.
triggerQueueNameIf the port is a trigger, the name to use when creating its dispatch queue.
Returns
A value of type PortContext *.

Definition at line 532 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreatePublishedInputWorkerContext()

Value * VuoCompilerCodeGenUtilities::generateCreatePublishedInputWorkerContext ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  inputPortIdentifierValue,
Value *  valueAsStringValue,
Value *  isCompositionRunningValue 
)
static

Generates a call to vuoCreatePublishedInputWorkerContext().

Definition at line 3498 of file VuoCompilerCodeGenUtilities.cc.

◆ generateCreateTriggerWorkerContext()

Value * VuoCompilerCodeGenUtilities::generateCreateTriggerWorkerContext ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  dataCopyValue,
Value *  eventIdCopyValue 
)
static

Generates a call to vuoCreateTriggerWorkerContext().

Definition at line 3446 of file VuoCompilerCodeGenUtilities.cc.

◆ generateEnterDispatchGroup()

void VuoCompilerCodeGenUtilities::generateEnterDispatchGroup ( Module *  module,
BasicBlock *  block,
Value *  dispatchGroupValue 
)
static

Generates code that increments the block count of a dispatch_group_t.

Definition at line 179 of file VuoCompilerCodeGenUtilities.cc.

◆ generateFinalizationForDispatchObject()

void VuoCompilerCodeGenUtilities::generateFinalizationForDispatchObject ( Module *  module,
BasicBlock *  block,
Value *  dispatchObjectVariable 
)
static

Generates code that releases a dispatch_object_t (dispatch_queue_t, dispatch_group_t, dispatch_semaphore_t, etc.).

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
dispatchObjectVariableA pointer to the dispatch_object_t (e.g. a GlobalVariable or AllocaInst).

Definition at line 470 of file VuoCompilerCodeGenUtilities.cc.

◆ generateFiniContextForTopLevelComposition()

void VuoCompilerCodeGenUtilities::generateFiniContextForTopLevelComposition ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates a call to vuoFiniContextForTopLevelComposition().

Definition at line 3304 of file VuoCompilerCodeGenUtilities.cc.

◆ generateFinishedExecutingEvent()

Value * VuoCompilerCodeGenUtilities::generateFinishedExecutingEvent ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
Value *  eventIdValue 
)
static

Generates a call to vuoFinishedExecutingEvent.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueThe composition's node context, a value of type NodeContext *.
eventIdValueA value of type unsigned long.
Returns
A value of type bool.

Definition at line 1279 of file VuoCompilerCodeGenUtilities.cc.

◆ generateFormattedString()

Value * VuoCompilerCodeGenUtilities::generateFormattedString ( Module *  module,
BasicBlock *  block,
string  formatString,
vector< Value * >  replacementValues,
VuoCompilerConstantsCache constantsCache 
)
static

Generates code that allocates a buffer to hold the composite string, then calls snprintf to combine the format string and replacement values into the composite string.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
formatStringThe format string to be passed to snprintf.
replacementValuesThe replacement values to be passed to snprintf.
constantsCacheThe cache of LLVM constants used to generate string values.
Returns
A value containing the address of the composite string.

Definition at line 2185 of file VuoCompilerCodeGenUtilities.cc.

◆ generateFreeCall()

void VuoCompilerCodeGenUtilities::generateFreeCall ( Module *  module,
BasicBlock *  block,
Value *  argument 
)
static

Generates a call to free argument (after casting it to a void pointer).

Definition at line 2673 of file VuoCompilerCodeGenUtilities.cc.

◆ generateFreeCompositionState()

void VuoCompilerCodeGenUtilities::generateFreeCompositionState ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates code that frees a VuoCompositionState * (but not its fields).

Definition at line 1410 of file VuoCompilerCodeGenUtilities.cc.

◆ generateFreeTriggerWorkerContext()

void VuoCompilerCodeGenUtilities::generateFreeTriggerWorkerContext ( Module *  module,
BasicBlock *  block,
Value *  contextValue 
)
static

Generates a call to vuoFreeTriggerWorkerContext().

Definition at line 3476 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetArrayElement() [1/2]

Value * VuoCompilerCodeGenUtilities::generateGetArrayElement ( Module *  module,
BasicBlock *  block,
Value *  arrayValue,
size_t  elementIndex 
)
static

Generates code that gets the array element at the given index.

Definition at line 1908 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetArrayElement() [2/2]

Value * VuoCompilerCodeGenUtilities::generateGetArrayElement ( Module *  module,
BasicBlock *  block,
Value *  arrayValue,
Value *  elementIndexValue 
)
static

Generates code that gets the array element at the given index.

Definition at line 1917 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetCompositionContext()

Value * VuoCompilerCodeGenUtilities::generateGetCompositionContext ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates a call to vuoGetCompositionContext().

Definition at line 3167 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetCompositionStateCompositionIdentifier()

Value * VuoCompilerCodeGenUtilities::generateGetCompositionStateCompositionIdentifier ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates code that gets the compositionIdentifier field of a VuoCompositionState *.

Definition at line 1386 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetCompositionStateRuntimeState()

Value * VuoCompilerCodeGenUtilities::generateGetCompositionStateRuntimeState ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates code that gets the runtimeState field of a VuoCompositionState *.

Definition at line 1362 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetDataForPort()

Value * VuoCompilerCodeGenUtilities::generateGetDataForPort ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue 
)
static

Generates code that retrives the data field in a port's context, given the port's identifier.

Definition at line 1433 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetGlobalDispatchQueue()

Value * VuoCompilerCodeGenUtilities::generateGetGlobalDispatchQueue ( Module *  module,
BasicBlock *  block 
)
static

Generates code that retrieves the global dispatch queue.

Definition at line 253 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetInputPortString()

Value * VuoCompilerCodeGenUtilities::generateGetInputPortString ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue,
Value *  interprocessSerializationValue 
)
static

Generates a call to vuoGetInputPortString().

Definition at line 3349 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNextEventId()

Value * VuoCompilerCodeGenUtilities::generateGetNextEventId ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates a call to vuoGetNextEventId().

Definition at line 3423 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeContext() [1/2]

Value * VuoCompilerCodeGenUtilities::generateGetNodeContext ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
size_t  nodeIndex 
)
static

Generates a call to vuoGetNodeContext().

Definition at line 3130 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeContext() [2/2]

Value * VuoCompilerCodeGenUtilities::generateGetNodeContext ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  nodeIndexValue 
)
static

Generates a call to vuoGetNodeContext().

Definition at line 3141 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeContextClaimingEventId()

Value * VuoCompilerCodeGenUtilities::generateGetNodeContextClaimingEventId ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue 
)
static

Generates code that gets the claimingEventId field of a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
Returns
The value of the field.

Definition at line 1103 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeContextExecutingGroup()

Value * VuoCompilerCodeGenUtilities::generateGetNodeContextExecutingGroup ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue 
)
static

Generates code that gets the executingGroup field of a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
Returns
The value of the field.

Definition at line 1128 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeContextInstanceData()

Value * VuoCompilerCodeGenUtilities::generateGetNodeContextInstanceData ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
Type *  instanceDataType 
)
static

Generates code that gets the instanceData field of a NodeContext (and dereference it to get the actual instance data).

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
instanceDataTypeThe type that the instanceData field should be converted to before returning.
Returns
The value of the field.

Definition at line 1062 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeContextInstanceDataVariable()

Value * VuoCompilerCodeGenUtilities::generateGetNodeContextInstanceDataVariable ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
Type *  instanceDataType 
)
static

Generates code that gets the address of the instanceData field of a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
instanceDataTypeThe type that the instanceData field should be converted to before returning.
Returns
The value of the field.

Definition at line 1077 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeContextOutputEvent()

Value * VuoCompilerCodeGenUtilities::generateGetNodeContextOutputEvent ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
size_t  index 
)
static

Generates code that gets an element of the outputEvents field of a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
indexThe index of the event in the node context's array of output events.
Returns
The value of the field.

Definition at line 1154 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeContextPortContext()

Value * VuoCompilerCodeGenUtilities::generateGetNodeContextPortContext ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
int  index 
)
static

Generates code that gets an element of the portContexts field of a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
indexThe index of the port context in the node context's array of port contexts.
Returns
The value of the field.

Definition at line 1026 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetNodeIndexForPort()

Value * VuoCompilerCodeGenUtilities::generateGetNodeIndexForPort ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue 
)
static

Generates code that retrieves the index (in VuoCompilerBitcodeGenerator::orderedNodes) of a node, given the identifier of a port on the node.

Definition at line 1460 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetOneExecutingEvent()

Value * VuoCompilerCodeGenUtilities::generateGetOneExecutingEvent ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue 
)
static

Generates a call to vuoGetOneExecutingEvent.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueThe composition's node context, a value of type NodeContext *.
Returns
A value of type unsigned long.

Definition at line 1311 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetOutputPortString()

Value * VuoCompilerCodeGenUtilities::generateGetOutputPortString ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue,
Value *  interprocessSerializationValue 
)
static

Generates a call to vuoGetOutputPortString().

Definition at line 3378 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetPortContextData()

Value * VuoCompilerCodeGenUtilities::generateGetPortContextData ( Module *  module,
BasicBlock *  block,
Value *  portContextValue,
Type *  dataType 
)
static

Generates code that gets the data field of a PortContext (and dereferences it to extract the actual data).

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
dataTypeThe type that the data should be converted to before returning.
Returns
The value of the field.

Definition at line 683 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetPortContextDataVariable()

Value * VuoCompilerCodeGenUtilities::generateGetPortContextDataVariable ( Module *  module,
BasicBlock *  block,
Value *  portContextValue,
Type *  dataType 
)
static

Generates code that gets the address of the data field of a PortContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
dataTypeThe type that the data should be converted to before returning.
Returns
The value of the field.

Definition at line 698 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetPortContextDataVariableAsVoidPointer()

Value * VuoCompilerCodeGenUtilities::generateGetPortContextDataVariableAsVoidPointer ( Module *  module,
BasicBlock *  block,
Value *  portContextValue 
)
static

Generates code that gets the address of the data field of a PortContext as a void pointer.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
Returns
The value of the field.

Definition at line 712 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetPortContextEvent()

Value * VuoCompilerCodeGenUtilities::generateGetPortContextEvent ( Module *  module,
BasicBlock *  block,
Value *  portContextValue 
)
static

Generates code that gets the event field of a PortContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
Returns
The value of the field.

Definition at line 657 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetPortContextTriggerFunction()

Value * VuoCompilerCodeGenUtilities::generateGetPortContextTriggerFunction ( Module *  module,
BasicBlock *  block,
Value *  portContextValue,
FunctionType *  functionType 
)
static

Generates code that gets the triggerFunction field of a PortContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
functionTypeThe type that the function value should be converted to before returning.
Returns
The value of the field.

Definition at line 788 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetPortContextTriggerQueue()

Value * VuoCompilerCodeGenUtilities::generateGetPortContextTriggerQueue ( Module *  module,
BasicBlock *  block,
Value *  portContextValue 
)
static

Generates code that gets the triggerQueue field of a PortContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
Returns
The value of the field.

Definition at line 737 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetPortContextTriggerSemaphore()

Value * VuoCompilerCodeGenUtilities::generateGetPortContextTriggerSemaphore ( Module *  module,
BasicBlock *  block,
Value *  portContextValue 
)
static

Generates code that gets the triggerSemaphore field of a PortContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
Returns
The value of the field.

Definition at line 762 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetStructPointerElement()

Value * VuoCompilerCodeGenUtilities::generateGetStructPointerElement ( Module *  module,
BasicBlock *  block,
Value *  structPointer,
size_t  elementIndex 
)
static

Generates code that gets the struct element at the given index.

Definition at line 1952 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGetTypeIndexForPort()

Value * VuoCompilerCodeGenUtilities::generateGetTypeIndexForPort ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue 
)
static

Generates code that retrieves the index (in VuoCompilerBitcodeGenerator::orderedTypes) of a port's type, given the port's identifier.

Definition at line 1487 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGrantThreadsToChain()

void VuoCompilerCodeGenUtilities::generateGrantThreadsToChain ( Module *  module,
BasicBlock *  block,
int  minThreadsNeeded,
int  maxThreadsNeeded,
Value *  eventIdValue,
Value *  compositionStateValue,
size_t  chainIndex 
)
static

Generates a call to vuoGrantThreadsToChain.

Definition at line 1627 of file VuoCompilerCodeGenUtilities.cc.

◆ generateGrantThreadsToSubcomposition()

void VuoCompilerCodeGenUtilities::generateGrantThreadsToSubcomposition ( Module *  module,
BasicBlock *  block,
Value *  eventIdValue,
Value *  compositionStateValue,
Value *  chainIndexValue,
Value *  subcompositionIdentifierValue 
)
static

Generates a call to vuoGrantThreadsToSubcomposition.

Definition at line 1666 of file VuoCompilerCodeGenUtilities.cc.

◆ generateIndexMatchingCode()

void VuoCompilerCodeGenUtilities::generateIndexMatchingCode ( Module *  module,
Function *  function,
BasicBlock *  initialBlock,
BasicBlock *  finalBlock,
Value *  inputIndexValue,
vector< pair< BasicBlock *, BasicBlock * > >  blocksForIndex 
)
static

Generates a series of if-else statements for testing if an input index is equal to any of a set of indices, and executing the corresponding block of code if it is.

Assumes that none of the blocks passed to this function contain branch instructions. (This function appends branch instructions to all but the final block.)

Example:

if (inputIndex == 0) // blockForIndex[0] else if (inputIndex == 1) // blockForIndex[1] ...

Parameters
moduleThe module in which to generate code.
functionThe function in which to generate code.
initialBlockThe block to which the first if-statement will be appended.
finalBlockThe block following the if-else statements.
inputIndexValueThe index to compare in each if-statement.
blocksForIndexFor each index, the first block and last block to execute if the input index matches that index. The caller is responsible for branching (directly or indirectly) from the first to the last block.

Definition at line 2150 of file VuoCompilerCodeGenUtilities.cc.

◆ generateInitContextForTopLevelComposition()

void VuoCompilerCodeGenUtilities::generateInitContextForTopLevelComposition ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
bool  isStatefulComposition,
size_t  publishedOutputPortCount 
)
static

Generates a call to vuoInitContextForTopLevelComposition().

Definition at line 3271 of file VuoCompilerCodeGenUtilities.cc.

◆ generateIsNodeBeingAddedOrReplacedCheck()

ICmpInst * VuoCompilerCodeGenUtilities::generateIsNodeBeingAddedOrReplacedCheck ( Module *  module,
Function *  function,
string  nodeIdentifier,
Value *  compositionStateValue,
BasicBlock *  initialBlock,
BasicBlock *&  trueBlock,
BasicBlock *&  falseBlock,
VuoCompilerConstantsCache constantsCache,
Value *&  replacementJsonValue 
)
static

Generates code that checks if vuoIsNodeBeingAddedOrReplaced() returns true for nodeIdentifier.

This function initializes trueBlock and falseBlock and sets them up to be the blocks executed depending on the return value.

Definition at line 3073 of file VuoCompilerCodeGenUtilities.cc.

◆ generateIsNodeBeingRemovedOrReplacedCheck()

void VuoCompilerCodeGenUtilities::generateIsNodeBeingRemovedOrReplacedCheck ( Module *  module,
Function *  function,
string  nodeIdentifier,
Value *  compositionStateValue,
BasicBlock *  initialBlock,
BasicBlock *&  trueBlock,
BasicBlock *&  falseBlock,
VuoCompilerConstantsCache constantsCache,
Value *&  replacementJsonValue 
)
static

Generates code that checks if vuoIsNodeBeingRemovedOrReplaced() returns true for nodeIdentifier.

This function initializes trueBlock and falseBlock and sets them up to be the blocks executed depending on the return value.

Definition at line 3025 of file VuoCompilerCodeGenUtilities.cc.

◆ generateIsPausedComparison()

ICmpInst * VuoCompilerCodeGenUtilities::generateIsPausedComparison ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates code that gets the return value of vuoIsPaused() as a comparison value.

Definition at line 2752 of file VuoCompilerCodeGenUtilities.cc.

◆ generateJsonObjectPut()

void VuoCompilerCodeGenUtilities::generateJsonObjectPut ( Module *  module,
BasicBlock *  block,
Value *  jsonObjectValue 
)
static

Generates a call to json_object_put().

Definition at line 2684 of file VuoCompilerCodeGenUtilities.cc.

◆ generateLeaveDispatchGroup()

void VuoCompilerCodeGenUtilities::generateLeaveDispatchGroup ( Module *  module,
BasicBlock *  block,
Value *  dispatchGroupValue 
)
static

Generates code that decrements the block count of a dispatch_group_t.

Definition at line 200 of file VuoCompilerCodeGenUtilities.cc.

◆ generateLockNode() [1/2]

void VuoCompilerCodeGenUtilities::generateLockNode ( Module *  module,
BasicBlock *&  block,
Value *  compositionStateValue,
size_t  nodeIndex,
Value *  eventIdValue 
)
static

Generates a call to vuoLockNode().

Definition at line 1789 of file VuoCompilerCodeGenUtilities.cc.

◆ generateLockNode() [2/2]

void VuoCompilerCodeGenUtilities::generateLockNode ( Module *  module,
BasicBlock *&  block,
Value *  compositionStateValue,
Value *  nodeIndexValue,
Value *  eventIdValue 
)
static

Generates a call to vuoLockNode().

Definition at line 1799 of file VuoCompilerCodeGenUtilities.cc.

◆ generateLockNodes()

void VuoCompilerCodeGenUtilities::generateLockNodes ( Module *  module,
BasicBlock *&  block,
Value *  compositionStateValue,
const vector< size_t > &  nodeIndices,
Value *  eventIdValue,
VuoCompilerConstantsCache constantsCache 
)
static

Generates a call to vuoLockNodes().

Definition at line 1753 of file VuoCompilerCodeGenUtilities.cc.

◆ generateMemoryAllocation() [1/2]

Value * VuoCompilerCodeGenUtilities::generateMemoryAllocation ( Module *  module,
BasicBlock *  block,
Type *  elementType,
int  elementCount 
)
static

Generates code that dynamically allocates memory for an array.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
elementTypeThe type of each array element.
elementCountThe number of array elements.
Returns
A value pointing to the address of the memory.

Definition at line 2319 of file VuoCompilerCodeGenUtilities.cc.

◆ generateMemoryAllocation() [2/2]

Value * VuoCompilerCodeGenUtilities::generateMemoryAllocation ( Module *  module,
BasicBlock *  block,
Type *  elementType,
Value *  elementCountValue 
)
static

Generates code that dynamically allocates memory for an array.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
elementTypeThe type of each array element.
elementCountValueThe number of array elements. Assumed to have type integer.
Returns
A value pointing to the address of the memory.

Definition at line 2334 of file VuoCompilerCodeGenUtilities.cc.

◆ generateModuleMetadata()

void VuoCompilerCodeGenUtilities::generateModuleMetadata ( Module *  module,
string  metadata,
string  moduleKey 
)
static

Generates code equivalent to the VuoModuleMetadata macro.

Definition at line 2428 of file VuoCompilerCodeGenUtilities.cc.

◆ generateNoEventIdConstant()

ConstantInt * VuoCompilerCodeGenUtilities::generateNoEventIdConstant ( Module *  module)
static

Generates a dummy event ID to represent that no event is claiming a node.

Definition at line 3122 of file VuoCompilerCodeGenUtilities.cc.

◆ generateNullCheck()

void VuoCompilerCodeGenUtilities::generateNullCheck ( Module *  module,
Function *  function,
Value *  valueToCheck,
BasicBlock *  initialBlock,
BasicBlock *&  nullBlock,
BasicBlock *&  notNullBlock 
)
static

Generates code that checks if valueToCheck (assumed to have a pointer type) is null.

This function initializes nullBlock and notNullBlock and sets them up to be the blocks executed depending on the result.

Definition at line 2694 of file VuoCompilerCodeGenUtilities.cc.

◆ generatePointerToConstantArrayOfStrings()

Constant * VuoCompilerCodeGenUtilities::generatePointerToConstantArrayOfStrings ( Module *  module,
vector< string >  stringValues,
string  globalVariableName = "" 
)
static

Generates code that creates a global array-of-strings variable.

Parameters
moduleThe module in which to generate code.
stringValuesThe strings to be placed in the array.
globalVariableNameThe name to give to the global variable.
Returns
The address of the array.

Definition at line 2015 of file VuoCompilerCodeGenUtilities.cc.

◆ generatePointerToConstantArrayOfUnsignedLongs()

Constant * VuoCompilerCodeGenUtilities::generatePointerToConstantArrayOfUnsignedLongs ( Module *  module,
const vector< unsigned long > &  values,
string  globalVariableName = "" 
)
static

Generates a global array-of-unsigned-longs variable.

Parameters
moduleThe module in which to generate code.
valuesThe values to be placed in the array.
globalVariableNameThe name to give to the global variable.
Returns
The address of the array.

Definition at line 2046 of file VuoCompilerCodeGenUtilities.cc.

◆ generatePointerToConstantString()

Constant * VuoCompilerCodeGenUtilities::generatePointerToConstantString ( Module *  module,
string  stringValue,
string  globalVariableName = "" 
)
static

Generates code that creates a global string variable.

Parameters
moduleThe module in which to generate code.
stringValueThe string initializer for the global variable.
globalVariableNameThe name to give to the global variable.
Returns
The address of the string.

Definition at line 1990 of file VuoCompilerCodeGenUtilities.cc.

◆ generatePointerToValue()

Value * VuoCompilerCodeGenUtilities::generatePointerToValue ( BasicBlock *  block,
Value *  value 
)
static

Generates code that creates a pointer to value (on the stack), and returns the pointer.

Definition at line 1975 of file VuoCompilerCodeGenUtilities.cc.

◆ generatePrint() [1/2]

void VuoCompilerCodeGenUtilities::generatePrint ( Module *  module,
BasicBlock *  block,
string  formatString,
const vector< Value * > &  values 
)
static

Generates code that prints to stderr either a string literal or a formatted string with a value.

(Useful for debugging.)

Definition at line 3598 of file VuoCompilerCodeGenUtilities.cc.

◆ generatePrint() [2/2]

void VuoCompilerCodeGenUtilities::generatePrint ( Module *  module,
BasicBlock *  block,
string  formatString,
Value *  value = NULL 
)
static

Generates code that prints to stderr either a string literal or a formatted string with a value.

(Useful for debugging.)

Definition at line 3587 of file VuoCompilerCodeGenUtilities.cc.

◆ generateRegisterCall()

void VuoCompilerCodeGenUtilities::generateRegisterCall ( Module *  module,
BasicBlock *  block,
Value *  argument,
Function *  freeFunction 
)
static

Generates code to register argument.

Definition at line 2585 of file VuoCompilerCodeGenUtilities.cc.

◆ generateReleaseCall()

void VuoCompilerCodeGenUtilities::generateReleaseCall ( Module *  module,
BasicBlock *  block,
Value *  argument 
)
static

Generates any code needed to release argument.

Definition at line 2622 of file VuoCompilerCodeGenUtilities.cc.

◆ generateRemoveCompositionStateFromThreadLocalStorage()

void VuoCompilerCodeGenUtilities::generateRemoveCompositionStateFromThreadLocalStorage ( Module *  module,
BasicBlock *  block 
)
static

◆ generateResetNodeContextEvents()

void VuoCompilerCodeGenUtilities::generateResetNodeContextEvents ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue 
)
static

Generates code that sets the event field to false for all PortContexts in a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.

Definition at line 1188 of file VuoCompilerCodeGenUtilities.cc.

◆ generateRetainCall()

void VuoCompilerCodeGenUtilities::generateRetainCall ( Module *  module,
BasicBlock *  block,
Value *  argument 
)
static

Generates any code needed to retain argument.

Definition at line 2614 of file VuoCompilerCodeGenUtilities.cc.

◆ generateRetainForDispatchObject()

void VuoCompilerCodeGenUtilities::generateRetainForDispatchObject ( Module *  module,
BasicBlock *  block,
Value *  dispatchObjectVariable 
)
static

Generates code that retains a dispatch_object_t (dispatch_queue_t, dispatch_group_t, dispatch_semaphore_t, etc.).

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
dispatchObjectVariableA pointer to the dispatch_object_t (e.g. a GlobalVariable or AllocaInst).

Definition at line 446 of file VuoCompilerCodeGenUtilities.cc.

◆ generateRetainPortContextData()

void VuoCompilerCodeGenUtilities::generateRetainPortContextData ( Module *  module,
BasicBlock *  block,
Value *  portContextValue 
)
static

Generates code that calls vuoRetainPortContextData().

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.

Definition at line 814 of file VuoCompilerCodeGenUtilities.cc.

◆ generateReturnThreadsForChainWorker()

void VuoCompilerCodeGenUtilities::generateReturnThreadsForChainWorker ( Module *  module,
BasicBlock *  block,
Value *  eventIdValue,
Value *  compositionStateValue,
Value *  chainIndexValue 
)
static

Generates a call to vuoReturnThreadsForChainWorker.

Definition at line 1724 of file VuoCompilerCodeGenUtilities.cc.

◆ generateReturnThreadsForTriggerWorker()

void VuoCompilerCodeGenUtilities::generateReturnThreadsForTriggerWorker ( Module *  module,
BasicBlock *  block,
Value *  eventIdValue,
Value *  compositionStateValue 
)
static

Generates a call to vuoReturnThreadsForTriggerWorker.

Definition at line 1698 of file VuoCompilerCodeGenUtilities.cc.

◆ generateRuntimeStateValue()

Value * VuoCompilerCodeGenUtilities::generateRuntimeStateValue ( Module *  module,
BasicBlock *  block 
)
static

Generates code that gets the value of the vuoRuntimeState global variable.

Definition at line 3407 of file VuoCompilerCodeGenUtilities.cc.

◆ generateScheduleChainWorker()

void VuoCompilerCodeGenUtilities::generateScheduleChainWorker ( Module *  module,
BasicBlock *  block,
Value *  queueValue,
Value *  contextValue,
Value *  workerFunctionValue,
int  minThreadsNeeded,
int  maxThreadsNeeded,
Value *  eventIdValue,
Value *  compositionStateValue,
size_t  chainIndex,
vector< size_t >  upstreamChainIndices 
)
static

Generates a call to vuoScheduleChainWorker.

Definition at line 1564 of file VuoCompilerCodeGenUtilities.cc.

◆ generateScheduleTriggerWorker()

void VuoCompilerCodeGenUtilities::generateScheduleTriggerWorker ( Module *  module,
BasicBlock *  block,
Value *  queueValue,
Value *  contextValue,
Value *  workerFunctionValue,
int  minThreadsNeeded,
int  maxThreadsNeeded,
Value *  eventIdValue,
Value *  compositionStateValue,
int  chainCount 
)
static

Generates a call to vuoScheduleTriggerWorker.

Definition at line 1514 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSendEventDropped()

void VuoCompilerCodeGenUtilities::generateSendEventDropped ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue 
)
static

Generates a call to vuoSendEventDropped().

Definition at line 2966 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSendEventFinished()

void VuoCompilerCodeGenUtilities::generateSendEventFinished ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  eventIdValue 
)
static

Generates a call to vuoSendEventFinished().

Definition at line 2940 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSendInputPortsUpdated() [1/2]

void VuoCompilerCodeGenUtilities::generateSendInputPortsUpdated ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue,
bool  receivedEvent,
bool  receivedData,
Value *  portDataSummaryValue 
)
static

Generates a call to vuoSendInputPortsUpdated().

Definition at line 2824 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSendInputPortsUpdated() [2/2]

void VuoCompilerCodeGenUtilities::generateSendInputPortsUpdated ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue,
Value *  receivedEventValue,
Value *  receivedDataValue,
Value *  portDataSummaryValue 
)
static

Generates a call to vuoSendInputPortsUpdated().

Definition at line 2838 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSendNodeExecutionFinished()

void VuoCompilerCodeGenUtilities::generateSendNodeExecutionFinished ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  nodeIdentifierValue 
)
static

Generates a call to vuoSendNodeExecutionFinished().

Definition at line 2798 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSendNodeExecutionStarted()

void VuoCompilerCodeGenUtilities::generateSendNodeExecutionStarted ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  nodeIdentifierValue 
)
static

Generates a call to vuoSendNodeExecutionStarted().

Definition at line 2772 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSendOutputPortsUpdated()

void VuoCompilerCodeGenUtilities::generateSendOutputPortsUpdated ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue,
Value *  sentEventValue,
Value *  sentDataValue,
Value *  portDataSummaryValue 
)
static

Generates a call to vuoSendOutputPortsUpdated().

Definition at line 2873 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSendPublishedOutputPortsUpdated()

void VuoCompilerCodeGenUtilities::generateSendPublishedOutputPortsUpdated ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  portIdentifierValue,
Value *  sentDataValue,
Value *  portDataSummaryValue 
)
static

Generates a call to vuoSendPublishedOutputPortsUpdated().

Definition at line 2908 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSerialization()

Value * VuoCompilerCodeGenUtilities::generateSerialization ( Module *  module,
BasicBlock *  block,
Value *  valueToSerialize,
VuoCompilerConstantsCache constantsCache 
)
static

Generates code that creates a string representation of the given value.

Definition at line 2708 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetArrayElement()

void VuoCompilerCodeGenUtilities::generateSetArrayElement ( Module *  module,
BasicBlock *  block,
Value *  arrayValue,
size_t  elementIndex,
Value *  value 
)
static

Generates code that sets the array element at the given index.

Definition at line 1899 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetNodeContextClaimingEventId()

void VuoCompilerCodeGenUtilities::generateSetNodeContextClaimingEventId ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
Value *  claimingEventIdValue 
)
static

Generates code that sets the claimingEventId field of a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
claimingEventIdValueThe value to set the field to.

Definition at line 956 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetNodeContextInstanceData()

void VuoCompilerCodeGenUtilities::generateSetNodeContextInstanceData ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
Value *  instanceDataValue 
)
static

Generates code that sets the instanceData field of a NodeContext (to a heap-allocated copy of instanceDataValue) and frees the old value.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
instanceDataValueThe value to set the field to.

Definition at line 920 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetNodeContextOutputEvent()

void VuoCompilerCodeGenUtilities::generateSetNodeContextOutputEvent ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
size_t  index,
Value *  eventValue 
)
static

Generates code that sets an element of the outputEvents field of a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
indexThe index of the event in the node context's array of output events.
eventValueThe value to set the field to.

Definition at line 988 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetNodeContextPortContexts()

void VuoCompilerCodeGenUtilities::generateSetNodeContextPortContexts ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
vector< Value * >  portContextValues 
)
static

Generates code that sets the portContexts and portContextCount fields of a NodeContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueA value of type NodeContext *.
portContextValuesThe values to be placed in an array and stored in the field.

Definition at line 880 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetPortContextData()

void VuoCompilerCodeGenUtilities::generateSetPortContextData ( Module *  module,
BasicBlock *  block,
Value *  portContextValue,
Value *  dataValue 
)
static

Generates code that sets the data field of a PortContext to a heap-allocated copy of dataValue.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
dataValueThe value to set the field to.

Definition at line 609 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetPortContextEvent()

void VuoCompilerCodeGenUtilities::generateSetPortContextEvent ( Module *  module,
BasicBlock *  block,
Value *  portContextValue,
Value *  eventValue 
)
static

Generates code that sets the event field of a PortContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
eventValueThe value to set the field to.

Definition at line 578 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetPortContextTriggerFunction()

void VuoCompilerCodeGenUtilities::generateSetPortContextTriggerFunction ( Module *  module,
BasicBlock *  block,
Value *  portContextValue,
Value *  triggerFunctionValue 
)
static

Generates code that sets the triggerFunction field of a PortContext.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
portContextValueA value of type PortContext *.
triggerFunctionValueThe value to set the field to.

Definition at line 623 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSetStructPointerElement()

void VuoCompilerCodeGenUtilities::generateSetStructPointerElement ( Module *  module,
BasicBlock *  block,
Value *  structPointer,
size_t  elementIndex,
Value *  value 
)
static

Generates code that sets the struct element at the given index.

Definition at line 1943 of file VuoCompilerCodeGenUtilities.cc.

◆ generateShouldSendDataTelemetryComparison()

ICmpInst * VuoCompilerCodeGenUtilities::generateShouldSendDataTelemetryComparison ( Module *  module,
BasicBlock *  block,
string  portIdentifier,
Value *  compositionStateValue,
VuoCompilerConstantsCache constantsCache 
)
static

Generates code that gets the return value of the vuoShouldSendPortDataTelemetry() function as a comparison value.

Definition at line 2992 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSignalForSemaphore() [1/2]

void VuoCompilerCodeGenUtilities::generateSignalForSemaphore ( Module *  module,
BasicBlock *  block,
AllocaInst *  semaphoreVariable 
)
static

Generates code that signals a dispatch_semaphore_t.

Definition at line 122 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSignalForSemaphore() [2/2]

void VuoCompilerCodeGenUtilities::generateSignalForSemaphore ( Module *  module,
BasicBlock *  block,
Value *  semaphoreValue 
)
static

Generates code that signals a dispatch_semaphore_t.

Definition at line 131 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSpunOffExecutingEvent()

void VuoCompilerCodeGenUtilities::generateSpunOffExecutingEvent ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
Value *  eventIdValue 
)
static

Generates a call to vuoSpunOffExecutingEvent.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueThe composition's node context, a value of type NodeContext *.
eventIdValueA value of type unsigned long.

Definition at line 1247 of file VuoCompilerCodeGenUtilities.cc.

◆ generateStartedExecutingEvent()

void VuoCompilerCodeGenUtilities::generateStartedExecutingEvent ( Module *  module,
BasicBlock *  block,
Value *  nodeContextValue,
Value *  eventIdValue 
)
static

Generates a call to vuoStartedExecutingEvent.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
nodeContextValueThe composition's node context, a value of type NodeContext *.
eventIdValueA value of type unsigned long.

Definition at line 1216 of file VuoCompilerCodeGenUtilities.cc.

◆ generateStringConcatenation()

Value * VuoCompilerCodeGenUtilities::generateStringConcatenation ( Module *  module,
BasicBlock *  block,
vector< Value * >  stringsToConcatenate,
VuoCompilerConstantsCache constantsCache 
)
static

Generates code that allocates a buffer to hold the composite string, then concatenates each member of stringsToConcatenate into the composite string.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
stringsToConcatenateThe strings to concatenate. Each element should be a value of type pointer-to-char.
constantsCacheThe cache of LLVM constants used to generate string values.
Returns
A value containing the address of the composite string.

Definition at line 2230 of file VuoCompilerCodeGenUtilities.cc.

◆ generateStringMatchingCode()

void VuoCompilerCodeGenUtilities::generateStringMatchingCode ( Module *  module,
Function *  function,
BasicBlock *  initialBlock,
BasicBlock *  finalBlock,
Value *  inputStringValue,
map< string, pair< BasicBlock *, BasicBlock * > >  blocksForString,
VuoCompilerConstantsCache constantsCache 
)
static

Generates a series of if-else statements for testing if an input string is equal to any of a set of constant strings, and executing the corresponding block of code if it is.

Assumes that none of the blocks passed to this function contain branch instructions. (This function appends branch instructions to all but the final block.)

Example:

if (! strcmp(inputString, string0)) // blockForString[string0] else if (! strcmp(inputString, string1)) // blockForString[string1] ...

Parameters
moduleThe module in which to generate code.
functionThe function in which to generate code.
initialBlockThe block to which the first if-statement will be appended.
finalBlockThe block following the if-else statements.
inputStringValueThe string to compare in each if-statement.
blocksForStringFor each key string, the first block and last block to execute if the input string matches that string. The caller is responsible for branching (directly or indirectly) from the first to the last block.
constantsCacheThe cache of LLVM constants used to generate string values.

Definition at line 2093 of file VuoCompilerCodeGenUtilities.cc.

◆ generateSynchronousSubmissionToDispatchQueue()

void VuoCompilerCodeGenUtilities::generateSynchronousSubmissionToDispatchQueue ( Module *  module,
BasicBlock *  block,
Value *  dispatchQueueValue,
Function *  workerFunction,
Value *  contextValue 
)
static

Generates code that submits a function for synchronous execution on a dispatch queue.

Definition at line 350 of file VuoCompilerCodeGenUtilities.cc.

◆ generateTypeCast()

Value * VuoCompilerCodeGenUtilities::generateTypeCast ( Module *  module,
BasicBlock *  block,
Value *  valueToCast,
Type *  typeToCastTo 
)
static

Generates code to cast the value to the desired type (if it doesn't already have that type).

Returns
A value of type typeToCastTo (which may be valueToCast).

Definition at line 2359 of file VuoCompilerCodeGenUtilities.cc.

◆ generateUnlockNode() [1/2]

void VuoCompilerCodeGenUtilities::generateUnlockNode ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
size_t  nodeIndex 
)
static

Generates a call to vuoUnlockNode().

Definition at line 1862 of file VuoCompilerCodeGenUtilities.cc.

◆ generateUnlockNode() [2/2]

void VuoCompilerCodeGenUtilities::generateUnlockNode ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
Value *  nodeIndexValue 
)
static

Generates a call to vuoUnlockNode().

Definition at line 1872 of file VuoCompilerCodeGenUtilities.cc.

◆ generateUnlockNodes()

void VuoCompilerCodeGenUtilities::generateUnlockNodes ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue,
const vector< size_t > &  nodeIndices,
VuoCompilerConstantsCache constantsCache 
)
static

Generates a call to vuoUnlockNodes().

Definition at line 1828 of file VuoCompilerCodeGenUtilities.cc.

◆ generateUnserialization()

void VuoCompilerCodeGenUtilities::generateUnserialization ( Module *  module,
BasicBlock *  block,
Value *  stringToUnserialize,
Value *  destinationVariable,
VuoCompilerConstantsCache constantsCache 
)
static

Generates code that creates a value of the given type from the given string representation, and stores it in the destination variable.

Definition at line 2729 of file VuoCompilerCodeGenUtilities.cc.

◆ generateWaitForDispatchGroup()

void VuoCompilerCodeGenUtilities::generateWaitForDispatchGroup ( Module *  module,
BasicBlock *  block,
Value *  dispatchGroupValue,
dispatch_time_t  timeout = DISPATCH_TIME_FOREVER 
)
static

Generates code that waits on a dispatch_group_t.

Definition at line 221 of file VuoCompilerCodeGenUtilities.cc.

◆ generateWaitForSemaphore() [1/4]

Value * VuoCompilerCodeGenUtilities::generateWaitForSemaphore ( Module *  module,
BasicBlock *  block,
AllocaInst *  semaphoreVariable 
)
static

Generates code that waits for and claims a dispatch_semaphore_t, with a timeout of DISPATCH_TIME_FOREVER.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
semaphoreVariableThe semaphore.
Returns
The return value of dispatch_semaphore_wait().

Definition at line 59 of file VuoCompilerCodeGenUtilities.cc.

◆ generateWaitForSemaphore() [2/4]

Value * VuoCompilerCodeGenUtilities::generateWaitForSemaphore ( Module *  module,
BasicBlock *  block,
AllocaInst *  semaphoreVariable,
Value *  timeoutValue 
)
static

Generates code that waits for and possibly claims a dispatch_semaphore_t.

Parameters
moduleThe module in which to generate code.
blockThe block in which to generate code.
semaphoreVariableThe semaphore.
timeoutValueA value of type dispatch_time_t to pass to dispatch_semaphore_wait().
Returns
The return value of dispatch_semaphore_wait().

Definition at line 74 of file VuoCompilerCodeGenUtilities.cc.

◆ generateWaitForSemaphore() [3/4]

Value * VuoCompilerCodeGenUtilities::generateWaitForSemaphore ( Module *  module,
BasicBlock *  block,
Value *  semaphoreValue 
)
static

Generates code that waits for and claims a dispatch_semaphore_t, with a timeout of DISPATCH_TIME_FOREVER.

Definition at line 83 of file VuoCompilerCodeGenUtilities.cc.

◆ generateWaitForSemaphore() [4/4]

Value * VuoCompilerCodeGenUtilities::generateWaitForSemaphore ( Module *  module,
BasicBlock *  block,
Value *  semaphoreValue,
Value *  timeoutValue 
)
static

Generates code that waits for and possibly claims a dispatch_semaphore_t.

Definition at line 93 of file VuoCompilerCodeGenUtilities.cc.

◆ getAnnotateFunction()

Function * VuoCompilerCodeGenUtilities::getAnnotateFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3968 of file VuoCompilerCodeGenUtilities.cc.

◆ getArgumentAtIndex()

Value * VuoCompilerCodeGenUtilities::getArgumentAtIndex ( Function *  function,
size_t  index 
)
static

Returns the argument at index (numbered from 0) in the function's argument list.

Definition at line 5353 of file VuoCompilerCodeGenUtilities.cc.

◆ getCleanupFunction()

Function * VuoCompilerCodeGenUtilities::getCleanupFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4268 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionAddNodeMetadataFunction()

Function * VuoCompilerCodeGenUtilities::getCompositionAddNodeMetadataFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4177 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionCreateContextForNodeFunction()

Function * VuoCompilerCodeGenUtilities::getCompositionCreateContextForNodeFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4196 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionFireTriggerPortEventFunction()

Function * VuoCompilerCodeGenUtilities::getCompositionFireTriggerPortEventFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4837 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionGetPortValueFunction()

Function * VuoCompilerCodeGenUtilities::getCompositionGetPortValueFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4785 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionInstanceDataType()

PointerType * VuoCompilerCodeGenUtilities::getCompositionInstanceDataType ( Module *  module)
static

Returns a Type reference, generating code for the declaration if needed.

Definition at line 3792 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionPerformDataOnlyTransmissionsFunction()

Function * VuoCompilerCodeGenUtilities::getCompositionPerformDataOnlyTransmissionsFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4216 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionReleasePortDataFunction()

Function * VuoCompilerCodeGenUtilities::getCompositionReleasePortDataFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4235 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionSetPortValueFunction()

Function * VuoCompilerCodeGenUtilities::getCompositionSetPortValueFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4809 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionSetPublishedInputPortValueFunction()

Function * VuoCompilerCodeGenUtilities::getCompositionSetPublishedInputPortValueFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4911 of file VuoCompilerCodeGenUtilities.cc.

◆ getCompositionStateType()

StructType * VuoCompilerCodeGenUtilities::getCompositionStateType ( Module *  module)
static

Returns a Type reference, generating code for the declaration if needed.

Definition at line 3722 of file VuoCompilerCodeGenUtilities.cc.

◆ getDispatchGroupType()

PointerType * VuoCompilerCodeGenUtilities::getDispatchGroupType ( Module *  module)
static

Returns a Type reference, generating code for the declaration if needed.

Definition at line 3626 of file VuoCompilerCodeGenUtilities.cc.

◆ getDispatchObjectType()

StructType * VuoCompilerCodeGenUtilities::getDispatchObjectType ( Module *  module)
static

Returns a Type reference, generating code for the declaration if needed.

Definition at line 3657 of file VuoCompilerCodeGenUtilities.cc.

◆ getDispatchSemaphoreType()

PointerType * VuoCompilerCodeGenUtilities::getDispatchSemaphoreType ( Module *  module)
static

Returns a Type reference, generating code for the declaration if needed.

Definition at line 3616 of file VuoCompilerCodeGenUtilities.cc.

◆ getFprintfFunction()

Function * VuoCompilerCodeGenUtilities::getFprintfFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3903 of file VuoCompilerCodeGenUtilities.cc.

◆ getFreeFunction()

Function * VuoCompilerCodeGenUtilities::getFreeFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3952 of file VuoCompilerCodeGenUtilities.cc.

◆ getFunctionType()

FunctionType * VuoCompilerCodeGenUtilities::getFunctionType ( Module *  module,
VuoType paramType 
)
static

Returns a function type that accepts a vuoType (or its lowered form) as its parameter and has a void return type.

Definition at line 5334 of file VuoCompilerCodeGenUtilities.cc.

◆ getGetPublishedInputPortValueFunction()

Function * VuoCompilerCodeGenUtilities::getGetPublishedInputPortValueFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4875 of file VuoCompilerCodeGenUtilities.cc.

◆ getGetPublishedOutputPortValueFunction()

Function * VuoCompilerCodeGenUtilities::getGetPublishedOutputPortValueFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4893 of file VuoCompilerCodeGenUtilities.cc.

◆ getInstanceFiniFunction()

Function * VuoCompilerCodeGenUtilities::getInstanceFiniFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4292 of file VuoCompilerCodeGenUtilities.cc.

◆ getInstanceInitFunction()

Function * VuoCompilerCodeGenUtilities::getInstanceInitFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4280 of file VuoCompilerCodeGenUtilities.cc.

◆ getInstanceTriggerStartFunction()

Function * VuoCompilerCodeGenUtilities::getInstanceTriggerStartFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4304 of file VuoCompilerCodeGenUtilities.cc.

◆ getInstanceTriggerStopFunction()

Function * VuoCompilerCodeGenUtilities::getInstanceTriggerStopFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4316 of file VuoCompilerCodeGenUtilities.cc.

◆ getJsonObjectPutFunction()

Function * VuoCompilerCodeGenUtilities::getJsonObjectPutFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3987 of file VuoCompilerCodeGenUtilities.cc.

◆ getJsonObjectToJsonStringExtFunction()

Function * VuoCompilerCodeGenUtilities::getJsonObjectToJsonStringExtFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4003 of file VuoCompilerCodeGenUtilities.cc.

◆ getJsonObjectType()

StructType * VuoCompilerCodeGenUtilities::getJsonObjectType ( Module *  module)
static

Returns a Type reference, generating code for the declaration if needed.

Definition at line 3751 of file VuoCompilerCodeGenUtilities.cc.

◆ getJsonTokenerParseFunction()

Function * VuoCompilerCodeGenUtilities::getJsonTokenerParseFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4021 of file VuoCompilerCodeGenUtilities.cc.

◆ getMallocFunction()

Function * VuoCompilerCodeGenUtilities::getMallocFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3936 of file VuoCompilerCodeGenUtilities.cc.

◆ getNodeContextType()

StructType * VuoCompilerCodeGenUtilities::getNodeContextType ( Module *  module)
static

Returns a Type reference, generating code for the declaration if needed.

Definition at line 3672 of file VuoCompilerCodeGenUtilities.cc.

◆ getNodeEventFunction()

Function * VuoCompilerCodeGenUtilities::getNodeEventFunction ( Module *  module,
string  moduleKey,
bool  isSubcomposition,
bool  isStateful,
Type *  instanceDataType,
const vector< VuoPort * > &  modelInputPorts,
const vector< VuoPort * > &  modelOutputPorts,
const map< VuoPort *, json_object * > &  detailsForPorts,
const map< VuoPort *, string > &  displayNamesForPorts,
const map< VuoPort *, string > &  defaultValuesForInputPorts,
const map< VuoPort *, VuoPortClass::EventBlocking > &  eventBlockingForInputPorts,
map< VuoPort *, size_t > &  indexOfParameter,
map< VuoPort *, size_t > &  indexOfEventParameter,
VuoCompilerConstantsCache constantsCache 
)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4386 of file VuoCompilerCodeGenUtilities.cc.

◆ getNodeInstanceFiniFunction()

Function * VuoCompilerCodeGenUtilities::getNodeInstanceFiniFunction ( Module *  module,
string  moduleKey,
Type *  instanceDataType,
VuoCompilerConstantsCache constantsCache 
)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4340 of file VuoCompilerCodeGenUtilities.cc.

◆ getNodeInstanceInitFunction()

Function * VuoCompilerCodeGenUtilities::getNodeInstanceInitFunction ( Module *  module,
string  moduleKey,
bool  isSubcomposition,
Type *  instanceDataType,
const vector< VuoPort * > &  modelInputPorts,
map< VuoPort *, size_t > &  indexOfParameter,
VuoCompilerConstantsCache constantsCache 
)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4328 of file VuoCompilerCodeGenUtilities.cc.

◆ getNodeInstanceTriggerStartFunction()

Function * VuoCompilerCodeGenUtilities::getNodeInstanceTriggerStartFunction ( Module *  module,
string  moduleKey,
Type *  instanceDataType,
const vector< VuoPort * > &  modelInputPorts,
map< VuoPort *, size_t > &  indexOfParameter,
VuoCompilerConstantsCache constantsCache 
)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4351 of file VuoCompilerCodeGenUtilities.cc.

◆ getNodeInstanceTriggerStopFunction()

Function * VuoCompilerCodeGenUtilities::getNodeInstanceTriggerStopFunction ( Module *  module,
string  moduleKey,
Type *  instanceDataType,
VuoCompilerConstantsCache constantsCache 
)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4363 of file VuoCompilerCodeGenUtilities.cc.

◆ getNodeInstanceTriggerUpdateFunction()

Function * VuoCompilerCodeGenUtilities::getNodeInstanceTriggerUpdateFunction ( Module *  module,
string  moduleKey,
Type *  instanceDataType,
const vector< VuoPort * > &  modelInputPorts,
map< VuoPort *, size_t > &  indexOfParameter,
VuoCompilerConstantsCache constantsCache 
)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4374 of file VuoCompilerCodeGenUtilities.cc.

◆ getParameterTypeBeforeLowering()

Type * VuoCompilerCodeGenUtilities::getParameterTypeBeforeLowering ( Function *  function,
Module *  module,
string  typeName 
)
static

Guesses the type that the parameter of the function had in the source code, before it was possibly converted ("lowered") to some other type by Clang/LLVM when the module was compiled.

(For example, a struct whose members are all floats may be lowered to a vector of floats.)

Definition at line 4958 of file VuoCompilerCodeGenUtilities.cc.

◆ getPortContextType()

StructType * VuoCompilerCodeGenUtilities::getPortContextType ( Module *  module)
static

Returns a Type reference, generating code for the declaration if needed.

Definition at line 3698 of file VuoCompilerCodeGenUtilities.cc.

◆ getPutsFunction()

Function * VuoCompilerCodeGenUtilities::getPutsFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3920 of file VuoCompilerCodeGenUtilities.cc.

◆ getSetInputPortValueFunction()

Function * VuoCompilerCodeGenUtilities::getSetInputPortValueFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4858 of file VuoCompilerCodeGenUtilities.cc.

◆ getSetPublishedInputPortValueFunction()

Function * VuoCompilerCodeGenUtilities::getSetPublishedInputPortValueFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4935 of file VuoCompilerCodeGenUtilities.cc.

◆ getSetupFunction()

Function * VuoCompilerCodeGenUtilities::getSetupFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4256 of file VuoCompilerCodeGenUtilities.cc.

◆ getSnprintfFunction()

Function * VuoCompilerCodeGenUtilities::getSnprintfFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3868 of file VuoCompilerCodeGenUtilities.cc.

◆ getSscanfFunction()

Function * VuoCompilerCodeGenUtilities::getSscanfFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3886 of file VuoCompilerCodeGenUtilities.cc.

◆ getStrcatFunction()

Function * VuoCompilerCodeGenUtilities::getStrcatFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3803 of file VuoCompilerCodeGenUtilities.cc.

◆ getStrcmpFunction()

Function * VuoCompilerCodeGenUtilities::getStrcmpFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3820 of file VuoCompilerCodeGenUtilities.cc.

◆ getStrdupFunction()

Function * VuoCompilerCodeGenUtilities::getStrdupFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3836 of file VuoCompilerCodeGenUtilities.cc.

◆ getStrlenFunction()

Function * VuoCompilerCodeGenUtilities::getStrlenFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 3852 of file VuoCompilerCodeGenUtilities.cc.

◆ getTriggerWorkersScheduledValue()

Value * VuoCompilerCodeGenUtilities::getTriggerWorkersScheduledValue ( Module *  module,
BasicBlock *  block,
Value *  compositionStateValue 
)
static

Generates a call to vuoGetTriggerWorkersScheduled().

Definition at line 3326 of file VuoCompilerCodeGenUtilities.cc.

◆ getVuoImageGetColorDepthFunction()

Function * VuoCompilerCodeGenUtilities::getVuoImageGetColorDepthFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4138 of file VuoCompilerCodeGenUtilities.cc.

◆ getVuoImageRendererRenderFunction()

Function * VuoCompilerCodeGenUtilities::getVuoImageRendererRenderFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4155 of file VuoCompilerCodeGenUtilities.cc.

◆ getVuoSamplerRectCoordinatesFromNormalizedCoordinatesFunction()

Function * VuoCompilerCodeGenUtilities::getVuoSamplerRectCoordinatesFromNormalizedCoordinatesFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4119 of file VuoCompilerCodeGenUtilities.cc.

◆ getVuoShaderAddSourceFunction()

Function * VuoCompilerCodeGenUtilities::getVuoShaderAddSourceFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4055 of file VuoCompilerCodeGenUtilities.cc.

◆ getVuoShaderMakeFunction()

Function * VuoCompilerCodeGenUtilities::getVuoShaderMakeFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4038 of file VuoCompilerCodeGenUtilities.cc.

◆ getVuoShaderSetTransparentFunction()

Function * VuoCompilerCodeGenUtilities::getVuoShaderSetTransparentFunction ( Module *  module)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4077 of file VuoCompilerCodeGenUtilities.cc.

◆ getVuoShaderSetUniformFunction()

Function * VuoCompilerCodeGenUtilities::getVuoShaderSetUniformFunction ( Module *  module,
VuoCompilerType type 
)
static

Returns a Function reference, generating code for the declaration if needed.

Definition at line 4095 of file VuoCompilerCodeGenUtilities.cc.

◆ isFunctionReturningStructViaParameter()

bool VuoCompilerCodeGenUtilities::isFunctionReturningStructViaParameter ( Function *  function)
static

Returns true if the function's first parameter has LLVM's sret attribute, or in other words, LLVM has transformed struct MyType foo(...) to void foo(struct MyType *, ...).

Definition at line 5323 of file VuoCompilerCodeGenUtilities.cc.

◆ isRetainOrReleaseNeeded()

bool VuoCompilerCodeGenUtilities::isRetainOrReleaseNeeded ( Type *  type)
static

Returns true if VuoCompilerCodeGenUtilities::generateRetainCall and VuoCompilerCodeGenUtilities::generateReleaseCall would generate any code for type.

Definition at line 2665 of file VuoCompilerCodeGenUtilities.cc.

◆ unlowerArgument()

Value * VuoCompilerCodeGenUtilities::unlowerArgument ( VuoCompilerType unloweredVuoType,
Function *  function,
int  parameterIndex,
Module *  module,
BasicBlock *  block 
)
static

If needed, generates code to convert a function argument from the "lowered" type of the function parameter to an un-lowered type.

Parameters
unloweredVuoTypeThe type that the argument should be converted to.
functionThe function to which the argument has been passed.
parameterIndexThe index of the argument in the function's argument list (starting at 0).
moduleThe module in which to generate code.
blockThe block in which to generate code.
Returns
The argument converted to its un-lowered type. May be the same as the original argument.

Definition at line 4993 of file VuoCompilerCodeGenUtilities.cc.


The documentation for this class was generated from the following files: