src/share/vm/oops/methodData.hpp

changeset 9183
f95c67788f18
parent 7365
600c44255e5f
child 9203
53eec13fbaa5
equal deleted inserted replaced
9182:0f31f18d2241 9183:f95c67788f18
249 249
250 ProfileData* data_in(); 250 ProfileData* data_in();
251 251
252 // GC support 252 // GC support
253 void clean_weak_klass_links(BoolObjectClosure* cl); 253 void clean_weak_klass_links(BoolObjectClosure* cl);
254
255 // Redefinition support
256 void clean_weak_method_links();
254 }; 257 };
255 258
256 259
257 // ProfileData class hierarchy 260 // ProfileData class hierarchy
258 class ProfileData; 261 class ProfileData;
505 // Subclass specific initialization 508 // Subclass specific initialization
506 virtual void post_initialize(BytecodeStream* stream, MethodData* mdo) {} 509 virtual void post_initialize(BytecodeStream* stream, MethodData* mdo) {}
507 510
508 // GC support 511 // GC support
509 virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {} 512 virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {}
513
514 // Redefinition support
515 virtual void clean_weak_method_links() {}
510 516
511 // CI translation: ProfileData can represent both MethodDataOop data 517 // CI translation: ProfileData can represent both MethodDataOop data
512 // as well as CIMethodData data. This function is provided for translating 518 // as well as CIMethodData data. This function is provided for translating
513 // an oop in a ProfileData to the ci equivalent. Generally speaking, 519 // an oop in a ProfileData to the ci equivalent. Generally speaking,
514 // most ProfileData don't require any translation, so we provide the null 520 // most ProfileData don't require any translation, so we provide the null
2028 // in certain ProfileData objects that indicate the amount the mdp must be 2034 // in certain ProfileData objects that indicate the amount the mdp must be
2029 // adjusted in the event of a change in control flow. 2035 // adjusted in the event of a change in control flow.
2030 // 2036 //
2031 2037
2032 CC_INTERP_ONLY(class BytecodeInterpreter;) 2038 CC_INTERP_ONLY(class BytecodeInterpreter;)
2039 class CleanExtraDataClosure;
2033 2040
2034 class MethodData : public Metadata { 2041 class MethodData : public Metadata {
2035 friend class VMStructs; 2042 friend class VMStructs;
2036 CC_INTERP_ONLY(friend class BytecodeInterpreter;) 2043 CC_INTERP_ONLY(friend class BytecodeInterpreter;)
2037 private: 2044 private:
2181 static bool profile_return_for_invoke(methodHandle m, int bci); 2188 static bool profile_return_for_invoke(methodHandle m, int bci);
2182 static int profile_parameters_flag(); 2189 static int profile_parameters_flag();
2183 static bool profile_parameters_jsr292_only(); 2190 static bool profile_parameters_jsr292_only();
2184 static bool profile_all_parameters(); 2191 static bool profile_all_parameters();
2185 2192
2186 void clean_extra_data(BoolObjectClosure* is_alive); 2193 void clean_extra_data(CleanExtraDataClosure* cl);
2187 void clean_extra_data_helper(DataLayout* dp, int shift, bool reset = false); 2194 void clean_extra_data_helper(DataLayout* dp, int shift, bool reset = false);
2188 void verify_extra_data_clean(BoolObjectClosure* is_alive); 2195 void verify_extra_data_clean(CleanExtraDataClosure* cl);
2189 2196
2190 public: 2197 public:
2191 static int header_size() { 2198 static int header_size() {
2192 return sizeof(MethodData)/wordSize; 2199 return sizeof(MethodData)/wordSize;
2193 } 2200 }
2475 static bool profile_return(); 2482 static bool profile_return();
2476 static bool profile_parameters(); 2483 static bool profile_parameters();
2477 static bool profile_return_jsr292_only(); 2484 static bool profile_return_jsr292_only();
2478 2485
2479 void clean_method_data(BoolObjectClosure* is_alive); 2486 void clean_method_data(BoolObjectClosure* is_alive);
2487
2488 void clean_weak_method_links();
2480 }; 2489 };
2481 2490
2482 #endif // SHARE_VM_OOPS_METHODDATAOOP_HPP 2491 #endif // SHARE_VM_OOPS_METHODDATAOOP_HPP

mercurial