< prev index next >

src/hotspot/share/oops/methodData.hpp

Print this page

1993 class MethodData : public Metadata {
1994   friend class VMStructs;
1995   friend class JVMCIVMStructs;
1996   friend class ProfileData;
1997   friend class TypeEntriesAtCall;
1998   friend class ciMethodData;
1999   friend class VM_ReinitializeMDO;
2000 
2001   // If you add a new field that points to any metaspace object, you
2002   // must add this field to MethodData::metaspace_pointers_do().
2003 
2004   // Back pointer to the Method*
2005   Method* _method;
2006 
2007   // Size of this oop in bytes
2008   int _size;
2009 
2010   // Cached hint for bci_to_dp and bci_to_data
2011   int _hint_di;
2012 
2013   Mutex* volatile _extra_data_lock;
2014 
2015   MethodData(const methodHandle& method);
2016 
2017   void initialize();
2018 
2019 public:
2020   MethodData();
2021 
2022   static MethodData* allocate(ClassLoaderData* loader_data, const methodHandle& method, TRAPS);
2023 
2024   virtual bool is_methodData() const { return true; }
2025 
2026   // Safely reinitialize the data in the MDO.  This is intended as a testing facility as the
2027   // reinitialization is performed at a safepoint so it's isn't cheap and it doesn't ensure that all
2028   // readers will see consistent profile data.
2029   void reinitialize();
2030 
2031   // Whole-method sticky bits and flags
2032   enum {
2033     _trap_hist_limit    = Deoptimization::Reason_TRAP_HISTORY_LENGTH,

1993 class MethodData : public Metadata {
1994   friend class VMStructs;
1995   friend class JVMCIVMStructs;
1996   friend class ProfileData;
1997   friend class TypeEntriesAtCall;
1998   friend class ciMethodData;
1999   friend class VM_ReinitializeMDO;
2000 
2001   // If you add a new field that points to any metaspace object, you
2002   // must add this field to MethodData::metaspace_pointers_do().
2003 
2004   // Back pointer to the Method*
2005   Method* _method;
2006 
2007   // Size of this oop in bytes
2008   int _size;
2009 
2010   // Cached hint for bci_to_dp and bci_to_data
2011   int _hint_di;
2012 
2013   Mutex* volatile _extra_data_lock; // FIXME: CDS support
2014 
2015   MethodData(const methodHandle& method);
2016 
2017   void initialize();
2018 
2019 public:
2020   MethodData();
2021 
2022   static MethodData* allocate(ClassLoaderData* loader_data, const methodHandle& method, TRAPS);
2023 
2024   virtual bool is_methodData() const { return true; }
2025 
2026   // Safely reinitialize the data in the MDO.  This is intended as a testing facility as the
2027   // reinitialization is performed at a safepoint so it's isn't cheap and it doesn't ensure that all
2028   // readers will see consistent profile data.
2029   void reinitialize();
2030 
2031   // Whole-method sticky bits and flags
2032   enum {
2033     _trap_hist_limit    = Deoptimization::Reason_TRAP_HISTORY_LENGTH,
< prev index next >