Strange code in Class initalization
Bryce McKinlay
bryce@albatross.co.nz
Mon Dec 6 17:37:00 GMT 1999
I'm a bit confused by this comment in natClass.cc ~line 400, in
Class.initializeClass():
// do this before we enter the monitor below, since this can cause
// exceptions. Here we assume, that reading "state" is an atomic
// operation, I pressume that is true? --Kresten
Which is then followed by some ugly code. "do this" is referring to reading the
state variable for the class being initialized: "if (state < JV_STATE_LINKED)"
It seems to me that:
a) It doesn't matter whether or not reading state is atomic, because it could
have changed by the time the monitor gets aquired anyway.
b) If _Jv_MonitorEnter throws an exception, we're in trouble either way. I don't
see how reading state first could help this situation.
So basically, I propose to clean this up with a single _Jv_MonitorEnter *before*
state is read, like it says to do in the JLS.
Can anyone see the problem Kresten is talking about here? Or is this just a
mistake?
regards
[ bryce ]
More information about the Java
mailing list