< prev index next >

src/share/vm/asm/codeBuffer.hpp

Print this page
rev 9032 : 8139041: Redundant DMB instructions
Summary: merge consecutive DMB intstructions
Reviewd-by: kvn

@@ -373,10 +373,14 @@
   OopRecorder* _oop_recorder;
   CodeStrings  _code_strings;
   OopRecorder  _default_oop_recorder;  // override with initialize_oop_recorder
   Arena*       _overflow_arena;
 
+#ifdef AARCH64
+  address      _last_membar;     // used to merge consecutive memory barriers
+#endif
+
   address      _decode_begin;   // start address for decode
   address      decode_begin();
 
   void initialize_misc(const char * name) {
     // all pointers other than code_start/end and those inside the sections

@@ -386,10 +390,13 @@
     _blob            = NULL;
     _oop_recorder    = NULL;
     _decode_begin    = NULL;
     _overflow_arena  = NULL;
     _code_strings    = CodeStrings();
+#ifdef AARCH64
+    _last_membar     = NULL;
+#endif
   }
 
   void initialize(address code_start, csize_t code_size) {
     _consts.initialize_outer(this,  SECT_CONSTS);
     _insts.initialize_outer(this,   SECT_INSTS);

@@ -574,10 +581,16 @@
   void initialize_oop_recorder(OopRecorder* r);
 
   OopRecorder* oop_recorder() const   { return _oop_recorder; }
   CodeStrings& strings()              { return _code_strings; }
 
+#ifdef AARCH64
+  address last_membar() const { return _last_membar; }
+  void set_last_membar(address a) { _last_membar = a; }
+  void clear_last_membar() { set_last_membar(NULL); }
+#endif
+
   void free_strings() {
     if (!_code_strings.is_null()) {
       _code_strings.free(); // sets _strings Null as a side-effect.
     }
   }
< prev index next >