!29 !23 add several patches && !26 delete redundant openjdk-11.0.8-ga.tar.xz && Update to 11.0.9+11 (GA)

From: @jvmboy
Reviewed-by: @jdkboy
Signed-off-by: @jdkboy
This commit is contained in:
openeuler-ci-bot 2020-10-26 08:35:15 +08:00 committed by Gitee
commit 647a50a8e2
15 changed files with 362 additions and 723 deletions

View File

@ -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 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 --- a/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp
+++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp +++ b/src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp
@@ -55,6 +55,7 @@ @@ -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 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 --- a/src/hotspot/share/gc/cms/parNewGeneration.cpp
+++ b/src/hotspot/share/gc/cms/parNewGeneration.cpp +++ b/src/hotspot/share/gc/cms/parNewGeneration.cpp
@@ -74,7 +74,7 @@ ParScanThreadState::ParScanThreadState(Space* to_space_, @@ -74,7 +74,7 @@ ParScanThreadState::ParScanThreadState(Space* to_space_,
@ -250,7 +241,7 @@ index f6c55900f..0febc5292 100644
*to(), *this, *_old_gen, *task_queues(), *to(), *this, *_old_gen, *task_queues(),
_overflow_stacks, _preserved_marks_set, _overflow_stacks, _preserved_marks_set,
diff --git a/src/hotspot/share/gc/cms/parNewGeneration.hpp b/src/hotspot/share/gc/cms/parNewGeneration.hpp 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 --- a/src/hotspot/share/gc/cms/parNewGeneration.hpp
+++ b/src/hotspot/share/gc/cms/parNewGeneration.hpp +++ b/src/hotspot/share/gc/cms/parNewGeneration.hpp
@@ -134,7 +134,7 @@ class ParScanThreadState { @@ -134,7 +134,7 @@ class ParScanThreadState {
@ -263,7 +254,7 @@ index b3e7c5a7d..7bf37e535 100644
public: public:
AgeTable* age_table() {return &_ageTable;} AgeTable* age_table() {return &_ageTable;}
diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp 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 --- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
+++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp
@@ -3241,7 +3241,7 @@ protected: @@ -3241,7 +3241,7 @@ protected:
@ -296,7 +287,7 @@ index a987377ae..130f8ec0a 100644
_workers->run_task(&proc_task_proxy, ergo_workers); _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 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 --- a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp +++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
@@ -366,7 +366,7 @@ G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap* g1h, @@ -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); _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 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 --- a/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp
+++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp +++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.hpp
@@ -322,8 +322,8 @@ class G1ConcurrentMark : public CHeapObj<mtGC> { @@ -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 // Claims the next available region to be scanned by a marking
// task/thread. It might return NULL if the next region is empty or // 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 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 --- a/src/hotspot/share/gc/g1/g1FullGCMarkTask.cpp
+++ b/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) { @@ -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. // This is the point where the entire marking should have completed.
assert(marker->oop_stack()->is_empty(), "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 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 --- a/src/hotspot/share/gc/g1/g1FullGCMarkTask.hpp
+++ b/src/hotspot/share/gc/g1/g1FullGCMarkTask.hpp +++ b/src/hotspot/share/gc/g1/g1FullGCMarkTask.hpp
@@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
@ -374,7 +365,7 @@ index 8dfff0555..7223cee50 100644
public: public:
G1FullGCMarkTask(G1FullCollector* collector); G1FullGCMarkTask(G1FullCollector* collector);
diff --git a/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp b/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp 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 --- a/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp
+++ b/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp +++ b/src/hotspot/share/gc/g1/g1FullGCReferenceProcessorExecutor.hpp
@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
@ -399,7 +390,7 @@ index 492c783b6..d4f06f56e 100644
public: public:
G1RefProcTaskProxy(ProcessTask& proc_task, G1RefProcTaskProxy(ProcessTask& proc_task,
diff --git a/src/hotspot/share/gc/parallel/pcTasks.cpp b/src/hotspot/share/gc/parallel/pcTasks.cpp 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 --- a/src/hotspot/share/gc/parallel/pcTasks.cpp
+++ b/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) @@ -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); 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 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 --- a/src/hotspot/share/gc/parallel/psParallelCompact.cpp
+++ b/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, @@ -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); 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 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 --- a/src/hotspot/share/gc/parallel/psScavenge.cpp
+++ b/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) @@ -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 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 --- a/src/hotspot/share/gc/shared/gc_globals.hpp
+++ b/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, \ develop(uintx, PromotionFailureALotInterval, 5, \
"Total collections between promotion failures a lot") \ "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 diff --git a/src/hotspot/share/gc/shared/owstTaskTerminator.cpp b/src/hotspot/share/gc/shared/owstTaskTerminator.cpp
new file mode 100644 new file mode 100644
index 000000000..3c32ab627 index 0000000..3c32ab6
--- /dev/null --- /dev/null
+++ b/src/hotspot/share/gc/shared/owstTaskTerminator.cpp +++ b/src/hotspot/share/gc/shared/owstTaskTerminator.cpp
@@ -0,0 +1,171 @@ @@ -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 diff --git a/src/hotspot/share/gc/shared/owstTaskTerminator.hpp b/src/hotspot/share/gc/shared/owstTaskTerminator.hpp
new file mode 100644 new file mode 100644
index 000000000..9e6fe135a index 0000000..9e6fe13
--- /dev/null --- /dev/null
+++ b/src/hotspot/share/gc/shared/owstTaskTerminator.hpp +++ b/src/hotspot/share/gc/shared/owstTaskTerminator.hpp
@@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
@ -774,7 +765,7 @@ index 000000000..9e6fe135a
+ +
+#endif // SHARE_VM_GC_SHARED_OWSTTASKTERMINATOR_HPP +#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 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 --- a/src/hotspot/share/gc/shared/taskqueue.cpp
+++ b/src/hotspot/share/gc/shared/taskqueue.cpp +++ b/src/hotspot/share/gc/shared/taskqueue.cpp
@@ -24,6 +24,7 @@ @@ -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 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 --- a/src/hotspot/share/gc/shared/taskqueue.hpp
+++ b/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: public:
// Returns "true" if some TaskQueue in the set contains a task. // Returns "true" if some TaskQueue in the set contains a task.
virtual bool peek() = 0; virtual bool peek() = 0;
+ // Tasks in queue + // Tasks in queue
+ virtual uint tasks() const = 0; + virtual uint tasks() const = 0;
}; #if INCLUDE_SHENANDOAHGC
virtual size_t tasks() = 0;
template <MEMFLAGS F> class TaskQueueSetSuperImpl: public CHeapObj<F>, public TaskQueueSetSuper { #endif
@@ -389,6 +391,7 @@ public: @@ -393,6 +395,7 @@ public:
bool steal(uint queue_num, int* seed, E& t); bool steal(uint queue_num, int* seed, E& t);
bool peek(); bool peek();
+ uint tasks() const; + uint tasks() const;
#if INCLUDE_SHENANDOAHGC
uint size() const { return _n; } size_t tasks();
}; #endif
@@ -414,6 +417,15 @@ bool GenericTaskQueueSet<T, F>::peek() { @@ -432,6 +435,15 @@ size_t GenericTaskQueueSet<T, F>::tasks() {
return false;
} }
#endif
+template<class T, MEMFLAGS F> +template<class T, MEMFLAGS F>
+uint GenericTaskQueueSet<T, F>::tasks() const { +uint GenericTaskQueueSet<T, F>::tasks() const {
@ -848,7 +839,7 @@ index 877b843ab..1cafcdeb2 100644
// When to terminate from the termination protocol. // When to terminate from the termination protocol.
class TerminatorTerminator: public CHeapObj<mtInternal> { class TerminatorTerminator: public CHeapObj<mtInternal> {
public: public:
@@ -425,8 +437,8 @@ public: @@ -443,8 +455,8 @@ public:
#undef TRACESPINNING #undef TRACESPINNING
@ -856,19 +847,19 @@ index 877b843ab..1cafcdeb2 100644
-private: -private:
+class ParallelTaskTerminator: public CHeapObj<mtGC> { +class ParallelTaskTerminator: public CHeapObj<mtGC> {
+protected: +protected:
uint _n_threads; #if INCLUDE_SHENANDOAHGC
TaskQueueSetSuper* _queue_set; protected:
#endif
@@ -462,7 +474,7 @@ public: @@ -483,7 +495,7 @@ public:
// As above, but it also terminates if the should_exit_termination() // As above, but it also terminates if the should_exit_termination()
// method of the terminator parameter returns true. If terminator is // method of the terminator parameter returns true. If terminator is
// NULL, then it is ignored. // NULL, then it is ignored.
- bool offer_termination(TerminatorTerminator* terminator); - SHENANDOAHGC_ONLY(virtual) bool offer_termination(TerminatorTerminator* terminator);
+ 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. // Reset the terminator, so that it may be reused again.
// The caller is responsible for ensuring that this is done // The caller is responsible for ensuring that this is done
@@ -481,6 +493,38 @@ public: @@ -502,6 +514,38 @@ public:
#endif #endif
}; };

View File

@ -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 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 --- a/make/autoconf/hotspot.m4
+++ b/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 # Only enable ZGC on supported platforms
AC_MSG_CHECKING([if zgc can be built]) AC_MSG_CHECKING([if zgc can be built])
@ -57,7 +13,7 @@ index 1d4c710be..6bfda33da 100644
else else
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES zgc" DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES zgc"
diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad 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 --- a/src/hotspot/cpu/aarch64/aarch64.ad
+++ b/src/hotspot/cpu/aarch64/aarch64.ad +++ b/src/hotspot/cpu/aarch64/aarch64.ad
@@ -957,6 +957,146 @@ reg_class v3_reg( @@ -957,6 +957,146 @@ reg_class v3_reg(
@ -219,7 +175,7 @@ index f2a9207b8..57b20775e 100644
//----------SOURCE BLOCK------------------------------------------------------- //----------SOURCE BLOCK-------------------------------------------------------
// This is a block of C++ code which provides values, functions, and // 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); interface(REG_INTER);
%} %}
@ -478,7 +434,7 @@ index f2a9207b8..57b20775e 100644
// Flags register, used as output of signed compare instructions // Flags register, used as output of signed compare instructions
// note that on AArch64 we also use this register as the output for // 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); ins_pipe(vshift128_imm);
%} %}
@ -575,10 +531,10 @@ index f2a9207b8..57b20775e 100644
// These must follow all instruction definitions as they use the names // These must follow all instruction definitions as they use the names
// defined in the instructions definitions. // 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 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 --- a/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp
+++ b/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) { if (UseCompressedOops && !wide) {
__ decode_heap_oop(dest->as_register()); __ 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()) { } else if (type == T_ADDRESS && addr->disp() == oopDesc::klass_offset_in_bytes()) {
if (UseCompressedClassPointers) { if (UseCompressedClassPointers) {
__ decode_klass_not_null(dest->as_register()); __ decode_klass_not_null(dest->as_register());
@@ -2818,7 +2822,11 @@ void LIR_Assembler::negate(LIR_Opr left, LIR_Opr dest, LIR_Opr tmp) { @@ -2825,7 +2829,11 @@ void LIR_Assembler::leal(LIR_Opr addr, LIR_Opr dest, LIR_PatchCode patch_code, C
return;
}
void LIR_Assembler::leal(LIR_Opr addr, LIR_Opr dest, LIR_PatchCode patch_code, CodeEmitInfo* info) { #endif
- assert(patch_code == lir_patch_none, "Patch code not supported"); - assert(patch_code == lir_patch_none, "Patch code not supported");
+ if (patch_code != lir_patch_none) { + if (patch_code != lir_patch_none) {
+ deoptimize_trap(info); + 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 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 new file mode 100644
index 000000000..90b2b4ca7 index 0000000..90b2b4c
--- /dev/null --- /dev/null
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
@@ -0,0 +1,408 @@ @@ -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 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 new file mode 100644
index 000000000..7e8be01cc index 0000000..7e8be01
--- /dev/null --- /dev/null
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
@@ -0,0 +1,92 @@ @@ -0,0 +1,92 @@
@ -1117,7 +1073,7 @@ index 000000000..7e8be01cc
+ +
+#endif // CPU_AARCH64_GC_Z_ZBARRIERSETASSEMBLER_AARCH64_HPP +#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 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 --- a/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
+++ b/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
@@ -45,6 +45,9 @@ @@ -45,6 +45,9 @@
@ -1148,7 +1104,7 @@ index 89a433013..ac7eb8480 100644
__ mov(c_rarg3, (intptr_t) Universe::verify_oop_mask()); __ mov(c_rarg3, (intptr_t) Universe::verify_oop_mask());
__ andr(c_rarg2, r0, c_rarg3); __ 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 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 --- a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
+++ b/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, @@ -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); 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 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 new file mode 100644
index 000000000..936480cb5 index 0000000..936480c
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
@ -1208,7 +1164,7 @@ index 000000000..936480cb5
+#endif // OS_CPU_LINUX_AARCH64_ZADDRESS_LINUX_AARCH64_INLINE_HPP +#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 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 new file mode 100644
index 000000000..47894b5c8 index 0000000..47894b5
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,426 @@ @@ -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 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 new file mode 100644
index 000000000..032dbc133 index 0000000..032dbc1
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
@ -1709,7 +1665,7 @@ index 000000000..032dbc133
+#endif // OS_CPU_LINUX_AARCH64_ZBACKINGFILE_LINUX_AARCH64_HPP +#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 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 new file mode 100644
index 000000000..1adffa32b index 0000000..1adffa3
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,149 @@ @@ -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 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 new file mode 100644
index 000000000..a03aaf960 index 0000000..a03aaf9
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
@ -1922,7 +1878,7 @@ index 000000000..a03aaf960
+#endif // OS_CPU_LINUX_AARCH64_ZBACKINGPATH_LINUX_AARCH64_HPP +#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 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 new file mode 100644
index 000000000..5d2480993 index 0000000..5d24809
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,33 @@ @@ -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 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 new file mode 100644
index 000000000..93c18067b index 0000000..93c1806
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,88 @@ @@ -0,0 +1,88 @@
@ -2055,7 +2011,7 @@ index 000000000..93c18067b
+#endif // OS_CPU_LINUX_AARCH64_ZGLOBALS_LINUX_AARCH64_HPP +#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 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 new file mode 100644
index 000000000..c79195cd1 index 0000000..c79195c
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,38 @@ @@ -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 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 new file mode 100644
index 000000000..10706fac2 index 0000000..10706fa
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,83 @@ @@ -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 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 new file mode 100644
index 000000000..55c2a16e0 index 0000000..55c2a16
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,270 @@ @@ -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 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 new file mode 100644
index 000000000..c55b7b17c index 0000000..c55b7b1
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
@ -2535,7 +2491,7 @@ index 000000000..c55b7b17c
+#endif // OS_CPU_LINUX_AARCH64_ZPHYSICALMEMORYBACKING_LINUX_AARCH64_HPP +#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 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 new file mode 100644
index 000000000..68df40191 index 0000000..68df401
--- /dev/null --- /dev/null
+++ b/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
@@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
@ -2581,7 +2537,7 @@ index 000000000..68df40191
+ return true; + return true;
+} +}
diff --git a/src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp b/src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp 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 --- a/src/hotspot/share/gc/z/c1/zBarrierSetC1.cpp
+++ b/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 @@ -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 { DecoratorSet ZLoadBarrierStubC1::decorators() const {
--
2.19.1

View File

@ -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 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 --- a/make/hotspot/gensrc/GensrcAdlc.gmk
+++ b/make/hotspot/gensrc/GensrcAdlc.gmk +++ b/make/hotspot/gensrc/GensrcAdlc.gmk
@@ -136,6 +136,12 @@ ifeq ($(call check-jvm-feature, compiler2), true) @@ -146,6 +146,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 \ )))
))) endif
+ ifeq ($(call check-jvm-feature, zgc), true) + ifeq ($(call check-jvm-feature, zgc), true)
+ AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \ + AD_SRC_FILES += $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
@ -34,7 +16,7 @@ index 92b030b69..1eaed25d9 100644
INSERT_FILENAME_AWK_SCRIPT := \ INSERT_FILENAME_AWK_SCRIPT := \
diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad 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 --- a/src/hotspot/cpu/aarch64/aarch64.ad
+++ b/src/hotspot/cpu/aarch64/aarch64.ad +++ b/src/hotspot/cpu/aarch64/aarch64.ad
@@ -1128,13 +1128,6 @@ definitions %{ @@ -1128,13 +1128,6 @@ definitions %{
@ -51,7 +33,7 @@ index 93dd78e51..3cca2da5b 100644
//----------SOURCE BLOCK------------------------------------------------------- //----------SOURCE BLOCK-------------------------------------------------------
// This is a block of C++ code which provides values, functions, and // This is a block of C++ code which provides values, functions, and
// definitions necessary in the rest of the architecture description // 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); ins_pipe(vshift128_imm);
%} %}
@ -297,7 +279,7 @@ index 93dd78e51..3cca2da5b 100644
// These must follow all instruction definitions as they use the names // 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 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 new file mode 100644
index 000000000..50cc6f924 index 0000000..50cc6f9
--- /dev/null --- /dev/null
+++ b/src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad +++ b/src/hotspot/cpu/aarch64/gc/z/z_aarch64.ad
@@ -0,0 +1,268 @@ @@ -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 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 new file mode 100644
index 000000000..38c2e926b index 0000000..38c2e92
--- /dev/null --- /dev/null
+++ b/src/hotspot/cpu/x86/gc/z/z_x86_64.ad +++ b/src/hotspot/cpu/x86/gc/z/z_x86_64.ad
@@ -0,0 +1,168 @@ @@ -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 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 --- a/src/hotspot/cpu/x86/x86_64.ad
+++ b/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); @@ -538,19 +538,6 @@ reg_class int_rdi_reg(RDI);
@ -787,7 +769,7 @@ index f795fb823..7879547ce 100644
%} %}
//----------ENCODING BLOCK----------------------------------------------------- //----------ENCODING BLOCK-----------------------------------------------------
@@ -12520,131 +12494,6 @@ instruct RethrowException() @@ -12555,131 +12529,6 @@ instruct RethrowException()
ins_pipe(pipe_jmp); ins_pipe(pipe_jmp);
%} %}
@ -919,6 +901,3 @@ index f795fb823..7879547ce 100644
// ============================================================================ // ============================================================================
// This name is KNOWN by the ADLC and cannot be changed. // This name is KNOWN by the ADLC and cannot be changed.
// The ADLC forces a 'TypeRawPtr::BOTTOM' output type // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
--
2.12.3

View File

@ -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 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 --- a/src/hotspot/cpu/aarch64/aarch64.ad
+++ b/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_V25 v25, vRegD_V26 v26, vRegD_V27 v27, vRegD_V28 v28, vRegD_V29 v29,
vRegD_V30 v30, vRegD_V31 v31) %{ vRegD_V30 v30, vRegD_V31 v31) %{
match(Set dst (LoadBarrierSlowReg mem)); match(Set dst (LoadBarrierSlowReg mem));
@ -51,7 +11,7 @@ index 57b20775e..a6d2e6609 100644
effect(DEF dst, KILL cr, effect(DEF dst, KILL cr,
KILL v0, KILL v1, KILL v2, KILL v3, KILL v4, KILL v5, KILL v6, KILL v7, 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_V25 v25, vRegD_V26 v26, vRegD_V27 v27, vRegD_V28 v28, vRegD_V29 v29,
vRegD_V30 v30, vRegD_V31 v31) %{ vRegD_V30 v30, vRegD_V31 v31) %{
match(Set dst (LoadBarrierSlowReg mem)); match(Set dst (LoadBarrierSlowReg mem));
@ -60,7 +20,7 @@ index 57b20775e..a6d2e6609 100644
effect(DEF dst, KILL cr, effect(DEF dst, KILL cr,
KILL v0, KILL v1, KILL v2, KILL v3, KILL v4, KILL v5, KILL v6, KILL v7, 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); ins_pipe(pipe_slow);
%} %}
@ -124,7 +84,7 @@ index 57b20775e..a6d2e6609 100644
// These must follow all instruction definitions as they use the names // These must follow all instruction definitions as they use the names
// defined in the instructions definitions. // 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 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 --- a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
+++ b/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, @@ -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(); ref_addr = tmp = stub->tmp()->as_pointer_register();
} else { } else {
diff --git a/src/hotspot/cpu/x86/x86_64.ad b/src/hotspot/cpu/x86/x86_64.ad 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 --- a/src/hotspot/cpu/x86/x86_64.ad
+++ b/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" +#include "gc/z/c2/zBarrierSetC2.hpp"
+ +
+%} +%}
+ +
source_hpp %{ +source_hpp %{
#if INCLUDE_ZGC #if INCLUDE_ZGC
#include "gc/z/zBarrierSetAssembler.hpp" #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) %{ instruct loadBarrierSlowRegNoVec(rRegP dst, memory mem, rFlagsReg cr) %{
match(Set dst (LoadBarrierSlowReg mem)); match(Set dst (LoadBarrierSlowReg mem));
@ -161,7 +121,7 @@ index 9d9eda84b..97c396875 100644
effect(DEF dst, KILL cr); 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) %{ rxmm12 x12, rxmm13 x13, rxmm14 x14, rxmm15 x15) %{
match(Set dst (LoadBarrierSlowReg mem)); match(Set dst (LoadBarrierSlowReg mem));
@ -170,7 +130,7 @@ index 9d9eda84b..97c396875 100644
effect(DEF dst, KILL cr, effect(DEF dst, KILL cr,
KILL x0, KILL x1, KILL x2, KILL x3, 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) %{ rxmm28 x28, rxmm29 x29, rxmm30 x30, rxmm31 x31) %{
match(Set dst (LoadBarrierSlowReg mem)); match(Set dst (LoadBarrierSlowReg mem));
@ -179,7 +139,7 @@ index 9d9eda84b..97c396875 100644
effect(DEF dst, KILL cr, effect(DEF dst, KILL cr,
KILL x0, KILL x1, KILL x2, KILL x3, 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) %{ instruct loadBarrierWeakSlowRegNoVec(rRegP dst, memory mem, rFlagsReg cr) %{
match(Set dst (LoadBarrierSlowReg mem)); match(Set dst (LoadBarrierSlowReg mem));
@ -188,7 +148,7 @@ index 9d9eda84b..97c396875 100644
effect(DEF dst, KILL cr); 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, rxmm8 x8, rxmm9 x9, rxmm10 x10, rxmm11 x11,
rxmm12 x12, rxmm13 x13, rxmm14 x14, rxmm15 x15) %{ rxmm12 x12, rxmm13 x13, rxmm14 x14, rxmm15 x15) %{
@ -199,7 +159,7 @@ index 9d9eda84b..97c396875 100644
effect(DEF dst, KILL cr, effect(DEF dst, KILL cr,
KILL x0, KILL x1, KILL x2, KILL x3, 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, rxmm24 x24, rxmm25 x25, rxmm26 x26, rxmm27 x27,
rxmm28 x28, rxmm29 x29, rxmm30 x30, rxmm31 x31) %{ rxmm28 x28, rxmm29 x29, rxmm30 x30, rxmm31 x31) %{
@ -210,7 +170,7 @@ index 9d9eda84b..97c396875 100644
effect(DEF dst, KILL cr, effect(DEF dst, KILL cr,
KILL x0, KILL x1, KILL x2, KILL x3, 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); ins_pipe(pipe_slow);
%} %}
@ -273,7 +233,7 @@ index 9d9eda84b..97c396875 100644
// This name is KNOWN by the ADLC and cannot be changed. // This name is KNOWN by the ADLC and cannot be changed.
// The ADLC forces a 'TypeRawPtr::BOTTOM' output type // The ADLC forces a 'TypeRawPtr::BOTTOM' output type
diff --git a/src/hotspot/share/adlc/formssel.cpp b/src/hotspot/share/adlc/formssel.cpp 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 --- a/src/hotspot/share/adlc/formssel.cpp
+++ b/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 { @@ -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,"LoadBarrierSlowReg") ||
- !strcmp(_matrule->_rChild->_opType,"LoadBarrierWeakSlowReg") || - !strcmp(_matrule->_rChild->_opType,"LoadBarrierWeakSlowReg") ||
#endif #endif
!strcmp(_matrule->_rChild->_opType,"CompareAndExchangeP") || #if INCLUDE_SHENANDOAHGC
!strcmp(_matrule->_rChild->_opType,"CompareAndExchangeN"))) return true; !strcmp(_matrule->_rChild->_opType,"ShenandoahCompareAndExchangeP") ||
@@ -3503,10 +3504,12 @@ int MatchNode::needs_ideal_memory_edge(FormDict &globals) const { @@ -3510,10 +3511,12 @@ int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
"WeakCompareAndSwapB", "WeakCompareAndSwapS", "WeakCompareAndSwapI", "WeakCompareAndSwapL", "WeakCompareAndSwapP", "WeakCompareAndSwapN", "ShenandoahCompareAndSwapN", "ShenandoahCompareAndSwapP", "ShenandoahWeakCompareAndSwapP", "ShenandoahWeakCompareAndSwapN", "ShenandoahCompareAndExchangeP", "ShenandoahCompareAndExchangeN",
"CompareAndExchangeB", "CompareAndExchangeS", "CompareAndExchangeI", "CompareAndExchangeL", "CompareAndExchangeP", "CompareAndExchangeN", #endif
"StoreCM", "StoreCM",
- "ClearArray", - "ClearArray",
"GetAndSetB", "GetAndSetS", "GetAndAddI", "GetAndSetI", "GetAndSetP", "GetAndSetB", "GetAndSetS", "GetAndAddI", "GetAndSetI", "GetAndSetP",
@ -303,7 +263,7 @@ index 466880d19..2845cf6d8 100644
int cnt = sizeof(needs_ideal_memory_list)/sizeof(char*); int cnt = sizeof(needs_ideal_memory_list)/sizeof(char*);
if( strcmp(_opType,"PrefetchAllocation")==0 ) if( strcmp(_opType,"PrefetchAllocation")==0 )
diff --git a/src/hotspot/share/compiler/compilerDirectives.hpp b/src/hotspot/share/compiler/compilerDirectives.hpp 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 --- a/src/hotspot/share/compiler/compilerDirectives.hpp
+++ b/src/hotspot/share/compiler/compilerDirectives.hpp +++ b/src/hotspot/share/compiler/compilerDirectives.hpp
@@ -67,7 +67,7 @@ NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput)) @@ -67,7 +67,7 @@ NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput))
@ -316,7 +276,7 @@ index b4de7faed..8eba28f94 100644
#define compilerdirectives_c2_flags(cflags) #define compilerdirectives_c2_flags(cflags)
#endif #endif
diff --git a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp 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 --- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp +++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
@@ -208,15 +208,17 @@ public: @@ -208,15 +208,17 @@ public:
@ -339,7 +299,7 @@ index 8baf4d9de..eea74674f 100644
#endif // SHARE_GC_SHARED_C2_BARRIERSETC2_HPP #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 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 --- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp +++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
@@ -22,14 +22,21 @@ @@ -22,14 +22,21 @@
@ -2331,7 +2291,7 @@ index 221ab4c2f..bf0bd43af 100644
+ return true; + return true;
+} +}
diff --git a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp 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 --- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp +++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
@@ -29,14 +29,33 @@ @@ -29,14 +29,33 @@
@ -2525,7 +2485,7 @@ index fc9dadd67..bef6a7048 100644
#endif // SHARE_GC_Z_C2_ZBARRIERSETC2_HPP #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 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 --- a/src/hotspot/share/gc/z/zHeap.cpp
+++ b/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) { @@ -304,35 +304,9 @@ void ZHeap::mark_flush_and_free(Thread* thread) {
@ -2565,7 +2525,7 @@ index eb72707e0..62f97d2a2 100644
if (!_mark.end()) { if (!_mark.end()) {
// Marking not completed, continue concurrent mark // 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 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 --- a/src/hotspot/share/gc/z/z_globals.hpp
+++ b/src/hotspot/share/gc/z/z_globals.hpp +++ b/src/hotspot/share/gc/z/z_globals.hpp
@@ -94,9 +94,6 @@ @@ -94,9 +94,6 @@
@ -2579,7 +2539,7 @@ index a75329372..9e0f8985b 100644
"Verify that reference loads are followed by barriers") "Verify that reference loads are followed by barriers")
diff --git a/src/hotspot/share/opto/classes.hpp b/src/hotspot/share/opto/classes.hpp 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 --- a/src/hotspot/share/opto/classes.hpp
+++ b/src/hotspot/share/opto/classes.hpp +++ b/src/hotspot/share/opto/classes.hpp
@@ -196,7 +196,10 @@ macro(LoadS) @@ -196,7 +196,10 @@ macro(LoadS)
@ -2595,10 +2555,10 @@ index 4314edd96..f6b588685 100644
macro(Loop) macro(Loop)
macro(LoopLimit) macro(LoopLimit)
diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp 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 --- a/src/hotspot/share/opto/compile.cpp
+++ b/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 #endif
@ -2608,7 +2568,7 @@ index dc92af402..ef4a6ab13 100644
bs->verify_gc_barriers(true); bs->verify_gc_barriers(true);
#endif #endif
@@ -2380,12 +2380,6 @@ void Compile::Optimize() { @@ -2386,12 +2386,6 @@ void Compile::Optimize() {
return; return;
} }
@ -2621,7 +2581,7 @@ index dc92af402..ef4a6ab13 100644
if (failing()) return; if (failing()) return;
// Ensure that major progress is now clear // Ensure that major progress is now clear
@@ -2405,7 +2399,13 @@ void Compile::Optimize() { @@ -2411,7 +2405,13 @@ void Compile::Optimize() {
} }
#ifdef ASSERT #ifdef ASSERT
@ -2636,7 +2596,7 @@ index dc92af402..ef4a6ab13 100644
bs->verify_gc_barriers(false); bs->verify_gc_barriers(false);
#endif #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_LoadL_unaligned:
case Op_LoadPLocked: case Op_LoadPLocked:
case Op_LoadP: case Op_LoadP:
@ -2647,7 +2607,7 @@ index dc92af402..ef4a6ab13 100644
case Op_LoadN: case Op_LoadN:
case Op_LoadRange: case Op_LoadRange:
case Op_LoadS: { 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; break;
} }
@ -2678,7 +2638,7 @@ index dc92af402..ef4a6ab13 100644
Node *addp = n->in(AddPNode::Address); Node *addp = n->in(AddPNode::Address);
assert( !addp->is_AddP() || assert( !addp->is_AddP() ||
diff --git a/src/hotspot/share/opto/compile.hpp b/src/hotspot/share/opto/compile.hpp 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 --- a/src/hotspot/share/opto/compile.hpp
+++ b/src/hotspot/share/opto/compile.hpp +++ b/src/hotspot/share/opto/compile.hpp
@@ -52,6 +52,7 @@ class C2Compiler; @@ -52,6 +52,7 @@ class C2Compiler;
@ -2689,7 +2649,7 @@ index a56439bbf..bfd85d032 100644
class InlineTree; class InlineTree;
class Int_Array; class Int_Array;
class LoadBarrierNode; 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; } void set_inlining_incrementally(bool z) { _inlining_incrementally = z; }
int inlining_incrementally() const { return _inlining_incrementally; } int inlining_incrementally() const { return _inlining_incrementally; }
void set_major_progress() { _major_progress++; } void set_major_progress() { _major_progress++; }
@ -2697,7 +2657,7 @@ index a56439bbf..bfd85d032 100644
void clear_major_progress() { _major_progress = 0; } void clear_major_progress() { _major_progress = 0; }
int num_loop_opts() const { return _num_loop_opts; } int num_loop_opts() const { return _num_loop_opts; }
void set_num_loop_opts(int n) { _num_loop_opts = n; } 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(); C->_latest_stage_start_counter.stamp();
} }
@ -2714,7 +2674,7 @@ index a56439bbf..bfd85d032 100644
EventCompilerPhase event; EventCompilerPhase event;
if (event.should_commit()) { if (event.should_commit()) {
event.set_starttime(C->_latest_stage_start_counter); 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(); event.commit();
} }
@ -2734,10 +2694,10 @@ index a56439bbf..bfd85d032 100644
#endif #endif
C->_latest_stage_start_counter.stamp(); C->_latest_stage_start_counter.stamp();
diff --git a/src/hotspot/share/opto/escape.cpp b/src/hotspot/share/opto/escape.cpp 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 --- a/src/hotspot/share/opto/escape.cpp
+++ b/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; break;
} }
case Op_LoadP: case Op_LoadP:
@ -2748,7 +2708,7 @@ index e0637ee47..235b31c4c 100644
case Op_LoadN: case Op_LoadN:
case Op_LoadPLocked: { case Op_LoadPLocked: {
add_objload_to_connection_graph(n, delayed_worklist); 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; break;
} }
case Op_LoadP: case Op_LoadP:
@ -2760,7 +2720,7 @@ index e0637ee47..235b31c4c 100644
case Op_LoadPLocked: { case Op_LoadPLocked: {
// Using isa_ptr() instead of isa_oopptr() for LoadP and Phi because // 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 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 --- a/src/hotspot/share/opto/idealGraphPrinter.cpp
+++ b/src/hotspot/share/opto/idealGraphPrinter.cpp +++ b/src/hotspot/share/opto/idealGraphPrinter.cpp
@@ -350,14 +350,6 @@ void IdealGraphPrinter::end_method() { @@ -350,14 +350,6 @@ void IdealGraphPrinter::end_method() {
@ -2800,7 +2760,7 @@ index d90f1d691..a07a51f3e 100644
// Warning, unsafe cast? // Warning, unsafe cast?
_chaitin = (PhaseChaitin *)C->regalloc(); _chaitin = (PhaseChaitin *)C->regalloc();
diff --git a/src/hotspot/share/opto/idealGraphPrinter.hpp b/src/hotspot/share/opto/idealGraphPrinter.hpp 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 --- a/src/hotspot/share/opto/idealGraphPrinter.hpp
+++ b/src/hotspot/share/opto/idealGraphPrinter.hpp +++ b/src/hotspot/share/opto/idealGraphPrinter.hpp
@@ -81,10 +81,6 @@ class IdealGraphPrinter : public CHeapObj<mtCompiler> { @@ -81,10 +81,6 @@ class IdealGraphPrinter : public CHeapObj<mtCompiler> {
@ -2846,7 +2806,7 @@ index 2f4b9faf0..10dd02f9f 100644
void set_compile(Compile* compile) {C = compile; } void set_compile(Compile* compile) {C = compile; }
}; };
diff --git a/src/hotspot/share/opto/lcm.cpp b/src/hotspot/share/opto/lcm.cpp 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 --- a/src/hotspot/share/opto/lcm.cpp
+++ b/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 @@ -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_LoadS:
case Op_LoadKlass: case Op_LoadKlass:
diff --git a/src/hotspot/share/opto/loopnode.cpp b/src/hotspot/share/opto/loopnode.cpp 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 --- a/src/hotspot/share/opto/loopnode.cpp
+++ b/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); wq.push(u);
bool found_sfpt = false; bool found_sfpt = false;
for (uint next = 0; next < wq.size() && !found_sfpt; next++) { 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++) { for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax && !found_sfpt; i++) {
Node* u = n->fast_out(i); Node* u = n->fast_out(i);
if (u == sfpt) { 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"); 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(); CountedLoopEndNode* cle = inner_out->in(0)->as_CountedLoopEnd();
assert(cle == inner->loopexit_or_null(), "mismatch"); 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; 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------------------------------- //----------------------------build_and_optimize-------------------------------
// Create a PhaseLoop. Build the ideal Loop tree. Map each Ideal Node to // Create a PhaseLoop. Build the ideal Loop tree. Map each Ideal Node to
// its corresponding LoopNode. If 'optimize' is true, do some loop cleanups. // 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) { +void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode, bool z_barrier_insertion) {
bool do_split_ifs = (mode == LoopOptsDefault || mode == LoopOptsLastRound); bool do_split_ifs = (mode == LoopOptsDefault || mode == LoopOptsLastRound);
bool skip_loop_opts = (mode == LoopOptsNone); bool skip_loop_opts = (mode == LoopOptsNone);
#if INCLUDE_SHENANDOAHGC
@@ -2784,7 +2797,8 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) { @@ -2800,7 +2813,8 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
} }
// Nothing to do, so get out // 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 SHENANDOAHGC_ONLY(&& !shenandoah_opts);
+ 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) &&
+ !z_barrier_insertion; + !z_barrier_insertion;
bool do_expensive_nodes = C->should_optimize_expensive_nodes(_igvn); bool do_expensive_nodes = C->should_optimize_expensive_nodes(_igvn);
if (stop_early && !do_expensive_nodes) { if (stop_early && !do_expensive_nodes) {
_igvn.optimize(); // Cleanup NeverBranches _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 ); build_loop_late( visited, worklist, nstack );
if (_verify_only) { if (_verify_only) {
@ -2920,7 +2880,7 @@ index 4103fa4bd..b0b7fe185 100644
assert(C->unique() == unique, "verification mode made Nodes? ? ?"); assert(C->unique() == unique, "verification mode made Nodes? ? ?");
assert(_igvn._worklist.size() == orig_worklist_size, "shouldn't push anything"); assert(_igvn._worklist.size() == orig_worklist_size, "shouldn't push anything");
return; 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) { if (skip_loop_opts) {
// restore major progress flag // restore major progress flag
@ -2932,9 +2892,9 @@ index 4103fa4bd..b0b7fe185 100644
// Cleanup any modified bits // Cleanup any modified bits
_igvn.optimize(); _igvn.optimize();
@@ -2935,6 +2944,16 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) { @@ -2961,6 +2970,16 @@ void PhaseIdealLoop::build_and_optimize(LoopOptsMode mode) {
return;
} }
#endif
+ if(z_barrier_insertion) { + if(z_barrier_insertion) {
+ BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); + BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
@ -2949,7 +2909,7 @@ index 4103fa4bd..b0b7fe185 100644
if (ReassociateInvariants) { if (ReassociateInvariants) {
// Reassociate invariants and prep for split_thru_phi // Reassociate invariants and prep for split_thru_phi
for (LoopTreeIterator iter(_ltree_root); !iter.done(); iter.next()) { 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); _ltree_root->verify_tree(loop_verify._ltree_root, NULL);
// Reset major-progress. It was cleared by creating a verify version of // Reset major-progress. It was cleared by creating a verify version of
// PhaseIdealLoop. // PhaseIdealLoop.
@ -2959,7 +2919,7 @@ index 4103fa4bd..b0b7fe185 100644
} }
//------------------------------verify_compare--------------------------------- //------------------------------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_LoadS:
case Op_LoadP: case Op_LoadP:
case Op_LoadBarrierSlowReg: case Op_LoadBarrierSlowReg:
@ -2968,10 +2928,10 @@ index 4103fa4bd..b0b7fe185 100644
case Op_LoadRange: case Op_LoadRange:
case Op_LoadD_unaligned: case Op_LoadD_unaligned:
diff --git a/src/hotspot/share/opto/loopnode.hpp b/src/hotspot/share/opto/loopnode.hpp 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 --- a/src/hotspot/share/opto/loopnode.hpp
+++ b/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 // build the loop tree and perform any requested optimizations
@ -2980,7 +2940,7 @@ index 5efff246d..d2c50df70 100644
// Dominators for the sea of nodes // Dominators for the sea of nodes
void Dominators(); void Dominators();
@@ -939,13 +939,13 @@ public: @@ -946,13 +946,13 @@ public:
Node *dom_lca_internal( Node *n1, Node *n2 ) const; Node *dom_lca_internal( Node *n1, Node *n2 ) const;
// Compute the Ideal Node to Loop mapping // 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. // 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 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 --- a/src/hotspot/share/opto/loopopts.cpp
+++ b/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) { @@ -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--------------------------- //------------------------------split_if_with_blocks---------------------------
diff --git a/src/hotspot/share/opto/matcher.cpp b/src/hotspot/share/opto/matcher.cpp 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 --- a/src/hotspot/share/opto/matcher.cpp
+++ b/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); n->del_req(LoadStoreConditionalNode::ExpectedIn);
break; break;
} }
@ -3052,10 +3012,10 @@ index 1824c89cd..bdcf9c424 100644
case Op_CMoveF: case Op_CMoveF:
case Op_CMoveI: case Op_CMoveI:
diff --git a/src/hotspot/share/opto/memnode.cpp b/src/hotspot/share/opto/memnode.cpp 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 --- a/src/hotspot/share/opto/memnode.cpp
+++ b/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 // a load node that reads from the source array so we may be able to
// optimize out the ArrayCopy node later. // optimize out the ArrayCopy node later.
Node* LoadNode::can_see_arraycopy_value(Node* st, PhaseGVN* phase) const { 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); Node* ld_adr = in(MemNode::Address);
intptr_t ld_off = 0; intptr_t ld_off = 0;
AllocateNode* ld_alloc = AllocateNode::Ideal_allocation(ld_adr, phase, ld_off); 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 ) LoadStoreNode::LoadStoreNode( Node *c, Node *mem, Node *adr, Node *val, const TypePtr* at, const Type* rt, uint required )
: Node(required), : Node(required),
_type(rt), _type(rt),
@ -3080,7 +3040,7 @@ index ea33eef95..cdaf7669c 100644
{ {
init_req(MemNode::Control, c ); init_req(MemNode::Control, c );
init_req(MemNode::Memory , mem); 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; return NULL;
} }
@ -3098,7 +3058,7 @@ index ea33eef95..cdaf7669c 100644
// Eliminate volatile MemBars for scalar replaced objects. // Eliminate volatile MemBars for scalar replaced objects.
if (can_reshape && req() == (Precedent+1)) { if (can_reshape && req() == (Precedent+1)) {
diff --git a/src/hotspot/share/opto/memnode.hpp b/src/hotspot/share/opto/memnode.hpp 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 --- a/src/hotspot/share/opto/memnode.hpp
+++ b/src/hotspot/share/opto/memnode.hpp +++ b/src/hotspot/share/opto/memnode.hpp
@@ -182,6 +182,8 @@ private: @@ -182,6 +182,8 @@ private:
@ -3148,7 +3108,7 @@ index 529075761..e2bd6a6d8 100644
class LoadStoreConditionalNode : public LoadStoreNode { class LoadStoreConditionalNode : public LoadStoreNode {
diff --git a/src/hotspot/share/opto/node.cpp b/src/hotspot/share/opto/node.cpp 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 --- a/src/hotspot/share/opto/node.cpp
+++ b/src/hotspot/share/opto/node.cpp +++ b/src/hotspot/share/opto/node.cpp
@@ -546,6 +546,9 @@ Node *Node::clone() const { @@ -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 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 --- a/src/hotspot/share/opto/node.hpp
+++ b/src/hotspot/share/opto/node.hpp +++ b/src/hotspot/share/opto/node.hpp
@@ -84,8 +84,8 @@ class JumpProjNode; @@ -84,8 +84,8 @@ class JumpProjNode;
@ -3193,7 +3153,7 @@ index 608aa0c8f..49f415a31 100644
class LockNode; class LockNode;
class LoopNode; class LoopNode;
class MachBranchNode; class MachBranchNode;
@@ -691,8 +691,7 @@ public: @@ -696,8 +696,7 @@ public:
DEFINE_CLASS_ID(Mem, Node, 4) DEFINE_CLASS_ID(Mem, Node, 4)
DEFINE_CLASS_ID(Load, Mem, 0) DEFINE_CLASS_ID(Load, Mem, 0)
DEFINE_CLASS_ID(LoadVector, Load, 0) DEFINE_CLASS_ID(LoadVector, Load, 0)
@ -3203,7 +3163,7 @@ index 608aa0c8f..49f415a31 100644
DEFINE_CLASS_ID(Store, Mem, 1) DEFINE_CLASS_ID(Store, Mem, 1)
DEFINE_CLASS_ID(StoreVector, Store, 0) DEFINE_CLASS_ID(StoreVector, Store, 0)
DEFINE_CLASS_ID(LoadStore, Mem, 2) DEFINE_CLASS_ID(LoadStore, Mem, 2)
@@ -834,9 +833,9 @@ public: @@ -839,9 +838,9 @@ public:
DEFINE_CLASS_QUERY(JumpProj) DEFINE_CLASS_QUERY(JumpProj)
DEFINE_CLASS_QUERY(Load) DEFINE_CLASS_QUERY(Load)
DEFINE_CLASS_QUERY(LoadStore) DEFINE_CLASS_QUERY(LoadStore)
@ -3215,7 +3175,7 @@ index 608aa0c8f..49f415a31 100644
DEFINE_CLASS_QUERY(Loop) DEFINE_CLASS_QUERY(Loop)
DEFINE_CLASS_QUERY(Mach) DEFINE_CLASS_QUERY(Mach)
diff --git a/src/hotspot/share/opto/phaseX.cpp b/src/hotspot/share/opto/phaseX.cpp 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 --- a/src/hotspot/share/opto/phaseX.cpp
+++ b/src/hotspot/share/opto/phaseX.cpp +++ b/src/hotspot/share/opto/phaseX.cpp
@@ -947,9 +947,6 @@ PhaseIterGVN::PhaseIterGVN( PhaseGVN *gvn ) : PhaseGVN(gvn), @@ -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 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 --- a/src/hotspot/share/opto/phasetype.hpp
+++ b/src/hotspot/share/opto/phasetype.hpp +++ b/src/hotspot/share/opto/phasetype.hpp
@@ -53,6 +53,9 @@ enum CompilerPhaseType { @@ -56,6 +56,9 @@ enum CompilerPhaseType {
PHASE_INCREMENTAL_INLINE, PHASE_BEFORE_BARRIER_EXPAND,
PHASE_INCREMENTAL_BOXING_INLINE, #endif
PHASE_BEFORE_MACRO_EXPANSION, PHASE_BEFORE_MACRO_EXPANSION,
+ PHASE_CALL_CATCH_CLEANUP, + PHASE_CALL_CATCH_CLEANUP,
+ PHASE_INSERT_BARRIER, + PHASE_INSERT_BARRIER,
@ -3242,9 +3202,9 @@ index f0eac0b0b..b01b7630f 100644
PHASE_END, PHASE_END,
PHASE_FAILURE, PHASE_FAILURE,
@@ -90,6 +93,9 @@ class CompilerPhaseTypeHelper { @@ -96,6 +99,9 @@ class CompilerPhaseTypeHelper {
case PHASE_INCREMENTAL_INLINE: return "Incremental Inline"; case PHASE_BEFORE_BARRIER_EXPAND: return "Before Barrier Expand";
case PHASE_INCREMENTAL_BOXING_INLINE: return "Incremental Boxing Inline"; #endif
case PHASE_BEFORE_MACRO_EXPANSION: return "Before macro expansion"; case PHASE_BEFORE_MACRO_EXPANSION: return "Before macro expansion";
+ case PHASE_CALL_CATCH_CLEANUP: return "Call catch cleanup"; + case PHASE_CALL_CATCH_CLEANUP: return "Call catch cleanup";
+ case PHASE_INSERT_BARRIER: return "Insert barrier"; + case PHASE_INSERT_BARRIER: return "Insert barrier";
@ -3253,10 +3213,10 @@ index f0eac0b0b..b01b7630f 100644
case PHASE_FAILURE: return "Failure"; case PHASE_FAILURE: return "Failure";
default: default:
diff --git a/src/hotspot/share/opto/vectornode.cpp b/src/hotspot/share/opto/vectornode.cpp 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 --- a/src/hotspot/share/opto/vectornode.cpp
+++ b/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_LoadF: case Op_LoadD:
case Op_LoadP: case Op_LoadN: case Op_LoadP: case Op_LoadN:
case Op_LoadBarrierSlowReg: case Op_LoadBarrierSlowReg:
@ -3265,26 +3225,24 @@ index 593baf972..b40587ba5 100644
*end = 0; // no vector operands *end = 0; // no vector operands
break; break;
diff --git a/src/hotspot/share/runtime/stackValue.cpp b/src/hotspot/share/runtime/stackValue.cpp 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 --- a/src/hotspot/share/runtime/stackValue.cpp
+++ b/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 @@ -139,11 +139,7 @@ StackValue* StackValue::create_stack_value(const frame* fr, const RegisterMap* r
val = (oop)NULL;
} }
#endif #endif
-#if INCLUDE_ZGC
- // Deoptimization must make sure all oop have passed load barrier -#if INCLUDE_SHENANDOAHGC
- if (UseZGC) { - if (UseShenandoahGC) {
- val = ZBarrier::load_barrier_on_oop_field_preloaded((oop*)value_addr, val); - val = ShenandoahBarrierSet::barrier_set()->load_reference_barrier(val);
- } - }
-#endif -#endif
-
+ assert(oopDesc::is_oop_or_null(val, false), "bad oop found"); + assert(oopDesc::is_oop_or_null(val, false), "bad oop found");
Handle h(Thread::current(), val); // Wrap a handle around the oop Handle h(Thread::current(), val); // Wrap a handle around the oop
return new StackValue(h); return new StackValue(h);
} }
diff --git a/src/hotspot/share/utilities/growableArray.hpp b/src/hotspot/share/utilities/growableArray.hpp 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 --- a/src/hotspot/share/utilities/growableArray.hpp
+++ b/src/hotspot/share/utilities/growableArray.hpp +++ b/src/hotspot/share/utilities/growableArray.hpp
@@ -152,6 +152,12 @@ class GenericGrowableArray : public ResourceObj { @@ -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). // Global GrowableArray methods (one instance in the library per each 'E' type).
--
2.19.1

View File

@ -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

View File

@ -1,8 +1,8 @@
diff --git a/src/hotspot/share/opto/classes.hpp b/src/hotspot/share/opto/classes.hpp 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 --- a/src/hotspot/share/opto/classes.hpp
+++ b/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(NeverBranch)
macro(OnSpinWait) macro(OnSpinWait)
macro(Opaque1) macro(Opaque1)
@ -12,10 +12,10 @@ index da01e48..6938ed2 100644
macro(Opaque3) macro(Opaque3)
macro(Opaque4) macro(Opaque4)
diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp 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 --- a/src/hotspot/share/opto/compile.cpp
+++ b/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--) { for (int i = opaque4_count(); i > 0; i--) {
Node* opaq = opaque4_node(i-1); Node* opaq = opaque4_node(i-1);
assert(opaq->Opcode() == Op_Opaque4, "Opaque4 only"); assert(opaq->Opcode() == Op_Opaque4, "Opaque4 only");
@ -34,10 +34,10 @@ index b6980c4..ac7b848 100644
assert(opaque4_count() == 0, "should be empty"); assert(opaque4_count() == 0, "should be empty");
} }
diff --git a/src/hotspot/share/opto/loopPredicate.cpp b/src/hotspot/share/opto/loopPredicate.cpp 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 --- a/src/hotspot/share/opto/loopPredicate.cpp
+++ b/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* init, Node* limit, jint stride,
Node* rng, bool &overflow, Node* rng, bool &overflow,
Deoptimization::DeoptReason reason) { Deoptimization::DeoptReason reason) {
@ -48,7 +48,7 @@ index ee20972..e255f46 100644
register_new_node(opaque_init, upper_bound_proj); 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); 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 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()); 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); _igvn.replace_input_of(new_proj->in(0), 1, opaque_bol);
assert(opaque_init->outcnt() > 0, "should be used"); 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 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 --- a/src/hotspot/share/opto/loopTransform.cpp
+++ b/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) @@ -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"); 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 ) { @@ -2547,22 +2550,22 @@ int PhaseIdealLoop::do_range_check( IdealLoopTree *loop, Node_List &old_new ) {
// (0-offset)/scale could be outside of loop iterations range. // The underflow and overflow limits: 0 <= scale*I+offset < limit
conditional_rc = true; add_constraint(stride_con, lscale_con, offset, zero, limit, pre_ctrl, &pre_limit, &main_limit);
Node* init = cl->init_trip(); Node* init = cl->init_trip();
- Node* opaque_init = new Opaque1Node(C, init); - Node* opaque_init = new Opaque1Node(C, init);
+ Node* opaque_init = new OpaqueLoopInitNode(C, init); + Node* opaque_init = new OpaqueLoopInitNode(C, init);
register_new_node(opaque_init, predicate_proj); 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); + 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"); + assert(!skeleton_predicate_has_opaque(predicate_proj->in(0)->as_If()), "unexpected");
// template predicate so it can be updated on next unrolling // 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"); assert(skeleton_predicate_has_opaque(predicate_proj->in(0)->as_If()), "unexpected");
- // 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); - 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"); - assert(!skeleton_predicate_has_opaque(predicate_proj->in(0)->as_If()), "unexpected");
- int init_inc = stride_con/cl->unrolled_count(); - int init_inc = stride_con/cl->unrolled_count();
- assert(init_inc != 0, "invalid loop increment"); - assert(init_inc != 0, "invalid loop increment");
- Node* max_value = _igvn.intcon(stride_con - init_inc); - Node* max_value = _igvn.intcon(stride_con - init_inc);
- max_value = new AddINode(init, max_value); - 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); + register_new_node(opaque_stride, predicate_proj);
+ Node* max_value = new SubINode(opaque_stride, cl->stride()); + Node* max_value = new SubINode(opaque_stride, cl->stride());
+ register_new_node(max_value, predicate_proj); + 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); register_new_node(max_value, predicate_proj);
- // predicate on last value of first iteration (in case unrolling has already happened) - // 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");
+ 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 { } else {
if (PrintOpto) { if (PrintOpto) {
tty->print_cr("missed RCE opportunity"); tty->print_cr("missed RCE opportunity");
diff --git a/src/hotspot/share/opto/loopnode.hpp b/src/hotspot/share/opto/loopnode.hpp 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 --- a/src/hotspot/share/opto/loopnode.hpp
+++ b/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 #ifdef ASSERT
void ensure_zero_trip_guard_proj(Node* node, bool is_main_loop); void ensure_zero_trip_guard_proj(Node* node, bool is_main_loop);
#endif #endif
@ -333,10 +333,10 @@ index 6b85529..adbee17 100644
if (res != NULL) { if (res != NULL) {
return n; return n;
diff --git a/src/hotspot/share/opto/macro.cpp b/src/hotspot/share/opto/macro.cpp 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 --- a/src/hotspot/share/opto/macro.cpp
+++ b/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; break;
case Node::Class_OuterStripMinedLoop: case Node::Class_OuterStripMinedLoop:
break; break;
@ -348,7 +348,7 @@ index 9f3cb34..5f5cc75 100644
n->Opcode() == Op_Opaque2 || n->Opcode() == Op_Opaque2 ||
n->Opcode() == Op_Opaque3 || n->Opcode() == Op_Opaque3 ||
BarrierSet::barrier_set()->barrier_set_c2()->is_gc_barrier_node(n), 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); C->remove_macro_node(n);
_igvn._worklist.push(n); _igvn._worklist.push(n);
success = true; success = true;
@ -358,7 +358,7 @@ index 9f3cb34..5f5cc75 100644
success = true; success = true;
#if INCLUDE_RTM_OPT #if INCLUDE_RTM_OPT
diff --git a/src/hotspot/share/opto/node.hpp b/src/hotspot/share/opto/node.hpp 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 --- a/src/hotspot/share/opto/node.hpp
+++ b/src/hotspot/share/opto/node.hpp +++ b/src/hotspot/share/opto/node.hpp
@@ -116,6 +116,7 @@ class MulNode; @@ -116,6 +116,7 @@ class MulNode;
@ -369,7 +369,7 @@ index cf0975e..a36f3bb 100644
class OuterStripMinedLoopNode; class OuterStripMinedLoopNode;
class OuterStripMinedLoopEndNode; class OuterStripMinedLoopEndNode;
class Node; 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 // This enum is used only for C2 ideal and mach nodes with is_<node>() methods
// so that it's values fits into 16 bits. // so that it's values fits into 16 bits.
enum NodeClasses { enum NodeClasses {
@ -384,7 +384,7 @@ index cf0975e..a36f3bb 100644
DEFINE_CLASS_ID(Multi, Node, 0) DEFINE_CLASS_ID(Multi, Node, 0)
DEFINE_CLASS_ID(SafePoint, Multi, 0) DEFINE_CLASS_ID(SafePoint, Multi, 0)
DEFINE_CLASS_ID(Call, SafePoint, 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(Vector, Node, 13)
DEFINE_CLASS_ID(ClearArray, Node, 14) DEFINE_CLASS_ID(ClearArray, Node, 14)
DEFINE_CLASS_ID(Halt, Node, 15) DEFINE_CLASS_ID(Halt, Node, 15)
@ -392,7 +392,7 @@ index cf0975e..a36f3bb 100644
_max_classes = ClassMask_Halt _max_classes = ClassMask_Halt
}; };
@@ -740,12 +742,12 @@ public: @@ -746,12 +748,12 @@ public:
}; };
private: private:
@ -407,7 +407,7 @@ index cf0975e..a36f3bb 100644
_class_id = c; // cast out const _class_id = c; // cast out const
} }
void init_flags(jushort fl) { void init_flags(jushort fl) {
@@ -758,7 +760,7 @@ protected: @@ -764,7 +766,7 @@ protected:
} }
public: public:
@ -416,7 +416,7 @@ index cf0975e..a36f3bb 100644
const jushort flags() const { return _flags; } const jushort flags() const { return _flags; }
@@ -859,6 +861,7 @@ public: @@ -865,6 +867,7 @@ public:
DEFINE_CLASS_QUERY(Mul) DEFINE_CLASS_QUERY(Mul)
DEFINE_CLASS_QUERY(Multi) DEFINE_CLASS_QUERY(Multi)
DEFINE_CLASS_QUERY(MultiBranch) DEFINE_CLASS_QUERY(MultiBranch)
@ -466,10 +466,10 @@ index f97de4a..4c00528 100644
//------------------------------Opaque2Node------------------------------------ //------------------------------Opaque2Node------------------------------------
// A node to prevent unwanted optimizations. Allows constant folding. Stops // 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 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 --- a/src/hotspot/share/runtime/vmStructs.cpp
+++ b/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, _outcnt, node_idx_t) \
c2_nonstatic_field(Node, _outmax, node_idx_t) \ c2_nonstatic_field(Node, _outmax, node_idx_t) \
c2_nonstatic_field(Node, _idx, const node_idx_t) \ c2_nonstatic_field(Node, _idx, const node_idx_t) \

View File

@ -1,5 +1,5 @@
diff --git a/src/hotspot/share/c1/c1_Instruction.cpp b/src/hotspot/share/c1/c1_Instruction.cpp 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 --- a/src/hotspot/share/c1/c1_Instruction.cpp
+++ b/src/hotspot/share/c1/c1_Instruction.cpp +++ b/src/hotspot/share/c1/c1_Instruction.cpp
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
@ -11,7 +11,7 @@ index ee3be899a..62d8b48bc 100644
// Implementation of Instruction // Implementation of Instruction
diff --git a/src/hotspot/share/opto/graphKit.cpp b/src/hotspot/share/opto/graphKit.cpp 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 --- a/src/hotspot/share/opto/graphKit.cpp
+++ b/src/hotspot/share/opto/graphKit.cpp +++ b/src/hotspot/share/opto/graphKit.cpp
@@ -43,6 +43,7 @@ @@ -43,6 +43,7 @@
@ -19,11 +19,11 @@ index 852b763c1..31b8ffa21 100644
#include "runtime/deoptimization.hpp" #include "runtime/deoptimization.hpp"
#include "runtime/sharedRuntime.hpp" #include "runtime/sharedRuntime.hpp"
+#include "utilities/bitMap.inline.hpp" +#include "utilities/bitMap.inline.hpp"
#include "utilities/macros.hpp"
//----------------------------GraphKit----------------------------------------- #if INCLUDE_SHENANDOAHGC
// Main utility constructor. #include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
diff --git a/src/hotspot/share/opto/parse1.cpp b/src/hotspot/share/opto/parse1.cpp 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 --- a/src/hotspot/share/opto/parse1.cpp
+++ b/src/hotspot/share/opto/parse1.cpp +++ b/src/hotspot/share/opto/parse1.cpp
@@ -41,6 +41,7 @@ @@ -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 // 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 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 --- a/src/hotspot/share/utilities/bitMap.hpp
+++ b/src/hotspot/share/utilities/bitMap.hpp +++ b/src/hotspot/share/utilities/bitMap.hpp
@@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@
@ -84,7 +84,7 @@ index c671535c9..e26f34687 100644
// Put the given value at the given offset. The parallel version // Put the given value at the given offset. The parallel version
// will CAS the value into the bitmap and is quite a bit slower. // 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 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 --- a/src/hotspot/share/utilities/bitMap.inline.hpp
+++ b/src/hotspot/share/utilities/bitMap.inline.hpp +++ b/src/hotspot/share/utilities/bitMap.inline.hpp
@@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@

View File

@ -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

View File

@ -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

View File

@ -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 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 --- a/src/hotspot/cpu/aarch64/aarch64.ad
+++ b/src/hotspot/cpu/aarch64/aarch64.ad +++ b/src/hotspot/cpu/aarch64/aarch64.ad
@@ -1131,6 +1131,7 @@ definitions %{ @@ -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)); \ __ INSN(REG, as_Register(BASE)); \
} }
@ -39,7 +29,7 @@ index d64566b81..b6e5d7267 100644
{ {
Address::extend scale; 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) { if (index == -1) {
@ -77,7 +67,7 @@ index d64566b81..b6e5d7267 100644
{ {
Address::extend scale; 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, static void loadStore(MacroAssembler masm, mem_vector_insn insn,
@ -88,7 +78,7 @@ index d64566b81..b6e5d7267 100644
{ {
if (index == -1) { if (index == -1) {
(masm.*insn)(reg, T, Address(base, disp)); (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 static const int hi[Op_RegL + 1] = { // enum name
0, // Op_Node 0, // Op_Node
0, // Op_Set 0, // Op_Set
@ -97,7 +87,7 @@ index d64566b81..b6e5d7267 100644
OptoReg::Bad, // Op_RegI OptoReg::Bad, // Op_RegI
R0_H_num, // Op_RegP R0_H_num, // Op_RegP
OptoReg::Bad, // Op_RegF 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) instruct loadP(iRegPNoSp dst, memory mem)
%{ %{
match(Set dst (LoadP mem)); match(Set dst (LoadP mem));
@ -106,7 +96,7 @@ index d64566b81..b6e5d7267 100644
ins_cost(4 * INSN_COST); ins_cost(4 * INSN_COST);
format %{ "ldr $dst, $mem\t# ptr" %} 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) instruct loadP_volatile(iRegPNoSp dst, /* sync_memory*/indirect mem)
%{ %{
match(Set dst (LoadP mem)); match(Set dst (LoadP mem));
@ -114,7 +104,7 @@ index d64566b81..b6e5d7267 100644
ins_cost(VOLATILE_REF_COST); ins_cost(VOLATILE_REF_COST);
format %{ "ldar $dst, $mem\t# ptr" %} 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) %{ instruct compareAndSwapP(iRegINoSp res, indirect mem, iRegP oldval, iRegP newval, rFlagsReg cr) %{
match(Set res (CompareAndSwapP mem (Binary oldval newval))); match(Set res (CompareAndSwapP mem (Binary oldval newval)));
@ -122,7 +112,7 @@ index d64566b81..b6e5d7267 100644
ins_cost(2 * VOLATILE_REF_COST); ins_cost(2 * VOLATILE_REF_COST);
effect(KILL cr); 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) %{ 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))); match(Set res (CompareAndSwapP mem (Binary oldval newval)));
ins_cost(VOLATILE_REF_COST); 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) %{ 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))); match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
ins_cost(2 * VOLATILE_REF_COST); ins_cost(2 * VOLATILE_REF_COST);
effect(TEMP_DEF res, KILL cr); 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) %{ 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))); match(Set res (CompareAndExchangeP mem (Binary oldval newval)));
ins_cost(VOLATILE_REF_COST); ins_cost(VOLATILE_REF_COST);
effect(TEMP_DEF res, KILL cr); 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) %{ 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))); match(Set res (WeakCompareAndSwapP mem (Binary oldval newval)));
ins_cost(2 * VOLATILE_REF_COST); ins_cost(2 * VOLATILE_REF_COST);
effect(KILL cr); 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) %{ 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); ins_cost(VOLATILE_REF_COST);
effect(KILL cr); effect(KILL cr);
format %{ 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) %{ instruct get_and_setP(indirect mem, iRegP newv, iRegPNoSp prev) %{
@ -174,7 +164,7 @@ index d64566b81..b6e5d7267 100644
match(Set prev (GetAndSetP mem newv)); match(Set prev (GetAndSetP mem newv));
ins_cost(2 * VOLATILE_REF_COST); ins_cost(2 * VOLATILE_REF_COST);
format %{ "atomic_xchg $prev, $newv, [$mem]" %} 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) %{ instruct get_and_setPAcq(indirect mem, iRegP newv, iRegPNoSp prev) %{
@ -183,7 +173,7 @@ index d64566b81..b6e5d7267 100644
match(Set prev (GetAndSetP mem newv)); match(Set prev (GetAndSetP mem newv));
ins_cost(VOLATILE_REF_COST); ins_cost(VOLATILE_REF_COST);
format %{ "atomic_xchg_acq $prev, $newv, [$mem]" %} 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 %{ source %{
@ -528,7 +518,7 @@ index d64566b81..b6e5d7267 100644
ins_pipe(pipe_serial); 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 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 --- a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp
@@ -24,22 +24,23 @@ @@ -24,22 +24,23 @@
@ -884,7 +874,7 @@ index 8e169ace4..787c0c1af 100644
-} -}
+#endif // COMPILER2 +#endif // COMPILER2
diff --git a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp 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 --- a/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
+++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.hpp
@@ -24,6 +24,12 @@ @@ -24,6 +24,12 @@
@ -938,7 +928,7 @@ index 7e8be01cc..cca873825 100644
#endif // CPU_AARCH64_GC_Z_ZBARRIERSETASSEMBLER_AARCH64_HPP #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 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 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp
+++ b/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) { @@ -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) { void MacroAssembler::verify_heapbase(const char* msg) {
#if 0 #if 0
diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp 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 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
+++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp
@@ -440,12 +440,18 @@ private: @@ -440,12 +440,18 @@ private:
@ -1031,7 +1021,7 @@ index af8056be0..44497ea7c 100644
// runtime call except rscratch1 and rscratch2. (They are always // runtime call except rscratch1 and rscratch2. (They are always
// scratch, so we don't have to protect them.) Only save the lower // 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 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 --- a/src/hotspot/cpu/aarch64/register_aarch64.hpp
+++ b/src/hotspot/cpu/aarch64/register_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/register_aarch64.hpp
@@ -230,6 +230,11 @@ public: @@ -230,6 +230,11 @@ public:
@ -1047,22 +1037,22 @@ index 8cda52a0a..5f7662c89 100644
return RegSet(r1); return RegSet(r1);
} }
diff --git a/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp b/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp 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 --- a/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp
+++ b/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(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 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 --- a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
+++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp +++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
@@ -27,16 +27,16 @@ @@ -27,16 +27,16 @@
@ -1520,7 +1510,7 @@ index 381211ecc..d88ecf7b8 100644
+ +
+#endif // COMPILER2 +#endif // COMPILER2
diff --git a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp 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 --- a/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp
+++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp +++ b/src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.hpp
@@ -24,6 +24,14 @@ @@ -24,6 +24,14 @@
@ -1577,7 +1567,7 @@ index 3687754e7..e433882a4 100644
#endif // CPU_X86_GC_Z_ZBARRIERSETASSEMBLER_X86_HPP #endif // CPU_X86_GC_Z_ZBARRIERSETASSEMBLER_X86_HPP
diff --git a/src/hotspot/cpu/x86/x86.ad b/src/hotspot/cpu/x86/x86.ad 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 --- a/src/hotspot/cpu/x86/x86.ad
+++ b/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 @@ -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; 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. // 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"); ) 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 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 --- a/src/hotspot/cpu/x86/x86_64.ad
+++ b/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); @@ -541,6 +541,7 @@ reg_class int_rdi_reg(RDI);
@ -1952,7 +1942,7 @@ index 84bed19aa..8b975311e 100644
format %{ "XCHGQ $newval,[$mem]" %} format %{ "XCHGQ $newval,[$mem]" %}
ins_encode %{ ins_encode %{
__ xchgq($newval$$Register, $mem$$Address); __ 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) instruct compP_rReg_mem(rFlagsRegU cr, rRegP op1, memory op2)
%{ %{
match(Set cr (CmpP op1 (LoadP op2))); match(Set cr (CmpP op1 (LoadP op2)));
@ -1960,7 +1950,7 @@ index 84bed19aa..8b975311e 100644
ins_cost(500); // XXX ins_cost(500); // XXX
format %{ "cmpq $op1, $op2\t# ptr" %} 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. // and raw pointers have no anti-dependencies.
instruct compP_mem_rReg(rFlagsRegU cr, rRegP op1, memory op2) 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))); match(Set cr (CmpP op1 (LoadP op2)));
format %{ "cmpq $op1, $op2\t# raw ptr" %} 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. // any compare to a zero should be eq/neq.
instruct testP_mem(rFlagsReg cr, memory op, immP0 zero) instruct testP_mem(rFlagsReg cr, memory op, immP0 zero)
%{ %{
@ -1980,7 +1970,7 @@ index 84bed19aa..8b975311e 100644
match(Set cr (CmpP (LoadP op) zero)); match(Set cr (CmpP (LoadP op) zero));
ins_cost(500); // XXX 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) 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)); match(Set cr (CmpP (LoadP mem) zero));
format %{ "cmpq R12, $mem\t# ptr (R12_heapbase==0)" %} 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 // 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. // 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 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 --- a/src/hotspot/share/adlc/formssel.cpp
+++ b/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 { @@ -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,"ZCompareAndExchangeP") ||
- !strcmp(_matrule->_rChild->_opType,"LoadBarrierSlowReg") || - !strcmp(_matrule->_rChild->_opType,"LoadBarrierSlowReg") ||
-#endif -#endif
!strcmp(_matrule->_rChild->_opType,"CompareAndExchangeP") || #if INCLUDE_SHENANDOAHGC
!strcmp(_matrule->_rChild->_opType,"CompareAndExchangeN"))) return true; !strcmp(_matrule->_rChild->_opType,"ShenandoahCompareAndExchangeP") ||
else if ( is_ideal_load() == Form::idealP ) return true; !strcmp(_matrule->_rChild->_opType,"ShenandoahCompareAndExchangeN") ||
@@ -3506,9 +3501,6 @@ int MatchNode::needs_ideal_memory_edge(FormDict &globals) const { @@ -3513,9 +3508,6 @@ int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
"StoreCM", "StoreCM",
"GetAndSetB", "GetAndSetS", "GetAndAddI", "GetAndSetI", "GetAndSetP", "GetAndSetB", "GetAndSetS", "GetAndAddI", "GetAndSetI", "GetAndSetP",
"GetAndAddB", "GetAndAddS", "GetAndAddL", "GetAndSetL", "GetAndSetN", "GetAndAddB", "GetAndAddS", "GetAndAddL", "GetAndSetL", "GetAndSetN",
@ -2382,7 +2372,7 @@ index 2845cf6d8..c41ac52c7 100644
}; };
int cnt = sizeof(needs_ideal_memory_list)/sizeof(char*); 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 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 --- a/src/hotspot/share/compiler/compilerDirectives.hpp
+++ b/src/hotspot/share/compiler/compilerDirectives.hpp +++ b/src/hotspot/share/compiler/compilerDirectives.hpp
@@ -66,8 +66,7 @@ NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput)) @@ -66,8 +66,7 @@ NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput))
@ -2396,7 +2386,7 @@ index 8eba28f94..b20cd73d9 100644
#define compilerdirectives_c2_flags(cflags) #define compilerdirectives_c2_flags(cflags)
#endif #endif
diff --git a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp 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 --- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp +++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
@@ -198,7 +198,7 @@ public: @@ -198,7 +198,7 @@ public:
@ -2426,7 +2416,7 @@ index eea74674f..487988bd8 100644
#endif // SHARE_GC_SHARED_C2_BARRIERSETC2_HPP #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 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 --- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp +++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
@@ -22,443 +22,156 @@ @@ -22,443 +22,156 @@
@ -4216,7 +4206,7 @@ index bf0bd43af..a12973464 100644
- return true; - return true;
} }
diff --git a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp 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 --- a/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
+++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp +++ b/src/hotspot/share/gc/z/c2/zBarrierSetC2.hpp
@@ -29,134 +29,38 @@ @@ -29,134 +29,38 @@
@ -4423,7 +4413,7 @@ index bef6a7048..accae1f72 100644
#endif // SHARE_GC_Z_C2_ZBARRIERSETC2_HPP #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 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 --- a/src/hotspot/share/gc/z/zBarrierSetAssembler.hpp
+++ b/src/hotspot/share/gc/z/zBarrierSetAssembler.hpp +++ b/src/hotspot/share/gc/z/zBarrierSetAssembler.hpp
@@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
@ -4445,7 +4435,7 @@ index 52133c073..9d07f9e8c 100644
class ZBarrierSetAssemblerBase : public BarrierSetAssembler { class ZBarrierSetAssemblerBase : public BarrierSetAssembler {
diff --git a/src/hotspot/share/opto/classes.cpp b/src/hotspot/share/opto/classes.cpp 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 --- a/src/hotspot/share/opto/classes.cpp
+++ b/src/hotspot/share/opto/classes.cpp +++ b/src/hotspot/share/opto/classes.cpp
@@ -48,9 +48,6 @@ @@ -48,9 +48,6 @@
@ -4455,14 +4445,14 @@ index e8ac3a61d..eec705013 100644
-#if INCLUDE_ZGC -#if INCLUDE_ZGC
-#include "gc/z/c2/zBarrierSetC2.hpp" -#include "gc/z/c2/zBarrierSetC2.hpp"
-#endif -#endif
#if INCLUDE_SHENANDOAHGC
// ---------------------------------------------------------------------------- #include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
// Build a table of virtual functions to map from Nodes to dense integer #endif
diff --git a/src/hotspot/share/opto/classes.hpp b/src/hotspot/share/opto/classes.hpp 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 --- a/src/hotspot/share/opto/classes.hpp
+++ b/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(LoadN)
macro(LoadRange) macro(LoadRange)
macro(LoadS) macro(LoadS)
@ -4481,7 +4471,7 @@ index cdca7e7c0..da01e4811 100644
macro(Loop) macro(Loop)
macro(LoopLimit) macro(LoopLimit)
diff --git a/src/hotspot/share/opto/compile.cpp b/src/hotspot/share/opto/compile.cpp 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 --- a/src/hotspot/share/opto/compile.cpp
+++ b/src/hotspot/share/opto/compile.cpp +++ b/src/hotspot/share/opto/compile.cpp
@@ -79,9 +79,6 @@ @@ -79,9 +79,6 @@
@ -4491,10 +4481,10 @@ index ef4a6ab13..b6980c4e7 100644
-#if INCLUDE_ZGC -#if INCLUDE_ZGC
-#include "gc/z/c2/zBarrierSetC2.hpp" -#include "gc/z/c2/zBarrierSetC2.hpp"
-#endif -#endif
#if INCLUDE_SHENANDOAHGC
#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
// -------------------- Compile::mach_constant_base_node ----------------------- #endif
@@ -636,16 +633,12 @@ debug_only( int Compile::_debug_idx = 100000; ) @@ -639,16 +636,12 @@ debug_only( int Compile::_debug_idx = 100000; )
Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr_bci, Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr_bci,
bool subsume_loads, bool do_escape_analysis, bool eliminate_boxing, DirectiveSet* directive) bool subsume_loads, bool do_escape_analysis, bool eliminate_boxing, DirectiveSet* directive)
: Phase(Compiler), : Phase(Compiler),
@ -4511,7 +4501,7 @@ index ef4a6ab13..b6980c4e7 100644
_entry_bci(osr_bci), _entry_bci(osr_bci),
_initial_gvn(NULL), _initial_gvn(NULL),
_for_igvn(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), _inner_loops(0),
_scratch_const_size(-1), _scratch_const_size(-1),
_in_scratch_emit_size(false), _in_scratch_emit_size(false),
@ -4520,7 +4510,7 @@ index ef4a6ab13..b6980c4e7 100644
#ifndef PRODUCT #ifndef PRODUCT
_trace_opto_output(directive->TraceOptoOutputOption), _trace_opto_output(directive->TraceOptoOutputOption),
_in_dump_cnt(0), _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 #endif
_congraph(NULL), _congraph(NULL),
_comp_arena(mtCompiler), _comp_arena(mtCompiler),
@ -4536,7 +4526,7 @@ index ef4a6ab13..b6980c4e7 100644
_replay_inline_data(NULL), _replay_inline_data(NULL),
_late_inlines(comp_arena(), 2, 0, NULL), _late_inlines(comp_arena(), 2, 0, NULL),
_string_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, bool return_pc,
DirectiveSet* directive) DirectiveSet* directive)
: Phase(Compiler), : Phase(Compiler),
@ -4546,7 +4536,7 @@ index ef4a6ab13..b6980c4e7 100644
_compile_id(0), _compile_id(0),
_save_argument_registers(save_arg_registers), _save_argument_registers(save_arg_registers),
_method(NULL), _method(NULL),
@@ -991,6 +985,10 @@ Compile::Compile( ciEnv* ci_env, @@ -994,6 +988,10 @@ Compile::Compile( ciEnv* ci_env,
_printer(NULL), _printer(NULL),
#endif #endif
_comp_arena(mtCompiler), _comp_arena(mtCompiler),
@ -4557,21 +4547,21 @@ index ef4a6ab13..b6980c4e7 100644
_node_arena(mtCompiler), _node_arena(mtCompiler),
_old_arena(mtCompiler), _old_arena(mtCompiler),
_Compile_types(mtCompiler), _Compile_types(mtCompiler),
@@ -2398,13 +2396,6 @@ void Compile::Optimize() { @@ -2408,13 +2406,6 @@ void Compile::Optimize() {
igvn.optimize(); bs->verify_gc_barriers(false);
} #endif
- bs->barrier_insertion_phase(C, igvn);
- if (failing()) return;
-
-#ifdef ASSERT -#ifdef ASSERT
- bs->verify_gc_barriers(false); - bs->verify_gc_barriers(false);
-#endif -#endif
- -
- bs->barrier_insertion_phase(C, igvn); {
- if (failing()) return; TracePhase tp("macroExpand", &timers[_t_macroExpand]);
- PhaseMacroExpand mex(igvn);
#ifdef ASSERT @@ -2996,29 +2987,6 @@ void Compile::final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc) {
bs->verify_gc_barriers(false);
#endif
@@ -2969,29 +2960,6 @@ void Compile::final_graph_reshaping_impl( Node *n, Final_Reshape_Counts &frc) {
break; break;
} }
@ -4602,7 +4592,7 @@ index ef4a6ab13..b6980c4e7 100644
Node *addp = n->in(AddPNode::Address); Node *addp = n->in(AddPNode::Address);
assert( !addp->is_AddP() || assert( !addp->is_AddP() ||
diff --git a/src/hotspot/share/opto/compile.hpp b/src/hotspot/share/opto/compile.hpp 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 --- a/src/hotspot/share/opto/compile.hpp
+++ b/src/hotspot/share/opto/compile.hpp +++ b/src/hotspot/share/opto/compile.hpp
@@ -55,7 +55,6 @@ class ConnectionGraph; @@ -55,7 +55,6 @@ class ConnectionGraph;
@ -4613,7 +4603,7 @@ index bfd85d032..a885d9f8d 100644
class Matcher; class Matcher;
class MachConstantNode; class MachConstantNode;
class MachConstantBaseNode; 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; } bool in_scratch_emit_size() const { return _in_scratch_emit_size; }
enum ScratchBufferBlob { enum ScratchBufferBlob {
@ -4625,7 +4615,7 @@ index bfd85d032..a885d9f8d 100644
MAX_locs_size = 128, // number of relocInfo elements MAX_locs_size = 128, // number of relocInfo elements
MAX_const_size = 128, MAX_const_size = 128,
MAX_stubs_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 // Process an OopMap Element while emitting nodes
void Process_OopMap_Node(MachNode *mach, int code_offset); void Process_OopMap_Node(MachNode *mach, int code_offset);
@ -4659,10 +4649,10 @@ index bfd85d032..a885d9f8d 100644
// Compute the size of first NumberOfLoopInstrToAlign instructions // Compute the size of first NumberOfLoopInstrToAlign instructions
// at the head of a loop. // at the head of a loop.
diff --git a/src/hotspot/share/opto/escape.cpp b/src/hotspot/share/opto/escape.cpp 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 --- a/src/hotspot/share/opto/escape.cpp
+++ b/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, add_local_var_and_edge(n, PointsToNode::NoEscape,
n->in(0), delayed_worklist); n->in(0), delayed_worklist);
} }
@ -4676,7 +4666,7 @@ index 235b31c4c..15d483f33 100644
break; break;
} }
case Op_Rethrow: // Exception object escapes 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); add_local_var_and_edge(n, PointsToNode::NoEscape, n->in(0), NULL);
break; break;
} }
@ -4692,7 +4682,7 @@ index 235b31c4c..15d483f33 100644
} }
case Op_Rethrow: // Exception object escapes case Op_Rethrow: // Exception object escapes
diff --git a/src/hotspot/share/opto/lcm.cpp b/src/hotspot/share/opto/lcm.cpp 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 --- a/src/hotspot/share/opto/lcm.cpp
+++ b/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 @@ -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_LoadS:
case Op_LoadKlass: case Op_LoadKlass:
diff --git a/src/hotspot/share/opto/loopnode.cpp b/src/hotspot/share/opto/loopnode.cpp 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 --- a/src/hotspot/share/opto/loopnode.cpp
+++ b/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(); CountedLoopEndNode* cle = inner_out->in(0)->as_CountedLoopEnd();
assert(cle == inner->loopexit_or_null(), "mismatch"); 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; 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_LoadL:
case Op_LoadS: case Op_LoadS:
case Op_LoadP: case Op_LoadP:
@ -4735,7 +4725,7 @@ index 7c3033162..25fab93cf 100644
case Op_LoadRange: case Op_LoadRange:
case Op_LoadD_unaligned: case Op_LoadD_unaligned:
diff --git a/src/hotspot/share/opto/loopopts.cpp b/src/hotspot/share/opto/loopopts.cpp 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 --- a/src/hotspot/share/opto/loopopts.cpp
+++ b/src/hotspot/share/opto/loopopts.cpp +++ b/src/hotspot/share/opto/loopopts.cpp
@@ -41,9 +41,6 @@ @@ -41,9 +41,6 @@
@ -4749,7 +4739,7 @@ index 5793f51f2..6b85529f4 100644
//============================================================================= //=============================================================================
//------------------------------split_thru_phi--------------------------------- //------------------------------split_thru_phi---------------------------------
diff --git a/src/hotspot/share/opto/machnode.hpp b/src/hotspot/share/opto/machnode.hpp 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 --- a/src/hotspot/share/opto/machnode.hpp
+++ b/src/hotspot/share/opto/machnode.hpp +++ b/src/hotspot/share/opto/machnode.hpp
@@ -197,7 +197,7 @@ public: @@ -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 // more leafs. Must be set by MachNode constructor to point to an
// internal array of MachOpers. The MachOper array is sized by // 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 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 --- a/src/hotspot/share/opto/matcher.cpp
+++ b/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 ) { @@ -1752,6 +1752,13 @@ MachNode *Matcher::ReduceInst( State *s, int rule, Node *&mem ) {
@ -4818,7 +4808,7 @@ index 79b366fd5..41d92b3d0 100644
default: default:
if( n->is_Store() ) { if( n->is_Store() ) {
// Do match stores, despite no ideal reg // 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); n->del_req(LoadStoreConditionalNode::ExpectedIn);
break; break;
} }
@ -4853,7 +4843,7 @@ index 79b366fd5..41d92b3d0 100644
case Op_CMoveF: case Op_CMoveF:
case Op_CMoveI: case Op_CMoveI:
diff --git a/src/hotspot/share/opto/memnode.cpp b/src/hotspot/share/opto/memnode.cpp 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 --- a/src/hotspot/share/opto/memnode.cpp
+++ b/src/hotspot/share/opto/memnode.cpp +++ b/src/hotspot/share/opto/memnode.cpp
@@ -49,9 +49,6 @@ @@ -49,9 +49,6 @@
@ -4863,10 +4853,10 @@ index 2de221a1e..4147c6d46 100644
-#if INCLUDE_ZGC -#if INCLUDE_ZGC
-#include "gc/z/c2/zBarrierSetC2.hpp" -#include "gc/z/c2/zBarrierSetC2.hpp"
-#endif -#endif
#if INCLUDE_SHENANDOAHGC
// Portions of code courtesy of Clifford Click #include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
#endif
@@ -2818,7 +2815,7 @@ LoadStoreNode::LoadStoreNode( Node *c, Node *mem, Node *adr, Node *val, const Ty @@ -2826,7 +2823,7 @@ LoadStoreNode::LoadStoreNode( Node *c, Node *mem, Node *adr, Node *val, const Ty
: Node(required), : Node(required),
_type(rt), _type(rt),
_adr_type(at), _adr_type(at),
@ -4876,7 +4866,7 @@ index 2de221a1e..4147c6d46 100644
init_req(MemNode::Control, c ); init_req(MemNode::Control, c );
init_req(MemNode::Memory , mem); init_req(MemNode::Memory , mem);
diff --git a/src/hotspot/share/opto/memnode.hpp b/src/hotspot/share/opto/memnode.hpp 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 --- a/src/hotspot/share/opto/memnode.hpp
+++ b/src/hotspot/share/opto/memnode.hpp +++ b/src/hotspot/share/opto/memnode.hpp
@@ -43,6 +43,8 @@ private: @@ -43,6 +43,8 @@ private:
@ -5002,7 +4992,7 @@ index e2bd6a6d8..3bf3dc420 100644
//------------------------------CompareAndSwapBNode--------------------------- //------------------------------CompareAndSwapBNode---------------------------
diff --git a/src/hotspot/share/opto/node.cpp b/src/hotspot/share/opto/node.cpp 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 --- a/src/hotspot/share/opto/node.cpp
+++ b/src/hotspot/share/opto/node.cpp +++ b/src/hotspot/share/opto/node.cpp
@@ -546,9 +546,6 @@ Node *Node::clone() const { @@ -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 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 --- a/src/hotspot/share/opto/node.hpp
+++ b/src/hotspot/share/opto/node.hpp +++ b/src/hotspot/share/opto/node.hpp
@@ -82,8 +82,6 @@ class JVMState; @@ -82,8 +82,6 @@ class JVMState;
@ -5039,7 +5029,7 @@ index d69974be2..cf0975e37 100644
class LoadStoreNode; class LoadStoreNode;
class LoadStoreConditionalNode; class LoadStoreConditionalNode;
class LockNode; class LockNode;
@@ -641,7 +639,6 @@ public: @@ -644,7 +642,6 @@ public:
DEFINE_CLASS_ID(MemBar, Multi, 3) DEFINE_CLASS_ID(MemBar, Multi, 3)
DEFINE_CLASS_ID(Initialize, MemBar, 0) DEFINE_CLASS_ID(Initialize, MemBar, 0)
DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1) DEFINE_CLASS_ID(MemBarStoreStore, MemBar, 1)
@ -5047,7 +5037,7 @@ index d69974be2..cf0975e37 100644
DEFINE_CLASS_ID(Mach, Node, 1) DEFINE_CLASS_ID(Mach, Node, 1)
DEFINE_CLASS_ID(MachReturn, Mach, 0) 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(Mem, Node, 4)
DEFINE_CLASS_ID(Load, Mem, 0) DEFINE_CLASS_ID(Load, Mem, 0)
DEFINE_CLASS_ID(LoadVector, Load, 0) DEFINE_CLASS_ID(LoadVector, Load, 0)
@ -5055,7 +5045,7 @@ index d69974be2..cf0975e37 100644
DEFINE_CLASS_ID(Store, Mem, 1) DEFINE_CLASS_ID(Store, Mem, 1)
DEFINE_CLASS_ID(StoreVector, Store, 0) DEFINE_CLASS_ID(StoreVector, Store, 0)
DEFINE_CLASS_ID(LoadStore, Mem, 2) DEFINE_CLASS_ID(LoadStore, Mem, 2)
@@ -833,8 +829,6 @@ public: @@ -839,8 +835,6 @@ public:
DEFINE_CLASS_QUERY(Load) DEFINE_CLASS_QUERY(Load)
DEFINE_CLASS_QUERY(LoadStore) DEFINE_CLASS_QUERY(LoadStore)
DEFINE_CLASS_QUERY(LoadStoreConditional) DEFINE_CLASS_QUERY(LoadStoreConditional)
@ -5065,19 +5055,19 @@ index d69974be2..cf0975e37 100644
DEFINE_CLASS_QUERY(Loop) DEFINE_CLASS_QUERY(Loop)
DEFINE_CLASS_QUERY(Mach) DEFINE_CLASS_QUERY(Mach)
diff --git a/src/hotspot/share/opto/output.cpp b/src/hotspot/share/opto/output.cpp 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 --- a/src/hotspot/share/opto/output.cpp
+++ b/src/hotspot/share/opto/output.cpp +++ b/src/hotspot/share/opto/output.cpp
@@ -31,6 +31,8 @@ @@ -32,6 +32,8 @@
#include "compiler/compileBroker.hpp"
#include "compiler/compilerDirectives.hpp" #include "compiler/compilerDirectives.hpp"
#include "compiler/disassembler.hpp"
#include "compiler/oopMap.hpp" #include "compiler/oopMap.hpp"
+#include "gc/shared/barrierSet.hpp" +#include "gc/shared/barrierSet.hpp"
+#include "gc/shared/c2/barrierSetC2.hpp" +#include "gc/shared/c2/barrierSetC2.hpp"
#include "memory/allocation.inline.hpp" #include "memory/allocation.inline.hpp"
#include "opto/ad.hpp" #include "opto/ad.hpp"
#include "opto/callnode.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; 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 // The architecture description provides short branch variants for some long
// branch instructions. Replace eligible long branches with short branches. // 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 // Compute size of each block, method size, and relocation information size
uint nblocks = _cfg->number_of_blocks(); 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; bool has_short_branch_candidate = false;
// Initialize the sizes to 0 // Initialize the sizes to 0
@ -5158,7 +5148,7 @@ index b8f72ffca..4319f9fd1 100644
// Make three passes. The first computes pessimistic blk_starts, // Make three passes. The first computes pessimistic blk_starts,
// relative jmp_offset and reloc_size information. The second performs // 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. // a relocation index.
// The CodeBuffer will expand the locs array if this estimate is too low. // The CodeBuffer will expand the locs array if this estimate is too low.
reloc_size *= 10 / sizeof(relocInfo); reloc_size *= 10 / sizeof(relocInfo);
@ -5169,7 +5159,7 @@ index b8f72ffca..4319f9fd1 100644
} }
//------------------------------FillLocArray----------------------------------- //------------------------------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 // This should never have accepted Bad before
assert(OptoReg::is_valid(regnum), "location must be valid"); assert(OptoReg::is_valid(regnum), "location must be valid");
return (OptoReg::is_reg(regnum)) 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 #endif //_LP64
else if( (t->base() == Type::FloatBot || t->base() == Type::FloatCon) && else if( (t->base() == Type::FloatBot || t->base() == Type::FloatCon) &&
@ -5196,7 +5186,7 @@ index b8f72ffca..4319f9fd1 100644
} else if( t->base() == Type::NarrowOop ) { } else if( t->base() == Type::NarrowOop ) {
array->append(new_loc_value( _regalloc, regnum, Location::narrowoop )); array->append(new_loc_value( _regalloc, regnum, Location::narrowoop ));
} else { } 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. // No register. It must be constant data.
switch (t->base()) { switch (t->base()) {
@ -5281,7 +5271,7 @@ index b8f72ffca..4319f9fd1 100644
// The convention the interpreter uses is that the second local // The convention the interpreter uses is that the second local
// holds the first raw word of the native double representation. // holds the first raw word of the native double representation.
// This is actually reasonable, since locals and stack arrays // 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[1]));
array->append(new ConstantIntValue(acc.words[0])); array->append(new ConstantIntValue(acc.words[0]));
#endif #endif
@ -5304,7 +5294,7 @@ index b8f72ffca..4319f9fd1 100644
// The convention the interpreter uses is that the second local // The convention the interpreter uses is that the second local
// holds the first raw word of the native double representation. // holds the first raw word of the native double representation.
// This is actually reasonable, since locals and stack arrays // 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[1]));
array->append(new ConstantIntValue(acc.words[0])); array->append(new ConstantIntValue(acc.words[0]));
#endif #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. // A simplified version of Process_OopMap_Node, to handle non-safepoints.
class NonSafepointEmitter { class NonSafepointEmitter {
@ -5424,7 +5414,7 @@ index b8f72ffca..4319f9fd1 100644
}; };
void NonSafepointEmitter::emit_non_safepoint() { 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------------------------------------ //------------------------------init_buffer------------------------------------
@ -5442,7 +5432,7 @@ index b8f72ffca..4319f9fd1 100644
// The extra spacing after the code is necessary on some platforms. // The extra spacing after the code is necessary on some platforms.
// Sometimes we need to patch in a jump after the last instruction, // Sometimes we need to patch in a jump after the last instruction,
// if the nmethod has been deoptimized. (See 4932387, 4894843.) // 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 // Compute prolog code size
_method_size = 0; _method_size = 0;
@ -5451,7 +5441,7 @@ index b8f72ffca..4319f9fd1 100644
#if defined(IA64) && !defined(AIX) #if defined(IA64) && !defined(AIX)
if (save_argument_registers()) { if (save_argument_registers()) {
// 4815101: this is a stub with implicit and unknown precision fp args. // 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 // Initialize the space for the BufferBlob used to find and verify
// instruction size in MachNode::emit_size() // instruction size in MachNode::emit_size()
init_scratch_buffer_blob(const_req); 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. // nmethod and CodeBuffer count stubs & constants as part of method's code.
// class HandlerImpl is platform-specific and defined in the *.ad files. // 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 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 code_req = const_req = stub_req = exception_handler_req = deopt_handler_req = 0x10; // force expansion
int total_req = int total_req =
@ -5500,7 +5490,7 @@ index b8f72ffca..4319f9fd1 100644
// Have we run out of code space? // Have we run out of code space?
if ((cb->blob() == NULL) || (!CompileBroker::should_compile_new_jobs())) { 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); Process_OopMap_Node(mach, current_offset);
} // End if safepoint } // End if safepoint
@ -5515,7 +5505,7 @@ index b8f72ffca..4319f9fd1 100644
else if (mach->is_MachBranch()) { else if (mach->is_MachBranch()) {
// This requires the TRUE branch target be in succs[0] // This requires the TRUE branch target be in succs[0]
uint block_num = block->non_connector_successor(0)->_pre_order; 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) && bool delay_slot_is_used = valid_bundle_info(n) &&
node_bundling(n)->use_unconditional_delay(); node_bundling(n)->use_unconditional_delay();
if (!delay_slot_is_used && mach->may_be_short_branch()) { 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; int offset = blk_starts[block_num] - current_offset;
if (block_num >= i) { if (block_num >= i) {
// Current and following block's offset are not // 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 #ifdef ASSERT
@ -5535,7 +5525,7 @@ index b8f72ffca..4319f9fd1 100644
else if (mach->ideal_Opcode() == Op_StoreCM) { else if (mach->ideal_Opcode() == Op_StoreCM) {
uint storeCM_idx = j; uint storeCM_idx = j;
int count = 0; 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 #endif
@ -5546,7 +5536,7 @@ index b8f72ffca..4319f9fd1 100644
#ifndef PRODUCT #ifndef PRODUCT
// Information on the size of the method, without the extraneous code // Information on the size of the method, without the extraneous code
Scheduling::increment_method_size(cb->insts_size()); 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 // Initializer for class Scheduling
Scheduling::Scheduling(Arena *arena, Compile &compile) Scheduling::Scheduling(Arena *arena, Compile &compile)
@ -5580,7 +5570,7 @@ index b8f72ffca..4319f9fd1 100644
#endif #endif
{ {
// Create a MachNopNode // Create a MachNopNode
@@ -1763,8 +1775,8 @@ void Scheduling::step_and_clear() { @@ -1773,8 +1785,8 @@ void Scheduling::step_and_clear() {
_bundle_use.reset(); _bundle_use.reset();
memcpy(_bundle_use_elements, memcpy(_bundle_use_elements,
@ -5591,7 +5581,7 @@ index b8f72ffca..4319f9fd1 100644
} }
// Perform instruction scheduling and bundling over the sequence of // 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 backwards over each basic block, computing the needed alignment
// Walk over all the basic blocks // Walk over all the basic blocks
scheduling.DoScheduling(); scheduling.DoScheduling();
@ -5614,7 +5604,7 @@ index b8f72ffca..4319f9fd1 100644
} }
// Compute the latency of all the instructions. This is fairly simple, // 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 #ifndef PRODUCT
if (_cfg->C->trace_opto_output()) if (_cfg->C->trace_opto_output())
tty->print("# NodeFitsInBundle [%4d]: FALSE; latency %4d > %d\n", tty->print("# NodeFitsInBundle [%4d]: FALSE; latency %4d > %d\n",
@ -5623,7 +5613,7 @@ index b8f72ffca..4319f9fd1 100644
#endif #endif
return (false); 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 // Don't allow safepoints in the branch shadow, that will
// cause a number of difficulties // cause a number of difficulties
if ( avail_pipeline->instructionCount() == 1 && if ( avail_pipeline->instructionCount() == 1 &&
@ -5642,7 +5632,7 @@ index b8f72ffca..4319f9fd1 100644
if (d->is_Mach() && !d->is_MachSafePoint()) { if (d->is_Mach() && !d->is_MachSafePoint()) {
// A node that fits in the delay slot was found, so we need to // 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 // step of the bundles
if (!NodeFitsInBundle(n)) { if (!NodeFitsInBundle(n)) {
#ifndef PRODUCT #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 #ifndef PRODUCT
if (_cfg->C->trace_opto_output()) if (_cfg->C->trace_opto_output())
tty->print("# *** STEP(%d >= %d instructions) ***\n", tty->print("# *** STEP(%d >= %d instructions) ***\n",
@ -5672,7 +5662,7 @@ index b8f72ffca..4319f9fd1 100644
#endif #endif
step(1); 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, ""); assert(!last->is_Mach() || last->as_Mach()->ideal_Opcode() != Op_Con, "");
if( last->is_Catch() || if( last->is_Catch() ||
@ -5681,7 +5671,7 @@ index b8f72ffca..4319f9fd1 100644
// There might be a prior call. Skip it. // There might be a prior call. Skip it.
while (_bb_start < _bb_end && bb->get_node(--_bb_end)->is_MachProj()); while (_bb_start < _bb_end && bb->get_node(--_bb_end)->is_MachProj());
} else if( last->is_MachNullCheck() ) { } else if( last->is_MachNullCheck() ) {
@@ -2463,7 +2491,7 @@ void Scheduling::DoScheduling() { @@ -2473,7 +2501,7 @@ void Scheduling::DoScheduling() {
} }
#endif #endif
#ifdef ASSERT #ifdef ASSERT
@ -5690,7 +5680,7 @@ index b8f72ffca..4319f9fd1 100644
#endif #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() { void Scheduling::garbage_collect_pinch_nodes() {
#ifndef PRODUCT #ifndef PRODUCT
@ -5742,7 +5732,7 @@ index b8f72ffca..4319f9fd1 100644
#endif #endif
} }
@@ -2872,19 +2900,19 @@ void Scheduling::dump_available() const { @@ -2882,19 +2910,19 @@ void Scheduling::dump_available() const {
void Scheduling::print_statistics() { void Scheduling::print_statistics() {
// Print the size added by nops for bundling // Print the size added by nops for bundling
tty->print("Nops added %d bytes to total of %d bytes", tty->print("Nops added %d bytes to total of %d bytes",
@ -5766,7 +5756,7 @@ index b8f72ffca..4319f9fd1 100644
tty->print("\n"); tty->print("\n");
} }
@@ -2898,6 +2926,6 @@ void Scheduling::print_statistics() { @@ -2908,6 +2936,6 @@ void Scheduling::print_statistics() {
if (total_bundles > 0) if (total_bundles > 0)
tty->print("Average ILP (excluding nops) is %.2f\n", tty->print("Average ILP (excluding nops) is %.2f\n",
@ -5775,7 +5765,7 @@ index b8f72ffca..4319f9fd1 100644
} }
#endif #endif
diff --git a/src/hotspot/share/opto/output.hpp b/src/hotspot/share/opto/output.hpp 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 --- a/src/hotspot/share/opto/output.hpp
+++ b/src/hotspot/share/opto/output.hpp +++ b/src/hotspot/share/opto/output.hpp
@@ -49,10 +49,7 @@ class Pipeline_Use; @@ -49,10 +49,7 @@ class Pipeline_Use;
@ -5791,10 +5781,10 @@ index ab3c1a304..ec3cc2981 100644
//------------------------------Scheduling---------------------------------- //------------------------------Scheduling----------------------------------
diff --git a/src/hotspot/share/opto/phaseX.cpp b/src/hotspot/share/opto/phaseX.cpp 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 --- a/src/hotspot/share/opto/phaseX.cpp
+++ b/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(). // of the mirror load depends on the type of 'n'. See LoadNode::Value().
// LoadBarrier?(LoadP(LoadP(AddP(foo:Klass, #java_mirror)))) // LoadBarrier?(LoadP(LoadP(AddP(foo:Klass, #java_mirror))))
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
@ -5811,7 +5801,7 @@ index d1177a56e..f9b883ef6 100644
// Search for load barriers behind the load // Search for load barriers behind the load
for (DUIterator_Fast i3max, i3 = u->fast_outs(i3max); i3 < i3max; i3++) { for (DUIterator_Fast i3max, i3 = u->fast_outs(i3max); i3 < i3max; i3++) {
Node* b = u->fast_out(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 // 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(). // of the mirror load depends on the type of 'n'. See LoadNode::Value().
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); 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++) { for (DUIterator_Fast i3max, i3 = u->fast_outs(i3max); i3 < i3max; i3++) {
Node* b = u->fast_out(i3); Node* b = u->fast_out(i3);
diff --git a/src/hotspot/share/opto/vectornode.cpp b/src/hotspot/share/opto/vectornode.cpp 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 --- a/src/hotspot/share/opto/vectornode.cpp
+++ b/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_LoadI: case Op_LoadL:
case Op_LoadF: case Op_LoadD: case Op_LoadF: case Op_LoadD:
case Op_LoadP: case Op_LoadN: case Op_LoadP: case Op_LoadN:
@ -5840,4 +5830,3 @@ index b40587ba5..e0bf8410a 100644
*start = 0; *start = 0;
*end = 0; // no vector operands *end = 0; // no vector operands
break; break;

View File

@ -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 diff --git a/src/hotspot/share/gc/z/zHeap.cpp b/src/hotspot/share/gc/z/zHeap.cpp
index 62f97d2..e950acf 100644 index 62f97d2..e950acf 100644
--- a/src/hotspot/share/gc/z/zHeap.cpp --- 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 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 --- a/test/hotspot/jtreg/runtime/MemberName/MemberNameLeak.java
+++ b/test/hotspot/jtreg/runtime/MemberName/MemberNameLeak.java +++ b/test/hotspot/jtreg/runtime/MemberName/MemberNameLeak.java
@@ -59,9 +59,18 @@ public class MemberNameLeak { @@ -75,6 +75,7 @@ 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 {
test("-XX:+UseG1GC"); test("-XX:+UseG1GC");
test("-XX:+UseParallelGC"); test("-XX:+UseParallelGC");
test("-XX:+UseSerialGC"); test("-XX:+UseSerialGC");
+ test("-XX:+UseZGC"); + test("-XX:+UseZGC");
if (!Compiler.isGraalEnabled()) { // Graal does not support CMS if (!Compiler.isGraalEnabled()) { // Graal does not support CMS and Shenandoah
test("-XX:+UseConcMarkSweepGC"); test("-XX:+UseConcMarkSweepGC");
} if (GC.Shenandoah.isSupported()) {
--
1.8.3.1

View File

@ -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

View File

@ -114,13 +114,13 @@
# New Version-String scheme-style defines # New Version-String scheme-style defines
%global majorver 11 %global majorver 11
%global securityver 8 %global securityver 9
# buildjdkver is usually same as %%{majorver}, # buildjdkver is usually same as %%{majorver},
# but in time of bootstrap of next jdk, it is majorver-1, # but in time of bootstrap of next jdk, it is majorver-1,
# and this it is better to change it here, on single place # and this it is better to change it here, on single place
%global buildjdkver %{majorver} %global buildjdkver %{majorver}
%global vendor_version_string Boole %global vendor_version_string Bisheng
# Define IcedTea version used for SystemTap tapsets and desktop file # Define IcedTea version used for SystemTap tapsets and desktop file
%global icedteaver 3.15.0 %global icedteaver 3.15.0
@ -130,11 +130,11 @@
%global origin_nice OpenJDK %global origin_nice OpenJDK
%global top_level_dir_name %{origin} %global top_level_dir_name %{origin}
%global minorver 0 %global minorver 0
%global buildver 10 %global buildver 11
%global project jdk-updates %global project jdk-updates
%global repo jdk11u %global repo jdk11u
%global revision jdk-11.0.8-ga %global revision jdk-11.0.9-ga
%global full_revision %{project}-%{repo}-%{revision} %global full_revision %{project}-%{repo}-%{revision}
# priority must be 7 digits in total # priority must be 7 digits in total
# setting to 1, so debug ones can have 0 # setting to 1, so debug ones can have 0
@ -735,7 +735,7 @@ Provides: java-src%{?1} = %{epoch}:%{version}-%{release}
Name: java-%{javaver}-%{origin} Name: java-%{javaver}-%{origin}
Version: %{newjavaver}.%{buildver} Version: %{newjavaver}.%{buildver}
Release: 8 Release: 0
# java-1.5.0-ibm from jpackage.org set Epoch to 1 for unknown reasons # 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 # 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 # 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 Patch11: 8217856-ZGC-Break-out-C2-matching-rules-into-separat.patch
Patch12: 8233073-Make-BitMap-accessors-more-memory-ordering-f.patch Patch12: 8233073-Make-BitMap-accessors-more-memory-ordering-f.patch
Patch13: 8233061-ZGC-Enforce-memory-ordering-in-segmented-bit.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 Patch18: 8209375-ZGC-Use-dynamic-base-address-for-mark-stack-.patch
Patch20: 8209894-ZGC-Cap-number-of-GC-workers-based-on-heap-s.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 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 Patch27: ZGC-aarch64-fix-not-using-load-store-Pre-index.patch
Patch28: address-s-offset-may-exceed-the-limit-of-ldrw-instru.patch Patch28: address-s-offset-may-exceed-the-limit-of-ldrw-instru.patch
Patch29: ZGC-reuse-entries-of-ResolvedMethodTable.patch Patch29: ZGC-reuse-entries-of-ResolvedMethodTable.patch
Patch32: 8240360-NativeLibraryEvent-has-wrong-library-name-on-linux.patch
# 11.0.8 # 11.0.8
Patch33: 8210473-JEP-345-NUMA-Aware-Memory-Allocation-for-G1.patch 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 Patch41: 8229495-SIGILL-in-C2-generated-OSR-compilation.patch
Patch42: 8229496-SIGFPE-division-by-zero-in-C2-OSR-compiled-method.patch Patch42: 8229496-SIGFPE-division-by-zero-in-C2-OSR-compiled-method.patch
Patch43: 8243670-Unexpected-test-result-caused-by-C2-MergeMem.patch Patch43: 8243670-Unexpected-test-result-caused-by-C2-MergeMem.patch
Patch44: fix-IfNode-s-bugs.patch
Patch45: leaf-optimize-in-ParallelScanvageGC.patch Patch45: leaf-optimize-in-ParallelScanvageGC.patch
Patch46: ZGC-correct-free-heap-size-excluding-waste-in-rule_allocation_rate.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 Patch47: 8204947-Port-ShenandoahTaskTerminator-to-mainline-and-make-it-default.patch
@ -1074,8 +1070,6 @@ pushd %{top_level_dir_name}
%patch11 -p1 %patch11 -p1
%patch12 -p1 %patch12 -p1
%patch13 -p1 %patch13 -p1
%patch14 -p1
%patch15 -p1
%patch18 -p1 %patch18 -p1
%patch20 -p1 %patch20 -p1
%patch22 -p1 %patch22 -p1
@ -1084,7 +1078,6 @@ pushd %{top_level_dir_name}
%patch27 -p1 %patch27 -p1
%patch28 -p1 %patch28 -p1
%patch29 -p1 %patch29 -p1
%patch32 -p1
%patch33 -p1 %patch33 -p1
%patch34 -p1 %patch34 -p1
%patch35 -p1 %patch35 -p1
@ -1093,10 +1086,9 @@ pushd %{top_level_dir_name}
%patch38 -p1 %patch38 -p1
%patch39 -p1 %patch39 -p1
%patch40 -p1 %patch40 -p1
%patch41 -p1 # %patch41 -p1
%patch42 -p1 %patch42 -p1
%patch43 -p1 %patch43 -p1
%patch44 -p1
%patch45 -p1 %patch45 -p1
%patch46 -p1 %patch46 -p1
%patch47 -p1 %patch47 -p1
@ -1193,7 +1185,7 @@ bash ../configure \
--with-version-pre="" \ --with-version-pre="" \
--with-version-opt="" \ --with-version-opt="" \
--with-vendor-version-string="%{vendor_version_string}" \ --with-vendor-version-string="%{vendor_version_string}" \
--with-vendor-name="Boole" \ --with-vendor-name="Bisheng" \
--with-vendor-url="https://openeuler.org/" \ --with-vendor-url="https://openeuler.org/" \
--with-vendor-bug-url="https://gitee.com/src-openeuler/openjdk-11/issues/" \ --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/" \ --with-vendor-vm-bug-url="https://gitee.com/src-openeuler/openjdk-11/issues/" \
@ -1604,6 +1596,14 @@ require "copy_jdk_configs.lua"
%changelog %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
* Mon Sep 21 2020 noah <hedongbo@huawei.com> - 1:11.0.8.10-8 * Mon Sep 21 2020 noah <hedongbo@huawei.com> - 1:11.0.8.10-8
- add 8204947-Port-ShenandoahTaskTerminator-to-mainline-and-make-it-default.patch - add 8204947-Port-ShenandoahTaskTerminator-to-mainline-and-make-it-default.patch
- add 8205921-Optimizing-best_of_2-work-stealing-queue-selection.patch - add 8205921-Optimizing-best_of_2-work-stealing-queue-selection.patch