hotspot/src/share/vm/asm/codeBuffer.hpp
changeset 33198 b37ad9fbf681
parent 33105 294e48b4f704
parent 33193 c7ffe5c06513
child 33593 60764a78fa5c
--- a/hotspot/src/share/vm/asm/codeBuffer.hpp	Thu Oct 15 13:28:22 2015 +0200
+++ b/hotspot/src/share/vm/asm/codeBuffer.hpp	Sat Oct 17 19:40:30 2015 -0400
@@ -375,6 +375,8 @@
   OopRecorder  _default_oop_recorder;  // override with initialize_oop_recorder
   Arena*       _overflow_arena;
 
+  address      _last_membar;     // used to merge consecutive memory barriers
+
   address      _decode_begin;   // start address for decode
   address      decode_begin();
 
@@ -388,6 +390,7 @@
     _decode_begin    = NULL;
     _overflow_arena  = NULL;
     _code_strings    = CodeStrings();
+    _last_membar     = NULL;
   }
 
   void initialize(address code_start, csize_t code_size) {
@@ -452,7 +455,6 @@
     initialize_misc(name);
   }
 
-
   // (4) code buffer allocating codeBlob memory for code & relocation
   // info.  The name must be something informative and code_size must
   // include both code and stubs sizes.
@@ -553,6 +555,8 @@
   // allocated size of all relocation data, including index, rounded up
   csize_t total_relocation_size() const;
 
+  csize_t copy_relocations_to(address buf, csize_t buf_limit, bool only_inst) const;
+
   // allocated size of any and all recorded oops
   csize_t total_oop_size() const {
     OopRecorder* recorder = oop_recorder();
@@ -576,6 +580,10 @@
   OopRecorder* oop_recorder() const   { return _oop_recorder; }
   CodeStrings& strings()              { return _code_strings; }
 
+  address last_membar() const { return _last_membar; }
+  void set_last_membar(address a) { _last_membar = a; }
+  void clear_last_membar() { set_last_membar(NULL); }
+
   void free_strings() {
     if (!_code_strings.is_null()) {
       _code_strings.free(); // sets _strings Null as a side-effect.