[GR-60395] Allow combination of captureCallState and critical(true). #10301
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
JDK-24+27 again introduced several to the FFM API:
(2) and (3) only affect our imported tests which we need to update.
However, (1) is a significant change where we also need to adapt our internal implementation.
In (1), they allow the combination of
Linker.Option.captureCallState(...)
withLinker.Option.critical(true)
.To give some background: When using
captureCallState(...)
, the created downcall handle then expects an additionalMemorySegment
argument immediately following the target address.Until now, it was only possible to provide a native memory segment to specify the capture state buffer.
Our adaptations then extracted the native address from this single parameter.
Now, it is possible to specify a heap memory segment which will be unpacked into an object+offset pair. Therefore, the downcall stub then receives two parameters that specify the capture state buffer's address.
So far, we did not support this.
(1) contains one more breaking change: it adds an argument to
NativeEntryPoint.make
where we have a substitution for.