Robert G. Jakabosky wrote: > I would use a cast to uintptr_t instead of int to support 64bit pointers. > uintptr_t is guaranteed to be the same size as a pointer. Use intptr_t if you plan to pass it to tonumber(). Conversions between *unsigned* integers and FP numbers are rather expensive on some platforms. Most CPUs only support conversions of *signed* integers to/from FP numbers. Anyway, the only supported 64 bit platform is x64 (and only if it uses the lower 47 bits of the address space for user mode). I.e. all 64 bit pointer values are non-negative and the 47 significant bits fit into the mantissa of a double. Do NOT use tostring() to get unique keys for simple scalar cdata objects (it's not JIT-compiled, too). --Mike