See WasmFormat.h, CallableFunction and FunctionIndexSpace. Uniquing signatures is required for correctness, and packing the signature into the code pointer will make call_indirect faster (it just needs to rotate the packed signature, check it's the expected value, and then mask it out before jumping).