RFR: 8262910: Cleanup THREAD/TRAPS/naming and typing issues in ObjectMonitor and related code [v3]
Coleen Phillimore
coleenp at openjdk.java.net
Thu Mar 4 22:28:39 UTC 2021
On Thu, 4 Mar 2021 19:07:29 GMT, Ioi Lam <iklam at openjdk.org> wrote:
>> src/hotspot/share/runtime/synchronizer.hpp line 92:
>>
>>> 90: // This is the "slow path" version of monitor enter and exit.
>>> 91: static void enter(Handle obj, BasicLock* lock, JavaThread* current);
>>> 92: static void exit(oop obj, BasicLock* lock, TRAPS);
>>
>> So are you suggesting that we should have the convention that if a function takes a Thread/JavaThread argument as the last argument, to use "current" rather than "THREAD", since the latter implies it is supposed to be used to pass an argument for the parameter to TRAPS? I think this is good. It manages some confusion about trailing THREAD arguments in some callers. Specializing further to JavaThread from Thread is also a good change.
>
> A suggestion (perhaps as a future RFE), if a function never throws:
>
> void foo(Class* c, Method*m, Thread* current);
>
> maybe we should move the last `thread` argument to first:
>
> void foo(Thread* current, Class* c, Method*m);
>
> This will make it absolutely sure that `foo` will never throw an exception -- when you are reading a caller of `foo`, you don't need to refer to the declaration of `foo` to know that.
>
> Also, this will be consistent with our usual convention of passing "bigger" arguments first (Process > Thread -> Class -> method -> bci, etc).
I agree, but I've been and think we should change these as we modified the code, and not wholesale.
-------------
PR: https://git.openjdk.java.net/jdk/pull/2802
More information about the serviceability-dev
mailing list