58 lines
2.3 KiB
Diff
58 lines
2.3 KiB
Diff
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
|
|
|