代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/openjdk-1.8.0 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From b0eb81f7e030ceaa908f9dc492e70562a4f40a7c Mon Sep 17 00:00:00 2001
Date: Fri, 22 Jan 2021 15:18:14 +0800
Subject: Reduce the probability of the crash related to
ciObjectFactory::create_new_metadata
Summary: <interpreter>: add load acquire barriers when profiling klass
LLT:
Bug url:
---
hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp | 10 ++++++++++
hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp | 1 +
hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp | 2 +-
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
index 70ab1bcb8..f4ce39661 100644
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
@@ -3177,6 +3177,16 @@ void MacroAssembler::load_klass(Register dst, Register src) {
}
}
+void MacroAssembler::load_klass_acquire(Register dst, Register src) {
+ lea(dst, Address(src, oopDesc::klass_offset_in_bytes()));
+ if (UseCompressedClassPointers) {
+ ldarw(dst, dst);
+ decode_klass_not_null(dst);
+ } else {
+ ldar(dst, dst);
+ }
+}
+
void MacroAssembler::cmp_klass(Register oop, Register trial_klass, Register tmp) {
if (UseCompressedClassPointers) {
ldrw(tmp, Address(oop, oopDesc::klass_offset_in_bytes()));
diff --git a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
index 0b083c834..02216f1b1 100644
--- a/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
+++ b/hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.hpp
@@ -788,6 +788,7 @@ public:
// oop manipulations
void load_klass(Register dst, Register src);
+ void load_klass_acquire(Register dst, Register src);
void store_klass(Register dst, Register src);
void cmp_klass(Register oop, Register trial_klass, Register tmp);
diff --git a/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp b/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp
index a0446cd4d..65e56661b 100644
--- a/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp
+++ b/hotspot/src/cpu/aarch64/vm/templateTable_aarch64.cpp
@@ -3250,7 +3250,7 @@ void TemplateTable::invokevirtual_helper(Register index,
// get receiver klass
__ null_check(recv, oopDesc::klass_offset_in_bytes());
- __ load_klass(r0, recv);
+ __ load_klass_acquire(r0, recv);
// profile this call
__ profile_virtual_call(r0, rlocals, r3);
--
2.19.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。