12 RFR(M) 8214583: AccessController.getContext may return wrong value after JDK-8212605
David Holmes
david.holmes at oracle.com
Mon Dec 17 00:06:22 UTC 2018
On 15/12/2018 10:59 am, dean.long at oracle.com wrote:
> https://bugs.openjdk.java.net/browse/JDK-8214583
> http://cr.openjdk.java.net/~dlong/8214583/webrev
>
> This change includes two new regression test that demonstrate the
> problem, and a fix that allows the tests
> to pass.
>
> The problem happens when the JIT compiler's escape analysis eliminates
> the allocation of the AccessControlContext object passed to
> doPrivileged. The compiler thinks this is safe because it does not see
> that the object "escapes".
Then surely the compiler's notion of "escapes" needs to be updated!
David
-----
However, getContext needs to be able to find
> the object using a stack walk, so we need a way to tell the compiler
> that it does indeed escape. To do this we pass the value to a native
> method that does nothing.
>
> Microbenchmark results:
>
> jdk12-b18:
>
> Benchmark Mode Cnt Score Error Units
> DoPrivileged.test avgt 25 255.626 ± 6.446 ns/op
> DoPrivileged.testInline avgt 25 250.968 ± 4.975 ns/op
>
>
> jdk12-b19:
>
> Benchmark Mode Cnt Score Error Units
> DoPrivileged.test avgt 25 5.689 ± 0.001 ns/op
> DoPrivileged.testInline avgt 25 2.765 ± 0.001 ns/op
>
> this fix:
>
> Benchmark Mode Cnt Score Error Units
> DoPrivileged.test avgt 25 5.020 ± 0.001 ns/op
> DoPrivileged.testInline avgt 25 2.774 ± 0.025 ns/op
>
>
> dl
More information about the security-dev
mailing list