Skip to content

Comments

Fix object.GetType dataflow edge case#106909

Merged
sbomer merged 3 commits intodotnet:mainfrom
sbomer:objectGetTypeCase
Aug 27, 2024
Merged

Fix object.GetType dataflow edge case#106909
sbomer merged 3 commits intodotnet:mainfrom
sbomer:objectGetTypeCase

Conversation

@sbomer
Copy link
Member

@sbomer sbomer commented Aug 23, 2024

Partial fix for one of the cases mentioned in #106886.

I moved some of the tests to ObjectGetTypeDataflow.cs because ObjectGetType.cs is skipped by native AOT. Fixes an issue I ran into while investigating #106215.

@ghost ghost added the area-Tools-ILLink .NET linker development as well as trimming analyzers label Aug 23, 2024
@dotnet-policy-service
Copy link
Contributor

Tagging subscribers to this area: @agocke, @sbomer, @vitek-karas
See info in area-owners.md if you want to be subscribed.

@sbomer
Copy link
Member Author

sbomer commented Aug 27, 2024

/ba-g "timeouts"

@sbomer sbomer merged commit ed21115 into dotnet:main Aug 27, 2024
sbomer added a commit that referenced this pull request Aug 28, 2024
The equality check needs to determine whether two TypeProxy instances
represent the same type. The check was incorrect when two different
object instances were allocated to represent the same generic
instantiated type.

ILCompiler doesn't have this problem because it uses a cache to ensure
that the same object instance represents a given instantiated generic
type.

Discovered while investigating
#106215, see more context at
#106215 (comment).

The new testcase also uncovered an issue in the analyzer that was
fixed in #106909.
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Sep 17, 2024
Partial fix for one of the cases mentioned in
dotnet#106886.

This moves some of the tests to ObjectGetTypeDataflow.cs because
ObjectGetType.cs is skipped by native AOT. Fixes an issue discovered
while investigating dotnet#106215.
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Sep 17, 2024
The equality check needs to determine whether two TypeProxy instances
represent the same type. The check was incorrect when two different
object instances were allocated to represent the same generic
instantiated type.

ILCompiler doesn't have this problem because it uses a cache to ensure
that the same object instance represents a given instantiated generic
type.

Discovered while investigating
dotnet#106215, see more context at
dotnet#106215 (comment).

The new testcase also uncovered an issue in the analyzer that was
fixed in dotnet#106909.
@github-actions github-actions bot locked and limited conversation to collaborators Sep 28, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Tools-ILLink .NET linker development as well as trimming analyzers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants