Mercurial > hg > truffle
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 } |