[foreign-jextract] Integrated: 8249536: jextract throw IllegalStateException for bitfields in nested anonymous structs

Jorn Vernee jvernee at openjdk.java.net
Tue Jul 21 12:40:08 UTC 2020


On Wed, 15 Jul 2020 16:22:09 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:

> Hi,
> 
> This patch fixes an issue with grouping of bitfields into a container for structs that contain anonymous nested structs
> that have bitfields in them. Such as
> struct Foo {
>     struct {
>         int a : 7;
>         int b : 25;
>     };
> };
> 
> The current code iterates over the member layouts of a struct, and when it finds a bitfield storage unit, it tries to
> find matching bitfield Declarations and groups them into a synthetic nested BITFIELDS declaration.
> But, the memory layout members also contain bitfields that are found in anonymous nested structs, since they are
> flattened into the parent layout. However, for the jextract Declaration tree this is not the case, so the current code
> can not find a matching declaration for these bitfield layouts. e.g. in the example `Foo` will have a bitfield storage
> unit which contains `a` and `b`, but the Declaration tree has the declarations for `a` and `b` nested inside the
> anonymous struct (layouts and declaration tree are different in this regard).  The fix is to ignore bitfields that come
> from nested anonymous structs. They will be handled when processing the nested anonymous struct instead.  Thanks, Jorn

This pull request has now been integrated.

Changeset: a7550925
Author:    Jorn Vernee <jvernee at openjdk.org>
URL:       https://git.openjdk.java.net/panama-foreign/commit/a7550925
Stats:     129 lines in 4 files changed: 1 ins; 124 del; 4 mod

8249536: jextract throw IllegalStateException for bitfields in nested anonymous structs

Reviewed-by: sundar

-------------

PR: https://git.openjdk.java.net/panama-foreign/pull/246


More information about the panama-dev mailing list