6863023: need non-perm oops in code cache for JSR 292

Make a special root-list for those few nmethods which might contain non-perm oops.

Reviewed-by: twisti, kvn, never, jmasa, ysr
This commit is contained in:
John R Rose 2009-09-15 21:53:47 -07:00
parent 1cf5b7ae11
commit e261aecad8
74 changed files with 979 additions and 279 deletions

View file

@ -384,16 +384,14 @@ class frame VALUE_OBJ_CLASS_SPEC {
void oops_interpreted_arguments_do(symbolHandle signature, bool is_static, OopClosure* f);
// Iteration of oops
void oops_do_internal(OopClosure* f, RegisterMap* map, bool use_interpreter_oop_map_cache);
void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
void oops_entry_do(OopClosure* f, const RegisterMap* map);
void oops_code_blob_do(OopClosure* f, const RegisterMap* map);
void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
int adjust_offset(methodOop method, int index); // helper for above fn
// Iteration of nmethods
void nmethods_code_blob_do();
public:
// Memory management
void oops_do(OopClosure* f, RegisterMap* map) { oops_do_internal(f, map, true); }
void nmethods_do();
void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
void nmethods_do(CodeBlobClosure* cf);
void gc_prologue();
void gc_epilogue();