8355896: Lossy narrowing cast of JVMCINMethodData::size

Reviewed-by: kvn, dnsimon
This commit is contained in:
Boris Ulasevich 2025-05-06 01:26:15 +00:00
parent 606f2012b0
commit aea2837143
2 changed files with 12 additions and 8 deletions

View File

@ -1323,8 +1323,9 @@ nmethod::nmethod(
_unwind_handler_offset = 0;
CHECKED_CAST(_oops_size, uint16_t, align_up(code_buffer->total_oop_size(), oopSize));
int metadata_size = align_up(code_buffer->total_metadata_size(), wordSize);
JVMCI_ONLY( _jvmci_data_size = 0; )
uint16_t metadata_size;
CHECKED_CAST(metadata_size, uint16_t, align_up(code_buffer->total_metadata_size(), wordSize));
JVMCI_ONLY( _metadata_size = metadata_size; )
assert(_mutable_data_size == _relocation_size + metadata_size,
"wrong mutable data size: %d != %d + %d",
_mutable_data_size, _relocation_size, metadata_size);
@ -1497,9 +1498,10 @@ nmethod::nmethod(
}
CHECKED_CAST(_oops_size, uint16_t, align_up(code_buffer->total_oop_size(), oopSize));
uint16_t metadata_size = (uint16_t)align_up(code_buffer->total_metadata_size(), wordSize);
JVMCI_ONLY(CHECKED_CAST(_jvmci_data_size, uint16_t, align_up(compiler->is_jvmci() ? jvmci_data->size() : 0, oopSize)));
int jvmci_data_size = 0 JVMCI_ONLY(+ _jvmci_data_size);
uint16_t metadata_size;
CHECKED_CAST(metadata_size, uint16_t, align_up(code_buffer->total_metadata_size(), wordSize));
JVMCI_ONLY( _metadata_size = metadata_size; )
int jvmci_data_size = 0 JVMCI_ONLY( + align_up(compiler->is_jvmci() ? jvmci_data->size() : 0, oopSize));
assert(_mutable_data_size == _relocation_size + metadata_size + jvmci_data_size,
"wrong mutable data size: %d != %d + %d + %d",
_mutable_data_size, _relocation_size, metadata_size, jvmci_data_size);

View File

@ -237,7 +237,9 @@ class nmethod : public CodeBlob {
uint16_t _oops_size;
#if INCLUDE_JVMCI
uint16_t _jvmci_data_size;
// _metadata_size is not specific to JVMCI. In the non-JVMCI case, it can be derived as:
// _metadata_size = mutable_data_size - relocation_size
uint16_t _metadata_size;
#endif
// Offset in immutable data section
@ -537,8 +539,8 @@ public:
// mutable data
Metadata** metadata_begin () const { return (Metadata**) (mutable_data_begin() + _relocation_size); }
#if INCLUDE_JVMCI
Metadata** metadata_end () const { return (Metadata**) (mutable_data_end() - _jvmci_data_size); }
address jvmci_data_begin () const { return mutable_data_end() - _jvmci_data_size; }
Metadata** metadata_end () const { return (Metadata**) (mutable_data_begin() + _relocation_size + _metadata_size); }
address jvmci_data_begin () const { return mutable_data_begin() + _relocation_size + _metadata_size; }
address jvmci_data_end () const { return mutable_data_end(); }
#else
Metadata** metadata_end () const { return (Metadata**) mutable_data_end(); }