Re:JEP draft: 64 bit object headers
by saagarjha on Tuesday October 11, 2022 @02:00AM
(#33159975)
I guess I am confused as to what the extra indirection is.
[ Parent
| on HN ]
Re:JEP draft: 64 bit object headers
by chrisseaton on Tuesday October 11, 2022 @03:30AM
(#33160399)
The current compression scheme doesn’t involve reading any memory. Indirection through a lookup table would.
But who cares? 99% of the time you just need class identity, not values from it.
If you need identity you can just compare indices instead of pointers, no?
Re:JEP draft: 64 bit object headers
by chrisseaton on Tuesday October 11, 2022 @05:02AM
(#33160988)
What's what I just said?
> 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.
Ok taking a step back I just realized you aren't 'remram :P But anyways my point was that in the old scheme if you wanted to know where the class was you would do some arithmetic on the compressed pointer to get a full pointer and now you can do a comparison, or if you want to read something do a dereference. Assuming the new layout is an array of classes you have a similar scheme where you have an index and you can compare those directly, and if you want data in the class you deref.
Re:JEP draft: 64 bit object headers
by chrisseaton on Tuesday October 11, 2022 @05:26AM
(#33161152)
> in the old scheme if you wanted to know where the class was you would do some arithmetic on the compressed pointer to get a full pointer and now you can do a comparison
Well also you didn't actually need to decompress the pointer first - compressed pointers are unique as well of course.
Ah, yes, true.
Also, i believe that 'classes' aren't fixed size, because they contain the class's vtable [1]. As such, you couldn't keep them in an indexable array anyway.
[1] in HotSpot they are instances of InstanceKlass: https://github.com/openjdk/jdk/blob/master/src/hotspot/share...
Re:JEP draft: 64 bit object headers
by chrisseaton on Tuesday October 11, 2022 @10:10AM
(#33163576)
I think they mean keep references to them in an indexable array.