recent regression
Bryce McKinlay
mckinlay@redhat.com
Sat Jun 26 09:57:00 GMT 2004
Ranjit Mathew wrote:
>This is because read_class() isn't quite equipped to handle source
>files that have been parsed already and it unnecessarily calls
>find_class() that emits this warning all over again.
>>I had submitted this patch to resolve this issue a few days
>back:
>> http://gcc.gnu.org/ml/gcc-patches/2004-06/msg01589.html
>>(For some reason this mail didn't get archived in the java-patches
>archives.)
>>
Weird. I never received it in java-patches either.
>Note that some time after the original code for parsing/laying-out
>was written, the meaning of CLASS_LOADED_P was changed:
>> http://gcc.gnu.org/ml/java/2001-04/msg00114.html
>>and CLASS_PARSED_P was introduced. This meant that if you
>read code like the following (that's quite common throughout
>the front end):
>> if (! CLASS_LOADED_P (cls))
> load_class (cls);
>>and naively assumed that after this CLASS_LOADED_P (cls) would
>be true, you'd be wrong. :-/
>>
Yeah. Code along the lines of the following, which ought to guarantee
that CLASS_LOADED_P gets set, is reasonably common:
if (! CLASS_LOADED_P (class_decl))
{
if (CLASS_FROM_SOURCE_P (class_decl))
safe_layout_class (class_decl);
else
load_class (class_decl, 1);
}
I wonder if this functionality should just be encapsulated into
load_class, or some other new function - it would simplify code at the
call sites and also guarantee that CLASS_LOADED_P is true upon
returning. Do we ever really want to load a class and not lay it out?
Regards
Bryce
More information about the Java
mailing list