-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
P3
-
Affects Version/s: repo-valhalla
-
Component/s: hotspot
I am just throwing out issues right now, it is very possible that a fix can address multiple of these at once.
If I add these to lworld, running compiler tests will crash the VM:
diff --git a/src/hotspot/share/oops/flatArrayKlass.cpp b/src/hotspot/share/oops/flatArrayKlass.cpp
index dc91a0156c2..47c6d19923e 100644
--- a/src/hotspot/share/oops/flatArrayKlass.cpp
+++ b/src/hotspot/share/oops/flatArrayKlass.cpp
@@ -34,6 +34,7 @@
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
+#include "oops/arrayKlass.hpp"
#include "oops/arrayKlass.inline.hpp"
#include "oops/arrayOop.hpp"
#include "oops/flatArrayKlass.hpp"
@@ -102,6 +103,16 @@ FlatArrayKlass* FlatArrayKlass::allocate_klass(Klass* eklass, ArrayProperties pr
InlineKlass* element_klass = InlineKlass::cast(eklass);
assert(element_klass->must_be_atomic() || (!AlwaysAtomicAccesses), "Atomic by-default");
+ if (ArrayKlass::is_null_restricted(props)) {
+ if (ArrayKlass::is_non_atomic(props)) {
+ assert(element_klass->has_non_atomic_layout(), "no layout");
+ } else {
+ assert(element_klass->has_atomic_layout(), "no layout");
+ }
+ } else {
+ assert(!ArrayKlass::is_non_atomic(props), "nullable arrays must be atomic");
+ assert(element_klass->has_nullable_atomic_layout(), "no layout");
+ }
// Eagerly allocate the direct array supertype.
Klass* super_klass = nullptr;
If I add these to lworld, running compiler tests will crash the VM:
diff --git a/src/hotspot/share/oops/flatArrayKlass.cpp b/src/hotspot/share/oops/flatArrayKlass.cpp
index dc91a0156c2..47c6d19923e 100644
--- a/src/hotspot/share/oops/flatArrayKlass.cpp
+++ b/src/hotspot/share/oops/flatArrayKlass.cpp
@@ -34,6 +34,7 @@
#include "memory/oopFactory.hpp"
#include "memory/resourceArea.hpp"
#include "memory/universe.hpp"
+#include "oops/arrayKlass.hpp"
#include "oops/arrayKlass.inline.hpp"
#include "oops/arrayOop.hpp"
#include "oops/flatArrayKlass.hpp"
@@ -102,6 +103,16 @@ FlatArrayKlass* FlatArrayKlass::allocate_klass(Klass* eklass, ArrayProperties pr
InlineKlass* element_klass = InlineKlass::cast(eklass);
assert(element_klass->must_be_atomic() || (!AlwaysAtomicAccesses), "Atomic by-default");
+ if (ArrayKlass::is_null_restricted(props)) {
+ if (ArrayKlass::is_non_atomic(props)) {
+ assert(element_klass->has_non_atomic_layout(), "no layout");
+ } else {
+ assert(element_klass->has_atomic_layout(), "no layout");
+ }
+ } else {
+ assert(!ArrayKlass::is_non_atomic(props), "nullable arrays must be atomic");
+ assert(element_klass->has_nullable_atomic_layout(), "no layout");
+ }
// Eagerly allocate the direct array supertype.
Klass* super_klass = nullptr;
- relates to
-
JDK-8366705 [lworld] Re-work of arrays meta-data
-
- Resolved
-