On Apr 2, 2015, at 9:17 AM, Vladimir Ivanov <vladimir.x.iva...@oracle.com>
wrote:
>
>>
>> I recommend putting CONTEXT_OFFSET into CallSite, not the nested class.
>> For one thing, your getDeclaredField call will fail (I think) with a
>> security manager installed.
>> You can load it up where TARGET_OFFSET is initialized.
> Since I removed DependencyContext, I moved CONTEXT_OFFSET to CallSite.
>
> BTW why do you think security manager was the problem? (1)
> Class.getDeclaredField() is caller-sensitive; and (2) DependencyContext was
> eagerly initialized with CallSite (see UNSAFE.ensureClassInitialized() in
> original version).
CallSite$DependencyContext and CallSite are distinct classes.
At the JVM level they cannot access each others' private members.
So if DependencyContext wants to reflect a private field from CallSite,
there will be extra security checks. These sometimes fail, as in:
https://bugs.openjdk.java.net/browse/JDK-7050328
— John
_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev