From: Ian R. <rog...@gm...> - 2008-08-14 09:08:30
|
Ken Lee wrote: > I was wondering if the JikesRVM treats volatile fields somehow > differently than normal fields in the baseline compiler. I just saw a > check in the optimizing compiler but there's actually no check in the > baseline compiler. As far as I understand the JMM states that if a > thread reads from a volatile field, the value will be read from main > memory and if the field is written, it should be written back to main > memory. Read/write to volatile fields are additionally performed by the > main memory in exactly the order the thread requested it. Therefore, > shouldn't there be a special treatment for volatile fields? > > > Cheers, > > Ken > Hi Ken, the baseline compiler translates each bytecode into a series of instructions on the host machine. The order of the instructions and the memory access pattern are therefore maintained. The opt compiler can eliminate loads and stores, therefore extra checks and required to make sure that doing this conforms to the Java memory model. There may be cases that we've missed but we believe we are good :-) Regards, Ian Rogers -- http://www.cs.man.ac.uk/~irogers |