Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/hotspot/share/cds/heapShared.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -823,7 +823,7 @@ void HeapShared::copy_java_mirror(oop orig_mirror, oop scratch_m) {
if (ik->is_inline_klass() && ik->is_initialized()) {
// Only concrete value classes need the null_reset field
InlineKlass* ilk = InlineKlass::cast(k);
if (ilk->has_nullable_atomic_layout()) {
if (ilk->supports_nullable_layouts()) {
scratch_m->obj_field_put(ilk->null_reset_value_offset(), ilk->null_reset_value());
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/hotspot/share/ci/ciInlineKlass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,12 +95,12 @@ InlineKlass* ciInlineKlass::get_InlineKlass() const {
GUARDED_VM_ENTRY(return to_InlineKlass();)
}

bool ciInlineKlass::has_non_atomic_layout() const {
GUARDED_VM_ENTRY(return get_InlineKlass()->has_non_atomic_layout();)
bool ciInlineKlass::has_null_free_non_atomic_layout() const {
GUARDED_VM_ENTRY(return get_InlineKlass()->has_null_free_non_atomic_layout();)
}

bool ciInlineKlass::has_atomic_layout() const {
GUARDED_VM_ENTRY(return get_InlineKlass()->has_atomic_layout();)
bool ciInlineKlass::has_null_free_atomic_layout() const {
GUARDED_VM_ENTRY(return get_InlineKlass()->has_null_free_atomic_layout();)
}

bool ciInlineKlass::has_nullable_atomic_layout() const {
Expand All @@ -115,9 +115,9 @@ int ciInlineKlass::null_marker_offset_in_payload() const {
BasicType ciInlineKlass::atomic_size_to_basic_type(bool null_free) const {
VM_ENTRY_MARK
InlineKlass* vk = get_InlineKlass();
assert(!null_free || vk->has_atomic_layout(), "No null-free atomic layout available");
assert(!null_free || vk->has_null_free_atomic_layout(), "No null-free atomic layout available");
assert( null_free || vk->has_nullable_atomic_layout(), "No nullable atomic layout available");
int size = null_free ? vk->atomic_size_in_bytes() : vk->nullable_atomic_size_in_bytes();
int size = null_free ? vk->null_free_atomic_size_in_bytes() : vk->nullable_atomic_size_in_bytes();
BasicType bt = T_ILLEGAL;
if (size == sizeof(jlong)) {
bt = T_LONG;
Expand Down
4 changes: 2 additions & 2 deletions src/hotspot/share/ci/ciInlineKlass.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ class ciInlineKlass : public ciInstanceKlass {
address unpack_handler() const;
InlineKlass* get_InlineKlass() const;
int nullable_size_in_bytes() const;
bool has_non_atomic_layout() const;
bool has_atomic_layout() const;
bool has_null_free_non_atomic_layout() const;
bool has_null_free_atomic_layout() const;
bool has_nullable_atomic_layout() const;
int null_marker_offset_in_payload() const;
BasicType atomic_size_to_basic_type(bool null_free) const;
Expand Down
11 changes: 6 additions & 5 deletions src/hotspot/share/classfile/classFileParser.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -5514,10 +5514,11 @@ void ClassFileParser::fill_instance_klass(InstanceKlass* ik,
vk->set_payload_alignment(_layout_info->_payload_alignment);
vk->set_payload_offset(_layout_info->_payload_offset);
vk->set_payload_size_in_bytes(_layout_info->_payload_size_in_bytes);
vk->set_non_atomic_size_in_bytes(_layout_info->_non_atomic_size_in_bytes);
vk->set_non_atomic_alignment(_layout_info->_non_atomic_alignment);
vk->set_atomic_size_in_bytes(_layout_info->_atomic_layout_size_in_bytes);
vk->set_nullable_size_in_bytes(_layout_info->_nullable_layout_size_in_bytes);
vk->set_null_free_non_atomic_size_in_bytes(_layout_info->_null_free_non_atomic_size_in_bytes);
vk->set_null_free_non_atomic_alignment(_layout_info->_null_free_non_atomic_alignment);
vk->set_null_free_atomic_size_in_bytes(_layout_info->_null_free_atomic_layout_size_in_bytes);
vk->set_nullable_atomic_size_in_bytes(_layout_info->_nullable_atomic_layout_size_in_bytes);
vk->set_nullable_non_atomic_size_in_bytes(_layout_info->_nullable_non_atomic_layout_size_in_bytes);
vk->set_null_marker_offset(_layout_info->_null_marker_offset);
vk->set_null_reset_value_offset(_layout_info->_null_reset_value_offset);
if (_layout_info->_is_empty_inline_klass) vk->set_is_empty_inline_type();
Expand Down
16 changes: 9 additions & 7 deletions src/hotspot/share/classfile/classFileParser.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -80,10 +80,11 @@ class FieldLayoutInfo : public ResourceObj {
int _payload_alignment;
int _payload_offset;
int _payload_size_in_bytes;
int _non_atomic_size_in_bytes;
int _non_atomic_alignment;
int _atomic_layout_size_in_bytes;
int _nullable_layout_size_in_bytes;
int _null_free_non_atomic_size_in_bytes;
int _null_free_non_atomic_alignment;
int _null_free_atomic_layout_size_in_bytes;
int _nullable_atomic_layout_size_in_bytes;
int _nullable_non_atomic_layout_size_in_bytes;
int _null_marker_offset;
int _null_reset_value_offset;
int _acmp_maps_offset;
Expand All @@ -95,8 +96,9 @@ class FieldLayoutInfo : public ResourceObj {
FieldLayoutInfo() : oop_map_blocks(nullptr), _nonoop_acmp_map(nullptr), _oop_acmp_map(nullptr),
_instance_size(-1), _nonstatic_field_size(-1), _static_field_size(-1),
_payload_alignment(-1), _payload_offset(-1), _payload_size_in_bytes(-1),
_non_atomic_size_in_bytes(-1), _non_atomic_alignment(-1),
_atomic_layout_size_in_bytes(-1), _nullable_layout_size_in_bytes(-1),
_null_free_non_atomic_size_in_bytes(-1), _null_free_non_atomic_alignment(-1),
_null_free_atomic_layout_size_in_bytes(-1), _nullable_atomic_layout_size_in_bytes(-1),
_nullable_non_atomic_layout_size_in_bytes(-1),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need nullable_non_atomic_alignment, similar to non_atomic_alignment. Besides, it may be better to rename the null_free fields, too.

_null_marker_offset(-1), _null_reset_value_offset(-1), _acmp_maps_offset(-1),
_has_nonstatic_fields(false), _is_naturally_atomic(false), _must_be_atomic(false),
_has_inline_fields(false), _is_empty_inline_klass(false) { }
Expand Down
Loading