VarHandle does provide suitable (and better) replacements for the various
Unsafe.get/putXXX methods.  But, U.objectFieldOffset() is the only (easy?)
Java way to inspect the layout of a class; e.g. say you apply a hacky
class-hierarchy based cacheline padding to a field, and then want to assert
that it got placed at the expected offset.  I suppose Panama may yield a
better solution here, but I'm not aware of any VarHandle APIs to replicate
this usecase.

On Wed, Jun 19, 2019 at 10:59 AM Gil Tene <g...@azul.com> wrote:

> Use VarHandle. It is there and it works. It allows you to replace
> Unsafe.objectFildOffset with a better, safer way to do the same thing you
> would be doing with the information that Unsafe.objectFildOffset
> provides, but without ever giving you the (potentially incorrect and unsafe
> to use) information about the "offset" of a field within an object. It
> allows the manipulation field contents in pretty much any useful way that
> having the offset would allow you to do with Unsafe.getX(object, offset) or
> Unsafe.putX(object, offset), but without providing with unsafe means that
> will break things (like e.g. writing a long to a reference field, or
> overflowing an int with a long write).
>
> On Wednesday, June 19, 2019 at 7:04:26 AM UTC-7, xiaobai andrew wrote:
>>
>> thank for you reply,i look for some api just like  VarHandle, which i can
>> replace Unsafe.objectFildOffset without requires jdk.unsupported .
>> any good idea?
>>
>>
>> Gil Tene <g...@azul.com> 于2019年6月18日周二 下午11:43写道:
>>
>>> Out of curiosity: What do you use Unsafe.objectFieldOffset for that
>>> VarHandle is lacking functionality for?
>>>
>>> It is useful to gather use cases not covered by VarHandle so that we can
>>> propose additional capabilities there (preparing for a world with no Unsafe
>>> in it). Can you share an example of code?
>>>
>>> As to your question: I assume it is Unsafe as a whole you are having
>>> issues with, and not just Unsafe.objectFieldOffset, is that correct? You
>>> can find examples of how to use Unsafe in a post-java-8 world e.g. here:
>>> http://gregluck.com/blog/archives/2017/03/using-sun-misc-unsafe-in-java-9/
>>>
>>> On Tuesday, June 18, 2019 at 5:48:14 AM UTC-7, xiaobai andrew wrote:
>>>>
>>>> i usr Unsafe.objectFieldOffset in jdk 8 ,but when i want to update jdk
>>>> to 11, the idea compile error , it cannot  found the symbol Unsafe.
>>>> i have try to find VarHandle api,but it did not
>>>> support Unsafe.objectFieldOffset
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "mechanical-sympathy" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to mechanical-sympathy+unsubscr...@googlegroups.com.
>>> To view this discussion on the web, visit
>>> https://groups.google.com/d/msgid/mechanical-sympathy/fd3d12a2-5f1d-4795-9e58-28723b8f02d7%40googlegroups.com
>>> <https://groups.google.com/d/msgid/mechanical-sympathy/fd3d12a2-5f1d-4795-9e58-28723b8f02d7%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to mechanical-sympathy+unsubscr...@googlegroups.com.
> To view this discussion on the web, visit
> https://groups.google.com/d/msgid/mechanical-sympathy/d628940f-7e88-4456-abbc-3377633f4e74%40googlegroups.com
> <https://groups.google.com/d/msgid/mechanical-sympathy/d628940f-7e88-4456-abbc-3377633f4e74%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mechanical-sympathy+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/mechanical-sympathy/CAHjP37H9vDWY3rQF-2XAPnVdr9C1VrEcRWtN3E%3D71NVSkTxY2g%40mail.gmail.com.

Reply via email to