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