< prev index next >

src/hotspot/share/code/nmethod.hpp

Print this page

        

@@ -110,10 +110,16 @@
   // pc during a deopt.
   int _orig_pc_offset;
 
   int _compile_id;                           // which compilation made this nmethod
   int _comp_level;                           // compilation level
+  int _nr_oops;
+ public:
+  int nr_oops() const { return _nr_oops; }
+  void verify_nr_oops();
+  int count_oops();
+ private:
 
   // protected by CodeCache_lock
   bool _has_flushed_dependencies;            // Used for maintenance of dependencies (CodeCache_lock)
 
   // used by jvmti to track if an unload event has been posted for this nmethod.

@@ -433,10 +439,12 @@
   address  osr_entry() const                      { assert(is_osr_method(), "wrong kind of nmethod"); return _osr_entry_point; }
   void  invalidate_osr_method();
   nmethod* osr_link() const                       { return _osr_link; }
   void     set_osr_link(nmethod *n)               { _osr_link = n; }
 
+  void set_immediate_oops_patched(int nr)         { _nr_oops += nr; }
+
   // Verify calls to dead methods have been cleaned.
   void verify_clean_inline_caches();
 
   // unlink and deallocate this nmethod
   // Only NMethodSweeper class is expected to use this. NMethodSweeper is not

@@ -473,32 +481,29 @@
     return jvmci_data_size() == 0 ? NULL : (JVMCINMethodData*) jvmci_data_begin();
   }
 #endif
 
  public:
-  void oops_do(OopClosure* f) { oops_do(f, false); }
-  void oops_do(OopClosure* f, bool allow_dead);
+  void oops_do_keepalive(OopClosure* f, bool keepalive) { oops_do(f, false, false, keepalive); }
+  void oops_do(OopClosure* f) { oops_do(f, false, false); }
+  void oops_do(OopClosure* f, bool allow_dead, bool allow_null = false, bool shadow_is_strong = false);
 
   bool test_set_oops_do_mark();
   static void oops_do_marking_prologue();
   static void oops_do_marking_epilogue();
   static bool oops_do_marking_is_active() { return _oops_do_mark_nmethods != NULL; }
   bool test_oops_do_mark() { return _oops_do_mark_link != NULL; }
 
  private:
   ScopeDesc* scope_desc_in(address begin, address end);
 
-  address* orig_pc_addr(const frame* fr);
-
  public:
   // copying of debugging information
   void copy_scopes_pcs(PcDesc* pcs, int count);
   void copy_scopes_data(address buffer, int size);
 
-  // Accessor/mutator for the original pc of a frame before a frame was deopted.
-  address get_original_pc(const frame* fr) { return *orig_pc_addr(fr); }
-  void    set_original_pc(const frame* fr, address pc) { *orig_pc_addr(fr) = pc; }
+  int orig_pc_offset() { return _orig_pc_offset; }
 
   // jvmti support:
   void post_compiled_method_load_event();
   jmethodID get_and_cache_jmethod_id();
 
< prev index next >