Skip to content

Commit cb1c736

Browse files
committed
8344363: FullGCForwarding::initialize_flags is called after ObjLayout::initialize
Reviewed-by: stefank, shade, ayang
1 parent c6b14c6 commit cb1c736

11 files changed

+23
-25
lines changed

src/hotspot/share/gc/g1/g1Arguments.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,7 @@ void G1Arguments::initialize() {
244244
if (max_parallel_refinement_threads > UINT_MAX / divisor) {
245245
vm_exit_during_initialization("Too large parallelism for remembered sets.");
246246
}
247-
}
248247

249-
void G1Arguments::initialize_heap_flags_and_sizes() {
250-
GCArguments::initialize_heap_flags_and_sizes();
251248
FullGCForwarding::initialize_flags(heap_reserved_size_bytes());
252249
}
253250

src/hotspot/share/gc/g1/g1Arguments.hpp

-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ class G1Arguments : public GCArguments {
3939
static void parse_verification_type(const char* type);
4040

4141
virtual void initialize_alignments();
42-
virtual void initialize_heap_flags_and_sizes();
4342

4443
virtual void initialize();
4544
virtual size_t conservative_max_heap_alignment();

src/hotspot/share/gc/parallel/parallelArguments.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ void ParallelArguments::initialize() {
8383
if (FLAG_IS_DEFAULT(ParallelRefProcEnabled) && ParallelGCThreads > 1) {
8484
FLAG_SET_DEFAULT(ParallelRefProcEnabled, true);
8585
}
86+
87+
FullGCForwarding::initialize_flags(heap_reserved_size_bytes());
8688
}
8789

8890
// The alignment used for boundary between young gen and old gen
@@ -128,7 +130,6 @@ void ParallelArguments::initialize_heap_flags_and_sizes() {
128130
// Redo everything from the start
129131
initialize_heap_flags_and_sizes_one_pass();
130132
}
131-
FullGCForwarding::initialize_flags(heap_reserved_size_bytes());
132133
}
133134

134135
size_t ParallelArguments::heap_reserved_size_bytes() {

src/hotspot/share/gc/serial/serialArguments.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@
2424

2525
#include "precompiled.hpp"
2626
#include "gc/shared/fullGCForwarding.hpp"
27-
#include "gc/shared/genArguments.hpp"
27+
#include "gc/shared/gcArguments.hpp"
2828
#include "gc/serial/serialArguments.hpp"
2929
#include "gc/serial/serialHeap.hpp"
3030

31-
void SerialArguments::initialize_heap_flags_and_sizes() {
32-
GenArguments::initialize_heap_flags_and_sizes();
31+
void SerialArguments::initialize() {
32+
GCArguments::initialize();
3333
FullGCForwarding::initialize_flags(MaxHeapSize);
3434
}
3535

src/hotspot/share/gc/serial/serialArguments.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ class CollectedHeap;
3131

3232
class SerialArguments : public GenArguments {
3333
private:
34+
virtual void initialize();
3435
virtual CollectedHeap* create_heap();
35-
virtual void initialize_heap_flags_and_sizes();
3636
};
3737

3838
#endif // SHARE_GC_SERIAL_SERIALARGUMENTS_HPP

src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp

+2-5
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ void ShenandoahArguments::initialize() {
176176
if (FLAG_IS_DEFAULT(TLABAllocationWeight)) {
177177
FLAG_SET_DEFAULT(TLABAllocationWeight, 90);
178178
}
179+
180+
FullGCForwarding::initialize_flags(MaxHeapSize);
179181
}
180182

181183
size_t ShenandoahArguments::conservative_max_heap_alignment() {
@@ -199,11 +201,6 @@ void ShenandoahArguments::initialize_alignments() {
199201
HeapAlignment = align;
200202
}
201203

202-
void ShenandoahArguments::initialize_heap_flags_and_sizes() {
203-
GCArguments::initialize_heap_flags_and_sizes();
204-
FullGCForwarding::initialize_flags(MaxHeapSize);
205-
}
206-
207204
CollectedHeap* ShenandoahArguments::create_heap() {
208205
return new ShenandoahHeap(new ShenandoahCollectorPolicy());
209206
}

src/hotspot/share/gc/shenandoah/shenandoahArguments.hpp

-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ class ShenandoahArguments : public GCArguments {
3535

3636
virtual void initialize();
3737
virtual size_t conservative_max_heap_alignment();
38-
virtual void initialize_heap_flags_and_sizes();
3938
virtual CollectedHeap* create_heap();
4039
};
4140

src/hotspot/share/memory/universe.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
#include "oops/instanceMirrorKlass.hpp"
6363
#include "oops/klass.inline.hpp"
6464
#include "oops/objArrayOop.inline.hpp"
65+
#include "oops/objLayout.hpp"
6566
#include "oops/oop.inline.hpp"
6667
#include "oops/oopHandle.inline.hpp"
6768
#include "oops/typeArrayKlass.hpp"
@@ -868,6 +869,8 @@ jint universe_init() {
868869
// Initialize CPUTimeCounters object, which must be done before creation of the heap.
869870
CPUTimeCounters::initialize();
870871

872+
ObjLayout::initialize();
873+
871874
#ifdef _LP64
872875
MetaspaceShared::adjust_heap_sizes_for_dumping();
873876
#endif // _LP64

src/hotspot/share/runtime/arguments.cpp

+11-7
Original file line numberDiff line numberDiff line change
@@ -3654,33 +3654,35 @@ jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
36543654
Arguments::print_on(&st);
36553655
}
36563656

3657+
return JNI_OK;
3658+
}
3659+
3660+
void Arguments::set_compact_headers_flags() {
36573661
#ifdef _LP64
36583662
if (UseCompactObjectHeaders && FLAG_IS_CMDLINE(UseCompressedClassPointers) && !UseCompressedClassPointers) {
36593663
warning("Compact object headers require compressed class pointers. Disabling compact object headers.");
36603664
FLAG_SET_DEFAULT(UseCompactObjectHeaders, false);
36613665
}
3662-
if (UseCompactObjectHeaders && LockingMode != LM_LIGHTWEIGHT) {
3663-
FLAG_SET_DEFAULT(LockingMode, LM_LIGHTWEIGHT);
3664-
}
36653666
if (UseCompactObjectHeaders && !UseObjectMonitorTable) {
36663667
// If UseCompactObjectHeaders is on the command line, turn on UseObjectMonitorTable.
36673668
if (FLAG_IS_CMDLINE(UseCompactObjectHeaders)) {
36683669
FLAG_SET_DEFAULT(UseObjectMonitorTable, true);
36693670

3670-
// If UseObjectMonitorTable is on the command line, turn off UseCompactObjectHeaders.
3671+
// If UseObjectMonitorTable is on the command line, turn off UseCompactObjectHeaders.
36713672
} else if (FLAG_IS_CMDLINE(UseObjectMonitorTable)) {
36723673
FLAG_SET_DEFAULT(UseCompactObjectHeaders, false);
3673-
// If neither on the command line, the defaults are incompatible, but turn on UseObjectMonitorTable.
3674+
// If neither on the command line, the defaults are incompatible, but turn on UseObjectMonitorTable.
36743675
} else {
36753676
FLAG_SET_DEFAULT(UseObjectMonitorTable, true);
36763677
}
36773678
}
3679+
if (UseCompactObjectHeaders && LockingMode != LM_LIGHTWEIGHT) {
3680+
FLAG_SET_DEFAULT(LockingMode, LM_LIGHTWEIGHT);
3681+
}
36783682
if (UseCompactObjectHeaders && !UseCompressedClassPointers) {
36793683
FLAG_SET_DEFAULT(UseCompressedClassPointers, true);
36803684
}
36813685
#endif
3682-
3683-
return JNI_OK;
36843686
}
36853687

36863688
jint Arguments::apply_ergo() {
@@ -3693,6 +3695,8 @@ jint Arguments::apply_ergo() {
36933695

36943696
GCConfig::arguments()->initialize();
36953697

3698+
set_compact_headers_flags();
3699+
36963700
if (UseCompressedClassPointers) {
36973701
CompressedKlassPointers::pre_initialize();
36983702
}

src/hotspot/share/runtime/arguments.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ class Arguments : AllStatic {
264264
static void set_conservative_max_heap_alignment();
265265
static void set_use_compressed_oops();
266266
static jint set_ergonomics_flags();
267+
static void set_compact_headers_flags();
267268
// Limits the given heap size by the maximum amount of virtual
268269
// memory this process is currently allowed to use. It also takes
269270
// the virtual-to-physical ratio of the current GC into account.

src/hotspot/share/runtime/threads.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -497,9 +497,6 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
497497
// Timing (must come after argument parsing)
498498
TraceTime timer("Create VM", TRACETIME_LOG(Info, startuptime));
499499

500-
// Initialize object layout after parsing the args
501-
ObjLayout::initialize();
502-
503500
// Initialize the os module after parsing the args
504501
jint os_init_2_result = os::init_2();
505502
if (os_init_2_result != JNI_OK) return os_init_2_result;

0 commit comments

Comments
 (0)