jextract: Implement Java-side integer overflow checks for FFM mode (#517) #546
+554
−309
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.
Description
Summary: This PR aligns FFM mode with JNI by moving integer validation to the Java side. This prevents native crashes by catching out-of-range values before they reach Swift.
Key Changes
1-Java-Side Validation: Moved range checks from native thunks to Java wrappers using a shared
ArithmeticExceptionhelper.2-Type Widening: Parameters (e.g.,
Int8/16/32) are now widened in Java to allow safe bounds checking against Swift's target limits.3-Unsigned Handling: Added specific checks to bridge the gap between Java's signed types and Swift's
UInttypes.4-Updated Tests: Adjusted "golden" expectations for
UnsignedNumberTests,MethodImportTests, and others to reflect new safety logic.Verification
1-Full Suite: All 201 tests passed across 41 suites.
2-Toolchain: Verified on JDK 25 and Swift 6.2.1.