1 Star 0 Fork 85

Ryan Peng/openjdk-1.8.0

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
8166583-Add-oopDesc-klass_or_null_acquire.patch 1.71 KB
一键复制 编辑 原始数据 按行查看 历史
wuyan 提交于 2020-11-06 17:43 +08:00 . add release/acquire barriers patches
# HG changeset patch
# User kbarrett
# Date 1474669392 14400
# Fri Sep 23 18:23:12 2016 -0400
# Node ID 3296281c85d3d7aa95a2aa95aa4801bf1a343426
# Parent 7f7c1e1fbc8a70f9730339872ddf56fee812304c
8166583: Add oopDesc::klass_or_null_acquire()
Summary: Added new function.
Reviewed-by: dholmes, tschatzl
diff --git a/src/share/vm/oops/oop.hpp b/src/share/vm/oops/oop.hpp
--- a/hotspot/src/share/vm/oops/oop.hpp
+++ b/hotspot/src/share/vm/oops/oop.hpp
@@ -83,6 +83,7 @@
Klass* klass() const;
Klass* klass_or_null() const volatile;
+ Klass* klass_or_null_acquire() const volatile;
Klass** klass_addr();
narrowKlass* compressed_klass_addr();
diff --git a/src/share/vm/oops/oop.inline.hpp b/src/share/vm/oops/oop.inline.hpp
--- a/hotspot/src/share/vm/oops/oop.inline.hpp
+++ b/hotspot/src/share/vm/oops/oop.inline.hpp
@@ -78,7 +78,6 @@
}
inline Klass* oopDesc::klass_or_null() const volatile {
- // can be NULL in CMS
if (UseCompressedClassPointers) {
return Klass::decode_klass(_metadata._compressed_klass);
} else {
@@ -86,6 +85,17 @@
}
}
+inline Klass* oopDesc::klass_or_null_acquire() const volatile {
+ if (UseCompressedClassPointers) {
+ // Workaround for non-const load_acquire parameter.
+ const volatile narrowKlass* addr = &_metadata._compressed_klass;
+ volatile narrowKlass* xaddr = const_cast<volatile narrowKlass*>(addr);
+ return Klass::decode_klass(OrderAccess::load_acquire(xaddr));
+ } else {
+ return (Klass*)OrderAccess::load_ptr_acquire(&_metadata._klass);
+ }
+}
+
inline int oopDesc::klass_gap_offset_in_bytes() {
assert(UseCompressedClassPointers, "only applicable to compressed klass pointers");
return oopDesc::klass_offset_in_bytes() + sizeof(narrowKlass);
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/pengryan/openjdk-1.8.0.git
git@gitee.com:pengryan/openjdk-1.8.0.git
pengryan
openjdk-1.8.0
openjdk-1.8.0
master

搜索帮助