8038636: speculative traps break when classes are redefined

Remove speculative traps that point to methods that are redefined

Reviewed-by: kvn, twisti
This commit is contained in:
Roland Westrelin 2014-04-08 09:51:25 +02:00
parent d7b640b3ce
commit 7da7a9c72a
5 changed files with 260 additions and 11 deletions

View file

@ -251,6 +251,9 @@ public:
// GC support
void clean_weak_klass_links(BoolObjectClosure* cl);
// Redefinition support
void clean_weak_method_links();
};
@ -506,6 +509,9 @@ public:
// GC support
virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {}
// Redefinition support
virtual void clean_weak_method_links() {}
// CI translation: ProfileData can represent both MethodDataOop data
// as well as CIMethodData data. This function is provided for translating
// an oop in a ProfileData to the ci equivalent. Generally speaking,
@ -1989,6 +1995,7 @@ public:
//
CC_INTERP_ONLY(class BytecodeInterpreter;)
class CleanExtraDataClosure;
class MethodData : public Metadata {
friend class VMStructs;
@ -2146,9 +2153,9 @@ private:
static bool profile_parameters_jsr292_only();
static bool profile_all_parameters();
void clean_extra_data(BoolObjectClosure* is_alive);
void clean_extra_data(CleanExtraDataClosure* cl);
void clean_extra_data_helper(DataLayout* dp, int shift, bool reset = false);
void verify_extra_data_clean(BoolObjectClosure* is_alive);
void verify_extra_data_clean(CleanExtraDataClosure* cl);
public:
static int header_size() {
@ -2440,6 +2447,8 @@ public:
static bool profile_return_jsr292_only();
void clean_method_data(BoolObjectClosure* is_alive);
void clean_weak_method_links();
};
#endif // SHARE_VM_OOPS_METHODDATAOOP_HPP