Match & link CTeamAiMgr - #519
Conversation
Report for GM8E01_48 (ecb33dd - 71f82a1)No changesReport for GM8E01_00 (ecb33dd - 71f82a1)📈 Linked code: 46.01% (+0.37%, +14712 bytes) No changesReport for GM8P01_00 (ecb33dd - 71f82a1)📈 Matched code: 69.22% (+0.24%, +9380 bytes) ✅ 26 new matches
Report for GM8J01_00 (ecb33dd - 71f82a1)No changesReport for GM8E01_02 (ecb33dd - 71f82a1)No changesReport for GM8E01_01 (ecb33dd - 71f82a1)📈 Linked code: 42.09% (+0.37%, +14712 bytes) No changes |
| x0_allocator.allocate(newData, newCapacity); | ||
| long atIdx = at - begin(); | ||
| #if VERSION >= VERSION_GM8P_00 && VERSION != VERSION_GM8E_02 | ||
| T* const newItems = newData; |
There was a problem hiding this comment.
bot:
This was an under-explained MWCC register-allocation workaround. I tested roughly 60 alternatives, including direct indexing, pointer/iterator destinations, normal copy helpers, declaration/loop order, and returning the allocation from a helper. None preserved both PAL insertions and both affected USA02 bodies. The const alias gives PAL's TUniqueId/CTeamAiRole insertions 100%/100%; removing it gives 98.89706%/98.56115%. Applying const to USA02 worsens the original float-vector comparison from 93.171425% to 92.171425%, and FishCloud's modifier vector from 95.40659% to 94.63736%.
I retained the explicit qualifier with a short explanation rather than hiding it in a helper. A cleaner natural expression remains unresolved. In 3cc022a I also removed the unsupported USA02 destructor exception: plain >= preserves its generated object exactly. All six configured builds and complete DOL/REL hashes pass; PAL and USA02 regression reports are empty. Audit evidence.
There was a problem hiding this comment.
Follow-up in 71f82a1: the destructor guard is now removed entirely. The initial implicit test kept TypesMatch before Think, which moved PAL's destructor/vtable into TypesMatch.cpp. Moving the cast declaration after Think lets MWCC generate both in CTeamAiMgr with exact PAL code/data/relocations and no version condition. All six full builds/hashes pass; all 4,138 generated objects retain allocated bytes and relocations, with zero function regressions. The vector qualifier remains a separate unresolved item. Updated evidence.
No description provided.