1. A method, in a data processing system, for optimizing code execution, comprising: associating, in the code of a program, an instruction with a kill data object intrinsic specifying a data object of the instruction, wherein the instruction is a wait instruction in the code of the program that is used to wait for completion of an operation, wherein if the operation is a Direct Memory Access (DMA) “get” operation then the kill data object intrinsic is placed prior to the wait instruction for waiting for the DMA “get” operation to complete, wherein if the operation is a DMA “put” operation then the kill data object intrinsic is placed after the wait instruction for waiting for the DMA “put” operation to complete, wherein the data object is a DMA buffer, wherein the DMA buffer is one of a plurality of DMA buffers, and wherein other DMA buffers are not associated with a kill data object intrinsic; compiling the code of the program, wherein compiling the code of the program comprises performing an optimization operation for reordering instructions in a program flow of the code; and restricting reordering of instructions in the program flow of the code that operate on the data object such that the instructions are not moved across a point in the program flow of the program where the data object is specified as having been killed by the kill data object intrinsic, wherein restricting reordering of instructions in the program flow of the code that operate on the data object comprises adding an entry to the killed data object list having an identifier of a point in the code where the kill data object intrinsic associated with the data object is encountered and using the killed data object list when optimizing the code for execution to determine if an instruction may be reordered.