From f1169bfcf1e5c916c12e33539a2ba8624eca1ead Mon Sep 17 00:00:00 2001 From: Vladimir Kozlov Date: Mon, 23 Mar 2026 18:09:23 +0000 Subject: [PATCH] 8378195: guarantee(static_cast(_oops_size) == align_up(code_buffer->total_oop_size(), oopSize)) failed: failed: 12272 != 77808 Co-authored-by: Doug Simon Reviewed-by: dnsimon, iveresov, vlivanov --- src/hotspot/share/code/nmethod.cpp | 9 ++------- src/hotspot/share/code/nmethod.hpp | 3 +-- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/hotspot/share/code/nmethod.cpp b/src/hotspot/share/code/nmethod.cpp index 4c2f9157b99..5a6ed8ab3ed 100644 --- a/src/hotspot/share/code/nmethod.cpp +++ b/src/hotspot/share/code/nmethod.cpp @@ -1306,9 +1306,7 @@ nmethod::nmethod( _deopt_handler_entry_offset = 0; _unwind_handler_offset = 0; - CHECKED_CAST(_oops_size, uint16_t, align_up(code_buffer->total_oop_size(), oopSize)); - uint16_t metadata_size; - CHECKED_CAST(metadata_size, uint16_t, align_up(code_buffer->total_metadata_size(), wordSize)); + int metadata_size = 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", @@ -1446,7 +1444,6 @@ nmethod::nmethod(const nmethod &nm) : CodeBlob(nm._name, nm._kind, nm._size, nm. _deopt_handler_entry_offset = nm._deopt_handler_entry_offset; _unwind_handler_offset = nm._unwind_handler_offset; _num_stack_arg_slots = nm._num_stack_arg_slots; - _oops_size = nm._oops_size; #if INCLUDE_JVMCI _metadata_size = nm._metadata_size; #endif @@ -1749,9 +1746,7 @@ nmethod::nmethod( _unwind_handler_offset = -1; } - CHECKED_CAST(_oops_size, uint16_t, align_up(code_buffer->total_oop_size(), oopSize)); - uint16_t metadata_size; - CHECKED_CAST(metadata_size, uint16_t, align_up(code_buffer->total_metadata_size(), wordSize)); + int metadata_size = 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, diff --git a/src/hotspot/share/code/nmethod.hpp b/src/hotspot/share/code/nmethod.hpp index 2391bc6d830..092da181f12 100644 --- a/src/hotspot/share/code/nmethod.hpp +++ b/src/hotspot/share/code/nmethod.hpp @@ -235,11 +235,10 @@ class nmethod : public CodeBlob { // Number of arguments passed on the stack uint16_t _num_stack_arg_slots; - uint16_t _oops_size; #if INCLUDE_JVMCI // _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; + int _metadata_size; #endif // Offset in immutable data section