void pinArrays() { // if no real array arguments, use our dummyArray arg so we can pin something if (arrayBufs.size() == 0) { okraContextHolder->dummyArrayBuf->pin(jenv); } else { for (int i=0; i<arrayBufs.size(); i++) { ArrayBuffer *arrayBuffer = arrayBufs.at(i); // FIXME, should be logic here to check for movement? if (!arrayBuffer->isPinned) { arrayBuffer->pin(jenv); // change the appropriate pointer argument in the arg stack realOkraKernel->setPointerArg(arrayBuffer->arg_idx, arrayBuffer->addr); // note: must also call registerArrayMemory (until we can make this call go away) okraContextHolder->realContext->registerArrayMemory(arrayBuffer->addr, arrayBuffer->length * arrayBuffer->elementSize + 32); } } } }