8238999: Remove MemRegion custom new/delete operator overloads

Reviewed-by: kbarrett, jiangli, iklam
This commit is contained in:
Thomas Schatzl 2020-02-18 10:59:38 +01:00
parent 301a2e19c3
commit 28c630046e
5 changed files with 18 additions and 48 deletions

View File

@ -261,20 +261,15 @@ void G1CMMarkStack::set_empty() {
} }
G1CMRootMemRegions::G1CMRootMemRegions(uint const max_regions) : G1CMRootMemRegions::G1CMRootMemRegions(uint const max_regions) :
_root_regions(NULL), _root_regions(MemRegion::create_array(max_regions, mtGC)),
_max_regions(max_regions), _max_regions(max_regions),
_num_root_regions(0), _num_root_regions(0),
_claimed_root_regions(0), _claimed_root_regions(0),
_scan_in_progress(false), _scan_in_progress(false),
_should_abort(false) { _should_abort(false) { }
_root_regions = new MemRegion[_max_regions];
if (_root_regions == NULL) {
vm_exit_during_initialization("Could not allocate root MemRegion set.");
}
}
G1CMRootMemRegions::~G1CMRootMemRegions() { G1CMRootMemRegions::~G1CMRootMemRegions() {
delete[] _root_regions; FREE_C_HEAP_ARRAY(MemRegion, _root_regions);
} }
void G1CMRootMemRegions::reset() { void G1CMRootMemRegions::reset() {

View File

@ -51,30 +51,19 @@ CardTable::CardTable(MemRegion whole_heap, bool conc_scan) :
_byte_map(NULL), _byte_map(NULL),
_byte_map_base(NULL), _byte_map_base(NULL),
_cur_covered_regions(0), _cur_covered_regions(0),
_covered(NULL), _covered(MemRegion::create_array(_max_covered_regions, mtGC)),
_committed(NULL), _committed(MemRegion::create_array(_max_covered_regions, mtGC)),
_guard_region() _guard_region()
{ {
assert((uintptr_t(_whole_heap.start()) & (card_size - 1)) == 0, "heap must start at card boundary"); assert((uintptr_t(_whole_heap.start()) & (card_size - 1)) == 0, "heap must start at card boundary");
assert((uintptr_t(_whole_heap.end()) & (card_size - 1)) == 0, "heap must end at card boundary"); assert((uintptr_t(_whole_heap.end()) & (card_size - 1)) == 0, "heap must end at card boundary");
assert(card_size <= 512, "card_size must be less than 512"); // why? assert(card_size <= 512, "card_size must be less than 512"); // why?
_covered = new MemRegion[_max_covered_regions];
if (_covered == NULL) {
vm_exit_during_initialization("Could not allocate card table covered region set.");
}
} }
CardTable::~CardTable() { CardTable::~CardTable() {
if (_covered) { FREE_C_HEAP_ARRAY(MemRegion, _covered);
delete[] _covered; FREE_C_HEAP_ARRAY(MemRegion, _committed);
_covered = NULL;
}
if (_committed) {
delete[] _committed;
_committed = NULL;
}
} }
void CardTable::initialize() { void CardTable::initialize() {
@ -87,10 +76,6 @@ void CardTable::initialize() {
HeapWord* high_bound = _whole_heap.end(); HeapWord* high_bound = _whole_heap.end();
_cur_covered_regions = 0; _cur_covered_regions = 0;
_committed = new MemRegion[_max_covered_regions];
if (_committed == NULL) {
vm_exit_during_initialization("Could not allocate card table committed region set.");
}
const size_t rs_align = _page_size == (size_t) os::vm_page_size() ? 0 : const size_t rs_align = _page_size == (size_t) os::vm_page_size() ? 0 :
MAX2(_page_size, (size_t) os::vm_allocation_granularity()); MAX2(_page_size, (size_t) os::vm_allocation_granularity());

View File

@ -1747,7 +1747,7 @@ void FileMapInfo::map_heap_regions() {
bool FileMapInfo::map_heap_data(MemRegion **heap_mem, int first, bool FileMapInfo::map_heap_data(MemRegion **heap_mem, int first,
int max, int* num, bool is_open_archive) { int max, int* num, bool is_open_archive) {
MemRegion * regions = new MemRegion[max]; MemRegion* regions = MemRegion::create_array(max, mtInternal);
FileMapRegion* si; FileMapRegion* si;
int region_num = 0; int region_num = 0;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -102,19 +102,10 @@ MemRegion MemRegion::minus(const MemRegion mr2) const {
return MemRegion(); return MemRegion();
} }
void* MemRegion::operator new(size_t size) throw() { MemRegion* MemRegion::create_array(uint length, MEMFLAGS flags) {
return (address)AllocateHeap(size, mtGC, CURRENT_PC, MemRegion* result = NEW_C_HEAP_ARRAY(MemRegion, length, flags);
AllocFailStrategy::RETURN_NULL); for (uint i = 0; i < length; i++) {
} ::new (&result[i]) MemRegion();
}
void* MemRegion::operator new [](size_t size) throw() { return result;
return (address)AllocateHeap(size, mtGC, CURRENT_PC,
AllocFailStrategy::RETURN_NULL);
}
void MemRegion::operator delete(void* p) {
FreeHeap(p);
}
void MemRegion::operator delete [](void* p) {
FreeHeap(p);
} }

View File

@ -92,10 +92,9 @@ public:
size_t word_size() const { return _word_size; } size_t word_size() const { return _word_size; }
bool is_empty() const { return word_size() == 0; } bool is_empty() const { return word_size() == 0; }
void* operator new(size_t size) throw();
void* operator new [](size_t size) throw(); // Creates and initializes an array of MemRegions of the given length.
void operator delete(void* p); static MemRegion* create_array(uint length, MEMFLAGS flags);
void operator delete [](void* p);
}; };
// For iteration over MemRegion's. // For iteration over MemRegion's.