# HG changeset patch # User rbackman # Date 1373882810 -7200 # Node ID ee9e76adced3c3615cc453a50298000bbe7be9aa # Parent 862625d214fa0bf16d63c96c3e9bc554b21db371# Parent 23123fc6968ac4f1f9c23437aba62e879ef26db6 Merge diff -r 862625d214fa -r ee9e76adced3 src/share/vm/oops/cpCache.hpp --- a/src/share/vm/oops/cpCache.hpp Mon Jul 15 00:23:48 2013 -0700 +++ b/src/share/vm/oops/cpCache.hpp Mon Jul 15 12:06:50 2013 +0200 @@ -140,8 +140,15 @@ _f1 = f1; } void release_set_f1(Metadata* f1); - void set_f2(intx f2) { assert(_f2 == 0 || _f2 == f2, "illegal field change"); _f2 = f2; } - void set_f2_as_vfinal_method(Method* f2) { assert(_f2 == 0 || _f2 == (intptr_t) f2, "illegal field change"); assert(is_vfinal(), "flags must be set"); _f2 = (intptr_t) f2; } + void set_f2(intx f2) { + intx existing_f2 = _f2; // read once + assert(existing_f2 == 0 || existing_f2 == f2, "illegal field change"); + _f2 = f2; + } + void set_f2_as_vfinal_method(Method* f2) { + assert(is_vfinal(), "flags must be set"); + set_f2((intx)f2); + } int make_flags(TosState state, int option_bits, int field_index_or_method_params); void set_flags(intx flags) { _flags = flags; } bool init_flags_atomic(intx flags);