comparison src/share/vm/memory/metaspaceShared.cpp @ 6882:716c64bda5ba

7199092: NMT: NMT needs to deal overlapped virtual memory ranges Summary: Enhanced virtual memory tracking to track committed regions as well as reserved regions, so NMT now can generate virtual memory map. Reviewed-by: acorn, coleenp
author zgu
date Fri, 19 Oct 2012 21:40:07 -0400
parents fb19af007ffc
children 070d523b96a7
comparison
equal deleted inserted replaced
6879:8ebcedb7604d 6882:716c64bda5ba
661 // Return true if given address is in the mapped shared space. 661 // Return true if given address is in the mapped shared space.
662 bool MetaspaceShared::is_in_shared_space(const void* p) { 662 bool MetaspaceShared::is_in_shared_space(const void* p) {
663 if (_ro_base == NULL || _rw_base == NULL) { 663 if (_ro_base == NULL || _rw_base == NULL) {
664 return false; 664 return false;
665 } else { 665 } else {
666 return ((p > _ro_base && p < (_ro_base + SharedReadOnlySize)) || 666 return ((p >= _ro_base && p < (_ro_base + SharedReadOnlySize)) ||
667 (p > _rw_base && p < (_rw_base + SharedReadWriteSize))); 667 (p >= _rw_base && p < (_rw_base + SharedReadWriteSize)));
668 } 668 }
669 } 669 }
670 670
671 void MetaspaceShared::print_shared_spaces() { 671 void MetaspaceShared::print_shared_spaces() {
672 gclog_or_tty->print_cr("Shared Spaces:"); 672 gclog_or_tty->print_cr("Shared Spaces:");
690 size_t image_alignment = mapinfo->alignment(); 690 size_t image_alignment = mapinfo->alignment();
691 691
692 // Map in the shared memory and then map the regions on top of it 692 // Map in the shared memory and then map the regions on top of it
693 ReservedSpace shared_rs = mapinfo->reserve_shared_memory(); 693 ReservedSpace shared_rs = mapinfo->reserve_shared_memory();
694 if (!shared_rs.is_reserved()) return false; 694 if (!shared_rs.is_reserved()) return false;
695
696 // Split reserved memory into pieces (windows needs this)
697 ReservedSpace ro_rs = shared_rs.first_part(SharedReadOnlySize);
698 ReservedSpace tmp_rs1 = shared_rs.last_part(SharedReadOnlySize);
699 ReservedSpace rw_rs = tmp_rs1.first_part(SharedReadWriteSize);
700 ReservedSpace tmp_rs2 = tmp_rs1.last_part(SharedReadWriteSize);
701 ReservedSpace md_rs = tmp_rs2.first_part(SharedMiscDataSize);
702 ReservedSpace mc_rs = tmp_rs2.last_part(SharedMiscDataSize);
703 695
704 // Map each shared region 696 // Map each shared region
705 if ((_ro_base = mapinfo->map_region(ro)) != NULL && 697 if ((_ro_base = mapinfo->map_region(ro)) != NULL &&
706 (_rw_base = mapinfo->map_region(rw)) != NULL && 698 (_rw_base = mapinfo->map_region(rw)) != NULL &&
707 (_md_base = mapinfo->map_region(md)) != NULL && 699 (_md_base = mapinfo->map_region(md)) != NULL &&