285
286
287 typedef LinkedListIterator<CommittedMemoryRegion> CommittedRegionIterator;
288
289 int compare_committed_region(const CommittedMemoryRegion&, const CommittedMemoryRegion&);
290 class ReservedMemoryRegion : public VirtualMemoryRegion {
291 private:
292 SortedLinkedList<CommittedMemoryRegion, compare_committed_region>
293 _committed_regions;
294
295 NativeCallStack _stack;
296 MEMFLAGS _flag;
297
298 public:
299 ReservedMemoryRegion(address base, size_t size, const NativeCallStack& stack,
300 MEMFLAGS flag = mtNone) :
301 VirtualMemoryRegion(base, size), _stack(stack), _flag(flag) { }
302
303
304 ReservedMemoryRegion(address base, size_t size) :
305 VirtualMemoryRegion(base, size), _stack(NativeCallStack::EMPTY_STACK), _flag(mtNone) { }
306
307 // Copy constructor
308 ReservedMemoryRegion(const ReservedMemoryRegion& rr) :
309 VirtualMemoryRegion(rr.base(), rr.size()) {
310 *this = rr;
311 }
312
313 inline void set_call_stack(const NativeCallStack& stack) { _stack = stack; }
314 inline const NativeCallStack* call_stack() const { return &_stack; }
315
316 void set_flag(MEMFLAGS flag);
317 inline MEMFLAGS flag() const { return _flag; }
318
319 inline int compare(const ReservedMemoryRegion& rgn) const {
320 if (overlap_region(rgn.base(), rgn.size())) {
321 return 0;
322 } else {
323 if (base() == rgn.base()) {
324 return 0;
325 } else if (base() > rgn.base()) {
|
285
286
287 typedef LinkedListIterator<CommittedMemoryRegion> CommittedRegionIterator;
288
289 int compare_committed_region(const CommittedMemoryRegion&, const CommittedMemoryRegion&);
290 class ReservedMemoryRegion : public VirtualMemoryRegion {
291 private:
292 SortedLinkedList<CommittedMemoryRegion, compare_committed_region>
293 _committed_regions;
294
295 NativeCallStack _stack;
296 MEMFLAGS _flag;
297
298 public:
299 ReservedMemoryRegion(address base, size_t size, const NativeCallStack& stack,
300 MEMFLAGS flag = mtNone) :
301 VirtualMemoryRegion(base, size), _stack(stack), _flag(flag) { }
302
303
304 ReservedMemoryRegion(address base, size_t size) :
305 VirtualMemoryRegion(base, size), _stack(NativeCallStack::empty_stack()), _flag(mtNone) { }
306
307 // Copy constructor
308 ReservedMemoryRegion(const ReservedMemoryRegion& rr) :
309 VirtualMemoryRegion(rr.base(), rr.size()) {
310 *this = rr;
311 }
312
313 inline void set_call_stack(const NativeCallStack& stack) { _stack = stack; }
314 inline const NativeCallStack* call_stack() const { return &_stack; }
315
316 void set_flag(MEMFLAGS flag);
317 inline MEMFLAGS flag() const { return _flag; }
318
319 inline int compare(const ReservedMemoryRegion& rgn) const {
320 if (overlap_region(rgn.base(), rgn.size())) {
321 return 0;
322 } else {
323 if (base() == rgn.base()) {
324 return 0;
325 } else if (base() > rgn.base()) {
|