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 pull request has now been integrated. Changeset: 5145bed0 Author: Ioi Lam <ik...@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/5145bed0 Stats: 172 lines in 11 files changed: 33 ins; 63 del; 76 mod 8254125: Assertion in cppVtables.cpp during builds on 32bit Windows Reviewed-by: shade, ccheung ------------- PR: https://git.openjdk.java.net/jdk/pull/591