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 |