On Sun, 11 Oct 2020 04:04:56 GMT, Ioi Lam <ik...@openjdk.org> wrote:

> **Problem:** when iterating over the cloned vtables, the original code 
> assumes that they are laid out consecutively in
>   memory. However, since 
> [JDK-8224509](https://bugs.openjdk.java.net/browse/JDK-8224509), the memory 
> allocated for each
>   of the the cloned vtables is now 8-byte aligned. This introduces gaps 
> between the cloned vtables, and causes the assert
>   to fail.
> 
> **Fix:** the fix is to no longer assume the consecutive memory layout. 
> Instead, use the CppVtables::_index array to
>   access each individual cloned vtable.
> 
> **Note:** I also cleaned up the code significantly. I feel the original code 
> is pretty hard to understand, so if I just
>   do the bare minimum to fix the bug, it will be pretty hard to review.
> 
> I would suggest that the reviewers look at just the new version of the code 
> and see if it's working as described
> (instead of looking at the diff to understand what the bug was and how it has 
> been fixed).
> This version still uses the x-macro CPP_VTABLE_TYPES_DO to enumerate over the 
> classes whose vtables need to be cloned.
> I plan to change that into templates in a future RFE.

This looks reasonable to me, but after testing it on x86_32, I wonder if
https://bugs.openjdk.java.net/browse/JDK-8254606 is the problem with this 
patch, or a different issue.

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

PR: https://git.openjdk.java.net/jdk/pull/591

Reply via email to