comparison src/share/vm/services/memPtr.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 33143ee07800
children 4102b59539ce
comparison
equal deleted inserted replaced
6879:8ebcedb7604d 6882:716c64bda5ba
38 assert(seq > 0, "counter overflow"); 38 assert(seq > 0, "counter overflow");
39 NOT_PRODUCT(_max_seq_number = (seq > _max_seq_number) ? seq : _max_seq_number;) 39 NOT_PRODUCT(_max_seq_number = (seq > _max_seq_number) ? seq : _max_seq_number;)
40 return seq; 40 return seq;
41 } 41 }
42 42
43
44
45 bool VMMemRegion::contains(const VMMemRegion* mr) const {
46 assert(base() != 0, "Sanity check");
47 assert(size() != 0 || committed_size() != 0,
48 "Sanity check");
49 address base_addr = base();
50 address end_addr = base_addr +
51 (is_reserve_record()? reserved_size(): committed_size());
52 if (mr->is_reserve_record()) {
53 if (mr->base() == base_addr && mr->size() == size()) {
54 // the same range
55 return true;
56 }
57 return false;
58 } else if (mr->is_commit_record() || mr->is_uncommit_record()) {
59 assert(mr->base() != 0 && mr->committed_size() > 0,
60 "bad record");
61 return (mr->base() >= base_addr &&
62 (mr->base() + mr->committed_size()) <= end_addr);
63 } else if (mr->is_type_tagging_record()) {
64 assert(mr->base() != NULL, "Sanity check");
65 return (mr->base() >= base_addr && mr->base() < end_addr);
66 } else if (mr->is_release_record()) {
67 assert(mr->base() != 0 && mr->size() > 0,
68 "bad record");
69 return (mr->base() == base_addr && mr->size() == size());
70 } else {
71 ShouldNotReachHere();
72 return false;
73 }
74 }