Merge
authorrbackman
Mon, 15 Jul 2013 12:06:50 +0200
changeset 18935 10110aabe1eb
parent 18933 8163d3ba7a0e (current diff)
parent 18934 2586dea2051e (diff)
child 18936 5e18fd279f7d
Merge
--- a/hotspot/src/share/vm/oops/cpCache.hpp	Mon Jul 15 00:23:48 2013 -0700
+++ b/hotspot/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);