Instead of a userdata/function pointer pair, we can just use a block.
It turns out we can't actually use this just yet because blocks have to be copyable, which means any lambdas we convert to blocks have to be copyable, but in the GPU Process we receive a CompletionHandler to call back with a reply, but CompletionHandlers are not copyable, so we can't construct the block to pass in to WebGPU.framework.
Created attachment 452684 [details] Patch
Created attachment 452770 [details] Patch for committing
Committed r290270 (247595@trunk): <https://commits.webkit.org/247595@trunk>
<rdar://problem/89255880>