The segfault I was debugging the other day turned out a stack overflow caused by the Unimplemented() in Atomic::cmpxchg_ptr (void *, void *, void *) calling itself to generate the error message for the Unimplemented() in Atomic::xchg (jint, jint *). I guess this means it’s time to start writing assembler.
I had a little tangent yesterday while I tried to figure out what sizes all the different types were. aph and mjw pointed me at some stuff [1, 2 and 3]. Who knew?
| ILP32 | LP64 | |
|---|---|---|
| int | 32 | 32 |
| long | 32 | 64 |
| void * | 32 | 64 |
| jint | 32 | 32 |
| jlong | 64 | 64 |
| intptr_t | 32 | 64 |
I fixed the build on ppc64 while I was experimenting too.