On Fri, 4 Nov 2022 09:53:39 GMT, Andrew Haley <a...@openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/Thread.java line 1610:
>> 
>>> 1608:             ensureMaterializedForStackWalk(bindings);
>>> 1609:             task.run();
>>> 1610:             Reference.reachabilityFence(bindings);
>> 
>> This should probably be in a `try`‑`finally` block:
>> Suggestion:
>> 
>>             try {
>>                 task.run();
>>             } finally {
>>                 Reference.reachabilityFence(bindings);
>>             }
>
> I wonder. The pattern I'm using here is based on 
> `AccessController.executePrivileged`, which doesn't have the `finally` 
> clause. Perhaps I should add one here anyway.

I hope it doesn't matter.  There is an example in the reachabilityFence 
javadocs where it does not use finally.  For it to matter, I think the compiler 
would need to inline through run() and prove that it can throw an exception, 
but I don't think that's how the JIT compilers currently implement 
reachabilityFence.  I suppose a finally shouldn't hurt, however.

-------------

PR: https://git.openjdk.org/jdk/pull/10952

Reply via email to