How come a whole pointer is required for class pointer? Can't it be a small offset into a class table? Do many Java applications often require millions of classes?
Also there is already compression for that pointer, making it 32 instead of 64 bits.
But who cares? 99% of the time you just need class identity, not values from it.
> 99% of the time you just need class identity, not values from it.
So no need to deference the class pointer, or the table index.
[1] in HotSpot they are instances of InstanceKlass: https://github.com/openjdk/jdk/blob/master/src/hotspot/share...
Well also you didn't actually need to decompress the pointer first - compressed pointers are unique as well of course.