519 // generation's spaces were compacted, invalidating the card table.] 520 virtual void invalidate_remembered_set() { } 521 522 // Block abstraction. 523 524 // Returns the address of the start of the "block" that contains the 525 // address "addr". We say "blocks" instead of "object" since some heaps 526 // may not pack objects densely; a chunk may either be an object or a 527 // non-object. 528 virtual HeapWord* block_start(const void* addr) const; 529 530 // Requires "addr" to be the start of a chunk, and returns its size. 531 // "addr + size" is required to be the start of a new chunk, or the end 532 // of the active area of the heap. 533 virtual size_t block_size(const HeapWord* addr) const ; 534 535 // Requires "addr" to be the start of a block, and returns "TRUE" iff 536 // the block is an object. 537 virtual bool block_is_obj(const HeapWord* addr) const; 538 539 540 // PrintGC, PrintGCDetails support 541 void print_heap_change(size_t prev_used) const; 542 543 // PrintHeapAtGC support 544 virtual void print() const; 545 virtual void print_on(outputStream* st) const; 546 547 virtual void verify() = 0; 548 549 struct StatRecord { 550 int invocations; 551 elapsedTimer accumulated_time; 552 StatRecord() : 553 invocations(0), 554 accumulated_time(elapsedTimer()) {} 555 }; 556 private: 557 StatRecord _stat_record; 558 public: 559 StatRecord* stat_record() { return &_stat_record; } 560 561 virtual void print_summary_info(); 562 virtual void print_summary_info_on(outputStream* st); 563 | 519 // generation's spaces were compacted, invalidating the card table.] 520 virtual void invalidate_remembered_set() { } 521 522 // Block abstraction. 523 524 // Returns the address of the start of the "block" that contains the 525 // address "addr". We say "blocks" instead of "object" since some heaps 526 // may not pack objects densely; a chunk may either be an object or a 527 // non-object. 528 virtual HeapWord* block_start(const void* addr) const; 529 530 // Requires "addr" to be the start of a chunk, and returns its size. 531 // "addr + size" is required to be the start of a new chunk, or the end 532 // of the active area of the heap. 533 virtual size_t block_size(const HeapWord* addr) const ; 534 535 // Requires "addr" to be the start of a block, and returns "TRUE" iff 536 // the block is an object. 537 virtual bool block_is_obj(const HeapWord* addr) const; 538 539 void print_heap_change(size_t prev_used) const; 540 541 virtual void print() const; 542 virtual void print_on(outputStream* st) const; 543 544 virtual void verify() = 0; 545 546 struct StatRecord { 547 int invocations; 548 elapsedTimer accumulated_time; 549 StatRecord() : 550 invocations(0), 551 accumulated_time(elapsedTimer()) {} 552 }; 553 private: 554 StatRecord _stat_record; 555 public: 556 StatRecord* stat_record() { return &_stat_record; } 557 558 virtual void print_summary_info(); 559 virtual void print_summary_info_on(outputStream* st); 560 |