On Tue, 21 Apr 2026 16:45:55 GMT, Matias Saavedra Silva <[email protected]> wrote:
> Currently, scalarized calling conventions used by the compilers are > recalculated each runtime even though adapters can be stored in the AOT > cache. This change archives `_sig_cc` and `_sig_cc_ro` to avoid recomputing > them even when the adapter can be restored from the AOT archive. Verified > with tier 1-5 tests. > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai). Since you are archiving SigEntry, I think it's a good time to reduce its size and also make its contents deterministic. It currently looks like this: (gdb) ptype/o SigEntry /* offset | size */ type = class SigEntry { public: /* 0 | 1 */ BasicType _bt; /* XXX 3-byte hole */ /* 4 | 4 */ int _offset; /* 8 | 8 */ Symbol *_name; /* 16 | 1 */ bool _null_marker; /* 17 | 1 */ bool _vt_oop; /* XXX 6-byte padding */ How about: class SigEntry { public: BasicType _bt; // Basic type of the argument bool _null_marker; // Is it a null marker? For printing bool _vt_oop; // Is it a possibly null buffer bool _unused; // Set to 0 for deterministic CDS contents int _offset; // Offset of the field in its value class holder for scalarized arguments (-1 otherwise). Used for packing and unpacking. Symbol* _name; // Symbol for printing SigEntry() : _bt(T_ILLEGAL), _null_marker(false), _vt_oop(false), _unused(false), _offset(-1), _name(nullptr){} ... ------------- PR Comment: https://git.openjdk.org/valhalla/pull/2348#issuecomment-4293174848
