Integrated: 8334232: Optimize C1 classes layout
Neethu Prasad
nprasad at openjdk.org
Wed Jul 24 22:24:36 UTC 2024
On Wed, 3 Jul 2024 20:36:07 GMT, Neethu Prasad <nprasad at openjdk.org> wrote:
> **Notes**
>
> Rearrange C1 class fields to optimize footprint.
>
>
> **Verification**
>
> 1. Ran tier2_compiler, hotspot_compiler, tier 1 & tier 2 tests.
> 2. Ran pahole on 64 bit machine post re-ordering and verified that there are no holes / reduction in total bytes.
>
> | Class | Size | Cachelines | Holes | Sum holes | Last Cacheline | Padding |
> | ----- | ----- | ---------- | ----- | ---------- | --------------- | -------- |
> | Instruction | 96 -> 88 | 2 -> 2 | 2 -> 0 | 8 -> 0 | 32 -> 24 | 1 -> 1 |
> | Intrinsic | 136 -> 120 | 3 -> 2 | 1 -> 1 | 4 -> 96 | 8 -> 56 | 4-> 0 |
> | LIR_Address | 48 -> 40 | 1 -> 1 | 1-> 0 | 4 -> 0 | 48 -> 40 | 7 -> 3 |
> | LIR_Op2 | 128 -> 120 | 2 -> 2 | 2 -> 0 | 11 -> 0 | N/A -> 56 | 4 -> 7 |
> | LIR_Op4 | 136 -> 128 | 3 -> 2 | 1-> 0 | 7 -> 0 | 8-> 0 | 4 -> 3 |
> | LIR_OpAllocArray | 120 -> 112 | 2 -> 2 | 1-> 0 | 7 -> 0 | 56 -> 48 | 7 -> 6 |
> |LIR_OpTypeCheck | 144 -> 136 | 3 -> 3 | 1-> 0 | 7 -> 0 | 16 -> 8 | 3 -> 2 |
>
>
>
> /* class CompilationResourceObj <ancestor>; */ /* 0 0 */
>
> /* XXX last struct has 1 byte of padding */
>
> int ()(void) * * _vptr.Instruction; /* 0 8 */
> int _id; /* 8 4 */
> int _use_count; /* 12 4 */
> int _pin_state; /* 16 4 */
> unsigned int _flags; /* 20 4 */
> class ValueType * _type; /* 24 8 */
> class Instruction * _next; /* 32 8 */
> class Instruction * _subst; /* 40 8 */
> class LIR_Opr _operand; /* 48 8 */
> class ValueStack * _state_before; /* 56 8 */
> /* --- cacheline 1 boundary (64 bytes) --- */
> class ValueStack * _exception_state; /* 64 8 */
> class XHandlers * _exception_handlers; /* 72 8 */
> protected:
>
> class BlockBegin * _block; /* 80 8 */
> public:
>
>
> /* Bitfield combined with previous fields */
>
> static const int no_bci; /* 0 0 */
> protected:
>
> public:
>
>
> /* size: 88, cachelines: 2, members: 14, static members: 1 */
> /* paddings: 1, sum paddings: 1 */
> /* last cacheline: 24 bytes */
> };
>
>
>
>
> class LIR_Address : public LIR_OprPtr {
> public:
>
> /* class LIR_OprPtr <ancestor>; */ /* 0 8 */
> class LIR_Opr _base; ...
This pull request has now been integrated.
Changeset: 24f67d02
Author: Neethu Prasad <nprasad at openjdk.org>
Committer: Vladimir Kozlov <kvn at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/24f67d0254c08a668d24f28ec0fa768ef10feed5
Stats: 47 lines in 3 files changed: 21 ins; 21 del; 5 mod
8334232: Optimize C1 classes layout
Reviewed-by: phh, kvn
-------------
PR: https://git.openjdk.org/jdk/pull/20017
More information about the hotspot-compiler-dev
mailing list