hotspot/src/share/vm/oops/method.hpp
changeset 26558 b7df27df6384
parent 25895 03808d9a48b2
child 26799 0c349e16bbe8
--- a/hotspot/src/share/vm/oops/method.hpp	Wed Sep 03 14:43:49 2014 +0200
+++ b/hotspot/src/share/vm/oops/method.hpp	Wed Sep 03 19:13:18 2014 -0400
@@ -80,7 +80,8 @@
     _caller_sensitive = 1 << 1,
     _force_inline     = 1 << 2,
     _dont_inline      = 1 << 3,
-    _hidden           = 1 << 4
+    _hidden           = 1 << 4,
+    _running_emcp     = 1 << 5
   };
   u1 _flags;
 
@@ -688,6 +689,21 @@
   void set_is_obsolete()                            { _access_flags.set_is_obsolete(); }
   bool is_deleted() const                           { return access_flags().is_deleted(); }
   void set_is_deleted()                             { _access_flags.set_is_deleted(); }
+
+  bool is_running_emcp() const {
+    // EMCP methods are old but not obsolete or deleted. Equivalent
+    // Modulo Constant Pool means the method is equivalent except
+    // the constant pool and instructions that access the constant
+    // pool might be different.
+    // If a breakpoint is set in a redefined method, its EMCP methods that are
+    // still running must have a breakpoint also.
+    return (_flags & _running_emcp) != 0;
+  }
+
+  void set_running_emcp(bool x) {
+    _flags = x ? (_flags | _running_emcp) : (_flags & ~_running_emcp);
+  }
+
   bool on_stack() const                             { return access_flags().on_stack(); }
   void set_on_stack(const bool value);