RFR: 8345169: Implement JEP 503: Remove the 32-bit x86 Port
Vladimir Ivanov
vlivanov at openjdk.org
Thu Mar 6 00:18:52 UTC 2025
On Wed, 5 Mar 2025 23:19:50 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:
>> This PR implements JEP 503: Remove the 32-bit x86 Port.
>>
>> The JEP is proposed to target 25, we would not integrate until JEP is ready. Reviews are appreciated meanwhile.
>>
>> This is only the removal of obvious 32-bit x86 parts, mostly files with `x86_32` in their name. Those are only built when build system knows we are compiling for x86_32. There is therefore no impact on x86_64. The approach for removing x86_32 files only also makes this PR borderline trivial, and requires no additional testing beyond normal pre-integration checks.
>>
>> The rest of the code is quite heavily intertwined with x86_64 and/or Zero, and would require accurate untangling. It would be much easier to review and test once we purge the free-standing parts of 32-bit x86 port, which is also a bulk of the port. The tangling with 32-bit x86 Zero is also why I did not touch most of the build system paths that handle x86. There is [JDK-8351148](https://bugs.openjdk.org/browse/JDK-8351148) umbrella that tracks further cleanup work. One can peek the final state that can be reached with all the cleanups in my earlier exploratory https://github.com/openjdk/jdk/pull/22567.
>>
>> Additional testing:
>> - [x] Linux x86_32 Server fastdebug, `make bootcycle-images` (now fails configure)
>> - [x] Linux x86_64 Server fastdebug, `make bootcycle-images` (still works)
>> - [x] Linux x86_32 Zero fastdebug, `make bootcycle-images` (still works)
>> - [x] Linux x86_64 Zero fastdebug, `make bootcycle-images` (still works)
>
> There's a wide variety of options to justify the goal of the JEP. A bare minimum would be to just remove x86-32 build support. And on the other side of the spectrum the current patch would be accompanied by all x86-32-specific code and all the features used exclusively by x86-32 port.
>
> During previous round of discussions I expressed my preference as keeping JEP implementation simple and perform all non-trivial cleanups as follow-up RFEs. IMO it enables swift removal (and eliminates the burden to keep x86-32 port alive during ongoing development work) while keeping incremental cleanup activities at comfortable pace.
>
> Proposed patch perfectly justifies my preference.
> So what, @iwanowww, you say is that this PR is indeed implementation of the JEP.
> And all subtasks listed in Umbrella RFE are following up RFEs after we integrated the JEP.
> Do I understand that correctly?
Yes.
> Why not do what Ioi did for AOT class loading JEP? I mean, to have depending PRs which are combined into one implementation push.
It's definitely an option. But, most likely, there'll be some overlooked cases anyway (leading to additional followup RFEs). And the more convoluted the changes are the harder it is to validate their correctness, thus increasing the risks for product stability and delaying the integration. (I'm not sure how much time Aleksey and other contributors want to volunteer to this project.)
Also, in case of AOT JEP the situation was quite the opposite: it started with a huge patch which was split into multiple mostly independent parts to streamline its review. For x86-32 code removal there's no such patch prepared yet and the complete scope of work is not clear yet.
IMO the crucial part is to get the port officially retired. After that the rest can become a good source of starter tasks :-)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/23906#issuecomment-2702376289
More information about the build-dev
mailing list