!28 Update to 11.0.9+11 (GA)
From: @jvmboy Reviewed-by: @jdkboy Signed-off-by:
This commit is contained in:
commit
4010d243c2
@ -1,14 +1,5 @@
|
||||
commit 21a400b0cecd92cbaf446ac3581df4ff17b1fde1
|
||||
Date: Tue Sep 15 19:52:43 2020 +0800
|
||||
|
||||
8204947: Port ShenandoahTaskTerminator to mainline and make it default
|
||||
|
||||
Summary: <gc>: Improve gc performance, port ShenandoahTaskTerminator to mainline and make it default
|
||||
LLT: jtreg
|
||||
Bug url: https://bugs.openjdk.java.net/browse/JDK-8204947
|
||||
|
||||
diff --git a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp
|
||||
index c98691ea7..5fc5ee83e 100644
|
||||
index c98691e..5fc5ee8 100644
|
||||
--- a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp
|
||||
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp
|
||||
@@ -55,6 +55,7 @@
|
||||
@ -175,7 +166,7 @@ index c98691ea7..5fc5ee83e 100644
|
||||
};
|
||||
|
||||
diff --git a/src/hotspot/share/gc/cms/parNewGeneration.cpp b/src/hotspot/share/gc/cms/parNewGeneration.cpp
|
||||
index f6c55900f..0febc5292 100644
|
||||
index f6c5590..0febc52 100644
|
||||
--- a/src/hotspot/share/gc/cms/parNewGeneration.cpp
|
||||
+++ b/src/hotspot/share/gc/cms/parNewGeneration.cpp
|
||||
@@ -74,7 +74,7 @@ ParScanThreadState::ParScanThreadState(Space* to_space_,
|
||||
@ -250,7 +241,7 @@ index f6c55900f..0febc5292 100644
|
||||
*to(), *this, *_old_gen, *task_queues(),
|
||||
_overflow_stacks, _preserved_marks_set,
|
||||
diff --git a/src/hotspot/share/gc/cms/parNewGeneration.hpp b/src/hotspot/share/gc/cms/parNewGeneration.hpp
|
||||
index b3e7c5a7d..7bf37e535 100644
|
||||
index b3e7c5a..7bf37e5 100644
|
||||
--- a/src/hotspot/share/gc/cms/parNewGeneration.hpp
|
||||
+++ b/src/hotspot/share/gc/cms/parNewGeneration.hpp
|
||||
@@ -134,7 +134,7 @@ class ParScanThreadState {
|
||||
@ -263,7 +254,7 @@ index b3e7c5a7d..7bf37e535 100644
|
||||
public:
|
||||
AgeTable* age_table() {return &_ageTable;}
|
||||
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
|
||||
index a987377ae..130f8ec0a 100644
|
||||
index a987377..130f8ec 100644
|
||||
--- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
|
||||
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
|
||||
@@ -3241,7 +3241,7 @@ protected:
|
||||
@ -296,7 +287,7 @@ index a987377ae..130f8ec0a 100644
|
||||
_workers->run_task(&proc_task_proxy, ergo_workers);
|
||||
}
|
||||
diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
|
||||
index eff6b7b02..920f796b5 100644
|
||||
index eff6b7b..920f796 100644
|
||||
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
|
||||
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
|
||||
@@ -366,7 +366,7 @@ G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap* g1h,
|
||||
@ -318,7 +309,7 @@ index eff6b7b02..920f796b5 100644
|
||||
_second_overflow_barrier_sync.set_n_workers((int) active_tasks);
|
||||
}
|
||||
diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp b/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp
|
||||
index 6707537fd..dd253bbdf 100644
|
||||
index 6707537..dd253bb 100644
|
||||
--- a/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp
|
||||
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp
|
||||
@@ -322,8 +322,8 @@ class G1ConcurrentMark : public CHeapObj<mtGC> {
|
||||
@ -348,7 +339,7 @@ index 6707537fd..dd253bbdf 100644
|
||||
// Claims the next available region to be scanned by a marking
|
||||
// task/thread. It might return NULL if the next region is empty or
|
||||
diff --git a/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp b/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp
|
||||
index 34025dce0..d2c4b8d60 100644
|
||||
index 34025dc..d2c4b8d 100644
|
||||
--- a/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp
|
||||
+++ b/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp
|
||||
@@ -60,7 +60,7 @@ void G1FullGCMarkTask::work(uint worker_id) {
|
||||
@ -361,7 +352,7 @@ index 34025dce0..d2c4b8d60 100644
|
||||
// This is the point where the entire marking should have completed.
|
||||
assert(marker->oop_stack()->is_empty(), "Marking should have completed");
|
||||
diff --git a/src/hotspot/share/gc/g1/g1FullGCMarkTask.hpp b/src/hotspot/share/gc/g1/g1FullGCMarkTask.hpp
|
||||
index 8dfff0555..7223cee50 100644
|
||||
index 8dfff05..7223cee 100644
|
||||
--- a/src/hotspot/share/gc/g1/g1FullGCMarkTask.hpp
|
||||
+++ b/src/hotspot/share/gc/g1/g1FullGCMarkTask.hpp
|
||||
@@ -36,7 +36,7 @@
|
||||
@ -374,7 +365,7 @@ index 8dfff0555..7223cee50 100644
|
||||
public:
|
||||
G1FullGCMarkTask(G1FullCollector* collector);
|
||||
diff --git a/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp b/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp
|
||||
index 492c783b6..d4f06f56e 100644
|
||||
index 492c783..d4f06f5 100644
|
||||
--- a/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp
|
||||
+++ b/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp
|
||||
@@ -32,6 +32,7 @@
|
||||
@ -399,7 +390,7 @@ index 492c783b6..d4f06f56e 100644
|
||||
public:
|
||||
G1RefProcTaskProxy(ProcessTask& proc_task,
|
||||
diff --git a/src/hotspot/share/gc/parallel/pcTasks.cpp b/src/hotspot/share/gc/parallel/pcTasks.cpp
|
||||
index 57ff23550..30a0f26bc 100644
|
||||
index 57ff235..30a0f26 100644
|
||||
--- a/src/hotspot/share/gc/parallel/pcTasks.cpp
|
||||
+++ b/src/hotspot/share/gc/parallel/pcTasks.cpp
|
||||
@@ -154,14 +154,15 @@ void RefProcTaskExecutor::execute(ProcessTask& task, uint ergo_workers)
|
||||
@ -421,7 +412,7 @@ index 57ff23550..30a0f26bc 100644
|
||||
}
|
||||
PSParallelCompact::gc_task_manager()->execute_and_wait(q);
|
||||
diff --git a/src/hotspot/share/gc/parallel/psParallelCompact.cpp b/src/hotspot/share/gc/parallel/psParallelCompact.cpp
|
||||
index f4cbb9f3a..f6ba28260 100644
|
||||
index f4cbb9f..f6ba282 100644
|
||||
--- a/src/hotspot/share/gc/parallel/psParallelCompact.cpp
|
||||
+++ b/src/hotspot/share/gc/parallel/psParallelCompact.cpp
|
||||
@@ -2075,7 +2075,7 @@ void PSParallelCompact::marking_phase(ParCompactionManager* cm,
|
||||
@ -458,7 +449,7 @@ index f4cbb9f3a..f6ba28260 100644
|
||||
{
|
||||
GCTraceTime(Trace, gc, phases) tm("Par Compact", &_gc_timer);
|
||||
diff --git a/src/hotspot/share/gc/parallel/psScavenge.cpp b/src/hotspot/share/gc/parallel/psScavenge.cpp
|
||||
index 87b2b4cac..9022654da 100644
|
||||
index 87b2b4c..9022654 100644
|
||||
--- a/src/hotspot/share/gc/parallel/psScavenge.cpp
|
||||
+++ b/src/hotspot/share/gc/parallel/psScavenge.cpp
|
||||
@@ -166,11 +166,11 @@ void PSRefProcTaskExecutor::execute(ProcessTask& task, uint ergo_workers)
|
||||
@ -497,10 +488,10 @@ index 87b2b4cac..9022654da 100644
|
||||
}
|
||||
|
||||
diff --git a/src/hotspot/share/gc/shared/gc_globals.hpp b/src/hotspot/share/gc/shared/gc_globals.hpp
|
||||
index 33ce1dadd..5f39a2671 100644
|
||||
index a77964e..b7fa7f6 100644
|
||||
--- a/src/hotspot/share/gc/shared/gc_globals.hpp
|
||||
+++ b/src/hotspot/share/gc/shared/gc_globals.hpp
|
||||
@@ -348,6 +348,10 @@
|
||||
@@ -376,6 +376,10 @@
|
||||
develop(uintx, PromotionFailureALotInterval, 5, \
|
||||
"Total collections between promotion failures a lot") \
|
||||
\
|
||||
@ -513,7 +504,7 @@ index 33ce1dadd..5f39a2671 100644
|
||||
\
|
||||
diff --git a/src/hotspot/share/gc/shared/owstTaskTerminator.cpp b/src/hotspot/share/gc/shared/owstTaskTerminator.cpp
|
||||
new file mode 100644
|
||||
index 000000000..3c32ab627
|
||||
index 0000000..3c32ab6
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/share/gc/shared/owstTaskTerminator.cpp
|
||||
@@ -0,0 +1,171 @@
|
||||
@ -690,7 +681,7 @@ index 000000000..3c32ab627
|
||||
+}
|
||||
diff --git a/src/hotspot/share/gc/shared/owstTaskTerminator.hpp b/src/hotspot/share/gc/shared/owstTaskTerminator.hpp
|
||||
new file mode 100644
|
||||
index 000000000..9e6fe135a
|
||||
index 0000000..9e6fe13
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/share/gc/shared/owstTaskTerminator.hpp
|
||||
@@ -0,0 +1,79 @@
|
||||
@ -774,7 +765,7 @@ index 000000000..9e6fe135a
|
||||
+
|
||||
+#endif // SHARE_VM_GC_SHARED_OWSTTASKTERMINATOR_HPP
|
||||
diff --git a/src/hotspot/share/gc/shared/taskqueue.cpp b/src/hotspot/share/gc/shared/taskqueue.cpp
|
||||
index 024fbbc9b..2738d6823 100644
|
||||
index 024fbbc..2738d68 100644
|
||||
--- a/src/hotspot/share/gc/shared/taskqueue.cpp
|
||||
+++ b/src/hotspot/share/gc/shared/taskqueue.cpp
|
||||
@@ -24,6 +24,7 @@
|
||||
@ -812,29 +803,29 @@ index 024fbbc9b..2738d6823 100644
|
||||
+}
|
||||
+
|
||||
diff --git a/src/hotspot/share/gc/shared/taskqueue.hpp b/src/hotspot/share/gc/shared/taskqueue.hpp
|
||||
index 877b843ab..1cafcdeb2 100644
|
||||
index ad97377..8909060 100644
|
||||
--- a/src/hotspot/share/gc/shared/taskqueue.hpp
|
||||
+++ b/src/hotspot/share/gc/shared/taskqueue.hpp
|
||||
@@ -358,6 +358,8 @@ protected:
|
||||
@@ -359,6 +359,8 @@ protected:
|
||||
public:
|
||||
// Returns "true" if some TaskQueue in the set contains a task.
|
||||
virtual bool peek() = 0;
|
||||
+ // Tasks in queue
|
||||
+ virtual uint tasks() const = 0;
|
||||
};
|
||||
|
||||
template <MEMFLAGS F> class TaskQueueSetSuperImpl: public CHeapObj<F>, public TaskQueueSetSuper {
|
||||
@@ -389,6 +391,7 @@ public:
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
virtual size_t tasks() = 0;
|
||||
#endif
|
||||
@@ -393,6 +395,7 @@ public:
|
||||
bool steal(uint queue_num, int* seed, E& t);
|
||||
|
||||
bool peek();
|
||||
+ uint tasks() const;
|
||||
|
||||
uint size() const { return _n; }
|
||||
};
|
||||
@@ -414,6 +417,15 @@ bool GenericTaskQueueSet<T, F>::peek() {
|
||||
return false;
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
size_t tasks();
|
||||
#endif
|
||||
@@ -432,6 +435,15 @@ size_t GenericTaskQueueSet<T, F>::tasks() {
|
||||
}
|
||||
#endif
|
||||
|
||||
+template<class T, MEMFLAGS F>
|
||||
+uint GenericTaskQueueSet<T, F>::tasks() const {
|
||||
@ -848,7 +839,7 @@ index 877b843ab..1cafcdeb2 100644
|
||||
// When to terminate from the termination protocol.
|
||||
class TerminatorTerminator: public CHeapObj<mtInternal> {
|
||||
public:
|
||||
@@ -425,8 +437,8 @@ public:
|
||||
@@ -443,8 +455,8 @@ public:
|
||||
|
||||
#undef TRACESPINNING
|
||||
|
||||
@ -856,19 +847,19 @@ index 877b843ab..1cafcdeb2 100644
|
||||
-private:
|
||||
+class ParallelTaskTerminator: public CHeapObj<mtGC> {
|
||||
+protected:
|
||||
uint _n_threads;
|
||||
TaskQueueSetSuper* _queue_set;
|
||||
|
||||
@@ -462,7 +474,7 @@ public:
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
protected:
|
||||
#endif
|
||||
@@ -483,7 +495,7 @@ public:
|
||||
// As above, but it also terminates if the should_exit_termination()
|
||||
// method of the terminator parameter returns true. If terminator is
|
||||
// NULL, then it is ignored.
|
||||
- bool offer_termination(TerminatorTerminator* terminator);
|
||||
+ virtual bool offer_termination(TerminatorTerminator* terminator);
|
||||
- SHENANDOAHGC_ONLY(virtual) bool offer_termination(TerminatorTerminator* terminator);
|
||||
+ SHENANDOAHGC_ONLY(virtual) virtual bool offer_termination(TerminatorTerminator* terminator);
|
||||
|
||||
// Reset the terminator, so that it may be reused again.
|
||||
// The caller is responsible for ensuring that this is done
|
||||
@@ -481,6 +493,38 @@ public:
|
||||
@@ -502,6 +514,38 @@ public:
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@ -1,52 +1,8 @@
|
||||
From 7995d2341ea83431d68cf36d22577074e111e32d Mon Sep 17 00:00:00 2001
|
||||
Date: Mon, 13 Apr 2020 10:40:13 +0800
|
||||
Subject: [PATCH] 8214527: AArch64: ZGC for Aarch64
|
||||
|
||||
Summary: <gc>: <Implement ZGC for AArch64>
|
||||
LLT: jtreg
|
||||
Bug url: https://bugs.openjdk.java.net/browse/JDK-8214527
|
||||
---
|
||||
make/autoconf/hotspot.m4 | 3 +-
|
||||
src/hotspot/cpu/aarch64/aarch64.ad | 486 +++++++++++++++++++++
|
||||
.../cpu/aarch64/c1_LIRAssembler_aarch64.cpp | 12 +-
|
||||
.../aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp | 408 +++++++++++++++++
|
||||
.../aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp | 92 ++++
|
||||
src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp | 19 +-
|
||||
.../cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp | 8 +-
|
||||
.../gc/z/zAddress_linux_aarch64.inline.hpp | 31 ++
|
||||
.../gc/z/zBackingFile_linux_aarch64.cpp | 426 ++++++++++++++++++
|
||||
.../gc/z/zBackingFile_linux_aarch64.hpp | 63 +++
|
||||
.../gc/z/zBackingPath_linux_aarch64.cpp | 149 +++++++
|
||||
.../gc/z/zBackingPath_linux_aarch64.hpp | 52 +++
|
||||
.../linux_aarch64/gc/z/zGlobals_linux_aarch64.cpp | 33 ++
|
||||
.../linux_aarch64/gc/z/zGlobals_linux_aarch64.hpp | 88 ++++
|
||||
.../gc/z/zLargePages_linux_aarch64.cpp | 38 ++
|
||||
.../linux_aarch64/gc/z/zNUMA_linux_aarch64.cpp | 83 ++++
|
||||
.../gc/z/zPhysicalMemoryBacking_linux_aarch64.cpp | 270 ++++++++++++
|
||||
.../gc/z/zPhysicalMemoryBacking_linux_aarch64.hpp | 65 +++
|
||||
.../gc/z/zVirtualMemory_linux_aarch64.cpp | 41 ++
|
||||
src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp | 20 +-
|
||||
20 files changed, 2361 insertions(+), 20 deletions(-)
|
||||
create mode 100644 src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
create mode 100644 src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zAddress_linux_aarch64.inline.hpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.cpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.hpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.cpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.hpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.cpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.hpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zLargePages_linux_aarch64.cpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zNUMA_linux_aarch64.cpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.cpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.hpp
|
||||
create mode 100644 src/hotspot/os_cpu/linux_aarch64/gc/z/zVirtualMemory_linux_aarch64.cpp
|
||||
|
||||
diff --git a/make/autoconf/hotspot.m4 b/make/autoconf/hotspot.m4
|
||||
index 1d4c710be..6bfda33da 100644
|
||||
index d598b98..61739b9 100644
|
||||
--- a/make/autoconf/hotspot.m4
|
||||
+++ b/make/autoconf/hotspot.m4
|
||||
@@ -340,7 +340,8 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
||||
@@ -367,7 +367,8 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
||||
|
||||
# Only enable ZGC on supported platforms
|
||||
AC_MSG_CHECKING([if zgc can be built])
|
||||
@ -57,7 +13,7 @@ index 1d4c710be..6bfda33da 100644
|
||||
else
|
||||
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES zgc"
|
||||
diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
index f2a9207b8..57b20775e 100644
|
||||
index 890e457..0625053 100644
|
||||
--- a/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
+++ b/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
@@ -957,6 +957,146 @@ reg_class v3_reg(
|
||||
@ -219,7 +175,7 @@ index f2a9207b8..57b20775e 100644
|
||||
|
||||
//----------SOURCE BLOCK-------------------------------------------------------
|
||||
// This is a block of C++ code which provides values, functions, and
|
||||
@@ -4732,6 +4877,258 @@ operand vRegD_V3()
|
||||
@@ -4738,6 +4883,258 @@ operand vRegD_V3()
|
||||
interface(REG_INTER);
|
||||
%}
|
||||
|
||||
@ -478,7 +434,7 @@ index f2a9207b8..57b20775e 100644
|
||||
// Flags register, used as output of signed compare instructions
|
||||
|
||||
// note that on AArch64 we also use this register as the output for
|
||||
@@ -17077,6 +17474,95 @@ instruct vsrl2L_imm(vecX dst, vecX src, immI shift) %{
|
||||
@@ -17078,6 +17475,95 @@ instruct vsrl2L_imm(vecX dst, vecX src, immI shift) %{
|
||||
ins_pipe(vshift128_imm);
|
||||
%}
|
||||
|
||||
@ -575,10 +531,10 @@ index f2a9207b8..57b20775e 100644
|
||||
// These must follow all instruction definitions as they use the names
|
||||
// defined in the instructions definitions.
|
||||
diff --git a/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp
|
||||
index 73202f669..cf3ce0a8f 100644
|
||||
index fe301df..6ab944b 100644
|
||||
--- a/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp
|
||||
+++ b/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp
|
||||
@@ -1012,7 +1012,11 @@ void LIR_Assembler::mem2reg(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_Patch
|
||||
@@ -1013,7 +1013,11 @@ void LIR_Assembler::mem2reg(LIR_Opr src, LIR_Opr dest, BasicType type, LIR_Patch
|
||||
if (UseCompressedOops && !wide) {
|
||||
__ decode_heap_oop(dest->as_register());
|
||||
}
|
||||
@ -591,10 +547,10 @@ index 73202f669..cf3ce0a8f 100644
|
||||
} else if (type == T_ADDRESS && addr->disp() == oopDesc::klass_offset_in_bytes()) {
|
||||
if (UseCompressedClassPointers) {
|
||||
__ decode_klass_not_null(dest->as_register());
|
||||
@@ -2818,7 +2822,11 @@ void LIR_Assembler::negate(LIR_Opr left, LIR_Opr dest, LIR_Opr tmp) {
|
||||
|
||||
|
||||
void LIR_Assembler::leal(LIR_Opr addr, LIR_Opr dest, LIR_PatchCode patch_code, CodeEmitInfo* info) {
|
||||
@@ -2825,7 +2829,11 @@ void LIR_Assembler::leal(LIR_Opr addr, LIR_Opr dest, LIR_PatchCode patch_code, C
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
- assert(patch_code == lir_patch_none, "Patch code not supported");
|
||||
+ if (patch_code != lir_patch_none) {
|
||||
+ deoptimize_trap(info);
|
||||
@ -606,7 +562,7 @@ index 73202f669..cf3ce0a8f 100644
|
||||
|
||||
diff --git a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
new file mode 100644
|
||||
index 000000000..90b2b4ca7
|
||||
index 0000000..90b2b4c
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
@@ -0,0 +1,408 @@
|
||||
@ -1020,7 +976,7 @@ index 000000000..90b2b4ca7
|
||||
+}
|
||||
diff --git a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
|
||||
new file mode 100644
|
||||
index 000000000..7e8be01cc
|
||||
index 0000000..7e8be01
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
|
||||
@@ -0,0 +1,92 @@
|
||||
@ -1117,7 +1073,7 @@ index 000000000..7e8be01cc
|
||||
+
|
||||
+#endif // CPU_AARCH64_GC_Z_ZBARRIERSETASSEMBLER_AARCH64_HPP
|
||||
diff --git a/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp b/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
|
||||
index 89a433013..ac7eb8480 100644
|
||||
index 89a4330..ac7eb84 100644
|
||||
--- a/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
|
||||
+++ b/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
|
||||
@@ -45,6 +45,9 @@
|
||||
@ -1148,7 +1104,7 @@ index 89a433013..ac7eb8480 100644
|
||||
__ mov(c_rarg3, (intptr_t) Universe::verify_oop_mask());
|
||||
__ andr(c_rarg2, r0, c_rarg3);
|
||||
diff --git a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
|
||||
index d2290a670..381211ecc 100644
|
||||
index d2290a6..381211e 100644
|
||||
--- a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
|
||||
+++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
|
||||
@@ -273,13 +273,13 @@ void ZBarrierSetAssembler::generate_c1_load_barrier_stub(LIR_Assembler* ce,
|
||||
@ -1171,7 +1127,7 @@ index d2290a670..381211ecc 100644
|
||||
assert_different_registers(ref, ref_addr, noreg);
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zAddress_linux_aarch64.inline.hpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zAddress_linux_aarch64.inline.hpp
|
||||
new file mode 100644
|
||||
index 000000000..936480cb5
|
||||
index 0000000..936480c
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zAddress_linux_aarch64.inline.hpp
|
||||
@@ -0,0 +1,31 @@
|
||||
@ -1208,7 +1164,7 @@ index 000000000..936480cb5
|
||||
+#endif // OS_CPU_LINUX_AARCH64_ZADDRESS_LINUX_AARCH64_INLINE_HPP
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.cpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.cpp
|
||||
new file mode 100644
|
||||
index 000000000..47894b5c8
|
||||
index 0000000..47894b5
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.cpp
|
||||
@@ -0,0 +1,426 @@
|
||||
@ -1640,7 +1596,7 @@ index 000000000..47894b5c8
|
||||
+}
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.hpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.hpp
|
||||
new file mode 100644
|
||||
index 000000000..032dbc133
|
||||
index 0000000..032dbc1
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingFile_linux_aarch64.hpp
|
||||
@@ -0,0 +1,63 @@
|
||||
@ -1709,7 +1665,7 @@ index 000000000..032dbc133
|
||||
+#endif // OS_CPU_LINUX_AARCH64_ZBACKINGFILE_LINUX_AARCH64_HPP
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.cpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.cpp
|
||||
new file mode 100644
|
||||
index 000000000..1adffa32b
|
||||
index 0000000..1adffa3
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.cpp
|
||||
@@ -0,0 +1,149 @@
|
||||
@ -1864,7 +1820,7 @@ index 000000000..1adffa32b
|
||||
+}
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.hpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.hpp
|
||||
new file mode 100644
|
||||
index 000000000..a03aaf960
|
||||
index 0000000..a03aaf9
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zBackingPath_linux_aarch64.hpp
|
||||
@@ -0,0 +1,52 @@
|
||||
@ -1922,7 +1878,7 @@ index 000000000..a03aaf960
|
||||
+#endif // OS_CPU_LINUX_AARCH64_ZBACKINGPATH_LINUX_AARCH64_HPP
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.cpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.cpp
|
||||
new file mode 100644
|
||||
index 000000000..5d2480993
|
||||
index 0000000..5d24809
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.cpp
|
||||
@@ -0,0 +1,33 @@
|
||||
@ -1961,7 +1917,7 @@ index 000000000..5d2480993
|
||||
+}
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.hpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.hpp
|
||||
new file mode 100644
|
||||
index 000000000..93c18067b
|
||||
index 0000000..93c1806
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zGlobals_linux_aarch64.hpp
|
||||
@@ -0,0 +1,88 @@
|
||||
@ -2055,7 +2011,7 @@ index 000000000..93c18067b
|
||||
+#endif // OS_CPU_LINUX_AARCH64_ZGLOBALS_LINUX_AARCH64_HPP
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zLargePages_linux_aarch64.cpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zLargePages_linux_aarch64.cpp
|
||||
new file mode 100644
|
||||
index 000000000..c79195cd1
|
||||
index 0000000..c79195c
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zLargePages_linux_aarch64.cpp
|
||||
@@ -0,0 +1,38 @@
|
||||
@ -2099,7 +2055,7 @@ index 000000000..c79195cd1
|
||||
+}
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zNUMA_linux_aarch64.cpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zNUMA_linux_aarch64.cpp
|
||||
new file mode 100644
|
||||
index 000000000..10706fac2
|
||||
index 0000000..10706fa
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zNUMA_linux_aarch64.cpp
|
||||
@@ -0,0 +1,83 @@
|
||||
@ -2188,7 +2144,7 @@ index 000000000..10706fac2
|
||||
+}
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.cpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.cpp
|
||||
new file mode 100644
|
||||
index 000000000..55c2a16e0
|
||||
index 0000000..55c2a16
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.cpp
|
||||
@@ -0,0 +1,270 @@
|
||||
@ -2464,7 +2420,7 @@ index 000000000..55c2a16e0
|
||||
+}
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.hpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.hpp
|
||||
new file mode 100644
|
||||
index 000000000..c55b7b17c
|
||||
index 0000000..c55b7b1
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zPhysicalMemoryBacking_linux_aarch64.hpp
|
||||
@@ -0,0 +1,65 @@
|
||||
@ -2535,7 +2491,7 @@ index 000000000..c55b7b17c
|
||||
+#endif // OS_CPU_LINUX_AARCH64_ZPHYSICALMEMORYBACKING_LINUX_AARCH64_HPP
|
||||
diff --git a/src/hotspot/os_cpu/linux_aarch64/gc/z/zVirtualMemory_linux_aarch64.cpp b/src/hotspot/os_cpu/linux_aarch64/gc/z/zVirtualMemory_linux_aarch64.cpp
|
||||
new file mode 100644
|
||||
index 000000000..68df40191
|
||||
index 0000000..68df401
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/os_cpu/linux_aarch64/gc/z/zVirtualMemory_linux_aarch64.cpp
|
||||
@@ -0,0 +1,41 @@
|
||||
@ -2581,7 +2537,7 @@ index 000000000..68df40191
|
||||
+ return true;
|
||||
+}
|
||||
diff --git a/src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp b/src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp
|
||||
index 9f8ce7424..0abd3980f 100644
|
||||
index 9f8ce74..0abd398 100644
|
||||
--- a/src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp
|
||||
+++ b/src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp
|
||||
@@ -38,21 +38,15 @@ ZLoadBarrierStubC1::ZLoadBarrierStubC1(LIRAccess& access, LIR_Opr ref, address r
|
||||
@ -2613,6 +2569,3 @@ index 9f8ce7424..0abd3980f 100644
|
||||
}
|
||||
|
||||
DecoratorSet ZLoadBarrierStubC1::decorators() const {
|
||||
--
|
||||
2.19.1
|
||||
|
||||
|
||||
@ -1,28 +1,10 @@
|
||||
From 12c28e19bf70b610a723828ce8395902381436fb Mon Sep 17 00:00:00 2001
|
||||
Date: Tue, 18 Feb 2020 18:03:42 +0800
|
||||
Subject: [PATCH] 8217856: ZGC: Break out C2 matching rules into separate AD
|
||||
file
|
||||
|
||||
Summary: <gc>: <separate AD files to handle C2 matching rules>
|
||||
LLT: jtreg
|
||||
Bug url: https://bugs.openjdk.java.net/browse/JDK-8217856
|
||||
---
|
||||
make/hotspot/gensrc/GensrcAdlc.gmk | 6 +
|
||||
src/hotspot/cpu/aarch64/aarch64.ad | 244 ---------------------------
|
||||
src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad | 268 ++++++++++++++++++++++++++++++
|
||||
src/hotspot/cpu/x86/gc/z/z_x86_64.ad | 168 +++++++++++++++++++
|
||||
src/hotspot/cpu/x86/x86_64.ad | 151 -----------------
|
||||
5 files changed, 442 insertions(+), 395 deletions(-)
|
||||
create mode 100644 src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad
|
||||
create mode 100644 src/hotspot/cpu/x86/gc/z/z_x86_64.ad
|
||||
|
||||
diff --git a/make/hotspot/gensrc/GensrcAdlc.gmk b/make/hotspot/gensrc/GensrcAdlc.gmk
|
||||
index 92b030b69..1eaed25d9 100644
|
||||
index 6878962..bb9721c 100644
|
||||
--- a/make/hotspot/gensrc/GensrcAdlc.gmk
|
||||
+++ b/make/hotspot/gensrc/GensrcAdlc.gmk
|
||||
@@ -136,6 +136,12 @@ ifeq ($(call check-jvm-feature, compiler2), true)
|
||||
$d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH).ad \
|
||||
)))
|
||||
@@ -146,6 +146,12 @@ ifeq ($(call check-jvm-feature, compiler2), true)
|
||||
)))
|
||||
endif
|
||||
|
||||
+ ifeq ($(call check-jvm-feature, zgc), true)
|
||||
+ AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
|
||||
@ -34,7 +16,7 @@ index 92b030b69..1eaed25d9 100644
|
||||
|
||||
INSERT_FILENAME_AWK_SCRIPT := \
|
||||
diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
index 93dd78e51..3cca2da5b 100644
|
||||
index 05b36e2..18e774f 100644
|
||||
--- a/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
+++ b/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
@@ -1128,13 +1128,6 @@ definitions %{
|
||||
@ -51,7 +33,7 @@ index 93dd78e51..3cca2da5b 100644
|
||||
//----------SOURCE BLOCK-------------------------------------------------------
|
||||
// This is a block of C++ code which provides values, functions, and
|
||||
// definitions necessary in the rest of the architecture description
|
||||
@@ -17487,243 +17480,6 @@ instruct vsrl2L_imm(vecX dst, vecX src, immI shift) %{
|
||||
@@ -17488,243 +17481,6 @@ instruct vsrl2L_imm(vecX dst, vecX src, immI shift) %{
|
||||
ins_pipe(vshift128_imm);
|
||||
%}
|
||||
|
||||
@ -297,7 +279,7 @@ index 93dd78e51..3cca2da5b 100644
|
||||
// These must follow all instruction definitions as they use the names
|
||||
diff --git a/src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad b/src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad
|
||||
new file mode 100644
|
||||
index 000000000..50cc6f924
|
||||
index 0000000..50cc6f9
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad
|
||||
@@ -0,0 +1,268 @@
|
||||
@ -571,7 +553,7 @@ index 000000000..50cc6f924
|
||||
+
|
||||
diff --git a/src/hotspot/cpu/x86/gc/z/z_x86_64.ad b/src/hotspot/cpu/x86/gc/z/z_x86_64.ad
|
||||
new file mode 100644
|
||||
index 000000000..38c2e926b
|
||||
index 0000000..38c2e92
|
||||
--- /dev/null
|
||||
+++ b/src/hotspot/cpu/x86/gc/z/z_x86_64.ad
|
||||
@@ -0,0 +1,168 @@
|
||||
@ -744,7 +726,7 @@ index 000000000..38c2e926b
|
||||
+%}
|
||||
+
|
||||
diff --git a/src/hotspot/cpu/x86/x86_64.ad b/src/hotspot/cpu/x86/x86_64.ad
|
||||
index f795fb823..7879547ce 100644
|
||||
index d127732..fce1b85 100644
|
||||
--- a/src/hotspot/cpu/x86/x86_64.ad
|
||||
+++ b/src/hotspot/cpu/x86/x86_64.ad
|
||||
@@ -538,19 +538,6 @@ reg_class int_rdi_reg(RDI);
|
||||
@ -787,7 +769,7 @@ index f795fb823..7879547ce 100644
|
||||
%}
|
||||
|
||||
//----------ENCODING BLOCK-----------------------------------------------------
|
||||
@@ -12520,131 +12494,6 @@ instruct RethrowException()
|
||||
@@ -12555,131 +12529,6 @@ instruct RethrowException()
|
||||
ins_pipe(pipe_jmp);
|
||||
%}
|
||||
|
||||
@ -919,6 +901,3 @@ index f795fb823..7879547ce 100644
|
||||
// ============================================================================
|
||||
// This name is KNOWN by the ADLC and cannot be changed.
|
||||
// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
|
||||
--
|
||||
2.12.3
|
||||
|
||||
|
||||
@ -1,48 +1,8 @@
|
||||
From f9885f88585a8299760f905b420af1adb5bcca44 Mon Sep 17 00:00:00 2001
|
||||
Date: Mon, 13 Apr 2020 10:46:11 +0800
|
||||
Subject: [PATCH] 8224675: Late GC barrier insertion for ZGC
|
||||
|
||||
Summary: <gc>: <Insert ZGC load barriers after loop optimizations, before macro expansion.>
|
||||
LLT: jtreg
|
||||
Bug url: https://bugs.openjdk.java.net/browse/JDK-8224675
|
||||
---
|
||||
src/hotspot/cpu/aarch64/aarch64.ad | 60 +-
|
||||
.../aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp | 1 -
|
||||
src/hotspot/cpu/x86/x86_64.ad | 77 +-
|
||||
src/hotspot/share/adlc/formssel.cpp | 9 +-
|
||||
src/hotspot/share/compiler/compilerDirectives.hpp | 2 +-
|
||||
src/hotspot/share/gc/shared/c2/barrierSetC2.hpp | 4 +-
|
||||
src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp | 1768 ++++++++---------
|
||||
src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp | 116 +-
|
||||
src/hotspot/share/gc/z/zHeap.cpp | 26 -
|
||||
src/hotspot/share/gc/z/z_globals.hpp | 3 -
|
||||
src/hotspot/share/opto/classes.hpp | 5 +-
|
||||
src/hotspot/share/opto/compile.cpp | 43 +-
|
||||
src/hotspot/share/opto/compile.hpp | 23 +-
|
||||
src/hotspot/share/opto/escape.cpp | 8 -
|
||||
src/hotspot/share/opto/idealGraphPrinter.cpp | 18 +-
|
||||
src/hotspot/share/opto/idealGraphPrinter.hpp | 14 +-
|
||||
src/hotspot/share/opto/lcm.cpp | 1 -
|
||||
src/hotspot/share/opto/loopnode.cpp | 43 +-
|
||||
src/hotspot/share/opto/loopnode.hpp | 6 +-
|
||||
src/hotspot/share/opto/loopopts.cpp | 6 -
|
||||
src/hotspot/share/opto/matcher.cpp | 27 +
|
||||
src/hotspot/share/opto/memnode.cpp | 21 +-
|
||||
src/hotspot/share/opto/memnode.hpp | 11 +-
|
||||
src/hotspot/share/opto/node.cpp | 13 +-
|
||||
src/hotspot/share/opto/node.hpp | 7 +-
|
||||
src/hotspot/share/opto/phaseX.cpp | 3 -
|
||||
src/hotspot/share/opto/phasetype.hpp | 6 +
|
||||
src/hotspot/share/opto/vectornode.cpp | 1 -
|
||||
src/hotspot/share/runtime/stackValue.cpp | 8 +-
|
||||
src/hotspot/share/utilities/growableArray.hpp | 37 +
|
||||
30 files changed, 1259 insertions(+), 1108 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
index 57b20775e..a6d2e6609 100644
|
||||
index 0625053..af3e593 100644
|
||||
--- a/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
+++ b/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
@@ -17517,7 +17517,7 @@ instruct loadBarrierSlowReg(iRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -17518,7 +17518,7 @@ instruct loadBarrierSlowReg(iRegP dst, memory mem, rFlagsReg cr,
|
||||
vRegD_V25 v25, vRegD_V26 v26, vRegD_V27 v27, vRegD_V28 v28, vRegD_V29 v29,
|
||||
vRegD_V30 v30, vRegD_V31 v31) %{
|
||||
match(Set dst (LoadBarrierSlowReg mem));
|
||||
@ -51,7 +11,7 @@ index 57b20775e..a6d2e6609 100644
|
||||
|
||||
effect(DEF dst, KILL cr,
|
||||
KILL v0, KILL v1, KILL v2, KILL v3, KILL v4, KILL v5, KILL v6, KILL v7,
|
||||
@@ -17546,7 +17546,7 @@ instruct loadBarrierWeakSlowReg(iRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -17547,7 +17547,7 @@ instruct loadBarrierWeakSlowReg(iRegP dst, memory mem, rFlagsReg cr,
|
||||
vRegD_V25 v25, vRegD_V26 v26, vRegD_V27 v27, vRegD_V28 v28, vRegD_V29 v29,
|
||||
vRegD_V30 v30, vRegD_V31 v31) %{
|
||||
match(Set dst (LoadBarrierSlowReg mem));
|
||||
@ -60,7 +20,7 @@ index 57b20775e..a6d2e6609 100644
|
||||
|
||||
effect(DEF dst, KILL cr,
|
||||
KILL v0, KILL v1, KILL v2, KILL v3, KILL v4, KILL v5, KILL v6, KILL v7,
|
||||
@@ -17563,6 +17563,62 @@ instruct loadBarrierWeakSlowReg(iRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -17564,6 +17564,62 @@ instruct loadBarrierWeakSlowReg(iRegP dst, memory mem, rFlagsReg cr,
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
@ -124,7 +84,7 @@ index 57b20775e..a6d2e6609 100644
|
||||
// These must follow all instruction definitions as they use the names
|
||||
// defined in the instructions definitions.
|
||||
diff --git a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
index 90b2b4ca7..8e169ace4 100644
|
||||
index 90b2b4c..8e169ac 100644
|
||||
--- a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
@@ -245,7 +245,6 @@ void ZBarrierSetAssembler::generate_c1_load_barrier_stub(LIR_Assembler* ce,
|
||||
@ -136,23 +96,23 @@ index 90b2b4ca7..8e169ace4 100644
|
||||
ref_addr = tmp = stub->tmp()->as_pointer_register();
|
||||
} else {
|
||||
diff --git a/src/hotspot/cpu/x86/x86_64.ad b/src/hotspot/cpu/x86/x86_64.ad
|
||||
index 9d9eda84b..97c396875 100644
|
||||
index 3f92fdf..e256e22 100644
|
||||
--- a/src/hotspot/cpu/x86/x86_64.ad
|
||||
+++ b/src/hotspot/cpu/x86/x86_64.ad
|
||||
@@ -538,6 +538,12 @@ reg_class int_rdi_reg(RDI);
|
||||
|
||||
@@ -539,6 +539,12 @@ reg_class int_rdi_reg(RDI);
|
||||
%}
|
||||
|
||||
+source_hpp %{
|
||||
source_hpp %{
|
||||
+
|
||||
+#include "gc/z/c2/zBarrierSetC2.hpp"
|
||||
+
|
||||
+%}
|
||||
+
|
||||
source_hpp %{
|
||||
+source_hpp %{
|
||||
#if INCLUDE_ZGC
|
||||
#include "gc/z/zBarrierSetAssembler.hpp"
|
||||
@@ -12630,7 +12636,7 @@ instruct RethrowException()
|
||||
#endif
|
||||
@@ -12665,7 +12671,7 @@ instruct RethrowException()
|
||||
instruct loadBarrierSlowRegNoVec(rRegP dst, memory mem, rFlagsReg cr) %{
|
||||
|
||||
match(Set dst (LoadBarrierSlowReg mem));
|
||||
@ -161,7 +121,7 @@ index 9d9eda84b..97c396875 100644
|
||||
|
||||
effect(DEF dst, KILL cr);
|
||||
|
||||
@@ -12661,7 +12667,7 @@ instruct loadBarrierSlowRegXmmAndYmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -12696,7 +12702,7 @@ instruct loadBarrierSlowRegXmmAndYmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
rxmm12 x12, rxmm13 x13, rxmm14 x14, rxmm15 x15) %{
|
||||
|
||||
match(Set dst (LoadBarrierSlowReg mem));
|
||||
@ -170,7 +130,7 @@ index 9d9eda84b..97c396875 100644
|
||||
|
||||
effect(DEF dst, KILL cr,
|
||||
KILL x0, KILL x1, KILL x2, KILL x3,
|
||||
@@ -12700,7 +12706,7 @@ instruct loadBarrierSlowRegZmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -12735,7 +12741,7 @@ instruct loadBarrierSlowRegZmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
rxmm28 x28, rxmm29 x29, rxmm30 x30, rxmm31 x31) %{
|
||||
|
||||
match(Set dst (LoadBarrierSlowReg mem));
|
||||
@ -179,7 +139,7 @@ index 9d9eda84b..97c396875 100644
|
||||
|
||||
effect(DEF dst, KILL cr,
|
||||
KILL x0, KILL x1, KILL x2, KILL x3,
|
||||
@@ -12739,7 +12745,7 @@ instruct loadBarrierSlowRegZmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -12774,7 +12780,7 @@ instruct loadBarrierSlowRegZmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
instruct loadBarrierWeakSlowRegNoVec(rRegP dst, memory mem, rFlagsReg cr) %{
|
||||
|
||||
match(Set dst (LoadBarrierSlowReg mem));
|
||||
@ -188,7 +148,7 @@ index 9d9eda84b..97c396875 100644
|
||||
|
||||
effect(DEF dst, KILL cr);
|
||||
|
||||
@@ -12769,8 +12775,8 @@ instruct loadBarrierWeakSlowRegXmmAndYmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -12804,8 +12810,8 @@ instruct loadBarrierWeakSlowRegXmmAndYmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
rxmm8 x8, rxmm9 x9, rxmm10 x10, rxmm11 x11,
|
||||
rxmm12 x12, rxmm13 x13, rxmm14 x14, rxmm15 x15) %{
|
||||
|
||||
@ -199,7 +159,7 @@ index 9d9eda84b..97c396875 100644
|
||||
|
||||
effect(DEF dst, KILL cr,
|
||||
KILL x0, KILL x1, KILL x2, KILL x3,
|
||||
@@ -12808,8 +12814,8 @@ instruct loadBarrierWeakSlowRegZmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -12843,8 +12849,8 @@ instruct loadBarrierWeakSlowRegZmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
rxmm24 x24, rxmm25 x25, rxmm26 x26, rxmm27 x27,
|
||||
rxmm28 x28, rxmm29 x29, rxmm30 x30, rxmm31 x31) %{
|
||||
|
||||
@ -210,7 +170,7 @@ index 9d9eda84b..97c396875 100644
|
||||
|
||||
effect(DEF dst, KILL cr,
|
||||
KILL x0, KILL x1, KILL x2, KILL x3,
|
||||
@@ -12840,6 +12846,61 @@ instruct loadBarrierWeakSlowRegZmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
@@ -12875,6 +12881,61 @@ instruct loadBarrierWeakSlowRegZmm(rRegP dst, memory mem, rFlagsReg cr,
|
||||
ins_pipe(pipe_slow);
|
||||
%}
|
||||
|
||||
@ -273,7 +233,7 @@ index 9d9eda84b..97c396875 100644
|
||||
// This name is KNOWN by the ADLC and cannot be changed.
|
||||
// The ADLC forces a 'TypeRawPtr::BOTTOM' output type
|
||||
diff --git a/src/hotspot/share/adlc/formssel.cpp b/src/hotspot/share/adlc/formssel.cpp
|
||||
index 466880d19..2845cf6d8 100644
|
||||
index 3c02c51..ef704f4 100644
|
||||
--- a/src/hotspot/share/adlc/formssel.cpp
|
||||
+++ b/src/hotspot/share/adlc/formssel.cpp
|
||||
@@ -775,8 +775,9 @@ bool InstructForm::captures_bottom_type(FormDict &globals) const {
|
||||
@ -285,11 +245,11 @@ index 466880d19..2845cf6d8 100644
|
||||
!strcmp(_matrule->_rChild->_opType,"LoadBarrierSlowReg") ||
|
||||
- !strcmp(_matrule->_rChild->_opType,"LoadBarrierWeakSlowReg") ||
|
||||
#endif
|
||||
!strcmp(_matrule->_rChild->_opType,"CompareAndExchangeP") ||
|
||||
!strcmp(_matrule->_rChild->_opType,"CompareAndExchangeN"))) return true;
|
||||
@@ -3503,10 +3504,12 @@ int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
|
||||
"WeakCompareAndSwapB", "WeakCompareAndSwapS", "WeakCompareAndSwapI", "WeakCompareAndSwapL", "WeakCompareAndSwapP", "WeakCompareAndSwapN",
|
||||
"CompareAndExchangeB", "CompareAndExchangeS", "CompareAndExchangeI", "CompareAndExchangeL", "CompareAndExchangeP", "CompareAndExchangeN",
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
!strcmp(_matrule->_rChild->_opType,"ShenandoahCompareAndExchangeP") ||
|
||||
@@ -3510,10 +3511,12 @@ int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
|
||||
"ShenandoahCompareAndSwapN", "ShenandoahCompareAndSwapP", "ShenandoahWeakCompareAndSwapP", "ShenandoahWeakCompareAndSwapN", "ShenandoahCompareAndExchangeP", "ShenandoahCompareAndExchangeN",
|
||||
#endif
|
||||
"StoreCM",
|
||||
- "ClearArray",
|
||||
"GetAndSetB", "GetAndSetS", "GetAndAddI", "GetAndSetI", "GetAndSetP",
|
||||
@ -303,7 +263,7 @@ index 466880d19..2845cf6d8 100644
|
||||
int cnt = sizeof(needs_ideal_memory_list)/sizeof(char*);
|
||||
if( strcmp(_opType,"PrefetchAllocation")==0 )
|
||||
diff --git a/src/hotspot/share/compiler/compilerDirectives.hpp b/src/hotspot/share/compiler/compilerDirectives.hpp
|
||||
index b4de7faed..8eba28f94 100644
|
||||
index b4de7fa..8eba28f 100644
|
||||
--- a/src/hotspot/share/compiler/compilerDirectives.hpp
|
||||
+++ b/src/hotspot/share/compiler/compilerDirectives.hpp
|
||||
@@ -67,7 +67,7 @@ NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput))
|
||||
@ -316,7 +276,7 @@ index b4de7faed..8eba28f94 100644
|
||||
#define compilerdirectives_c2_flags(cflags)
|
||||
#endif
|
||||
diff --git a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
||||
index 8baf4d9de..eea74674f 100644
|
||||
index 8baf4d9..eea7467 100644
|
||||
--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
||||
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
||||
@@ -208,15 +208,17 @@ public:
|
||||
@ -339,7 +299,7 @@ index 8baf4d9de..eea74674f 100644
|
||||
|
||||
#endif // SHARE_GC_SHARED_C2_BARRIERSETC2_HPP
|
||||
diff --git a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
|
||||
index 221ab4c2f..bf0bd43af 100644
|
||||
index 221ab4c..bf0bd43 100644
|
||||
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
|
||||
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
|
||||
@@ -22,14 +22,21 @@
|
||||
@ -2331,7 +2291,7 @@ index 221ab4c2f..bf0bd43af 100644
|
||||
+ return true;
|
||||
+}
|
||||
diff --git a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
|
||||
index fc9dadd67..bef6a7048 100644
|
||||
index fc9dadd..bef6a70 100644
|
||||
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
|
||||
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
|
||||
@@ -29,14 +29,33 @@
|
||||
@ -2525,7 +2485,7 @@ index fc9dadd67..bef6a7048 100644
|
||||
|
||||
#endif // SHARE_GC_Z_C2_ZBARRIERSETC2_HPP
|
||||
diff --git a/src/hotspot/share/gc/z/zHeap.cpp b/src/hotspot/share/gc/z/zHeap.cpp
|
||||
index eb72707e0..62f97d2a2 100644
|
||||
index eb72707..62f97d2 100644
|
||||
--- a/src/hotspot/share/gc/z/zHeap.cpp
|
||||
+++ b/src/hotspot/share/gc/z/zHeap.cpp
|
||||
@@ -304,35 +304,9 @@ void ZHeap::mark_flush_and_free(Thread* thread) {
|
||||
@ -2565,7 +2525,7 @@ index eb72707e0..62f97d2a2 100644
|
||||
if (!_mark.end()) {
|
||||
// Marking not completed, continue concurrent mark
|
||||
diff --git a/src/hotspot/share/gc/z/z_globals.hpp b/src/hotspot/share/gc/z/z_globals.hpp
|
||||
index a75329372..9e0f8985b 100644
|
||||
index a753293..9e0f898 100644
|
||||
--- a/src/hotspot/share/gc/z/z_globals.hpp
|
||||
+++ b/src/hotspot/share/gc/z/z_globals.hpp
|
||||
@@ -94,9 +94,6 @@
|
||||
@ -2579,7 +2539,7 @@ index a75329372..9e0f8985b 100644
|
||||
"Verify that reference loads are followed by barriers")
|
||||
|
||||
diff --git a/src/hotspot/share/opto/classes.hpp b/src/hotspot/share/opto/classes.hpp
|
||||
index 4314edd96..f6b588685 100644
|
||||
index 6b7050d..69f8a3c 100644
|
||||
--- a/src/hotspot/share/opto/classes.hpp
|
||||
+++ b/src/hotspot/share/opto/classes.hpp
|
||||
@@ -196,7 +196,10 @@ macro(LoadS)
|
||||
@ -2595,10 +2555,10 @@ index 4314edd96..f6b588685 100644
|
||||
macro(Loop)
|
||||
macro(LoopLimit)
|
||||
diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp
|
||||
index dc92af402..ef4a6ab13 100644
|
||||
index 147ce88..45e2d11 100644
|
||||
--- a/src/hotspot/share/opto/compile.cpp
|
||||
+++ b/src/hotspot/share/opto/compile.cpp
|
||||
@@ -2207,8 +2207,8 @@ void Compile::Optimize() {
|
||||
@@ -2213,8 +2213,8 @@ void Compile::Optimize() {
|
||||
|
||||
#endif
|
||||
|
||||
@ -2608,7 +2568,7 @@ index dc92af402..ef4a6ab13 100644
|
||||
bs->verify_gc_barriers(true);
|
||||
#endif
|
||||
|
||||
@@ -2380,12 +2380,6 @@ void Compile::Optimize() {
|
||||
@@ -2386,12 +2386,6 @@ void Compile::Optimize() {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2621,7 +2581,7 @@ index dc92af402..ef4a6ab13 100644
|
||||
if (failing()) return;
|
||||
|
||||
// Ensure that major progress is now clear
|
||||
@@ -2405,7 +2399,13 @@ void Compile::Optimize() {
|
||||
@@ -2411,7 +2405,13 @@ void Compile::Optimize() {
|
||||
}
|
||||
|
||||
#ifdef ASSERT
|
||||
@ -2636,7 +2596,7 @@ index dc92af402..ef4a6ab13 100644
|
||||
bs->verify_gc_barriers(false);
|
||||
#endif
|
||||
|
||||
@@ -2953,10 +2953,6 @@ void Compile::final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc) {
|
||||
@@ -2980,10 +2980,6 @@ void Compile::final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc) {
|
||||
case Op_LoadL_unaligned:
|
||||
case Op_LoadPLocked:
|
||||
case Op_LoadP:
|
||||
@ -2647,7 +2607,7 @@ index dc92af402..ef4a6ab13 100644
|
||||
case Op_LoadN:
|
||||
case Op_LoadRange:
|
||||
case Op_LoadS: {
|
||||
@@ -2973,6 +2969,29 @@ void Compile::final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc) {
|
||||
@@ -3000,6 +2996,29 @@ void Compile::final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc) {
|
||||
break;
|
||||
}
|
||||
|
||||
@ -2678,7 +2638,7 @@ index dc92af402..ef4a6ab13 100644
|
||||
Node *addp = n->in(AddPNode::Address);
|
||||
assert( !addp->is_AddP() ||
|
||||
diff --git a/src/hotspot/share/opto/compile.hpp b/src/hotspot/share/opto/compile.hpp
|
||||
index a56439bbf..bfd85d032 100644
|
||||
index 04ced5d..320030e 100644
|
||||
--- a/src/hotspot/share/opto/compile.hpp
|
||||
+++ b/src/hotspot/share/opto/compile.hpp
|
||||
@@ -52,6 +52,7 @@ class C2Compiler;
|
||||
@ -2689,7 +2649,7 @@ index a56439bbf..bfd85d032 100644
|
||||
class InlineTree;
|
||||
class Int_Array;
|
||||
class LoadBarrierNode;
|
||||
@@ -655,6 +656,7 @@ class Compile : public Phase {
|
||||
@@ -659,6 +660,7 @@ class Compile : public Phase {
|
||||
void set_inlining_incrementally(bool z) { _inlining_incrementally = z; }
|
||||
int inlining_incrementally() const { return _inlining_incrementally; }
|
||||
void set_major_progress() { _major_progress++; }
|
||||
@ -2697,7 +2657,7 @@ index a56439bbf..bfd85d032 100644
|
||||
void clear_major_progress() { _major_progress = 0; }
|
||||
int num_loop_opts() const { return _num_loop_opts; }
|
||||
void set_num_loop_opts(int n) { _num_loop_opts = n; }
|
||||
@@ -744,7 +746,15 @@ class Compile : public Phase {
|
||||
@@ -748,7 +750,15 @@ class Compile : public Phase {
|
||||
C->_latest_stage_start_counter.stamp();
|
||||
}
|
||||
|
||||
@ -2714,7 +2674,7 @@ index a56439bbf..bfd85d032 100644
|
||||
EventCompilerPhase event;
|
||||
if (event.should_commit()) {
|
||||
event.set_starttime(C->_latest_stage_start_counter);
|
||||
@@ -754,10 +764,15 @@ class Compile : public Phase {
|
||||
@@ -758,10 +768,15 @@ class Compile : public Phase {
|
||||
event.commit();
|
||||
}
|
||||
|
||||
@ -2734,10 +2694,10 @@ index a56439bbf..bfd85d032 100644
|
||||
#endif
|
||||
C->_latest_stage_start_counter.stamp();
|
||||
diff --git a/src/hotspot/share/opto/escape.cpp b/src/hotspot/share/opto/escape.cpp
|
||||
index e0637ee47..235b31c4c 100644
|
||||
index b709058..cd0ef26 100644
|
||||
--- a/src/hotspot/share/opto/escape.cpp
|
||||
+++ b/src/hotspot/share/opto/escape.cpp
|
||||
@@ -453,10 +453,6 @@ void ConnectionGraph::add_node_to_connection_graph(Node *n, Unique_Node_List *de
|
||||
@@ -456,10 +456,6 @@ void ConnectionGraph::add_node_to_connection_graph(Node *n, Unique_Node_List *de
|
||||
break;
|
||||
}
|
||||
case Op_LoadP:
|
||||
@ -2748,7 +2708,7 @@ index e0637ee47..235b31c4c 100644
|
||||
case Op_LoadN:
|
||||
case Op_LoadPLocked: {
|
||||
add_objload_to_connection_graph(n, delayed_worklist);
|
||||
@@ -666,10 +662,6 @@ void ConnectionGraph::add_final_edges(Node *n) {
|
||||
@@ -696,10 +692,6 @@ void ConnectionGraph::add_final_edges(Node *n) {
|
||||
break;
|
||||
}
|
||||
case Op_LoadP:
|
||||
@ -2760,7 +2720,7 @@ index e0637ee47..235b31c4c 100644
|
||||
case Op_LoadPLocked: {
|
||||
// Using isa_ptr() instead of isa_oopptr() for LoadP and Phi because
|
||||
diff --git a/src/hotspot/share/opto/idealGraphPrinter.cpp b/src/hotspot/share/opto/idealGraphPrinter.cpp
|
||||
index d90f1d691..a07a51f3e 100644
|
||||
index d90f1d6..a07a51f 100644
|
||||
--- a/src/hotspot/share/opto/idealGraphPrinter.cpp
|
||||
+++ b/src/hotspot/share/opto/idealGraphPrinter.cpp
|
||||
@@ -350,14 +350,6 @@ void IdealGraphPrinter::end_method() {
|
||||
@ -2800,7 +2760,7 @@ index d90f1d691..a07a51f3e 100644
|
||||
// Warning, unsafe cast?
|
||||
_chaitin = (PhaseChaitin *)C->regalloc();
|
||||
diff --git a/src/hotspot/share/opto/idealGraphPrinter.hpp b/src/hotspot/share/opto/idealGraphPrinter.hpp
|
||||
index 2f4b9faf0..10dd02f9f 100644
|
||||
index 2f4b9fa..10dd02f 100644
|
||||
--- a/src/hotspot/share/opto/idealGraphPrinter.hpp
|
||||
+++ b/src/hotspot/share/opto/idealGraphPrinter.hpp
|
||||
@@ -81,10 +81,6 @@ class IdealGraphPrinter : public CHeapObj<mtCompiler> {
|
||||
@ -2846,7 +2806,7 @@ index 2f4b9faf0..10dd02f9f 100644
|
||||
void set_compile(Compile* compile) {C = compile; }
|
||||
};
|
||||
diff --git a/src/hotspot/share/opto/lcm.cpp b/src/hotspot/share/opto/lcm.cpp
|
||||
index 50c0c2dd3..05ec9fa9f 100644
|
||||
index 50c0c2d..05ec9fa 100644
|
||||
--- a/src/hotspot/share/opto/lcm.cpp
|
||||
+++ b/src/hotspot/share/opto/lcm.cpp
|
||||
@@ -170,7 +170,6 @@ void PhaseCFG::implicit_null_check(Block* block, Node *proj, Node *val, int allo
|
||||
@ -2858,10 +2818,10 @@ index 50c0c2dd3..05ec9fa9f 100644
|
||||
case Op_LoadS:
|
||||
case Op_LoadKlass:
|
||||
diff --git a/src/hotspot/share/opto/loopnode.cpp b/src/hotspot/share/opto/loopnode.cpp
|
||||
index 4103fa4bd..b0b7fe185 100644
|
||||
index 641c829..6aff3d5 100644
|
||||
--- a/src/hotspot/share/opto/loopnode.cpp
|
||||
+++ b/src/hotspot/share/opto/loopnode.cpp
|
||||
@@ -986,7 +986,7 @@ void LoopNode::verify_strip_mined(int expect_skeleton) const {
|
||||
@@ -990,7 +990,7 @@ void LoopNode::verify_strip_mined(int expect_skeleton) const {
|
||||
wq.push(u);
|
||||
bool found_sfpt = false;
|
||||
for (uint next = 0; next < wq.size() && !found_sfpt; next++) {
|
||||
@ -2870,7 +2830,7 @@ index 4103fa4bd..b0b7fe185 100644
|
||||
for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax && !found_sfpt; i++) {
|
||||
Node* u = n->fast_out(i);
|
||||
if (u == sfpt) {
|
||||
@@ -1000,6 +1000,19 @@ void LoopNode::verify_strip_mined(int expect_skeleton) const {
|
||||
@@ -1004,6 +1004,19 @@ void LoopNode::verify_strip_mined(int expect_skeleton) const {
|
||||
assert(found_sfpt, "no node in loop that's not input to safepoint");
|
||||
}
|
||||
}
|
||||
@ -2890,7 +2850,7 @@ index 4103fa4bd..b0b7fe185 100644
|
||||
CountedLoopEndNode* cle = inner_out->in(0)->as_CountedLoopEnd();
|
||||
assert(cle == inner->loopexit_or_null(), "mismatch");
|
||||
bool has_skeleton = outer_le->in(1)->bottom_type()->singleton() && outer_le->in(1)->bottom_type()->is_int()->get_con() == 0;
|
||||
@@ -2717,7 +2730,7 @@ bool PhaseIdealLoop::process_expensive_nodes() {
|
||||
@@ -2729,7 +2742,7 @@ bool PhaseIdealLoop::process_expensive_nodes() {
|
||||
//----------------------------build_and_optimize-------------------------------
|
||||
// Create a PhaseLoop. Build the ideal Loop tree. Map each Ideal Node to
|
||||
// its corresponding LoopNode. If 'optimize' is true, do some loop cleanups.
|
||||
@ -2898,18 +2858,18 @@ index 4103fa4bd..b0b7fe185 100644
|
||||
+void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode, bool z_barrier_insertion) {
|
||||
bool do_split_ifs = (mode == LoopOptsDefault || mode == LoopOptsLastRound);
|
||||
bool skip_loop_opts = (mode == LoopOptsNone);
|
||||
|
||||
@@ -2784,7 +2797,8 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
@@ -2800,7 +2813,8 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
|
||||
}
|
||||
|
||||
// Nothing to do, so get out
|
||||
- bool stop_early = !C->has_loops() && !skip_loop_opts && !do_split_ifs && !_verify_me && !_verify_only;
|
||||
+ bool stop_early = !C->has_loops() && !skip_loop_opts && !do_split_ifs && !_verify_me && !_verify_only &&
|
||||
- bool stop_early = !C->has_loops() && !skip_loop_opts && !do_split_ifs && !_verify_me && !_verify_only SHENANDOAHGC_ONLY(&& !shenandoah_opts);
|
||||
+ bool stop_early = !C->has_loops() && !skip_loop_opts && !do_split_ifs && !_verify_me && !_verify_only SHENANDOAHGC_ONLY(&& !shenandoah_opts) &&
|
||||
+ !z_barrier_insertion;
|
||||
bool do_expensive_nodes = C->should_optimize_expensive_nodes(_igvn);
|
||||
if (stop_early && !do_expensive_nodes) {
|
||||
_igvn.optimize(); // Cleanup NeverBranches
|
||||
@@ -2876,9 +2890,7 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
|
||||
@@ -2892,9 +2906,7 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
|
||||
build_loop_late( visited, worklist, nstack );
|
||||
|
||||
if (_verify_only) {
|
||||
@ -2920,7 +2880,7 @@ index 4103fa4bd..b0b7fe185 100644
|
||||
assert(C->unique() == unique, "verification mode made Nodes? ? ?");
|
||||
assert(_igvn._worklist.size() == orig_worklist_size, "shouldn't push anything");
|
||||
return;
|
||||
@@ -2922,10 +2934,7 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
|
||||
@@ -2938,10 +2950,7 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
|
||||
|
||||
if (skip_loop_opts) {
|
||||
// restore major progress flag
|
||||
@ -2932,9 +2892,9 @@ index 4103fa4bd..b0b7fe185 100644
|
||||
// Cleanup any modified bits
|
||||
_igvn.optimize();
|
||||
|
||||
@@ -2935,6 +2944,16 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
|
||||
return;
|
||||
@@ -2961,6 +2970,16 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
|
||||
}
|
||||
#endif
|
||||
|
||||
+ if(z_barrier_insertion) {
|
||||
+ BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
|
||||
@ -2949,7 +2909,7 @@ index 4103fa4bd..b0b7fe185 100644
|
||||
if (ReassociateInvariants) {
|
||||
// Reassociate invariants and prep for split_thru_phi
|
||||
for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) {
|
||||
@@ -3101,8 +3120,7 @@ void PhaseIdealLoop::verify() const {
|
||||
@@ -3127,8 +3146,7 @@ void PhaseIdealLoop::verify() const {
|
||||
_ltree_root->verify_tree(loop_verify._ltree_root, NULL);
|
||||
// Reset major-progress. It was cleared by creating a verify version of
|
||||
// PhaseIdealLoop.
|
||||
@ -2959,7 +2919,7 @@ index 4103fa4bd..b0b7fe185 100644
|
||||
}
|
||||
|
||||
//------------------------------verify_compare---------------------------------
|
||||
@@ -4225,7 +4243,6 @@ void PhaseIdealLoop::build_loop_late_post( Node *n ) {
|
||||
@@ -4256,7 +4274,6 @@ void PhaseIdealLoop::build_loop_late_post( Node *n ) {
|
||||
case Op_LoadS:
|
||||
case Op_LoadP:
|
||||
case Op_LoadBarrierSlowReg:
|
||||
@ -2968,10 +2928,10 @@ index 4103fa4bd..b0b7fe185 100644
|
||||
case Op_LoadRange:
|
||||
case Op_LoadD_unaligned:
|
||||
diff --git a/src/hotspot/share/opto/loopnode.hpp b/src/hotspot/share/opto/loopnode.hpp
|
||||
index 5efff246d..d2c50df70 100644
|
||||
index 7765ed9..53b9692 100644
|
||||
--- a/src/hotspot/share/opto/loopnode.hpp
|
||||
+++ b/src/hotspot/share/opto/loopnode.hpp
|
||||
@@ -929,7 +929,7 @@ public:
|
||||
@@ -936,7 +936,7 @@ public:
|
||||
}
|
||||
|
||||
// build the loop tree and perform any requested optimizations
|
||||
@ -2980,7 +2940,7 @@ index 5efff246d..d2c50df70 100644
|
||||
|
||||
// Dominators for the sea of nodes
|
||||
void Dominators();
|
||||
@@ -939,13 +939,13 @@ public:
|
||||
@@ -946,13 +946,13 @@ public:
|
||||
Node *dom_lca_internal( Node *n1, Node *n2 ) const;
|
||||
|
||||
// Compute the Ideal Node to Loop mapping
|
||||
@ -2997,7 +2957,7 @@ index 5efff246d..d2c50df70 100644
|
||||
|
||||
// Verify that verify_me made the same decisions as a fresh run.
|
||||
diff --git a/src/hotspot/share/opto/loopopts.cpp b/src/hotspot/share/opto/loopopts.cpp
|
||||
index 567069193..5793f51f2 100644
|
||||
index 5670691..5793f51 100644
|
||||
--- a/src/hotspot/share/opto/loopopts.cpp
|
||||
+++ b/src/hotspot/share/opto/loopopts.cpp
|
||||
@@ -1420,12 +1420,6 @@ void PhaseIdealLoop::split_if_with_blocks_post(Node *n, bool last_round) {
|
||||
@ -3014,10 +2974,10 @@ index 567069193..5793f51f2 100644
|
||||
|
||||
//------------------------------split_if_with_blocks---------------------------
|
||||
diff --git a/src/hotspot/share/opto/matcher.cpp b/src/hotspot/share/opto/matcher.cpp
|
||||
index 1824c89cd..bdcf9c424 100644
|
||||
index 9437d37..45d2627 100644
|
||||
--- a/src/hotspot/share/opto/matcher.cpp
|
||||
+++ b/src/hotspot/share/opto/matcher.cpp
|
||||
@@ -2279,6 +2279,33 @@ void Matcher::find_shared( Node *n ) {
|
||||
@@ -2294,6 +2294,33 @@ void Matcher::find_shared( Node *n ) {
|
||||
n->del_req(LoadStoreConditionalNode::ExpectedIn);
|
||||
break;
|
||||
}
|
||||
@ -3052,10 +3012,10 @@ index 1824c89cd..bdcf9c424 100644
|
||||
case Op_CMoveF:
|
||||
case Op_CMoveI:
|
||||
diff --git a/src/hotspot/share/opto/memnode.cpp b/src/hotspot/share/opto/memnode.cpp
|
||||
index ea33eef95..cdaf7669c 100644
|
||||
index 6f88074..76e950c 100644
|
||||
--- a/src/hotspot/share/opto/memnode.cpp
|
||||
+++ b/src/hotspot/share/opto/memnode.cpp
|
||||
@@ -927,14 +927,6 @@ static bool skip_through_membars(Compile::AliasType* atp, const TypeInstPtr* tp,
|
||||
@@ -930,14 +930,6 @@ static bool skip_through_membars(Compile::AliasType* atp, const TypeInstPtr* tp,
|
||||
// a load node that reads from the source array so we may be able to
|
||||
// optimize out the ArrayCopy node later.
|
||||
Node* LoadNode::can_see_arraycopy_value(Node* st, PhaseGVN* phase) const {
|
||||
@ -3070,7 +3030,7 @@ index ea33eef95..cdaf7669c 100644
|
||||
Node* ld_adr = in(MemNode::Address);
|
||||
intptr_t ld_off = 0;
|
||||
AllocateNode* ld_alloc = AllocateNode::Ideal_allocation(ld_adr, phase, ld_off);
|
||||
@@ -2825,7 +2817,8 @@ const Type* SCMemProjNode::Value(PhaseGVN* phase) const
|
||||
@@ -2833,7 +2825,8 @@ const Type* SCMemProjNode::Value(PhaseGVN* phase) const
|
||||
LoadStoreNode::LoadStoreNode( Node *c, Node *mem, Node *adr, Node *val, const TypePtr* at, const Type* rt, uint required )
|
||||
: Node(required),
|
||||
_type(rt),
|
||||
@ -3080,7 +3040,7 @@ index ea33eef95..cdaf7669c 100644
|
||||
{
|
||||
init_req(MemNode::Control, c );
|
||||
init_req(MemNode::Memory , mem);
|
||||
@@ -3119,16 +3112,6 @@ Node *MemBarNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
||||
@@ -3127,16 +3120,6 @@ Node *MemBarNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -3098,7 +3058,7 @@ index ea33eef95..cdaf7669c 100644
|
||||
// Eliminate volatile MemBars for scalar replaced objects.
|
||||
if (can_reshape && req() == (Precedent+1)) {
|
||||
diff --git a/src/hotspot/share/opto/memnode.hpp b/src/hotspot/share/opto/memnode.hpp
|
||||
index 529075761..e2bd6a6d8 100644
|
||||
index 5290757..e2bd6a6 100644
|
||||
--- a/src/hotspot/share/opto/memnode.hpp
|
||||
+++ b/src/hotspot/share/opto/memnode.hpp
|
||||
@@ -182,6 +182,8 @@ private:
|
||||
@ -3148,7 +3108,7 @@ index 529075761..e2bd6a6d8 100644
|
||||
|
||||
class LoadStoreConditionalNode : public LoadStoreNode {
|
||||
diff --git a/src/hotspot/share/opto/node.cpp b/src/hotspot/share/opto/node.cpp
|
||||
index a7d26152e..9bfc3a3b9 100644
|
||||
index 7d12e97..bb020c4 100644
|
||||
--- a/src/hotspot/share/opto/node.cpp
|
||||
+++ b/src/hotspot/share/opto/node.cpp
|
||||
@@ -546,6 +546,9 @@ Node *Node::clone() const {
|
||||
@ -3180,7 +3140,7 @@ index a7d26152e..9bfc3a3b9 100644
|
||||
|
||||
|
||||
diff --git a/src/hotspot/share/opto/node.hpp b/src/hotspot/share/opto/node.hpp
|
||||
index 608aa0c8f..49f415a31 100644
|
||||
index b5c6168..a4c5fd8 100644
|
||||
--- a/src/hotspot/share/opto/node.hpp
|
||||
+++ b/src/hotspot/share/opto/node.hpp
|
||||
@@ -84,8 +84,8 @@ class JumpProjNode;
|
||||
@ -3193,7 +3153,7 @@ index 608aa0c8f..49f415a31 100644
|
||||
class LockNode;
|
||||
class LoopNode;
|
||||
class MachBranchNode;
|
||||
@@ -691,8 +691,7 @@ public:
|
||||
@@ -696,8 +696,7 @@ public:
|
||||
DEFINE_CLASS_ID(Mem, Node, 4)
|
||||
DEFINE_CLASS_ID(Load, Mem, 0)
|
||||
DEFINE_CLASS_ID(LoadVector, Load, 0)
|
||||
@ -3203,7 +3163,7 @@ index 608aa0c8f..49f415a31 100644
|
||||
DEFINE_CLASS_ID(Store, Mem, 1)
|
||||
DEFINE_CLASS_ID(StoreVector, Store, 0)
|
||||
DEFINE_CLASS_ID(LoadStore, Mem, 2)
|
||||
@@ -834,9 +833,9 @@ public:
|
||||
@@ -839,9 +838,9 @@ public:
|
||||
DEFINE_CLASS_QUERY(JumpProj)
|
||||
DEFINE_CLASS_QUERY(Load)
|
||||
DEFINE_CLASS_QUERY(LoadStore)
|
||||
@ -3215,7 +3175,7 @@ index 608aa0c8f..49f415a31 100644
|
||||
DEFINE_CLASS_QUERY(Loop)
|
||||
DEFINE_CLASS_QUERY(Mach)
|
||||
diff --git a/src/hotspot/share/opto/phaseX.cpp b/src/hotspot/share/opto/phaseX.cpp
|
||||
index 686e709c3..d1177a56e 100644
|
||||
index c65121d..07b8490 100644
|
||||
--- a/src/hotspot/share/opto/phaseX.cpp
|
||||
+++ b/src/hotspot/share/opto/phaseX.cpp
|
||||
@@ -947,9 +947,6 @@ PhaseIterGVN::PhaseIterGVN( PhaseGVN *gvn ) : PhaseGVN(gvn),
|
||||
@ -3229,12 +3189,12 @@ index 686e709c3..d1177a56e 100644
|
||||
|
||||
/**
|
||||
diff --git a/src/hotspot/share/opto/phasetype.hpp b/src/hotspot/share/opto/phasetype.hpp
|
||||
index f0eac0b0b..b01b7630f 100644
|
||||
index 2f0b6ae..100db17 100644
|
||||
--- a/src/hotspot/share/opto/phasetype.hpp
|
||||
+++ b/src/hotspot/share/opto/phasetype.hpp
|
||||
@@ -53,6 +53,9 @@ enum CompilerPhaseType {
|
||||
PHASE_INCREMENTAL_INLINE,
|
||||
PHASE_INCREMENTAL_BOXING_INLINE,
|
||||
@@ -56,6 +56,9 @@ enum CompilerPhaseType {
|
||||
PHASE_BEFORE_BARRIER_EXPAND,
|
||||
#endif
|
||||
PHASE_BEFORE_MACRO_EXPANSION,
|
||||
+ PHASE_CALL_CATCH_CLEANUP,
|
||||
+ PHASE_INSERT_BARRIER,
|
||||
@ -3242,9 +3202,9 @@ index f0eac0b0b..b01b7630f 100644
|
||||
PHASE_END,
|
||||
PHASE_FAILURE,
|
||||
|
||||
@@ -90,6 +93,9 @@ class CompilerPhaseTypeHelper {
|
||||
case PHASE_INCREMENTAL_INLINE: return "Incremental Inline";
|
||||
case PHASE_INCREMENTAL_BOXING_INLINE: return "Incremental Boxing Inline";
|
||||
@@ -96,6 +99,9 @@ class CompilerPhaseTypeHelper {
|
||||
case PHASE_BEFORE_BARRIER_EXPAND: return "Before Barrier Expand";
|
||||
#endif
|
||||
case PHASE_BEFORE_MACRO_EXPANSION: return "Before macro expansion";
|
||||
+ case PHASE_CALL_CATCH_CLEANUP: return "Call catch cleanup";
|
||||
+ case PHASE_INSERT_BARRIER: return "Insert barrier";
|
||||
@ -3253,10 +3213,10 @@ index f0eac0b0b..b01b7630f 100644
|
||||
case PHASE_FAILURE: return "Failure";
|
||||
default:
|
||||
diff --git a/src/hotspot/share/opto/vectornode.cpp b/src/hotspot/share/opto/vectornode.cpp
|
||||
index 593baf972..b40587ba5 100644
|
||||
index d85b57b..0258db3 100644
|
||||
--- a/src/hotspot/share/opto/vectornode.cpp
|
||||
+++ b/src/hotspot/share/opto/vectornode.cpp
|
||||
@@ -253,7 +253,6 @@ void VectorNode::vector_operands(Node* n, uint* start, uint* end) {
|
||||
@@ -265,7 +265,6 @@ void VectorNode::vector_operands(Node* n, uint* start, uint* end) {
|
||||
case Op_LoadF: case Op_LoadD:
|
||||
case Op_LoadP: case Op_LoadN:
|
||||
case Op_LoadBarrierSlowReg:
|
||||
@ -3265,26 +3225,24 @@ index 593baf972..b40587ba5 100644
|
||||
*end = 0; // no vector operands
|
||||
break;
|
||||
diff --git a/src/hotspot/share/runtime/stackValue.cpp b/src/hotspot/share/runtime/stackValue.cpp
|
||||
index e7a122ce1..3573555c8 100644
|
||||
index acc8726..cab1de7 100644
|
||||
--- a/src/hotspot/share/runtime/stackValue.cpp
|
||||
+++ b/src/hotspot/share/runtime/stackValue.cpp
|
||||
@@ -122,13 +122,7 @@ StackValue* StackValue::create_stack_value(const frame* fr, const RegisterMap* r
|
||||
val = (oop)NULL;
|
||||
@@ -139,11 +139,7 @@ StackValue* StackValue::create_stack_value(const frame* fr, const RegisterMap* r
|
||||
}
|
||||
#endif
|
||||
-#if INCLUDE_ZGC
|
||||
- // Deoptimization must make sure all oop have passed load barrier
|
||||
- if (UseZGC) {
|
||||
- val = ZBarrier::load_barrier_on_oop_field_preloaded((oop*)value_addr, val);
|
||||
|
||||
-#if INCLUDE_SHENANDOAHGC
|
||||
- if (UseShenandoahGC) {
|
||||
- val = ShenandoahBarrierSet::barrier_set()->load_reference_barrier(val);
|
||||
- }
|
||||
-#endif
|
||||
-
|
||||
+ assert(oopDesc::is_oop_or_null(val, false), "bad oop found");
|
||||
Handle h(Thread::current(), val); // Wrap a handle around the oop
|
||||
return new StackValue(h);
|
||||
}
|
||||
diff --git a/src/hotspot/share/utilities/growableArray.hpp b/src/hotspot/share/utilities/growableArray.hpp
|
||||
index f37d94a05..6c84180a6 100644
|
||||
index f37d94a..6c84180 100644
|
||||
--- a/src/hotspot/share/utilities/growableArray.hpp
|
||||
+++ b/src/hotspot/share/utilities/growableArray.hpp
|
||||
@@ -152,6 +152,12 @@ class GenericGrowableArray : public ResourceObj {
|
||||
@ -3338,6 +3296,3 @@ index f37d94a05..6c84180a6 100644
|
||||
};
|
||||
|
||||
// Global GrowableArray methods (one instance in the library per each 'E' type).
|
||||
--
|
||||
2.19.1
|
||||
|
||||
|
||||
@ -1,76 +0,0 @@
|
||||
From 7a656d6c14da1ec666ee5ebf55995c6b6bf4ab7f Mon Sep 17 00:00:00 2001
|
||||
Date: Tue, 17 Mar 2020 11:06:41 +0800
|
||||
Subject: [PATCH] 8226536: Catch OOM from deopt that fails rematerializing
|
||||
objects
|
||||
|
||||
Summary: <test>: fix testcase, catch OOM from deopt that fails rematerializing objects
|
||||
LLT: jtreg
|
||||
Bug url: https://bugs.openjdk.java.net/browse/JDK-8226536
|
||||
---
|
||||
.../vmTestbase/nsk/share/gc/gp/GarbageUtils.java | 36 ++++++++++++++++++++--
|
||||
1 file changed, 34 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java b/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java
|
||||
index 333bf070b..4d18a6871 100644
|
||||
--- a/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java
|
||||
+++ b/test/hotspot/jtreg/vmTestbase/nsk/share/gc/gp/GarbageUtils.java
|
||||
@@ -26,6 +26,7 @@ package nsk.share.gc.gp;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
+import java.lang.invoke.*;
|
||||
import java.util.*;
|
||||
import nsk.share.gc.gp.array.*;
|
||||
import nsk.share.gc.gp.string.*;
|
||||
@@ -193,6 +194,36 @@ public final class GarbageUtils {
|
||||
return eatMemory(stresser, gp, initialFactor, minMemoryChunk, factor, OOM_TYPE.ANY);
|
||||
}
|
||||
|
||||
+ static int numberOfOOMEs = 0;
|
||||
+
|
||||
+ /**
|
||||
+ * Minimal wrapper of the main implementation. Catches any OOM
|
||||
+ * that might be thrown when rematerializing Objects when deoptimizing.
|
||||
+ *
|
||||
+ * It is Important that the impl is not inlined.
|
||||
+ */
|
||||
+
|
||||
+ public static int eatMemory(ExecutionController stresser, GarbageProducer gp, long initialFactor, long minMemoryChunk, long factor, OOM_TYPE type) {
|
||||
+ try {
|
||||
+ // Using a methodhandle invoke of eatMemoryImpl to prevent inlining of it
|
||||
+ MethodHandles.Lookup lookup = MethodHandles.lookup();
|
||||
+ MethodType mt = MethodType.methodType(
|
||||
+ int.class,
|
||||
+ ExecutionController.class,
|
||||
+ GarbageProducer.class,
|
||||
+ long.class,
|
||||
+ long.class,
|
||||
+ long.class,
|
||||
+ OOM_TYPE.class);
|
||||
+ MethodHandle eat = lookup.findStatic(GarbageUtils.class, "eatMemoryImpl", mt);
|
||||
+ return (int) eat.invoke(stresser, gp, initialFactor, minMemoryChunk, factor, type);
|
||||
+ } catch (OutOfMemoryError e) {
|
||||
+ return numberOfOOMEs++;
|
||||
+ } catch (Throwable t) {
|
||||
+ throw new RuntimeException(t);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Eat memory using given garbage producer.
|
||||
*
|
||||
@@ -210,8 +241,9 @@ public final class GarbageUtils {
|
||||
* @param type of OutOfMemory Exception: Java heap space or Metadata space
|
||||
* @return number of OOME occured
|
||||
*/
|
||||
- public static int eatMemory(ExecutionController stresser, GarbageProducer gp, long initialFactor, long minMemoryChunk, long factor, OOM_TYPE type) {
|
||||
- int numberOfOOMEs = 0;
|
||||
+
|
||||
+ public static int eatMemoryImpl(ExecutionController stresser, GarbageProducer gp, long initialFactor, long minMemoryChunk, long factor, OOM_TYPE type) {
|
||||
+ numberOfOOMEs = 0;
|
||||
try {
|
||||
StringWriter sw = new StringWriter(10000);
|
||||
PrintWriter pw = new PrintWriter(sw);
|
||||
--
|
||||
2.12.3
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
diff --git a/src/hotspot/share/opto/classes.hpp b/src/hotspot/share/opto/classes.hpp
|
||||
index da01e48..6938ed2 100644
|
||||
index 5ee23f7..b847caf 100644
|
||||
--- a/src/hotspot/share/opto/classes.hpp
|
||||
+++ b/src/hotspot/share/opto/classes.hpp
|
||||
@@ -225,6 +225,8 @@ macro(NegF)
|
||||
@@ -226,6 +226,8 @@ macro(NegF)
|
||||
macro(NeverBranch)
|
||||
macro(OnSpinWait)
|
||||
macro(Opaque1)
|
||||
@ -12,10 +12,10 @@ index da01e48..6938ed2 100644
|
||||
macro(Opaque3)
|
||||
macro(Opaque4)
|
||||
diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp
|
||||
index b6980c4..ac7b848 100644
|
||||
index e5559a2..efe4cff 100644
|
||||
--- a/src/hotspot/share/opto/compile.cpp
|
||||
+++ b/src/hotspot/share/opto/compile.cpp
|
||||
@@ -1981,7 +1981,17 @@ void Compile::remove_opaque4_nodes(PhaseIterGVN &igvn) {
|
||||
@@ -1987,7 +1987,17 @@ void Compile::remove_opaque4_nodes(PhaseIterGVN &igvn) {
|
||||
for (int i = opaque4_count(); i > 0; i--) {
|
||||
Node* opaq = opaque4_node(i-1);
|
||||
assert(opaq->Opcode() == Op_Opaque4, "Opaque4 only");
|
||||
@ -34,10 +34,10 @@ index b6980c4..ac7b848 100644
|
||||
assert(opaque4_count() == 0, "should be empty");
|
||||
}
|
||||
diff --git a/src/hotspot/share/opto/loopPredicate.cpp b/src/hotspot/share/opto/loopPredicate.cpp
|
||||
index ee20972..e255f46 100644
|
||||
index 6e85398..a6d2257 100644
|
||||
--- a/src/hotspot/share/opto/loopPredicate.cpp
|
||||
+++ b/src/hotspot/share/opto/loopPredicate.cpp
|
||||
@@ -1244,8 +1244,9 @@ ProjNode* PhaseIdealLoop::insert_initial_skeleton_predicate(IfNode* iff, IdealLo
|
||||
@@ -1243,8 +1243,9 @@ ProjNode* PhaseIdealLoop::insert_initial_skeleton_predicate(IfNode* iff, IdealLo
|
||||
Node* init, Node* limit, jint stride,
|
||||
Node* rng, bool &overflow,
|
||||
Deoptimization::DeoptReason reason) {
|
||||
@ -48,7 +48,7 @@ index ee20972..e255f46 100644
|
||||
register_new_node(opaque_init, upper_bound_proj);
|
||||
BoolNode* bol = rc_predicate(loop, upper_bound_proj, scale, offset, opaque_init, limit, stride, rng, (stride > 0) != (scale > 0), overflow);
|
||||
Node* opaque_bol = new Opaque4Node(C, bol, _igvn.intcon(1)); // This will go away once loop opts are over
|
||||
@@ -1253,6 +1254,22 @@ ProjNode* PhaseIdealLoop::insert_initial_skeleton_predicate(IfNode* iff, IdealLo
|
||||
@@ -1252,6 +1253,22 @@ ProjNode* PhaseIdealLoop::insert_initial_skeleton_predicate(IfNode* iff, IdealLo
|
||||
ProjNode* new_proj = create_new_if_for_predicate(predicate_proj, NULL, reason, overflow ? Op_If : iff->Opcode());
|
||||
_igvn.replace_input_of(new_proj->in(0), 1, opaque_bol);
|
||||
assert(opaque_init->outcnt() > 0, "should be used");
|
||||
@ -72,7 +72,7 @@ index ee20972..e255f46 100644
|
||||
}
|
||||
|
||||
diff --git a/src/hotspot/share/opto/loopTransform.cpp b/src/hotspot/share/opto/loopTransform.cpp
|
||||
index 46790ef..c678544 100644
|
||||
index 5e6faaa..89628bb 100644
|
||||
--- a/src/hotspot/share/opto/loopTransform.cpp
|
||||
+++ b/src/hotspot/share/opto/loopTransform.cpp
|
||||
@@ -1080,7 +1080,7 @@ void PhaseIdealLoop::ensure_zero_trip_guard_proj(Node* node, bool is_main_loop)
|
||||
@ -218,44 +218,44 @@ index 46790ef..c678544 100644
|
||||
assert(!skeleton_predicate_has_opaque(prev_proj->in(0)->as_If()), "unexpected");
|
||||
}
|
||||
}
|
||||
@@ -2594,22 +2597,22 @@ int PhaseIdealLoop::do_range_check( IdealLoopTree *loop, Node_List &old_new ) {
|
||||
// (0-offset)/scale could be outside of loop iterations range.
|
||||
conditional_rc = true;
|
||||
@@ -2547,22 +2550,22 @@ int PhaseIdealLoop::do_range_check( IdealLoopTree *loop, Node_List &old_new ) {
|
||||
// The underflow and overflow limits: 0 <= scale*I+offset < limit
|
||||
add_constraint(stride_con, lscale_con, offset, zero, limit, pre_ctrl, &pre_limit, &main_limit);
|
||||
Node* init = cl->init_trip();
|
||||
- Node* opaque_init = new Opaque1Node(C, init);
|
||||
+ Node* opaque_init = new OpaqueLoopInitNode(C, init);
|
||||
register_new_node(opaque_init, predicate_proj);
|
||||
+ // predicate on first value of first iteration
|
||||
+ // predicate on first value of first iteration
|
||||
+ predicate_proj = add_range_check_predicate(loop, cl, predicate_proj, scale_con, offset, limit, stride_con, init);
|
||||
+ assert(!skeleton_predicate_has_opaque(predicate_proj->in(0)->as_If()), "unexpected");
|
||||
// template predicate so it can be updated on next unrolling
|
||||
predicate_proj = add_range_check_predicate(loop, cl, predicate_proj, scale_con, offset, limit, stride_con, opaque_init);
|
||||
predicate_proj = add_range_check_predicate(loop, cl, predicate_proj, scale_con, int_offset, int_limit, stride_con, opaque_init);
|
||||
assert(skeleton_predicate_has_opaque(predicate_proj->in(0)->as_If()), "unexpected");
|
||||
- // predicate on first value of first iteration
|
||||
- predicate_proj = add_range_check_predicate(loop, cl, predicate_proj, scale_con, offset, limit, stride_con, init);
|
||||
- predicate_proj = add_range_check_predicate(loop, cl, predicate_proj, scale_con, int_offset, int_limit, stride_con, init);
|
||||
- assert(!skeleton_predicate_has_opaque(predicate_proj->in(0)->as_If()), "unexpected");
|
||||
- int init_inc = stride_con/cl->unrolled_count();
|
||||
- assert(init_inc != 0, "invalid loop increment");
|
||||
- Node* max_value = _igvn.intcon(stride_con - init_inc);
|
||||
- max_value = new AddINode(init, max_value);
|
||||
+ Node* opaque_stride = new OpaqueLoopStrideNode(C, cl->stride());
|
||||
+ Node* opaque_stride = new OpaqueLoopStrideNode(C, cl->stride());
|
||||
+ register_new_node(opaque_stride, predicate_proj);
|
||||
+ Node* max_value = new SubINode(opaque_stride, cl->stride());
|
||||
+ register_new_node(max_value, predicate_proj);
|
||||
+ max_value = new AddINode(opaque_init, max_value);
|
||||
+ max_value = new AddINode(opaque_init, max_value);
|
||||
register_new_node(max_value, predicate_proj);
|
||||
- // predicate on last value of first iteration (in case unrolling has already happened)
|
||||
predicate_proj = add_range_check_predicate(loop, cl, predicate_proj, scale_con, offset, limit, stride_con, max_value);
|
||||
predicate_proj = add_range_check_predicate(loop, cl, predicate_proj, scale_con, int_offset, int_limit, stride_con, max_value);
|
||||
- assert(!skeleton_predicate_has_opaque(predicate_proj->in(0)->as_If()), "unexpected");
|
||||
+ assert(skeleton_predicate_has_opaque(predicate_proj->in(0)->as_If()), "unexpected");
|
||||
} else {
|
||||
if (PrintOpto) {
|
||||
tty->print_cr("missed RCE opportunity");
|
||||
diff --git a/src/hotspot/share/opto/loopnode.hpp b/src/hotspot/share/opto/loopnode.hpp
|
||||
index 3951259..6d68df0 100644
|
||||
index 53b9692..7c54113 100644
|
||||
--- a/src/hotspot/share/opto/loopnode.hpp
|
||||
+++ b/src/hotspot/share/opto/loopnode.hpp
|
||||
@@ -747,13 +747,13 @@ private:
|
||||
@@ -748,13 +748,13 @@ private:
|
||||
#ifdef ASSERT
|
||||
void ensure_zero_trip_guard_proj(Node* node, bool is_main_loop);
|
||||
#endif
|
||||
@ -333,10 +333,10 @@ index 6b85529..adbee17 100644
|
||||
if (res != NULL) {
|
||||
return n;
|
||||
diff --git a/src/hotspot/share/opto/macro.cpp b/src/hotspot/share/opto/macro.cpp
|
||||
index 9f3cb34..5f5cc75 100644
|
||||
index cf8eab1..8331d25 100644
|
||||
--- a/src/hotspot/share/opto/macro.cpp
|
||||
+++ b/src/hotspot/share/opto/macro.cpp
|
||||
@@ -2594,9 +2594,10 @@ void PhaseMacroExpand::eliminate_macro_nodes() {
|
||||
@@ -2617,9 +2617,10 @@ void PhaseMacroExpand::eliminate_macro_nodes() {
|
||||
break;
|
||||
case Node::Class_OuterStripMinedLoop:
|
||||
break;
|
||||
@ -348,7 +348,7 @@ index 9f3cb34..5f5cc75 100644
|
||||
n->Opcode() == Op_Opaque2 ||
|
||||
n->Opcode() == Op_Opaque3 ||
|
||||
BarrierSet::barrier_set()->barrier_set_c2()->is_gc_barrier_node(n),
|
||||
@@ -2638,7 +2639,7 @@ bool PhaseMacroExpand::expand_macro_nodes() {
|
||||
@@ -2661,7 +2662,7 @@ bool PhaseMacroExpand::expand_macro_nodes() {
|
||||
C->remove_macro_node(n);
|
||||
_igvn._worklist.push(n);
|
||||
success = true;
|
||||
@ -358,7 +358,7 @@ index 9f3cb34..5f5cc75 100644
|
||||
success = true;
|
||||
#if INCLUDE_RTM_OPT
|
||||
diff --git a/src/hotspot/share/opto/node.hpp b/src/hotspot/share/opto/node.hpp
|
||||
index cf0975e..a36f3bb 100644
|
||||
index 2a42e99..0eac634 100644
|
||||
--- a/src/hotspot/share/opto/node.hpp
|
||||
+++ b/src/hotspot/share/opto/node.hpp
|
||||
@@ -116,6 +116,7 @@ class MulNode;
|
||||
@ -369,7 +369,7 @@ index cf0975e..a36f3bb 100644
|
||||
class OuterStripMinedLoopNode;
|
||||
class OuterStripMinedLoopEndNode;
|
||||
class Node;
|
||||
@@ -608,10 +609,10 @@ public:
|
||||
@@ -611,10 +612,10 @@ public:
|
||||
// This enum is used only for C2 ideal and mach nodes with is_<node>() methods
|
||||
// so that it's values fits into 16 bits.
|
||||
enum NodeClasses {
|
||||
@ -384,7 +384,7 @@ index cf0975e..a36f3bb 100644
|
||||
DEFINE_CLASS_ID(Multi, Node, 0)
|
||||
DEFINE_CLASS_ID(SafePoint, Multi, 0)
|
||||
DEFINE_CLASS_ID(Call, SafePoint, 0)
|
||||
@@ -714,6 +715,7 @@ public:
|
||||
@@ -720,6 +721,7 @@ public:
|
||||
DEFINE_CLASS_ID(Vector, Node, 13)
|
||||
DEFINE_CLASS_ID(ClearArray, Node, 14)
|
||||
DEFINE_CLASS_ID(Halt, Node, 15)
|
||||
@ -392,7 +392,7 @@ index cf0975e..a36f3bb 100644
|
||||
|
||||
_max_classes = ClassMask_Halt
|
||||
};
|
||||
@@ -740,12 +742,12 @@ public:
|
||||
@@ -746,12 +748,12 @@ public:
|
||||
};
|
||||
|
||||
private:
|
||||
@ -407,7 +407,7 @@ index cf0975e..a36f3bb 100644
|
||||
_class_id = c; // cast out const
|
||||
}
|
||||
void init_flags(jushort fl) {
|
||||
@@ -758,7 +760,7 @@ protected:
|
||||
@@ -764,7 +766,7 @@ protected:
|
||||
}
|
||||
|
||||
public:
|
||||
@ -416,7 +416,7 @@ index cf0975e..a36f3bb 100644
|
||||
|
||||
const jushort flags() const { return _flags; }
|
||||
|
||||
@@ -859,6 +861,7 @@ public:
|
||||
@@ -865,6 +867,7 @@ public:
|
||||
DEFINE_CLASS_QUERY(Mul)
|
||||
DEFINE_CLASS_QUERY(Multi)
|
||||
DEFINE_CLASS_QUERY(MultiBranch)
|
||||
@ -466,10 +466,10 @@ index f97de4a..4c00528 100644
|
||||
//------------------------------Opaque2Node------------------------------------
|
||||
// A node to prevent unwanted optimizations. Allows constant folding. Stops
|
||||
diff --git a/src/hotspot/share/runtime/vmStructs.cpp b/src/hotspot/share/runtime/vmStructs.cpp
|
||||
index 413188e..98b8ade 100644
|
||||
index ad7fb42..85c4dfe 100644
|
||||
--- a/src/hotspot/share/runtime/vmStructs.cpp
|
||||
+++ b/src/hotspot/share/runtime/vmStructs.cpp
|
||||
@@ -949,7 +949,7 @@ typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
|
||||
@@ -951,7 +951,7 @@ typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
|
||||
c2_nonstatic_field(Node, _outcnt, node_idx_t) \
|
||||
c2_nonstatic_field(Node, _outmax, node_idx_t) \
|
||||
c2_nonstatic_field(Node, _idx, const node_idx_t) \
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
diff --git a/src/hotspot/share/c1/c1_Instruction.cpp b/src/hotspot/share/c1/c1_Instruction.cpp
|
||||
index ee3be899a..62d8b48bc 100644
|
||||
index ee3be89..62d8b48 100644
|
||||
--- a/src/hotspot/share/c1/c1_Instruction.cpp
|
||||
+++ b/src/hotspot/share/c1/c1_Instruction.cpp
|
||||
@@ -29,6 +29,7 @@
|
||||
@ -11,7 +11,7 @@ index ee3be899a..62d8b48bc 100644
|
||||
|
||||
// Implementation of Instruction
|
||||
diff --git a/src/hotspot/share/opto/graphKit.cpp b/src/hotspot/share/opto/graphKit.cpp
|
||||
index 852b763c1..31b8ffa21 100644
|
||||
index bf9179f..e0696de 100644
|
||||
--- a/src/hotspot/share/opto/graphKit.cpp
|
||||
+++ b/src/hotspot/share/opto/graphKit.cpp
|
||||
@@ -43,6 +43,7 @@
|
||||
@ -19,11 +19,11 @@ index 852b763c1..31b8ffa21 100644
|
||||
#include "runtime/deoptimization.hpp"
|
||||
#include "runtime/sharedRuntime.hpp"
|
||||
+#include "utilities/bitMap.inline.hpp"
|
||||
|
||||
//----------------------------GraphKit-----------------------------------------
|
||||
// Main utility constructor.
|
||||
#include "utilities/macros.hpp"
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
|
||||
diff --git a/src/hotspot/share/opto/parse1.cpp b/src/hotspot/share/opto/parse1.cpp
|
||||
index 177663653..eae7673f9 100644
|
||||
index 99b1a67..f94f028 100644
|
||||
--- a/src/hotspot/share/opto/parse1.cpp
|
||||
+++ b/src/hotspot/share/opto/parse1.cpp
|
||||
@@ -41,6 +41,7 @@
|
||||
@ -35,7 +35,7 @@ index 177663653..eae7673f9 100644
|
||||
|
||||
// Static array so we can figure out which bytecodes stop us from compiling
|
||||
diff --git a/src/hotspot/share/utilities/bitMap.hpp b/src/hotspot/share/utilities/bitMap.hpp
|
||||
index c671535c9..e26f34687 100644
|
||||
index c671535..e26f346 100644
|
||||
--- a/src/hotspot/share/utilities/bitMap.hpp
|
||||
+++ b/src/hotspot/share/utilities/bitMap.hpp
|
||||
@@ -26,6 +26,7 @@
|
||||
@ -84,7 +84,7 @@ index c671535c9..e26f34687 100644
|
||||
// Put the given value at the given offset. The parallel version
|
||||
// will CAS the value into the bitmap and is quite a bit slower.
|
||||
diff --git a/src/hotspot/share/utilities/bitMap.inline.hpp b/src/hotspot/share/utilities/bitMap.inline.hpp
|
||||
index b10726d18..7a7e2ad43 100644
|
||||
index b10726d..7a7e2ad 100644
|
||||
--- a/src/hotspot/share/utilities/bitMap.inline.hpp
|
||||
+++ b/src/hotspot/share/utilities/bitMap.inline.hpp
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
@ -1,49 +0,0 @@
|
||||
From 06fb55216b96c8c9341265dbc4d441cbabd0a66d Mon Sep 17 00:00:00 2001
|
||||
Date: Fri, 31 Jul 2020 15:50:08 +0800
|
||||
Subject: [PATCH] 8240360:NativeLibraryEvent has wrong library name on Linux
|
||||
|
||||
Summary: <jtreg>: <NativeLibraryEvent has wrong library name on Linux>
|
||||
LLT: jdk11u/test/jdk/jdk/jfr/event/runtime/TestNativeLibrariesEvent.java
|
||||
Bug url: https://bugs.openjdk.java.net/browse/JDK-8240360
|
||||
---
|
||||
src/hotspot/os/linux/os_linux.cpp | 20 +++++++++-----------
|
||||
1 file changed, 9 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp
|
||||
index 6ee57c1..a101d26 100644
|
||||
--- a/src/hotspot/os/linux/os_linux.cpp
|
||||
+++ b/src/hotspot/os/linux/os_linux.cpp
|
||||
@@ -2045,20 +2045,18 @@ int os::get_loaded_modules_info(os::LoadedModulesCallbackFunc callback, void *pa
|
||||
|
||||
// Read line by line from 'file'
|
||||
while (fgets(line, sizeof(line), procmapsFile) != NULL) {
|
||||
- u8 base, top, offset, inode;
|
||||
- char permissions[5];
|
||||
- char device[6];
|
||||
+ u8 base, top, inode;
|
||||
char name[sizeof(line)];
|
||||
|
||||
- // Parse fields from line
|
||||
- int matches = sscanf(line, UINT64_FORMAT_X "-" UINT64_FORMAT_X " %4s " UINT64_FORMAT_X " %5s " INT64_FORMAT " %s",
|
||||
- &base, &top, permissions, &offset, device, &inode, name);
|
||||
- // the last entry 'name' is empty for some entries, so we might have 6 matches instead of 7 for some lines
|
||||
- if (matches < 6) continue;
|
||||
- if (matches == 6) name[0] = '\0';
|
||||
+ // Parse fields from line, discard perms, offset and device
|
||||
+ int matches = sscanf(line, UINT64_FORMAT_X "-" UINT64_FORMAT_X " %*s %*s %*s " INT64_FORMAT " %s",
|
||||
+ &base, &top, &inode, name);
|
||||
+ // the last entry 'name' is empty for some entries, so we might have 3 matches instead of 4 for some lines
|
||||
+ if (matches < 3) continue;
|
||||
+ if (matches == 3) name[0] = '\0';
|
||||
|
||||
- // Filter by device id '00:00' so that we only get file system mapped files.
|
||||
- if (strcmp(device, "00:00") != 0) {
|
||||
+ // Filter by inode 0 so that we only get file system mapped files.
|
||||
+ if (inode != 0) {
|
||||
|
||||
// Call callback with the fields of interest
|
||||
if(callback(name, (address)base, (address)top, param)) {
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
From 954a4ad3a2a8bb54fb64a524b53f9c87c54cb7a1 Mon Sep 17 00:00:00 2001
|
||||
Date: Wed, 26 Feb 2020 09:47:33 +0800
|
||||
Subject: [PATCH] aarch64: add_loadload_membar_to_avoid_loading_a_incorrect_offset
|
||||
|
||||
Summary: <interpreter>: <add loadload membar in fast_storefield and fast_accessfield to avoid loading a incorrect offset>
|
||||
LLT: jtreg
|
||||
Bug url: NA
|
||||
---
|
||||
src/hotspot/cpu/aarch64/templateTable_aarch64.cpp | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp b/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp
|
||||
index b8a9a46a8..019a4aadd 100644
|
||||
--- a/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp
|
||||
+++ b/src/hotspot/cpu/aarch64/templateTable_aarch64.cpp
|
||||
@@ -2963,6 +2963,8 @@ void TemplateTable::fast_storefield(TosState state)
|
||||
// access constant pool cache
|
||||
__ get_cache_and_index_at_bcp(r2, r1, 1);
|
||||
|
||||
+ __ membar(MacroAssembler::LoadLoad);
|
||||
+
|
||||
// test for volatile with r3
|
||||
__ ldrw(r3, Address(r2, in_bytes(base +
|
||||
ConstantPoolCacheEntry::flags_offset())));
|
||||
@@ -3055,6 +3057,9 @@ void TemplateTable::fast_accessfield(TosState state)
|
||||
|
||||
// access constant pool cache
|
||||
__ get_cache_and_index_at_bcp(r2, r1, 1);
|
||||
+
|
||||
+ __ membar(MacroAssembler::LoadLoad);
|
||||
+
|
||||
__ ldr(r1, Address(r2, in_bytes(ConstantPoolCache::base_offset() +
|
||||
ConstantPoolCacheEntry::f2_offset())));
|
||||
__ ldrw(r3, Address(r2, in_bytes(ConstantPoolCache::base_offset() +
|
||||
--
|
||||
2.12.3
|
||||
|
||||
@ -1,15 +1,5 @@
|
||||
From b61b8df19a63354db26efb582e84bc276c076e3a Mon Sep 17 00:00:00 2001
|
||||
Date: Wed, 5 Feb 2020 17:26:06 +0800
|
||||
Subject: [PATCH] 8230565: ZGC: Redesign C2 load barrier to expand on the
|
||||
MachNode level
|
||||
|
||||
Summary: <gc>: <expand C2 load barrier in load instruction avoid safepoint between load and load barrier>
|
||||
LLT: jtreg
|
||||
Bug url: https://bugs.openjdk.java.net/browse/JDK-8230565
|
||||
---
|
||||
|
||||
diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
index d64566b81..b6e5d7267 100644
|
||||
index af3e593..05b36e2 100644
|
||||
--- a/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
+++ b/src/hotspot/cpu/aarch64/aarch64.ad
|
||||
@@ -1131,6 +1131,7 @@ definitions %{
|
||||
@ -20,7 +10,7 @@ index d64566b81..b6e5d7267 100644
|
||||
|
||||
%}
|
||||
|
||||
@@ -2497,17 +2498,7 @@ void Compile::reshape_address(AddPNode* addp) {
|
||||
@@ -2501,17 +2502,7 @@ void Compile::reshape_address(AddPNode* addp) {
|
||||
__ INSN(REG, as_Register(BASE)); \
|
||||
}
|
||||
|
||||
@ -39,7 +29,7 @@ index d64566b81..b6e5d7267 100644
|
||||
{
|
||||
Address::extend scale;
|
||||
|
||||
@@ -2526,16 +2517,33 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
|
||||
@@ -2530,16 +2521,33 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
|
||||
}
|
||||
|
||||
if (index == -1) {
|
||||
@ -77,7 +67,7 @@ index d64566b81..b6e5d7267 100644
|
||||
{
|
||||
Address::extend scale;
|
||||
|
||||
@@ -2557,8 +2565,8 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
|
||||
@@ -2561,8 +2569,8 @@ typedef void (MacroAssembler::* mem_vector_insn)(FloatRegister Rt,
|
||||
}
|
||||
|
||||
static void loadStore(MacroAssembler masm, mem_vector_insn insn,
|
||||
@ -88,7 +78,7 @@ index d64566b81..b6e5d7267 100644
|
||||
{
|
||||
if (index == -1) {
|
||||
(masm.*insn)(reg, T, Address(base, disp));
|
||||
@@ -3793,7 +3801,7 @@ frame %{
|
||||
@@ -3797,7 +3805,7 @@ frame %{
|
||||
static const int hi[Op_RegL + 1] = { // enum name
|
||||
0, // Op_Node
|
||||
0, // Op_Set
|
||||
@ -97,7 +87,7 @@ index d64566b81..b6e5d7267 100644
|
||||
OptoReg::Bad, // Op_RegI
|
||||
R0_H_num, // Op_RegP
|
||||
OptoReg::Bad, // Op_RegF
|
||||
@@ -6923,7 +6931,7 @@ instruct loadRange(iRegINoSp dst, memory mem)
|
||||
@@ -6929,7 +6937,7 @@ instruct loadRange(iRegINoSp dst, memory mem)
|
||||
instruct loadP(iRegPNoSp dst, memory mem)
|
||||
%{
|
||||
match(Set dst (LoadP mem));
|
||||
@ -106,7 +96,7 @@ index d64566b81..b6e5d7267 100644
|
||||
|
||||
ins_cost(4 * INSN_COST);
|
||||
format %{ "ldr $dst, $mem\t# ptr" %}
|
||||
@@ -7616,6 +7624,7 @@ instruct loadL_volatile(iRegLNoSp dst, /* sync_memory*/indirect mem)
|
||||
@@ -7622,6 +7630,7 @@ instruct loadL_volatile(iRegLNoSp dst, /* sync_memory*/indirect mem)
|
||||
instruct loadP_volatile(iRegPNoSp dst, /* sync_memory*/indirect mem)
|
||||
%{
|
||||
match(Set dst (LoadP mem));
|
||||
@ -114,7 +104,7 @@ index d64566b81..b6e5d7267 100644
|
||||
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
format %{ "ldar $dst, $mem\t# ptr" %}
|
||||
@@ -8500,6 +8509,7 @@ instruct compareAndSwapL(iRegINoSp res, indirect mem, iRegLNoSp oldval, iRegLNoS
|
||||
@@ -8506,6 +8515,7 @@ instruct compareAndSwapL(iRegINoSp res, indirect mem, iRegLNoSp oldval, iRegLNoS
|
||||
instruct compareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
|
||||
|
||||
match(Set res (CompareAndSwapP mem (Binary oldval newval)));
|
||||
@ -122,7 +112,7 @@ index d64566b81..b6e5d7267 100644
|
||||
ins_cost(2 * VOLATILE_REF_COST);
|
||||
|
||||
effect(KILL cr);
|
||||
@@ -8613,7 +8623,7 @@ instruct compareAndSwapLAcq(iRegINoSp res, indirect mem, iRegLNoSp oldval, iRegL
|
||||
@@ -8619,7 +8629,7 @@ instruct compareAndSwapLAcq(iRegINoSp res, indirect mem, iRegLNoSp oldval, iRegL
|
||||
|
||||
instruct compareAndSwapPAcq(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
|
||||
|
||||
@ -131,7 +121,7 @@ index d64566b81..b6e5d7267 100644
|
||||
match(Set res (CompareAndSwapP mem (Binary oldval newval)));
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
|
||||
@@ -8744,6 +8754,7 @@ instruct compareAndExchangeN(iRegNNoSp res, indirect mem, iRegN oldval, iRegN ne
|
||||
@@ -8750,6 +8760,7 @@ instruct compareAndExchangeN(iRegNNoSp res, indirect mem, iRegN oldval, iRegN ne
|
||||
%}
|
||||
|
||||
instruct compareAndExchangeP(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
|
||||
@ -139,7 +129,7 @@ index d64566b81..b6e5d7267 100644
|
||||
match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
|
||||
ins_cost(2 * VOLATILE_REF_COST);
|
||||
effect(TEMP_DEF res, KILL cr);
|
||||
@@ -8843,7 +8854,7 @@ instruct compareAndExchangeNAcq(iRegNNoSp res, indirect mem, iRegN oldval, iRegN
|
||||
@@ -8849,7 +8860,7 @@ instruct compareAndExchangeNAcq(iRegNNoSp res, indirect mem, iRegN oldval, iRegN
|
||||
%}
|
||||
|
||||
instruct compareAndExchangePAcq(iRegPNoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
|
||||
@ -148,7 +138,7 @@ index d64566b81..b6e5d7267 100644
|
||||
match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
effect(TEMP_DEF res, KILL cr);
|
||||
@@ -8944,6 +8955,7 @@ instruct weakCompareAndSwapN(iRegINoSp res, indirect mem, iRegN oldval, iRegN ne
|
||||
@@ -8950,6 +8961,7 @@ instruct weakCompareAndSwapN(iRegINoSp res, indirect mem, iRegN oldval, iRegN ne
|
||||
%}
|
||||
|
||||
instruct weakCompareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
|
||||
@ -156,7 +146,7 @@ index d64566b81..b6e5d7267 100644
|
||||
match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
|
||||
ins_cost(2 * VOLATILE_REF_COST);
|
||||
effect(KILL cr);
|
||||
@@ -9051,8 +9063,8 @@ instruct weakCompareAndSwapNAcq(iRegINoSp res, indirect mem, iRegN oldval, iRegN
|
||||
@@ -9057,8 +9069,8 @@ instruct weakCompareAndSwapNAcq(iRegINoSp res, indirect mem, iRegN oldval, iRegN
|
||||
%}
|
||||
|
||||
instruct weakCompareAndSwapPAcq(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
|
||||
@ -166,7 +156,7 @@ index d64566b81..b6e5d7267 100644
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
effect(KILL cr);
|
||||
format %{
|
||||
@@ -9102,6 +9114,7 @@ instruct get_and_setN(indirect mem, iRegN newv, iRegINoSp prev) %{
|
||||
@@ -9108,6 +9120,7 @@ instruct get_and_setN(indirect mem, iRegN newv, iRegINoSp prev) %{
|
||||
%}
|
||||
|
||||
instruct get_and_setP(indirect mem, iRegP newv, iRegPNoSp prev) %{
|
||||
@ -174,7 +164,7 @@ index d64566b81..b6e5d7267 100644
|
||||
match(Set prev (GetAndSetP mem newv));
|
||||
ins_cost(2 * VOLATILE_REF_COST);
|
||||
format %{ "atomic_xchg $prev, $newv, [$mem]" %}
|
||||
@@ -9145,7 +9158,7 @@ instruct get_and_setNAcq(indirect mem, iRegN newv, iRegINoSp prev) %{
|
||||
@@ -9151,7 +9164,7 @@ instruct get_and_setNAcq(indirect mem, iRegN newv, iRegINoSp prev) %{
|
||||
%}
|
||||
|
||||
instruct get_and_setPAcq(indirect mem, iRegP newv, iRegPNoSp prev) %{
|
||||
@ -183,7 +173,7 @@ index d64566b81..b6e5d7267 100644
|
||||
match(Set prev (GetAndSetP mem newv));
|
||||
ins_cost(VOLATILE_REF_COST);
|
||||
format %{ "atomic_xchg_acq $prev, $newv, [$mem]" %}
|
||||
@@ -17465,145 +17478,238 @@ instruct vsrl2L_imm(vecX dst, vecX src, immI shift) %{
|
||||
@@ -17477,145 +17490,238 @@ instruct vsrl2L_imm(vecX dst, vecX src, immI shift) %{
|
||||
|
||||
source %{
|
||||
|
||||
@ -528,7 +518,7 @@ index d64566b81..b6e5d7267 100644
|
||||
ins_pipe(pipe_serial);
|
||||
%}
|
||||
diff --git a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
index 8e169ace4..787c0c1af 100644
|
||||
index 8e169ac..787c0c1 100644
|
||||
--- a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
|
||||
@@ -24,22 +24,23 @@
|
||||
@ -884,7 +874,7 @@ index 8e169ace4..787c0c1af 100644
|
||||
-}
|
||||
+#endif // COMPILER2
|
||||
diff --git a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
|
||||
index 7e8be01cc..cca873825 100644
|
||||
index 7e8be01..cca8738 100644
|
||||
--- a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
|
||||
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
|
||||
@@ -24,6 +24,12 @@
|
||||
@ -938,7 +928,7 @@ index 7e8be01cc..cca873825 100644
|
||||
|
||||
#endif // CPU_AARCH64_GC_Z_ZBARRIERSETASSEMBLER_AARCH64_HPP
|
||||
diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
|
||||
index c0d093191..bd6ebb28b 100644
|
||||
index 279ff79..f9b2b3b 100644
|
||||
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
|
||||
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
|
||||
@@ -2096,6 +2096,65 @@ int MacroAssembler::pop(unsigned int bitset, Register stack) {
|
||||
@ -1008,7 +998,7 @@ index c0d093191..bd6ebb28b 100644
|
||||
void MacroAssembler::verify_heapbase(const char* msg) {
|
||||
#if 0
|
||||
diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
|
||||
index af8056be0..44497ea7c 100644
|
||||
index af8056b..44497ea 100644
|
||||
--- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
|
||||
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
|
||||
@@ -440,12 +440,18 @@ private:
|
||||
@ -1031,7 +1021,7 @@ index af8056be0..44497ea7c 100644
|
||||
// runtime call except rscratch1 and rscratch2. (They are always
|
||||
// scratch, so we don't have to protect them.) Only save the lower
|
||||
diff --git a/src/hotspot/cpu/aarch64/register_aarch64.hpp b/src/hotspot/cpu/aarch64/register_aarch64.hpp
|
||||
index 8cda52a0a..5f7662c89 100644
|
||||
index 8cda52a..5f7662c 100644
|
||||
--- a/src/hotspot/cpu/aarch64/register_aarch64.hpp
|
||||
+++ b/src/hotspot/cpu/aarch64/register_aarch64.hpp
|
||||
@@ -230,6 +230,11 @@ public:
|
||||
@ -1047,22 +1037,22 @@ index 8cda52a0a..5f7662c89 100644
|
||||
return RegSet(r1);
|
||||
}
|
||||
diff --git a/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp b/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp
|
||||
index 2144a78f3..4ba3a6326 100644
|
||||
index c162024..6e4eb1a 100644
|
||||
--- a/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp
|
||||
+++ b/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp
|
||||
@@ -872,8 +872,8 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
|
||||
@@ -880,8 +880,8 @@ void TemplateInterpreterGenerator::generate_fixed_frame(bool native_call) {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
- __ load_mirror(rscratch1, rmethod);
|
||||
- __ stp(rscratch1, zr, Address(sp, 4 * wordSize));
|
||||
+ __ load_mirror(r10, rmethod);
|
||||
+ __ stp(r10, zr, Address(sp, 4 * wordSize));
|
||||
}
|
||||
|
||||
// Get mirror and store it in the frame as GC root for this Method*
|
||||
- __ load_mirror(rscratch1, rmethod);
|
||||
- __ stp(rscratch1, zr, Address(sp, 4 * wordSize));
|
||||
+ __ load_mirror(r10, rmethod);
|
||||
+ __ stp(r10, zr, Address(sp, 4 * wordSize));
|
||||
|
||||
__ ldr(rcpool, Address(rmethod, Method::const_offset()));
|
||||
__ ldr(rcpool, Address(rcpool, ConstMethod::constants_offset()));
|
||||
diff --git a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
|
||||
index 381211ecc..d88ecf7b8 100644
|
||||
index 381211e..d88ecf7 100644
|
||||
--- a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
|
||||
+++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
|
||||
@@ -27,16 +27,16 @@
|
||||
@ -1520,7 +1510,7 @@ index 381211ecc..d88ecf7b8 100644
|
||||
+
|
||||
+#endif // COMPILER2
|
||||
diff --git a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp
|
||||
index 3687754e7..e433882a4 100644
|
||||
index 3687754..e433882 100644
|
||||
--- a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp
|
||||
+++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp
|
||||
@@ -24,6 +24,14 @@
|
||||
@ -1577,7 +1567,7 @@ index 3687754e7..e433882a4 100644
|
||||
|
||||
#endif // CPU_X86_GC_Z_ZBARRIERSETASSEMBLER_X86_HPP
|
||||
diff --git a/src/hotspot/cpu/x86/x86.ad b/src/hotspot/cpu/x86/x86.ad
|
||||
index 1052ea6e3..e21074b4a 100644
|
||||
index 6eefe33..8fb9a3e 100644
|
||||
--- a/src/hotspot/cpu/x86/x86.ad
|
||||
+++ b/src/hotspot/cpu/x86/x86.ad
|
||||
@@ -1097,138 +1097,6 @@ reg_class vectorz_reg_legacy(XMM0, XMM0b, XMM0c, XMM0d, XMM0e, XMM0f, XMM0
|
||||
@ -1719,7 +1709,7 @@ index 1052ea6e3..e21074b4a 100644
|
||||
%}
|
||||
|
||||
|
||||
@@ -1735,8 +1603,8 @@ static int vec_mov_helper(CodeBuffer *cbuf, bool do_size, int src_lo, int dst_lo
|
||||
@@ -1775,8 +1643,8 @@ static int vec_mov_helper(CodeBuffer *cbuf, bool do_size, int src_lo, int dst_lo
|
||||
return (UseAVX > 2) ? 6 : 4;
|
||||
}
|
||||
|
||||
@ -1731,7 +1721,7 @@ index 1052ea6e3..e21074b4a 100644
|
||||
// into scratch buffer is used to get size in 64-bit VM.
|
||||
LP64_ONLY( assert(!do_size, "this method calculates size only for 32-bit VM"); )
|
||||
diff --git a/src/hotspot/cpu/x86/x86_64.ad b/src/hotspot/cpu/x86/x86_64.ad
|
||||
index 84bed19aa..8b975311e 100644
|
||||
index e256e22..d127732 100644
|
||||
--- a/src/hotspot/cpu/x86/x86_64.ad
|
||||
+++ b/src/hotspot/cpu/x86/x86_64.ad
|
||||
@@ -541,6 +541,7 @@ reg_class int_rdi_reg(RDI);
|
||||
@ -1952,7 +1942,7 @@ index 84bed19aa..8b975311e 100644
|
||||
format %{ "XCHGQ $newval,[$mem]" %}
|
||||
ins_encode %{
|
||||
__ xchgq($newval$$Register, $mem$$Address);
|
||||
@@ -11603,6 +11490,7 @@ instruct compP_rReg(rFlagsRegU cr, rRegP op1, rRegP op2)
|
||||
@@ -11649,6 +11536,7 @@ instruct compP_rReg(rFlagsRegU cr, rRegP op1, rRegP op2)
|
||||
instruct compP_rReg_mem(rFlagsRegU cr, rRegP op1, memory op2)
|
||||
%{
|
||||
match(Set cr (CmpP op1 (LoadP op2)));
|
||||
@ -1960,7 +1950,7 @@ index 84bed19aa..8b975311e 100644
|
||||
|
||||
ins_cost(500); // XXX
|
||||
format %{ "cmpq $op1, $op2\t# ptr" %}
|
||||
@@ -11628,7 +11516,8 @@ instruct compP_rReg_mem(rFlagsRegU cr, rRegP op1, memory op2)
|
||||
@@ -11674,7 +11562,8 @@ instruct compP_rReg_mem(rFlagsRegU cr, rRegP op1, memory op2)
|
||||
// and raw pointers have no anti-dependencies.
|
||||
instruct compP_mem_rReg(rFlagsRegU cr, rRegP op1, memory op2)
|
||||
%{
|
||||
@ -1970,7 +1960,7 @@ index 84bed19aa..8b975311e 100644
|
||||
match(Set cr (CmpP op1 (LoadP op2)));
|
||||
|
||||
format %{ "cmpq $op1, $op2\t# raw ptr" %}
|
||||
@@ -11653,7 +11542,8 @@ instruct testP_reg(rFlagsReg cr, rRegP src, immP0 zero)
|
||||
@@ -11699,7 +11588,8 @@ instruct testP_reg(rFlagsReg cr, rRegP src, immP0 zero)
|
||||
// any compare to a zero should be eq/neq.
|
||||
instruct testP_mem(rFlagsReg cr, memory op, immP0 zero)
|
||||
%{
|
||||
@ -1980,7 +1970,7 @@ index 84bed19aa..8b975311e 100644
|
||||
match(Set cr (CmpP (LoadP op) zero));
|
||||
|
||||
ins_cost(500); // XXX
|
||||
@@ -11666,7 +11556,9 @@ instruct testP_mem(rFlagsReg cr, memory op, immP0 zero)
|
||||
@@ -11712,7 +11602,9 @@ instruct testP_mem(rFlagsReg cr, memory op, immP0 zero)
|
||||
|
||||
instruct testP_mem_reg0(rFlagsReg cr, memory mem, immP0 zero)
|
||||
%{
|
||||
@ -1991,7 +1981,7 @@ index 84bed19aa..8b975311e 100644
|
||||
match(Set cr (CmpP (LoadP mem) zero));
|
||||
|
||||
format %{ "cmpq R12, $mem\t# ptr (R12_heapbase==0)" %}
|
||||
@@ -12621,274 +12513,126 @@ instruct RethrowException()
|
||||
@@ -12667,274 +12559,126 @@ instruct RethrowException()
|
||||
// Execute ZGC load barrier (strong) slow path
|
||||
//
|
||||
|
||||
@ -2356,7 +2346,7 @@ index 84bed19aa..8b975311e 100644
|
||||
// ============================================================================
|
||||
// This name is KNOWN by the ADLC and cannot be changed.
|
||||
diff --git a/src/hotspot/share/adlc/formssel.cpp b/src/hotspot/share/adlc/formssel.cpp
|
||||
index 2845cf6d8..c41ac52c7 100644
|
||||
index ef704f4..5ba1fdc 100644
|
||||
--- a/src/hotspot/share/adlc/formssel.cpp
|
||||
+++ b/src/hotspot/share/adlc/formssel.cpp
|
||||
@@ -774,11 +774,6 @@ bool InstructForm::captures_bottom_type(FormDict &globals) const {
|
||||
@ -2368,10 +2358,10 @@ index 2845cf6d8..c41ac52c7 100644
|
||||
- !strcmp(_matrule->_rChild->_opType,"ZCompareAndExchangeP") ||
|
||||
- !strcmp(_matrule->_rChild->_opType,"LoadBarrierSlowReg") ||
|
||||
-#endif
|
||||
!strcmp(_matrule->_rChild->_opType,"CompareAndExchangeP") ||
|
||||
!strcmp(_matrule->_rChild->_opType,"CompareAndExchangeN"))) return true;
|
||||
else if ( is_ideal_load() == Form::idealP ) return true;
|
||||
@@ -3506,9 +3501,6 @@ int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
!strcmp(_matrule->_rChild->_opType,"ShenandoahCompareAndExchangeP") ||
|
||||
!strcmp(_matrule->_rChild->_opType,"ShenandoahCompareAndExchangeN") ||
|
||||
@@ -3513,9 +3508,6 @@ int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
|
||||
"StoreCM",
|
||||
"GetAndSetB", "GetAndSetS", "GetAndAddI", "GetAndSetI", "GetAndSetP",
|
||||
"GetAndAddB", "GetAndAddS", "GetAndAddL", "GetAndSetL", "GetAndSetN",
|
||||
@ -2382,7 +2372,7 @@ index 2845cf6d8..c41ac52c7 100644
|
||||
};
|
||||
int cnt = sizeof(needs_ideal_memory_list)/sizeof(char*);
|
||||
diff --git a/src/hotspot/share/compiler/compilerDirectives.hpp b/src/hotspot/share/compiler/compilerDirectives.hpp
|
||||
index 8eba28f94..b20cd73d9 100644
|
||||
index 8eba28f..b20cd73 100644
|
||||
--- a/src/hotspot/share/compiler/compilerDirectives.hpp
|
||||
+++ b/src/hotspot/share/compiler/compilerDirectives.hpp
|
||||
@@ -66,8 +66,7 @@ NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput))
|
||||
@ -2396,7 +2386,7 @@ index 8eba28f94..b20cd73d9 100644
|
||||
#define compilerdirectives_c2_flags(cflags)
|
||||
#endif
|
||||
diff --git a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
||||
index eea74674f..487988bd8 100644
|
||||
index eea7467..487988b 100644
|
||||
--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
||||
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
||||
@@ -198,7 +198,7 @@ public:
|
||||
@ -2426,7 +2416,7 @@ index eea74674f..487988bd8 100644
|
||||
|
||||
#endif // SHARE_GC_SHARED_C2_BARRIERSETC2_HPP
|
||||
diff --git a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
|
||||
index bf0bd43af..a12973464 100644
|
||||
index bf0bd43..a129734 100644
|
||||
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
|
||||
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
|
||||
@@ -22,443 +22,156 @@
|
||||
@ -4216,7 +4206,7 @@ index bf0bd43af..a12973464 100644
|
||||
- return true;
|
||||
}
|
||||
diff --git a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
|
||||
index bef6a7048..accae1f72 100644
|
||||
index bef6a70..accae1f 100644
|
||||
--- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
|
||||
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
|
||||
@@ -29,134 +29,38 @@
|
||||
@ -4423,7 +4413,7 @@ index bef6a7048..accae1f72 100644
|
||||
|
||||
#endif // SHARE_GC_Z_C2_ZBARRIERSETC2_HPP
|
||||
diff --git a/src/hotspot/share/gc/z/zBarrierSetAssembler.hpp b/src/hotspot/share/gc/z/zBarrierSetAssembler.hpp
|
||||
index 52133c073..9d07f9e8c 100644
|
||||
index 52133c0..9d07f9e 100644
|
||||
--- a/src/hotspot/share/gc/z/zBarrierSetAssembler.hpp
|
||||
+++ b/src/hotspot/share/gc/z/zBarrierSetAssembler.hpp
|
||||
@@ -1,5 +1,5 @@
|
||||
@ -4445,7 +4435,7 @@ index 52133c073..9d07f9e8c 100644
|
||||
|
||||
class ZBarrierSetAssemblerBase : public BarrierSetAssembler {
|
||||
diff --git a/src/hotspot/share/opto/classes.cpp b/src/hotspot/share/opto/classes.cpp
|
||||
index e8ac3a61d..eec705013 100644
|
||||
index 75f070f..d1282ac 100644
|
||||
--- a/src/hotspot/share/opto/classes.cpp
|
||||
+++ b/src/hotspot/share/opto/classes.cpp
|
||||
@@ -48,9 +48,6 @@
|
||||
@ -4455,14 +4445,14 @@ index e8ac3a61d..eec705013 100644
|
||||
-#if INCLUDE_ZGC
|
||||
-#include "gc/z/c2/zBarrierSetC2.hpp"
|
||||
-#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Build a table of virtual functions to map from Nodes to dense integer
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
|
||||
#endif
|
||||
diff --git a/src/hotspot/share/opto/classes.hpp b/src/hotspot/share/opto/classes.hpp
|
||||
index cdca7e7c0..da01e4811 100644
|
||||
index 69f8a3c..5ee23f7 100644
|
||||
--- a/src/hotspot/share/opto/classes.hpp
|
||||
+++ b/src/hotspot/share/opto/classes.hpp
|
||||
@@ -188,17 +188,6 @@ macro(LoadP)
|
||||
@@ -189,17 +189,6 @@ macro(LoadP)
|
||||
macro(LoadN)
|
||||
macro(LoadRange)
|
||||
macro(LoadS)
|
||||
@ -4481,7 +4471,7 @@ index cdca7e7c0..da01e4811 100644
|
||||
macro(Loop)
|
||||
macro(LoopLimit)
|
||||
diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp
|
||||
index ef4a6ab13..b6980c4e7 100644
|
||||
index 45e2d11..e5559a2 100644
|
||||
--- a/src/hotspot/share/opto/compile.cpp
|
||||
+++ b/src/hotspot/share/opto/compile.cpp
|
||||
@@ -79,9 +79,6 @@
|
||||
@ -4491,10 +4481,10 @@ index ef4a6ab13..b6980c4e7 100644
|
||||
-#if INCLUDE_ZGC
|
||||
-#include "gc/z/c2/zBarrierSetC2.hpp"
|
||||
-#endif
|
||||
|
||||
|
||||
// -------------------- Compile::mach_constant_base_node -----------------------
|
||||
@@ -636,16 +633,12 @@ debug_only( int Compile::_debug_idx = 100000; )
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
|
||||
#endif
|
||||
@@ -639,16 +636,12 @@ debug_only( int Compile::_debug_idx = 100000; )
|
||||
Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr_bci,
|
||||
bool subsume_loads, bool do_escape_analysis, bool eliminate_boxing, DirectiveSet* directive)
|
||||
: Phase(Compiler),
|
||||
@ -4511,7 +4501,7 @@ index ef4a6ab13..b6980c4e7 100644
|
||||
_entry_bci(osr_bci),
|
||||
_initial_gvn(NULL),
|
||||
_for_igvn(NULL),
|
||||
@@ -665,8 +658,6 @@ Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr
|
||||
@@ -668,8 +661,6 @@ Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr
|
||||
_inner_loops(0),
|
||||
_scratch_const_size(-1),
|
||||
_in_scratch_emit_size(false),
|
||||
@ -4520,7 +4510,7 @@ index ef4a6ab13..b6980c4e7 100644
|
||||
#ifndef PRODUCT
|
||||
_trace_opto_output(directive->TraceOptoOutputOption),
|
||||
_in_dump_cnt(0),
|
||||
@@ -674,9 +665,15 @@ Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr
|
||||
@@ -677,9 +668,15 @@ Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr
|
||||
#endif
|
||||
_congraph(NULL),
|
||||
_comp_arena(mtCompiler),
|
||||
@ -4536,7 +4526,7 @@ index ef4a6ab13..b6980c4e7 100644
|
||||
_replay_inline_data(NULL),
|
||||
_late_inlines(comp_arena(), 2, 0, NULL),
|
||||
_string_late_inlines(comp_arena(), 2, 0, NULL),
|
||||
@@ -959,9 +956,6 @@ Compile::Compile( ciEnv* ci_env,
|
||||
@@ -962,9 +959,6 @@ Compile::Compile( ciEnv* ci_env,
|
||||
bool return_pc,
|
||||
DirectiveSet* directive)
|
||||
: Phase(Compiler),
|
||||
@ -4546,7 +4536,7 @@ index ef4a6ab13..b6980c4e7 100644
|
||||
_compile_id(0),
|
||||
_save_argument_registers(save_arg_registers),
|
||||
_method(NULL),
|
||||
@@ -991,6 +985,10 @@ Compile::Compile( ciEnv* ci_env,
|
||||
@@ -994,6 +988,10 @@ Compile::Compile( ciEnv* ci_env,
|
||||
_printer(NULL),
|
||||
#endif
|
||||
_comp_arena(mtCompiler),
|
||||
@ -4557,21 +4547,21 @@ index ef4a6ab13..b6980c4e7 100644
|
||||
_node_arena(mtCompiler),
|
||||
_old_arena(mtCompiler),
|
||||
_Compile_types(mtCompiler),
|
||||
@@ -2398,13 +2396,6 @@ void Compile::Optimize() {
|
||||
igvn.optimize();
|
||||
}
|
||||
@@ -2408,13 +2406,6 @@ void Compile::Optimize() {
|
||||
bs->verify_gc_barriers(false);
|
||||
#endif
|
||||
|
||||
- bs->barrier_insertion_phase(C, igvn);
|
||||
- if (failing()) return;
|
||||
-
|
||||
-#ifdef ASSERT
|
||||
- bs->verify_gc_barriers(false);
|
||||
-#endif
|
||||
-
|
||||
- bs->barrier_insertion_phase(C, igvn);
|
||||
- if (failing()) return;
|
||||
-
|
||||
#ifdef ASSERT
|
||||
bs->verify_gc_barriers(false);
|
||||
#endif
|
||||
@@ -2969,29 +2960,6 @@ void Compile::final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc) {
|
||||
{
|
||||
TracePhase tp("macroExpand", &timers[_t_macroExpand]);
|
||||
PhaseMacroExpand mex(igvn);
|
||||
@@ -2996,29 +2987,6 @@ void Compile::final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc) {
|
||||
break;
|
||||
}
|
||||
|
||||
@ -4602,7 +4592,7 @@ index ef4a6ab13..b6980c4e7 100644
|
||||
Node *addp = n->in(AddPNode::Address);
|
||||
assert( !addp->is_AddP() ||
|
||||
diff --git a/src/hotspot/share/opto/compile.hpp b/src/hotspot/share/opto/compile.hpp
|
||||
index bfd85d032..a885d9f8d 100644
|
||||
index 320030e..1246b1b 100644
|
||||
--- a/src/hotspot/share/opto/compile.hpp
|
||||
+++ b/src/hotspot/share/opto/compile.hpp
|
||||
@@ -55,7 +55,6 @@ class ConnectionGraph;
|
||||
@ -4613,7 +4603,7 @@ index bfd85d032..a885d9f8d 100644
|
||||
class Matcher;
|
||||
class MachConstantNode;
|
||||
class MachConstantBaseNode;
|
||||
@@ -1181,11 +1180,7 @@ class Compile : public Phase {
|
||||
@@ -1185,11 +1184,7 @@ class Compile : public Phase {
|
||||
bool in_scratch_emit_size() const { return _in_scratch_emit_size; }
|
||||
|
||||
enum ScratchBufferBlob {
|
||||
@ -4625,7 +4615,7 @@ index bfd85d032..a885d9f8d 100644
|
||||
MAX_locs_size = 128, // number of relocInfo elements
|
||||
MAX_const_size = 128,
|
||||
MAX_stubs_size = 128
|
||||
@@ -1260,14 +1255,30 @@ class Compile : public Phase {
|
||||
@@ -1264,14 +1259,30 @@ class Compile : public Phase {
|
||||
// Process an OopMap Element while emitting nodes
|
||||
void Process_OopMap_Node(MachNode *mach, int code_offset);
|
||||
|
||||
@ -4659,10 +4649,10 @@ index bfd85d032..a885d9f8d 100644
|
||||
// Compute the size of first NumberOfLoopInstrToAlign instructions
|
||||
// at the head of a loop.
|
||||
diff --git a/src/hotspot/share/opto/escape.cpp b/src/hotspot/share/opto/escape.cpp
|
||||
index 235b31c4c..15d483f33 100644
|
||||
index cd0ef26..0a22c89 100644
|
||||
--- a/src/hotspot/share/opto/escape.cpp
|
||||
+++ b/src/hotspot/share/opto/escape.cpp
|
||||
@@ -487,13 +487,6 @@ void ConnectionGraph::add_node_to_connection_graph(Node *n, Unique_Node_List *de
|
||||
@@ -490,13 +490,6 @@ void ConnectionGraph::add_node_to_connection_graph(Node *n, Unique_Node_List *de
|
||||
add_local_var_and_edge(n, PointsToNode::NoEscape,
|
||||
n->in(0), delayed_worklist);
|
||||
}
|
||||
@ -4676,7 +4666,7 @@ index 235b31c4c..15d483f33 100644
|
||||
break;
|
||||
}
|
||||
case Op_Rethrow: // Exception object escapes
|
||||
@@ -701,14 +694,6 @@ void ConnectionGraph::add_final_edges(Node *n) {
|
||||
@@ -731,14 +724,6 @@ void ConnectionGraph::add_final_edges(Node *n) {
|
||||
add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(0), NULL);
|
||||
break;
|
||||
}
|
||||
@ -4692,7 +4682,7 @@ index 235b31c4c..15d483f33 100644
|
||||
}
|
||||
case Op_Rethrow: // Exception object escapes
|
||||
diff --git a/src/hotspot/share/opto/lcm.cpp b/src/hotspot/share/opto/lcm.cpp
|
||||
index 05ec9fa9f..16b80bfc3 100644
|
||||
index 05ec9fa..16b80bf 100644
|
||||
--- a/src/hotspot/share/opto/lcm.cpp
|
||||
+++ b/src/hotspot/share/opto/lcm.cpp
|
||||
@@ -169,7 +169,6 @@ void PhaseCFG::implicit_null_check(Block* block, Node *proj, Node *val, int allo
|
||||
@ -4704,10 +4694,10 @@ index 05ec9fa9f..16b80bfc3 100644
|
||||
case Op_LoadS:
|
||||
case Op_LoadKlass:
|
||||
diff --git a/src/hotspot/share/opto/loopnode.cpp b/src/hotspot/share/opto/loopnode.cpp
|
||||
index 7c3033162..25fab93cf 100644
|
||||
index 6aff3d5..38f0449 100644
|
||||
--- a/src/hotspot/share/opto/loopnode.cpp
|
||||
+++ b/src/hotspot/share/opto/loopnode.cpp
|
||||
@@ -1001,18 +1001,6 @@ void LoopNode::verify_strip_mined(int expect_skeleton) const {
|
||||
@@ -1005,18 +1005,6 @@ void LoopNode::verify_strip_mined(int expect_skeleton) const {
|
||||
}
|
||||
}
|
||||
|
||||
@ -4726,7 +4716,7 @@ index 7c3033162..25fab93cf 100644
|
||||
CountedLoopEndNode* cle = inner_out->in(0)->as_CountedLoopEnd();
|
||||
assert(cle == inner->loopexit_or_null(), "mismatch");
|
||||
bool has_skeleton = outer_le->in(1)->bottom_type()->singleton() && outer_le->in(1)->bottom_type()->is_int()->get_con() == 0;
|
||||
@@ -4250,7 +4238,6 @@ void PhaseIdealLoop::build_loop_late_post( Node *n ) {
|
||||
@@ -4273,7 +4261,6 @@ void PhaseIdealLoop::build_loop_late_post( Node *n ) {
|
||||
case Op_LoadL:
|
||||
case Op_LoadS:
|
||||
case Op_LoadP:
|
||||
@ -4735,7 +4725,7 @@ index 7c3033162..25fab93cf 100644
|
||||
case Op_LoadRange:
|
||||
case Op_LoadD_unaligned:
|
||||
diff --git a/src/hotspot/share/opto/loopopts.cpp b/src/hotspot/share/opto/loopopts.cpp
|
||||
index 5793f51f2..6b85529f4 100644
|
||||
index 5793f51..6b85529 100644
|
||||
--- a/src/hotspot/share/opto/loopopts.cpp
|
||||
+++ b/src/hotspot/share/opto/loopopts.cpp
|
||||
@@ -41,9 +41,6 @@
|
||||
@ -4749,7 +4739,7 @@ index 5793f51f2..6b85529f4 100644
|
||||
//=============================================================================
|
||||
//------------------------------split_thru_phi---------------------------------
|
||||
diff --git a/src/hotspot/share/opto/machnode.hpp b/src/hotspot/share/opto/machnode.hpp
|
||||
index 66adf9be1..90d5b0af1 100644
|
||||
index 66adf9b..90d5b0a 100644
|
||||
--- a/src/hotspot/share/opto/machnode.hpp
|
||||
+++ b/src/hotspot/share/opto/machnode.hpp
|
||||
@@ -197,7 +197,7 @@ public:
|
||||
@ -4783,7 +4773,7 @@ index 66adf9be1..90d5b0af1 100644
|
||||
// more leafs. Must be set by MachNode constructor to point to an
|
||||
// internal array of MachOpers. The MachOper array is sized by
|
||||
diff --git a/src/hotspot/share/opto/matcher.cpp b/src/hotspot/share/opto/matcher.cpp
|
||||
index 79b366fd5..41d92b3d0 100644
|
||||
index 45d2627..05fdab2 100644
|
||||
--- a/src/hotspot/share/opto/matcher.cpp
|
||||
+++ b/src/hotspot/share/opto/matcher.cpp
|
||||
@@ -1752,6 +1752,13 @@ MachNode *Matcher::ReduceInst( State *s, int rule, Node *&mem ) {
|
||||
@ -4818,7 +4808,7 @@ index 79b366fd5..41d92b3d0 100644
|
||||
default:
|
||||
if( n->is_Store() ) {
|
||||
// Do match stores, despite no ideal reg
|
||||
@@ -2286,33 +2282,6 @@ void Matcher::find_shared( Node *n ) {
|
||||
@@ -2294,33 +2290,6 @@ void Matcher::find_shared( Node *n ) {
|
||||
n->del_req(LoadStoreConditionalNode::ExpectedIn);
|
||||
break;
|
||||
}
|
||||
@ -4853,7 +4843,7 @@ index 79b366fd5..41d92b3d0 100644
|
||||
case Op_CMoveF:
|
||||
case Op_CMoveI:
|
||||
diff --git a/src/hotspot/share/opto/memnode.cpp b/src/hotspot/share/opto/memnode.cpp
|
||||
index 2de221a1e..4147c6d46 100644
|
||||
index 76e950c..028d1a9 100644
|
||||
--- a/src/hotspot/share/opto/memnode.cpp
|
||||
+++ b/src/hotspot/share/opto/memnode.cpp
|
||||
@@ -49,9 +49,6 @@
|
||||
@ -4863,10 +4853,10 @@ index 2de221a1e..4147c6d46 100644
|
||||
-#if INCLUDE_ZGC
|
||||
-#include "gc/z/c2/zBarrierSetC2.hpp"
|
||||
-#endif
|
||||
|
||||
// Portions of code courtesy of Clifford Click
|
||||
|
||||
@@ -2818,7 +2815,7 @@ LoadStoreNode::LoadStoreNode( Node *c, Node *mem, Node *adr, Node *val, const Ty
|
||||
#if INCLUDE_SHENANDOAHGC
|
||||
#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
|
||||
#endif
|
||||
@@ -2826,7 +2823,7 @@ LoadStoreNode::LoadStoreNode( Node *c, Node *mem, Node *adr, Node *val, const Ty
|
||||
: Node(required),
|
||||
_type(rt),
|
||||
_adr_type(at),
|
||||
@ -4876,7 +4866,7 @@ index 2de221a1e..4147c6d46 100644
|
||||
init_req(MemNode::Control, c );
|
||||
init_req(MemNode::Memory , mem);
|
||||
diff --git a/src/hotspot/share/opto/memnode.hpp b/src/hotspot/share/opto/memnode.hpp
|
||||
index e2bd6a6d8..3bf3dc420 100644
|
||||
index e2bd6a6..3bf3dc4 100644
|
||||
--- a/src/hotspot/share/opto/memnode.hpp
|
||||
+++ b/src/hotspot/share/opto/memnode.hpp
|
||||
@@ -43,6 +43,8 @@ private:
|
||||
@ -5002,7 +4992,7 @@ index e2bd6a6d8..3bf3dc420 100644
|
||||
|
||||
//------------------------------CompareAndSwapBNode---------------------------
|
||||
diff --git a/src/hotspot/share/opto/node.cpp b/src/hotspot/share/opto/node.cpp
|
||||
index 9bfc3a3b9..8d0475f53 100644
|
||||
index bb020c4..5a5e44e 100644
|
||||
--- a/src/hotspot/share/opto/node.cpp
|
||||
+++ b/src/hotspot/share/opto/node.cpp
|
||||
@@ -546,9 +546,6 @@ Node *Node::clone() const {
|
||||
@ -5027,7 +5017,7 @@ index 9bfc3a3b9..8d0475f53 100644
|
||||
}
|
||||
|
||||
diff --git a/src/hotspot/share/opto/node.hpp b/src/hotspot/share/opto/node.hpp
|
||||
index d69974be2..cf0975e37 100644
|
||||
index a4c5fd8..2a42e99 100644
|
||||
--- a/src/hotspot/share/opto/node.hpp
|
||||
+++ b/src/hotspot/share/opto/node.hpp
|
||||
@@ -82,8 +82,6 @@ class JVMState;
|
||||
@ -5039,7 +5029,7 @@ index d69974be2..cf0975e37 100644
|
||||
class LoadStoreNode;
|
||||
class LoadStoreConditionalNode;
|
||||
class LockNode;
|
||||
@@ -641,7 +639,6 @@ public:
|
||||
@@ -644,7 +642,6 @@ public:
|
||||
DEFINE_CLASS_ID(MemBar, Multi, 3)
|
||||
DEFINE_CLASS_ID(Initialize, MemBar, 0)
|
||||
DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
|
||||
@ -5047,7 +5037,7 @@ index d69974be2..cf0975e37 100644
|
||||
|
||||
DEFINE_CLASS_ID(Mach, Node, 1)
|
||||
DEFINE_CLASS_ID(MachReturn, Mach, 0)
|
||||
@@ -690,7 +687,6 @@ public:
|
||||
@@ -696,7 +693,6 @@ public:
|
||||
DEFINE_CLASS_ID(Mem, Node, 4)
|
||||
DEFINE_CLASS_ID(Load, Mem, 0)
|
||||
DEFINE_CLASS_ID(LoadVector, Load, 0)
|
||||
@ -5055,7 +5045,7 @@ index d69974be2..cf0975e37 100644
|
||||
DEFINE_CLASS_ID(Store, Mem, 1)
|
||||
DEFINE_CLASS_ID(StoreVector, Store, 0)
|
||||
DEFINE_CLASS_ID(LoadStore, Mem, 2)
|
||||
@@ -833,8 +829,6 @@ public:
|
||||
@@ -839,8 +835,6 @@ public:
|
||||
DEFINE_CLASS_QUERY(Load)
|
||||
DEFINE_CLASS_QUERY(LoadStore)
|
||||
DEFINE_CLASS_QUERY(LoadStoreConditional)
|
||||
@ -5065,19 +5055,19 @@ index d69974be2..cf0975e37 100644
|
||||
DEFINE_CLASS_QUERY(Loop)
|
||||
DEFINE_CLASS_QUERY(Mach)
|
||||
diff --git a/src/hotspot/share/opto/output.cpp b/src/hotspot/share/opto/output.cpp
|
||||
index b8f72ffca..4319f9fd1 100644
|
||||
index 3c02a6f..e3933f4 100644
|
||||
--- a/src/hotspot/share/opto/output.cpp
|
||||
+++ b/src/hotspot/share/opto/output.cpp
|
||||
@@ -31,6 +31,8 @@
|
||||
#include "compiler/compileBroker.hpp"
|
||||
@@ -32,6 +32,8 @@
|
||||
#include "compiler/compilerDirectives.hpp"
|
||||
#include "compiler/disassembler.hpp"
|
||||
#include "compiler/oopMap.hpp"
|
||||
+#include "gc/shared/barrierSet.hpp"
|
||||
+#include "gc/shared/c2/barrierSetC2.hpp"
|
||||
#include "memory/allocation.inline.hpp"
|
||||
#include "opto/ad.hpp"
|
||||
#include "opto/callnode.hpp"
|
||||
@@ -114,35 +116,35 @@ void Compile::Output() {
|
||||
@@ -115,35 +117,35 @@ void Compile::Output() {
|
||||
}
|
||||
}
|
||||
|
||||
@ -5134,7 +5124,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -223,7 +225,7 @@ void Compile::compute_loop_first_inst_sizes() {
|
||||
@@ -224,7 +226,7 @@ void Compile::compute_loop_first_inst_sizes() {
|
||||
|
||||
// The architecture description provides short branch variants for some long
|
||||
// branch instructions. Replace eligible long branches with short branches.
|
||||
@ -5143,7 +5133,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
// Compute size of each block, method size, and relocation information size
|
||||
uint nblocks = _cfg->number_of_blocks();
|
||||
|
||||
@@ -241,11 +243,11 @@ void Compile::shorten_branches(uint* blk_starts, int& code_size, int& reloc_size
|
||||
@@ -242,11 +244,11 @@ void Compile::shorten_branches(uint* blk_starts, int& code_size, int& reloc_size
|
||||
bool has_short_branch_candidate = false;
|
||||
|
||||
// Initialize the sizes to 0
|
||||
@ -5158,7 +5148,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
|
||||
// Make three passes. The first computes pessimistic blk_starts,
|
||||
// relative jmp_offset and reloc_size information. The second performs
|
||||
@@ -479,6 +481,10 @@ void Compile::shorten_branches(uint* blk_starts, int& code_size, int& reloc_size
|
||||
@@ -480,6 +482,10 @@ void Compile::shorten_branches(uint* blk_starts, int& code_size, int& reloc_size
|
||||
// a relocation index.
|
||||
// The CodeBuffer will expand the locs array if this estimate is too low.
|
||||
reloc_size *= 10 / sizeof(relocInfo);
|
||||
@ -5169,7 +5159,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
}
|
||||
|
||||
//------------------------------FillLocArray-----------------------------------
|
||||
@@ -490,8 +496,8 @@ static LocationValue *new_loc_value( PhaseRegAlloc *ra, OptoReg::Name regnum, Lo
|
||||
@@ -491,8 +497,8 @@ static LocationValue *new_loc_value( PhaseRegAlloc *ra, OptoReg::Name regnum, Lo
|
||||
// This should never have accepted Bad before
|
||||
assert(OptoReg::is_valid(regnum), "location must be valid");
|
||||
return (OptoReg::is_reg(regnum))
|
||||
@ -5180,7 +5170,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
}
|
||||
|
||||
|
||||
@@ -610,12 +616,12 @@ void Compile::FillLocArray( int idx, MachSafePointNode* sfpt, Node *local,
|
||||
@@ -611,12 +617,12 @@ void Compile::FillLocArray( int idx, MachSafePointNode* sfpt, Node *local,
|
||||
}
|
||||
#endif //_LP64
|
||||
else if( (t->base() == Type::FloatBot || t->base() == Type::FloatCon) &&
|
||||
@ -5196,7 +5186,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
} else if( t->base() == Type::NarrowOop ) {
|
||||
array->append(new_loc_value( _regalloc, regnum, Location::narrowoop ));
|
||||
} else {
|
||||
@@ -626,48 +632,48 @@ void Compile::FillLocArray( int idx, MachSafePointNode* sfpt, Node *local,
|
||||
@@ -627,48 +633,48 @@ void Compile::FillLocArray( int idx, MachSafePointNode* sfpt, Node *local,
|
||||
|
||||
// No register. It must be constant data.
|
||||
switch (t->base()) {
|
||||
@ -5281,7 +5271,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
// The convention the interpreter uses is that the second local
|
||||
// holds the first raw word of the native double representation.
|
||||
// This is actually reasonable, since locals and stack arrays
|
||||
@@ -679,15 +685,15 @@ void Compile::FillLocArray( int idx, MachSafePointNode* sfpt, Node *local,
|
||||
@@ -680,15 +686,15 @@ void Compile::FillLocArray( int idx, MachSafePointNode* sfpt, Node *local,
|
||||
array->append(new ConstantIntValue(acc.words[1]));
|
||||
array->append(new ConstantIntValue(acc.words[0]));
|
||||
#endif
|
||||
@ -5304,7 +5294,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
// The convention the interpreter uses is that the second local
|
||||
// holds the first raw word of the native double representation.
|
||||
// This is actually reasonable, since locals and stack arrays
|
||||
@@ -699,14 +705,14 @@ void Compile::FillLocArray( int idx, MachSafePointNode* sfpt, Node *local,
|
||||
@@ -700,14 +706,14 @@ void Compile::FillLocArray( int idx, MachSafePointNode* sfpt, Node *local,
|
||||
array->append(new ConstantIntValue(acc.words[1]));
|
||||
array->append(new ConstantIntValue(acc.words[0]));
|
||||
#endif
|
||||
@ -5327,7 +5317,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -871,58 +877,58 @@ void Compile::Process_OopMap_Node(MachNode *mach, int current_offset) {
|
||||
@@ -872,58 +878,58 @@ void Compile::Process_OopMap_Node(MachNode *mach, int current_offset) {
|
||||
|
||||
// A simplified version of Process_OopMap_Node, to handle non-safepoints.
|
||||
class NonSafepointEmitter {
|
||||
@ -5424,7 +5414,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
};
|
||||
|
||||
void NonSafepointEmitter::emit_non_safepoint() {
|
||||
@@ -952,15 +958,11 @@ void NonSafepointEmitter::emit_non_safepoint() {
|
||||
@@ -953,15 +959,11 @@ void NonSafepointEmitter::emit_non_safepoint() {
|
||||
}
|
||||
|
||||
//------------------------------init_buffer------------------------------------
|
||||
@ -5442,7 +5432,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
// The extra spacing after the code is necessary on some platforms.
|
||||
// Sometimes we need to patch in a jump after the last instruction,
|
||||
// if the nmethod has been deoptimized. (See 4932387, 4894843.)
|
||||
@@ -972,7 +974,7 @@ CodeBuffer* Compile::init_buffer(uint* blk_starts) {
|
||||
@@ -973,7 +975,7 @@ CodeBuffer* Compile::init_buffer(uint* blk_starts) {
|
||||
|
||||
// Compute prolog code size
|
||||
_method_size = 0;
|
||||
@ -5451,7 +5441,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
#if defined(IA64) && !defined(AIX)
|
||||
if (save_argument_registers()) {
|
||||
// 4815101: this is a stub with implicit and unknown precision fp args.
|
||||
@@ -1021,12 +1023,18 @@ CodeBuffer* Compile::init_buffer(uint* blk_starts) {
|
||||
@@ -1022,12 +1024,18 @@ CodeBuffer* Compile::init_buffer(uint* blk_starts) {
|
||||
// Initialize the space for the BufferBlob used to find and verify
|
||||
// instruction size in MachNode::emit_size()
|
||||
init_scratch_buffer_blob(const_req);
|
||||
@ -5474,7 +5464,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
// nmethod and CodeBuffer count stubs & constants as part of method's code.
|
||||
// class HandlerImpl is platform-specific and defined in the *.ad files.
|
||||
int exception_handler_req = HandlerImpl::size_exception_handler() + MAX_stubs_size; // add marginal slop for handler
|
||||
@@ -1038,18 +1046,18 @@ CodeBuffer* Compile::init_buffer(uint* blk_starts) {
|
||||
@@ -1039,18 +1047,18 @@ CodeBuffer* Compile::init_buffer(uint* blk_starts) {
|
||||
code_req = const_req = stub_req = exception_handler_req = deopt_handler_req = 0x10; // force expansion
|
||||
|
||||
int total_req =
|
||||
@ -5500,7 +5490,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
|
||||
// Have we run out of code space?
|
||||
if ((cb->blob() == NULL) || (!CompileBroker::should_compile_new_jobs())) {
|
||||
@@ -1263,12 +1271,12 @@ void Compile::fill_buffer(CodeBuffer* cb, uint* blk_starts) {
|
||||
@@ -1264,12 +1272,12 @@ void Compile::fill_buffer(CodeBuffer* cb, uint* blk_starts) {
|
||||
Process_OopMap_Node(mach, current_offset);
|
||||
} // End if safepoint
|
||||
|
||||
@ -5515,7 +5505,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
else if (mach->is_MachBranch()) {
|
||||
// This requires the TRUE branch target be in succs[0]
|
||||
uint block_num = block->non_connector_successor(0)->_pre_order;
|
||||
@@ -1279,8 +1287,8 @@ void Compile::fill_buffer(CodeBuffer* cb, uint* blk_starts) {
|
||||
@@ -1280,8 +1288,8 @@ void Compile::fill_buffer(CodeBuffer* cb, uint* blk_starts) {
|
||||
bool delay_slot_is_used = valid_bundle_info(n) &&
|
||||
node_bundling(n)->use_unconditional_delay();
|
||||
if (!delay_slot_is_used && mach->may_be_short_branch()) {
|
||||
@ -5526,7 +5516,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
int offset = blk_starts[block_num] - current_offset;
|
||||
if (block_num >= i) {
|
||||
// Current and following block's offset are not
|
||||
@@ -1338,7 +1346,7 @@ void Compile::fill_buffer(CodeBuffer* cb, uint* blk_starts) {
|
||||
@@ -1339,7 +1347,7 @@ void Compile::fill_buffer(CodeBuffer* cb, uint* blk_starts) {
|
||||
}
|
||||
}
|
||||
#ifdef ASSERT
|
||||
@ -5535,7 +5525,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
else if (mach->ideal_Opcode() == Op_StoreCM) {
|
||||
uint storeCM_idx = j;
|
||||
int count = 0;
|
||||
@@ -1507,6 +1515,10 @@ void Compile::fill_buffer(CodeBuffer* cb, uint* blk_starts) {
|
||||
@@ -1517,6 +1525,10 @@ void Compile::fill_buffer(CodeBuffer* cb, uint* blk_starts) {
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -5546,7 +5536,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
#ifndef PRODUCT
|
||||
// Information on the size of the method, without the extraneous code
|
||||
Scheduling::increment_method_size(cb->insts_size());
|
||||
@@ -1671,20 +1683,20 @@ uint Scheduling::_total_instructions_per_bundle[Pipeline::_max_instrs_per_cycle+
|
||||
@@ -1681,20 +1693,20 @@ uint Scheduling::_total_instructions_per_bundle[Pipeline::_max_instrs_per_cycle+
|
||||
// Initializer for class Scheduling
|
||||
|
||||
Scheduling::Scheduling(Arena *arena, Compile &compile)
|
||||
@ -5580,7 +5570,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
#endif
|
||||
{
|
||||
// Create a MachNopNode
|
||||
@@ -1763,8 +1775,8 @@ void Scheduling::step_and_clear() {
|
||||
@@ -1773,8 +1785,8 @@ void Scheduling::step_and_clear() {
|
||||
_bundle_use.reset();
|
||||
|
||||
memcpy(_bundle_use_elements,
|
||||
@ -5591,7 +5581,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
}
|
||||
|
||||
// Perform instruction scheduling and bundling over the sequence of
|
||||
@@ -1791,6 +1803,22 @@ void Compile::ScheduleAndBundle() {
|
||||
@@ -1801,6 +1813,22 @@ void Compile::ScheduleAndBundle() {
|
||||
// Walk backwards over each basic block, computing the needed alignment
|
||||
// Walk over all the basic blocks
|
||||
scheduling.DoScheduling();
|
||||
@ -5614,7 +5604,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
}
|
||||
|
||||
// Compute the latency of all the instructions. This is fairly simple,
|
||||
@@ -1859,7 +1887,7 @@ bool Scheduling::NodeFitsInBundle(Node *n) {
|
||||
@@ -1869,7 +1897,7 @@ bool Scheduling::NodeFitsInBundle(Node *n) {
|
||||
#ifndef PRODUCT
|
||||
if (_cfg->C->trace_opto_output())
|
||||
tty->print("# NodeFitsInBundle [%4d]: FALSE; latency %4d > %d\n",
|
||||
@ -5623,7 +5613,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
#endif
|
||||
return (false);
|
||||
}
|
||||
@@ -2084,12 +2112,12 @@ void Scheduling::AddNodeToBundle(Node *n, const Block *bb) {
|
||||
@@ -2094,12 +2122,12 @@ void Scheduling::AddNodeToBundle(Node *n, const Block *bb) {
|
||||
// Don't allow safepoints in the branch shadow, that will
|
||||
// cause a number of difficulties
|
||||
if ( avail_pipeline->instructionCount() == 1 &&
|
||||
@ -5642,7 +5632,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
|
||||
if (d->is_Mach() && !d->is_MachSafePoint()) {
|
||||
// A node that fits in the delay slot was found, so we need to
|
||||
@@ -2134,13 +2162,13 @@ void Scheduling::AddNodeToBundle(Node *n, const Block *bb) {
|
||||
@@ -2144,13 +2172,13 @@ void Scheduling::AddNodeToBundle(Node *n, const Block *bb) {
|
||||
// step of the bundles
|
||||
if (!NodeFitsInBundle(n)) {
|
||||
#ifndef PRODUCT
|
||||
@ -5661,7 +5651,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2186,8 +2214,8 @@ void Scheduling::AddNodeToBundle(Node *n, const Block *bb) {
|
||||
@@ -2196,8 +2224,8 @@ void Scheduling::AddNodeToBundle(Node *n, const Block *bb) {
|
||||
#ifndef PRODUCT
|
||||
if (_cfg->C->trace_opto_output())
|
||||
tty->print("# *** STEP(%d >= %d instructions) ***\n",
|
||||
@ -5672,7 +5662,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
#endif
|
||||
step(1);
|
||||
}
|
||||
@@ -2393,7 +2421,7 @@ void Scheduling::DoScheduling() {
|
||||
@@ -2403,7 +2431,7 @@ void Scheduling::DoScheduling() {
|
||||
}
|
||||
assert(!last->is_Mach() || last->as_Mach()->ideal_Opcode() != Op_Con, "");
|
||||
if( last->is_Catch() ||
|
||||
@ -5681,7 +5671,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
// There might be a prior call. Skip it.
|
||||
while (_bb_start < _bb_end && bb->get_node(--_bb_end)->is_MachProj());
|
||||
} else if( last->is_MachNullCheck() ) {
|
||||
@@ -2463,7 +2491,7 @@ void Scheduling::DoScheduling() {
|
||||
@@ -2473,7 +2501,7 @@ void Scheduling::DoScheduling() {
|
||||
}
|
||||
#endif
|
||||
#ifdef ASSERT
|
||||
@ -5690,7 +5680,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -2811,31 +2839,31 @@ void Scheduling::ComputeRegisterAntidependencies(Block *b) {
|
||||
@@ -2821,31 +2849,31 @@ void Scheduling::ComputeRegisterAntidependencies(Block *b) {
|
||||
//
|
||||
void Scheduling::garbage_collect_pinch_nodes() {
|
||||
#ifndef PRODUCT
|
||||
@ -5742,7 +5732,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -2872,19 +2900,19 @@ void Scheduling::dump_available() const {
|
||||
@@ -2882,19 +2910,19 @@ void Scheduling::dump_available() const {
|
||||
void Scheduling::print_statistics() {
|
||||
// Print the size added by nops for bundling
|
||||
tty->print("Nops added %d bytes to total of %d bytes",
|
||||
@ -5766,7 +5756,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
tty->print("\n");
|
||||
}
|
||||
|
||||
@@ -2898,6 +2926,6 @@ void Scheduling::print_statistics() {
|
||||
@@ -2908,6 +2936,6 @@ void Scheduling::print_statistics() {
|
||||
|
||||
if (total_bundles > 0)
|
||||
tty->print("Average ILP (excluding nops) is %.2f\n",
|
||||
@ -5775,7 +5765,7 @@ index b8f72ffca..4319f9fd1 100644
|
||||
}
|
||||
#endif
|
||||
diff --git a/src/hotspot/share/opto/output.hpp b/src/hotspot/share/opto/output.hpp
|
||||
index ab3c1a304..ec3cc2981 100644
|
||||
index ab3c1a3..ec3cc29 100644
|
||||
--- a/src/hotspot/share/opto/output.hpp
|
||||
+++ b/src/hotspot/share/opto/output.hpp
|
||||
@@ -49,10 +49,7 @@ class Pipeline_Use;
|
||||
@ -5791,10 +5781,10 @@ index ab3c1a304..ec3cc2981 100644
|
||||
|
||||
//------------------------------Scheduling----------------------------------
|
||||
diff --git a/src/hotspot/share/opto/phaseX.cpp b/src/hotspot/share/opto/phaseX.cpp
|
||||
index d1177a56e..f9b883ef6 100644
|
||||
index 07b8490..9d5d4de 100644
|
||||
--- a/src/hotspot/share/opto/phaseX.cpp
|
||||
+++ b/src/hotspot/share/opto/phaseX.cpp
|
||||
@@ -1650,14 +1650,14 @@ void PhaseIterGVN::add_users_to_worklist( Node *n ) {
|
||||
@@ -1648,14 +1648,14 @@ void PhaseIterGVN::add_users_to_worklist( Node *n ) {
|
||||
// of the mirror load depends on the type of 'n'. See LoadNode::Value().
|
||||
// LoadBarrier?(LoadP(LoadP(AddP(foo:Klass, #java_mirror))))
|
||||
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
|
||||
@ -5811,7 +5801,7 @@ index d1177a56e..f9b883ef6 100644
|
||||
// Search for load barriers behind the load
|
||||
for (DUIterator_Fast i3max, i3 = u->fast_outs(i3max); i3 < i3max; i3++) {
|
||||
Node* b = u->fast_out(i3);
|
||||
@@ -1811,14 +1811,14 @@ void PhaseCCP::analyze() {
|
||||
@@ -1818,14 +1818,14 @@ void PhaseCCP::analyze() {
|
||||
// Loading the java mirror from a Klass requires two loads and the type
|
||||
// of the mirror load depends on the type of 'n'. See LoadNode::Value().
|
||||
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
|
||||
@ -5829,10 +5819,10 @@ index d1177a56e..f9b883ef6 100644
|
||||
for (DUIterator_Fast i3max, i3 = u->fast_outs(i3max); i3 < i3max; i3++) {
|
||||
Node* b = u->fast_out(i3);
|
||||
diff --git a/src/hotspot/share/opto/vectornode.cpp b/src/hotspot/share/opto/vectornode.cpp
|
||||
index b40587ba5..e0bf8410a 100644
|
||||
index 0258db3..fae147f 100644
|
||||
--- a/src/hotspot/share/opto/vectornode.cpp
|
||||
+++ b/src/hotspot/share/opto/vectornode.cpp
|
||||
@@ -252,7 +252,6 @@ void VectorNode::vector_operands(Node* n, uint* start, uint* end) {
|
||||
@@ -264,7 +264,6 @@ void VectorNode::vector_operands(Node* n, uint* start, uint* end) {
|
||||
case Op_LoadI: case Op_LoadL:
|
||||
case Op_LoadF: case Op_LoadD:
|
||||
case Op_LoadP: case Op_LoadN:
|
||||
@ -5840,4 +5830,3 @@ index b40587ba5..e0bf8410a 100644
|
||||
*start = 0;
|
||||
*end = 0; // no vector operands
|
||||
break;
|
||||
|
||||
|
||||
@ -1,15 +1,3 @@
|
||||
From 9f63ba9b77f9f5391b2f79d2a4c3a444268a54ca Mon Sep 17 00:00:00 2001
|
||||
Date: Tue, 21 Apr 2020 17:00:15 +0000
|
||||
Subject: [PATCH] ZGC: reuse entries of ResolvedMethodTable
|
||||
|
||||
Summary: <gc>: <zgc need remove unused entries of ResolvedMethodTable in mark end>
|
||||
LLT: test/hotspot/jtreg/runtime/MemberName/MemberNameLeak.java
|
||||
Bug url: NA
|
||||
---
|
||||
src/hotspot/share/gc/z/zHeap.cpp | 5 +++++
|
||||
.../hotspot/jtreg/runtime/MemberName/MemberNameLeak.java | 16 +++++++++++++---
|
||||
2 files changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/hotspot/share/gc/z/zHeap.cpp b/src/hotspot/share/gc/z/zHeap.cpp
|
||||
index 62f97d2..e950acf 100644
|
||||
--- a/src/hotspot/share/gc/z/zHeap.cpp
|
||||
@ -34,39 +22,14 @@ index 62f97d2..e950acf 100644
|
||||
}
|
||||
|
||||
diff --git a/test/hotspot/jtreg/runtime/MemberName/MemberNameLeak.java b/test/hotspot/jtreg/runtime/MemberName/MemberNameLeak.java
|
||||
index 357f27f..930a542 100644
|
||||
index a8aff47..afadfd6 100644
|
||||
--- a/test/hotspot/jtreg/runtime/MemberName/MemberNameLeak.java
|
||||
+++ b/test/hotspot/jtreg/runtime/MemberName/MemberNameLeak.java
|
||||
@@ -59,9 +59,18 @@ public class MemberNameLeak {
|
||||
|
||||
public static void test(String gc) throws Throwable {
|
||||
// Run this Leak class with logging
|
||||
- ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
|
||||
- "-Xlog:membername+table=trace",
|
||||
- gc, Leak.class.getName());
|
||||
+ ProcessBuilder pb;
|
||||
+ if (gc.contains("UseZGC")) {
|
||||
+ pb = ProcessTools.createJavaProcessBuilder(
|
||||
+ "-Xlog:membername+table=trace",
|
||||
+ "-XX:+UnlockExperimentalVMOptions",
|
||||
+ gc, Leak.class.getName());
|
||||
+
|
||||
+ } else {
|
||||
+ pb = ProcessTools.createJavaProcessBuilder(
|
||||
+ "-Xlog:membername+table=trace",
|
||||
+ gc, Leak.class.getName());
|
||||
+ }
|
||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
||||
output.shouldContain("ResolvedMethod entry added for MemberNameLeak$Leak.callMe()V");
|
||||
output.shouldContain("ResolvedMethod entry found for MemberNameLeak$Leak.callMe()V");
|
||||
@@ -73,6 +82,7 @@ public class MemberNameLeak {
|
||||
@@ -75,6 +75,7 @@ public class MemberNameLeak {
|
||||
test("-XX:+UseG1GC");
|
||||
test("-XX:+UseParallelGC");
|
||||
test("-XX:+UseSerialGC");
|
||||
+ test("-XX:+UseZGC");
|
||||
if (!Compiler.isGraalEnabled()) { // Graal does not support CMS
|
||||
if (!Compiler.isGraalEnabled()) { // Graal does not support CMS and Shenandoah
|
||||
test("-XX:+UseConcMarkSweepGC");
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
if (GC.Shenandoah.isSupported()) {
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
From 466cb0f1a98c7b93e47e6056c460b6ec81864e3b Mon Sep 17 00:00:00 2001
|
||||
Date: Tue, 12 May 2020 10:08:51 +0000
|
||||
Subject: [PATCH] fix IfNode's bugs
|
||||
|
||||
Summary: <C2>: fix wrong use of transform function
|
||||
LLT:
|
||||
Bug url: NA
|
||||
---
|
||||
src/hotspot/share/opto/ifnode.cpp | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/hotspot/share/opto/ifnode.cpp b/src/hotspot/share/opto/ifnode.cpp
|
||||
index 6f87d7c..a856200 100644
|
||||
--- a/src/hotspot/share/opto/ifnode.cpp
|
||||
+++ b/src/hotspot/share/opto/ifnode.cpp
|
||||
@@ -1398,7 +1398,10 @@ Node* IfNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
||||
if (in(0) == NULL) return NULL; // Dead loop?
|
||||
|
||||
PhaseIterGVN *igvn = phase->is_IterGVN();
|
||||
+ bool delay_state = igvn->delay_transform();
|
||||
+ igvn->set_delay_transform(true);
|
||||
Node* result = fold_compares(igvn);
|
||||
+ igvn->set_delay_transform(delay_state);
|
||||
if (result != NULL) {
|
||||
return result;
|
||||
}
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
@ -114,13 +114,13 @@
|
||||
|
||||
# New Version-String scheme-style defines
|
||||
%global majorver 11
|
||||
%global securityver 8
|
||||
%global securityver 9
|
||||
# buildjdkver is usually same as %%{majorver},
|
||||
# but in time of bootstrap of next jdk, it is majorver-1,
|
||||
# and this it is better to change it here, on single place
|
||||
%global buildjdkver %{majorver}
|
||||
|
||||
%global vendor_version_string Boole
|
||||
%global vendor_version_string Bisheng
|
||||
|
||||
# Define IcedTea version used for SystemTap tapsets and desktop file
|
||||
%global icedteaver 3.15.0
|
||||
@ -130,11 +130,11 @@
|
||||
%global origin_nice OpenJDK
|
||||
%global top_level_dir_name %{origin}
|
||||
%global minorver 0
|
||||
%global buildver 10
|
||||
%global buildver 11
|
||||
|
||||
%global project jdk-updates
|
||||
%global repo jdk11u
|
||||
%global revision jdk-11.0.8-ga
|
||||
%global revision jdk-11.0.9-ga
|
||||
%global full_revision %{project}-%{repo}-%{revision}
|
||||
# priority must be 7 digits in total
|
||||
# setting to 1, so debug ones can have 0
|
||||
@ -735,7 +735,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
|
||||
|
||||
Name: java-%{javaver}-%{origin}
|
||||
Version: %{newjavaver}.%{buildver}
|
||||
Release: 9
|
||||
Release: 0
|
||||
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons
|
||||
# and this change was brought into RHEL-4. java-1.5.0-ibm packages
|
||||
# also included the epoch in their virtual provides. This created a
|
||||
@ -805,8 +805,6 @@ Patch10: ZGC-aarch64-not-using-zr-register-avoid-sigill-in-Ma.patch
|
||||
Patch11: 8217856-ZGC-Break-out-C2-matching-rules-into-separat.patch
|
||||
Patch12: 8233073-Make-BitMap-accessors-more-memory-ordering-f.patch
|
||||
Patch13: 8233061-ZGC-Enforce-memory-ordering-in-segmented-bit.patch
|
||||
Patch14: Add-loadload-membar-to-avoid-loading-a-incorrect-offset.patch
|
||||
Patch15: 8226536-Catch-OOM-from-deopt-that-fails-rematerializ.patch
|
||||
Patch18: 8209375-ZGC-Use-dynamic-base-address-for-mark-stack-.patch
|
||||
Patch20: 8209894-ZGC-Cap-number-of-GC-workers-based-on-heap-s.patch
|
||||
Patch22: 8233506-ZGC-the-load-for-Reference.get-can-be-conver.patch
|
||||
@ -815,7 +813,6 @@ Patch26: ZGC-aarch64-fix-system-call-number-of-memfd_create.patch
|
||||
Patch27: ZGC-aarch64-fix-not-using-load-store-Pre-index.patch
|
||||
Patch28: address-s-offset-may-exceed-the-limit-of-ldrw-instru.patch
|
||||
Patch29: ZGC-reuse-entries-of-ResolvedMethodTable.patch
|
||||
Patch32: 8240360-NativeLibraryEvent-has-wrong-library-name-on-linux.patch
|
||||
|
||||
# 11.0.8
|
||||
Patch33: 8210473-JEP-345-NUMA-Aware-Memory-Allocation-for-G1.patch
|
||||
@ -829,7 +826,6 @@ Patch40: 8223667-ASAN-build-broken.patch
|
||||
Patch41: 8229495-SIGILL-in-C2-generated-OSR-compilation.patch
|
||||
Patch42: 8229496-SIGFPE-division-by-zero-in-C2-OSR-compiled-method.patch
|
||||
Patch43: 8243670-Unexpected-test-result-caused-by-C2-MergeMem.patch
|
||||
Patch44: fix-IfNode-s-bugs.patch
|
||||
Patch45: leaf-optimize-in-ParallelScanvageGC.patch
|
||||
Patch46: ZGC-correct-free-heap-size-excluding-waste-in-rule_allocation_rate.patch
|
||||
Patch47: 8204947-Port-ShenandoahTaskTerminator-to-mainline-and-make-it-default.patch
|
||||
@ -1074,8 +1070,6 @@ pushd %{top_level_dir_name}
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch18 -p1
|
||||
%patch20 -p1
|
||||
%patch22 -p1
|
||||
@ -1084,7 +1078,6 @@ pushd %{top_level_dir_name}
|
||||
%patch27 -p1
|
||||
%patch28 -p1
|
||||
%patch29 -p1
|
||||
%patch32 -p1
|
||||
%patch33 -p1
|
||||
%patch34 -p1
|
||||
%patch35 -p1
|
||||
@ -1093,10 +1086,9 @@ pushd %{top_level_dir_name}
|
||||
%patch38 -p1
|
||||
%patch39 -p1
|
||||
%patch40 -p1
|
||||
%patch41 -p1
|
||||
# %patch41 -p1
|
||||
%patch42 -p1
|
||||
%patch43 -p1
|
||||
%patch44 -p1
|
||||
%patch45 -p1
|
||||
%patch46 -p1
|
||||
%patch47 -p1
|
||||
@ -1193,7 +1185,7 @@ bash ../configure \
|
||||
--with-version-pre="" \
|
||||
--with-version-opt="" \
|
||||
--with-vendor-version-string="%{vendor_version_string}" \
|
||||
--with-vendor-name="Boole" \
|
||||
--with-vendor-name="Bisheng" \
|
||||
--with-vendor-url="https://openeuler.org/" \
|
||||
--with-vendor-bug-url="https://gitee.com/src-openeuler/openjdk-11/issues/" \
|
||||
--with-vendor-vm-bug-url="https://gitee.com/src-openeuler/openjdk-11/issues/" \
|
||||
@ -1604,6 +1596,11 @@ require "copy_jdk_configs.lua"
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Oct 22 2020 noah <hedongbo@huawei.com> - 1:11.0.9.11-0
|
||||
- Update to 11.0.9+11 (GA)
|
||||
- rename Boole to Bisheng
|
||||
- remove 8229495-SIGILL-in-C2-generated-OSR-compilation.patch temporarily
|
||||
|
||||
* Tue Oct 20 2020 noah <hedongbo@huawei.com> - 1:11.0.8.10-9
|
||||
- delete redundant openjdk-11.0.8-ga.tar.xz
|
||||
|
||||
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user