< prev index next >
src/hotspot/share/services/virtualMemoryTracker.hpp
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -208,10 +208,12 @@
return (addr == base() && sz == size());
}
inline bool overlap_region(address addr, size_t sz) const {
+ assert(sz > 0, "Invalid size");
+ assert(size() > 0, "Invalid size");
VirtualMemoryRegion rgn(addr, sz);
return contain_address(addr) ||
contain_address(addr + sz - 1) ||
rgn.contain_address(base()) ||
rgn.contain_address(end() - 1);
@@ -293,22 +295,18 @@
_committed_regions;
NativeCallStack _stack;
MEMFLAGS _flag;
- bool _all_committed;
-
public:
ReservedMemoryRegion(address base, size_t size, const NativeCallStack& stack,
MEMFLAGS flag = mtNone) :
- VirtualMemoryRegion(base, size), _stack(stack), _flag(flag),
- _all_committed(false) { }
+ VirtualMemoryRegion(base, size), _stack(stack), _flag(flag) { }
ReservedMemoryRegion(address base, size_t size) :
- VirtualMemoryRegion(base, size), _stack(NativeCallStack::EMPTY_STACK), _flag(mtNone),
- _all_committed(false) { }
+ VirtualMemoryRegion(base, size), _stack(NativeCallStack::EMPTY_STACK), _flag(mtNone) { }
// Copy constructor
ReservedMemoryRegion(const ReservedMemoryRegion& rr) :
VirtualMemoryRegion(rr.base(), rr.size()) {
*this = rr;
@@ -345,34 +343,28 @@
// move committed regions that higher than specified address to
// the new region
void move_committed_regions(address addr, ReservedMemoryRegion& rgn);
- inline bool all_committed() const { return _all_committed; }
- void set_all_committed(bool b);
-
CommittedRegionIterator iterate_committed_regions() const {
return CommittedRegionIterator(_committed_regions.head());
}
ReservedMemoryRegion& operator= (const ReservedMemoryRegion& other) {
set_base(other.base());
set_size(other.size());
_stack = *other.call_stack();
_flag = other.flag();
- _all_committed = other.all_committed();
- if (other.all_committed()) {
- set_all_committed(true);
- } else {
+
CommittedRegionIterator itr = other.iterate_committed_regions();
const CommittedMemoryRegion* rgn = itr.next();
while (rgn != NULL) {
_committed_regions.add(*rgn);
rgn = itr.next();
}
- }
+
return *this;
}
private:
// The committed region contains the uncommitted region, subtract the uncommitted
@@ -394,18 +386,19 @@
virtual bool do_allocation_site(const ReservedMemoryRegion* rgn) { return false; }
};
// Main class called from MemTracker to track virtual memory allocations, commits and releases.
class VirtualMemoryTracker : AllStatic {
+ friend class VirtualMemoryTrackerTest;
+
public:
static bool initialize(NMT_TrackingLevel level);
// Late phase initialization
static bool late_initialize(NMT_TrackingLevel level);
- static bool add_reserved_region (address base_addr, size_t size, const NativeCallStack& stack,
- MEMFLAGS flag = mtNone, bool all_committed = false);
+ static bool add_reserved_region (address base_addr, size_t size, const NativeCallStack& stack, MEMFLAGS flag = mtNone);
static bool add_committed_region (address base_addr, size_t size, const NativeCallStack& stack);
static bool remove_uncommitted_region (address base_addr, size_t size);
static bool remove_released_region (address base_addr, size_t size);
static void set_reserved_region_type (address addr, MEMFLAGS flag);
< prev index next >