495 bool do_unloading_scopes(BoolObjectClosure* is_alive, bool unloading_occurred);
496 // Unload a nmethod if the *root object is dead.
497 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
498 bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive, bool unloading_occurred);
499
500 public:
501 void oops_do(OopClosure* f) { oops_do(f, false); }
502 void oops_do(OopClosure* f, bool allow_zombie);
503 bool detect_scavenge_root_oops();
504 void verify_scavenge_root_oops() PRODUCT_RETURN;
505
506 bool test_set_oops_do_mark();
507 static void oops_do_marking_prologue();
508 static void oops_do_marking_epilogue();
509 static bool oops_do_marking_is_active() { return _oops_do_mark_nmethods != NULL; }
510 bool test_oops_do_mark() { return _oops_do_mark_link != NULL; }
511
512 private:
513 ScopeDesc* scope_desc_in(address begin, address end);
514
515 address* orig_pc_addr(const frame* fr) { return (address*) ((address)fr->unextended_sp() + _orig_pc_offset); }
516
517 public:
518 // copying of debugging information
519 void copy_scopes_pcs(PcDesc* pcs, int count);
520 void copy_scopes_data(address buffer, int size);
521
522 // Accessor/mutator for the original pc of a frame before a frame was deopted.
523 address get_original_pc(const frame* fr) { return *orig_pc_addr(fr); }
524 void set_original_pc(const frame* fr, address pc) { *orig_pc_addr(fr) = pc; }
525
526 // jvmti support:
527 void post_compiled_method_load_event();
528 jmethodID get_and_cache_jmethod_id();
529
530 // verify operations
531 void verify();
532 void verify_scopes();
533 void verify_interrupt_point(address interrupt_point);
534
535 // printing support
|
495 bool do_unloading_scopes(BoolObjectClosure* is_alive, bool unloading_occurred);
496 // Unload a nmethod if the *root object is dead.
497 bool can_unload(BoolObjectClosure* is_alive, oop* root, bool unloading_occurred);
498 bool unload_if_dead_at(RelocIterator *iter_at_oop, BoolObjectClosure* is_alive, bool unloading_occurred);
499
500 public:
501 void oops_do(OopClosure* f) { oops_do(f, false); }
502 void oops_do(OopClosure* f, bool allow_zombie);
503 bool detect_scavenge_root_oops();
504 void verify_scavenge_root_oops() PRODUCT_RETURN;
505
506 bool test_set_oops_do_mark();
507 static void oops_do_marking_prologue();
508 static void oops_do_marking_epilogue();
509 static bool oops_do_marking_is_active() { return _oops_do_mark_nmethods != NULL; }
510 bool test_oops_do_mark() { return _oops_do_mark_link != NULL; }
511
512 private:
513 ScopeDesc* scope_desc_in(address begin, address end);
514
515 address* orig_pc_addr(const frame* fr);
516
517 public:
518 // copying of debugging information
519 void copy_scopes_pcs(PcDesc* pcs, int count);
520 void copy_scopes_data(address buffer, int size);
521
522 // Accessor/mutator for the original pc of a frame before a frame was deopted.
523 address get_original_pc(const frame* fr) { return *orig_pc_addr(fr); }
524 void set_original_pc(const frame* fr, address pc) { *orig_pc_addr(fr) = pc; }
525
526 // jvmti support:
527 void post_compiled_method_load_event();
528 jmethodID get_and_cache_jmethod_id();
529
530 // verify operations
531 void verify();
532 void verify_scopes();
533 void verify_interrupt_point(address interrupt_point);
534
535 // printing support
|