On Mon, 15 Feb 2021 19:07:40 GMT, Andrew Haley <a...@openjdk.org> wrote:
>> Hello, we have updated PR, now this bailout is used only by the code which >> can handle it (native wrapper generator), for the rest it will cause >> guarantee failed if this bailout is triggered > > This is when passing a float, yes? In the case where we have more float > arguments than n_float_register_parameters_c. > I don't understand why you think it's acceptable to bail in this case. Can > you explain, please? it's for everything that uses less than 8 bytes on a stack( ints ( 4), shorts(2), bytes(1), floats(4)). currently native wrapper generation does not support such cases at all, it needs refactoring before this can be implemented. So when a method has more argument than can be placed in registers, we may have issues. So we just bailing out to interpreter in case when a smaller (<=4 b) type is going to be passed thru the stack. There was attempt to implement handling such cases but currently it requires some hacks (like using some vectors for non-specific task) - https://github.com/openjdk/aarch64-port/pull/3 ------------- PR: https://git.openjdk.java.net/jdk/pull/2200