1 Star 0 Fork 81

justinwm/openjdk-1.8.0

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
PS-GC-adding-acquire_size-method-for-PSParallelCompa.patch 2.26 KB
一键复制 编辑 原始数据 按行查看 历史
From 124ad73c00d643445653ad9a0d424b50316df1c6 Mon Sep 17 00:00:00 2001
Date: Fri, 22 Jan 2021 15:25:45 +0800
Subject: PS GC: adding acquire_size method for
Summary: GC: adding acquire_size method for PSParallelCompact::mark_obj.
LLT: NA
Bug url:
---
.../gc_implementation/parallelScavenge/psParallelCompact.hpp | 2 +-
hotspot/src/share/vm/oops/oop.hpp | 2 +-
hotspot/src/share/vm/oops/oop.inline.hpp | 4 ++++
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp
index 881f380ce..f971383a0 100644
--- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp
@@ -1326,7 +1326,7 @@ class PSParallelCompact : AllStatic {
};
inline bool PSParallelCompact::mark_obj(oop obj) {
- const int obj_size = obj->size();
+ const int obj_size = obj->acquire_size();
if (mark_bitmap()->mark_obj(obj, obj_size)) {
_summary_data.add_obj(obj, obj_size);
return true;
diff --git a/hotspot/src/share/vm/oops/oop.hpp b/hotspot/src/share/vm/oops/oop.hpp
index 97d44c046..a5ff97260 100644
--- a/hotspot/src/share/vm/oops/oop.hpp
+++ b/hotspot/src/share/vm/oops/oop.hpp
@@ -105,7 +105,7 @@ class oopDesc {
// Returns the actual oop size of the object
int size();
-
+ int acquire_size();
// Sometimes (for complicated concurrency-related reasons), it is useful
// to be able to figure out the size of an object knowing its klass.
int size_given_klass(Klass* klass);
diff --git a/hotspot/src/share/vm/oops/oop.inline.hpp b/hotspot/src/share/vm/oops/oop.inline.hpp
index 2ba94158f..7e03033b0 100644
--- a/hotspot/src/share/vm/oops/oop.inline.hpp
+++ b/hotspot/src/share/vm/oops/oop.inline.hpp
@@ -551,6 +551,10 @@ inline int oopDesc::size() {
return size_given_klass(klass());
}
+inline int oopDesc::acquire_size() {
+ return size_given_klass(klass_or_null_acquire());
+}
+
inline void update_barrier_set(void* p, oop v, bool release = false) {
assert(oopDesc::bs() != NULL, "Uninitialized bs in oop!");
oopDesc::bs()->write_ref_field(p, v, release);
--
2.19.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/justinwm/openjdk-1.8.0.git
git@gitee.com:justinwm/openjdk-1.8.0.git
justinwm
openjdk-1.8.0
openjdk-1.8.0
master

搜索帮助