> JFR Cooperative Sampling relies on a trick to reconstruct a sampled frame at > the method exit poll instruction, because at that location, the frame has > already been popped. The trick takes the frame_size() from the nmethod and > subtracts that value from the SafepointBlob sender frames' sp, thus > recreating the form of the just popped frame. > > With Valhalla's new scalarized and non-scalarized frames and calling > conventions, this trick no longer works because the actual frame size is not > kept in the nmethod; instead, it is part of the frame itself, on the stack > (it's the first word below rbp). The problem for JFR Cooperative Sampling is > that, at frame reconstruction time, the SafepointBlob stub will have > overwritten the sp_inc slot of the popped frame, making frame reconstruction > problematic and next to impossible. > > [JDK-8368099](https://bugs.openjdk.org/browse/JDK-8368099) provided a > workaround for this problem by skipping all sampled frames with the property > "needs_stack_repair" and moving directly to the sender frame instead. This > results in biased sampling for nearly all samples taken inside frames whose > next poll instruction is the method exit return. > > This solution handles both scalarized and non-scalarized frame layouts. > > Testing: jdk_valhalla, hotspot_valhalla, hotspot_valhalla_runtime, jdk_jfr, > stress testing > > Thanks > Markus
Markus Grönlund has updated the pull request incrementally with one additional commit since the last revision: DebugNonSafepoints ------------- Changes: - all: https://git.openjdk.org/valhalla/pull/2176/files - new: https://git.openjdk.org/valhalla/pull/2176/files/97efff7f..9f142a71 Webrevs: - full: https://webrevs.openjdk.org/?repo=valhalla&pr=2176&range=04 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=2176&range=03-04 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/valhalla/pull/2176.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2176/head:pull/2176 PR: https://git.openjdk.org/valhalla/pull/2176
