< prev index next >

src/hotspot/share/code/nmethod.hpp

Print this page

        

@@ -24,10 +24,11 @@
 
 #ifndef SHARE_CODE_NMETHOD_HPP
 #define SHARE_CODE_NMETHOD_HPP
 
 #include "code/compiledMethod.hpp"
+#include "compiler/compilerDefinitions.hpp"
 
 class DepChange;
 class DirectiveSet;
 class DebugInformationRecorder;
 

@@ -80,10 +81,13 @@
   nmethod*        volatile _oops_do_mark_link;
 
   // offsets for entry points
   address _entry_point;                      // entry point with class check
   address _verified_entry_point;             // entry point without class check
+  address _value_entry_point;                // value type entry point (unpack all value args) with class check
+  address _verified_value_entry_point;       // value type entry point (unpack all value args) without class check
+  address _verified_value_ro_entry_point;    // value type entry point (unpack receiver only) without class check
   address _osr_entry_point;                  // entry point for on stack replacement
 
   // Offsets for different nmethod parts
   int  _exception_offset;
   // Offset of the unwind handler if it exists

@@ -331,12 +335,15 @@
   bool metadata_contains     (Metadata** addr) const   { return metadata_begin     () <= addr && addr < metadata_end     (); }
   bool scopes_data_contains  (address addr) const { return scopes_data_begin  () <= addr && addr < scopes_data_end  (); }
   bool scopes_pcs_contains   (PcDesc* addr) const { return scopes_pcs_begin   () <= addr && addr < scopes_pcs_end   (); }
 
   // entry points
-  address entry_point() const                     { return _entry_point;             } // normal entry point
-  address verified_entry_point() const            { return _verified_entry_point;    } // if klass is correct
+  address entry_point() const                     { return _entry_point;             }       // normal entry point
+  address verified_entry_point() const            { return _verified_entry_point;    }       // normal entry point without class check
+  address value_entry_point() const               { return _value_entry_point; }             // value type entry point (unpack all value args)
+  address verified_value_entry_point() const      { return _verified_value_entry_point; }    // value type entry point (unpack all value args) without class check
+  address verified_value_ro_entry_point() const   { return _verified_value_ro_entry_point; } // value type entry point (only unpack receiver) without class check
 
   // flag accessing and manipulation
   bool  is_not_installed() const                  { return _state == not_installed; }
   bool  is_in_use() const                         { return _state <= in_use; }
   bool  is_alive() const                          { return _state < zombie; }

@@ -384,11 +391,10 @@
     assert(!has_flushed_dependencies(), "should only happen once");
     _has_flushed_dependencies = 1;
   }
 
   int   comp_level() const                        { return _comp_level; }
-
   void unlink_from_method();
 
   // Support for oops in scopes and relocs:
   // Note: index 0 is reserved for null.
   oop   oop_at(int index) const;
< prev index next >