The implementation for JEP-412 introduces 4 functions in sharedRuntime:
static void move32_64(MacroAssembler* masm, VMRegPair src, VMRegPair dst);
static void long_move(MacroAssembler* masm, VMRegPair src, VMRegPair dst);
static void float_move(MacroAssembler* masm, VMRegPair src, VMRegPair dst);
static void double_move(MacroAssembler* masm, VMRegPair src, VMRegPair dst);
Having these functions declaration in sharedRuntime makes sense as a way to reuse code; note that these are then implemented in platform specific ways (see sharedRuntime_aarch64.cpp).
Unfortunately, in certain architectures (s390, ppc) the implementation for these routines has an incompatible signature, which means the build for these architecture fails.
Since these routine are only used by universalUpcallHandler (which is also platform specific), a better approach would be to move these routines under the (platform-specific) MacroAssembler class. This way these functions will not be forced on all architectures.
A preview of these changes are in the following branch:
https://github.com/openjdk/jdk/compare/master...mcimadamore:JEP-412-build-platforms?expand=1