Use Java identity in constructor activation tests#11343
Open
simonrozsival wants to merge 2 commits into
Open
Conversation
Compare forwarded Java object constructor arguments with JNI object identity instead of raw JNI reference handles, since equivalent Java objects can be represented by distinct local/global refs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Updates CoreCLRTrimmable constructor activation tests to validate forwarded Application.Context arguments using Java object identity rather than comparing raw JNI handle values, which may differ across equivalent references.
Changes:
- Replaced
Handleequality assertions with an identity-based assertion helper forApplication.Contextforwarding checks. - Added
AssertSameJavaObjecthelper to centralize Java identity comparison logic.
Update the constructor activation helper to compare PeerReference values with JniEnvironment.Types.IsSameObject and assert inputs are non-null before dereferencing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The CoreCLRTrimmable constructor activation tests were comparing raw JNI reference handle values for forwarded
Application.Contextarguments. Equivalent Java objects can be represented by different JNI refs, so these assertions should check Java object identity instead.This changes the affected assertions to use
JNIEnv.IsSameObject(...)while preserving the existing constructor invocation and value checks.Validation:
MSBUILDDISABLENODEREUSE=1 ./dotnet-local.sh build tests/Mono.Android-Tests/Mono.Android-Tests/Mono.Android.NET-Tests.csproj -t:RunTestApp -c Release -p:_AndroidTypeMapImplementation=trimmable -p:IncludeCategories=ConstructorActivationStress -nr:false(temporary local category used only to focus the fixture; not committed)