Integrated: 8334231: Optimize MethodData layout
Xiaolong Peng
xpeng at openjdk.org
Mon Jul 8 10:35:36 UTC 2024
On Thu, 4 Jul 2024 00:08:35 GMT, Xiaolong Peng <xpeng at openjdk.org> wrote:
> Hi all,
> This PR is a part of https://bugs.openjdk.org/browse/JDK-8334227 to optimize Hotspot C++ class layouts, this one is for the layout of MethodData. Here is the original layout from `pahole`:
>
> class MethodData : public Metadata {
> public:
>
> /* class Metadata <ancestor>; */ /* 0 0 */
>
> /* XXX 8 bytes hole, try to pack */
>
> class Method * _method; /* 8 8 */
> int _size; /* 16 4 */
> int _hint_di; /* 20 4 */
> class Mutex _extra_data_lock; /* 24 104 */
> /* --- cacheline 2 boundary (128 bytes) --- */
> class CompilerCounters _compiler_counters; /* 128 80 */
> /* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */
> intx _eflags; /* 208 8 */
> intx _arg_local; /* 216 8 */
> intx _arg_stack; /* 224 8 */
> intx _arg_returned; /* 232 8 */
> int _creation_mileage; /* 240 4 */
> class InvocationCounter _invocation_counter; /* 244 4 */
> class InvocationCounter _backedge_counter; /* 248 4 */
> int _invocation_counter_start; /* 252 4 */
> /* --- cacheline 4 boundary (256 bytes) --- */
> int _backedge_counter_start; /* 256 4 */
> uint _tenure_traps; /* 260 4 */
> int _invoke_mask; /* 264 4 */
> int _backedge_mask; /* 268 4 */
> short int _num_loops; /* 272 2 */
> short int _num_blocks; /* 274 2 */
> enum WouldProfile _would_profile; /* 276 4 */
> int _jvmci_ir_size; /* 280 4 */
>
> /* XXX 4 bytes hole, try to pack */
>
> class FailedSpeculation * _failed_speculations; /* 288 8 */
> int _data_size; /* 296 4 */
> int _parameters_type_data_di; /* 300 4 */
> int _exception_handler_data_di; /* 304 4 */
>
> /* XXX 4 bytes hole, try to pack */
>
> intptr_t _data[1]; /* 312 8 */
>
> /* size: 320, cachelines: 5, members: 27 */
> /* sum members: 304, holes: 3, sum holes: 16 */
> };
>
>
> There are 3 holes ...
This pull request has now been integrated.
Changeset: c5a668bb
Author: Xiaolong Peng <xpeng at openjdk.org>
Committer: Aleksey Shipilev <shade at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/c5a668bb653feb3408a9efa3274ceabf9f01a2c7
Stats: 3 lines in 1 file changed: 1 ins; 2 del; 0 mod
8334231: Optimize MethodData layout
Reviewed-by: dholmes, chagedorn, shade
-------------
PR: https://git.openjdk.org/jdk/pull/20019
More information about the hotspot-dev
mailing list