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.