binary compatibility ABI

Bryce McKinlay bryce@mckinlay.net.nz
Thu Sep 11 15:33:00 GMT 2003


On Thursday, Sep 11, 2003, at 14:42 Pacific/Auckland, Bryce McKinlay 
wrote:
>> If you use a separate static field to check for initialization then 
>> you usually
>> have a memory read ordering issue between the flag read and the field 
>> read.
>> However if the value you test for initialization is used to compute 
>> the address
>> of the field itself, you still have a problem on Alpha, but on all 
>> other
>> architectures that we considered, the two reads appear to be ordered.
>> ... class initialization can have other side effects besides setting 
> the static fields of a class?

Actually, does the new Java memory model make any guarantees here? ie 
consider the following code:
class X
{
 static int a;
 void m()
 {
 System.out.println(Y.s);
 System.out.println(X.a);
 }
}
class Y
{
 static int s;
 static
 {
 Y.s = 55;
 X.a = 25;
 }
}
Presumably, the first println is guaranteed to print '55'? But is the 
second println guaranteed to print '25'?
Regards
Bryce.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /