Skip to content

Comments

Remove INodeWithSize interface, use IMAGE_REL_SYMBOL_SIZE relocation, and restructure ModuleInfoRow#124202

Merged
jkoritzinsky merged 13 commits intomainfrom
copilot/remove-inodewithsize-interface
Feb 18, 2026
Merged

Remove INodeWithSize interface, use IMAGE_REL_SYMBOL_SIZE relocation, and restructure ModuleInfoRow#124202
jkoritzinsky merged 13 commits intomainfrom
copilot/remove-inodewithsize-interface

Conversation

Copy link
Contributor

Copilot AI commented Feb 9, 2026

  • Remove INodeWithSize interface and always use IMAGE_REL_SYMBOL_SIZE relocation
  • Remove HasEndPointer flag and ModuleInfoFlags enum
  • Update ModuleInfoRow to have SectionId, Length, Start fields
  • Remove GetLength() method and use Length field directly
  • Remove Size properties from ProxyTypeMapObjectNode and ExternalTypeMapObjectNode
  • Remove double blank lines left by mechanical removal in ~30 files
  • Restore single blank lines between methods and logical code sections
  • Encode dehydrated data length instead of fixup count

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

…SIZE reloc

Co-authored-by: jkoritzinsky <1571408+jkoritzinsky@users.noreply.github.com>
@dotnet-policy-service
Copy link
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
See info in area-owners.md if you want to be subscribed.

Co-authored-by: jkoritzinsky <1571408+jkoritzinsky@users.noreply.github.com>
Copilot AI changed the title [WIP] Remove INodeWithSize interface and update size emission Replace INodeWithSize.Size property with IMAGE_REL_SYMBOL_SIZE relocation Feb 9, 2026
Copilot AI requested a review from jkoritzinsky February 9, 2026 22:27
Co-authored-by: jkoritzinsky <1571408+jkoritzinsky@users.noreply.github.com>
Copilot AI changed the title Replace INodeWithSize.Size property with IMAGE_REL_SYMBOL_SIZE relocation Remove INodeWithSize interface and use IMAGE_REL_SYMBOL_SIZE relocation Feb 9, 2026
Copilot AI requested a review from jkoritzinsky February 9, 2026 22:56
@jkoritzinsky
Copy link
Member

@copilot please remove the HasEndPointer flag and the Flags field it goes in. Then, update the native ModuleInfoRow type to have a Start field and a Length field instead of Start and End and remove the Flags type there as well.

Finally, update the code in ReadyToRunHeaderNode to require alignment before emitting each entry.

Co-authored-by: jkoritzinsky <1571408+jkoritzinsky@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 10, 2026

@copilot please remove the HasEndPointer flag and the Flags field it goes in. Then, update the native ModuleInfoRow type to have a Start field and a Length field instead of Start and End and remove th...

Done. Removed HasEndPointer flag and ModuleInfoFlags enum. Updated ModuleInfoRow to have Start and Length fields instead of Start, End, and Flags. Added alignment requirement before emitting each entry. (5b50167)

Copilot AI changed the title Remove INodeWithSize interface and use IMAGE_REL_SYMBOL_SIZE relocation Remove INodeWithSize interface, use IMAGE_REL_SYMBOL_SIZE relocation, and restructure ModuleInfoRow Feb 10, 2026
Copy link
Member

@jkoritzinsky jkoritzinsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot please address this feedback

Co-authored-by: jkoritzinsky <1571408+jkoritzinsky@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 10, 2026

@copilot please address this feedback

All feedback addressed. (cc44d34)

@MichalStrehovsky
Copy link
Member

@copilot go over the blank lines deleted in this pull request. Make sure a blank line still separates individual method blocks. Make sure a blank line still separates logically different parts of method bodies.

@MichalStrehovsky
Copy link
Member

The test failures look related. Pulled down a random crashdump with runfo and looks like GC statics are broken. GC statics are one of the things referenced from R2R header.

Co-authored-by: MichalStrehovsky <13110571+MichalStrehovsky@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 11, 2026

@copilot go over the blank lines deleted in this pull request. Make sure a blank line still separates individual method blocks. Make sure a blank line still separates logically different parts of meth...

Restored single blank lines at all 47 locations across the 30 files. Each location now has exactly one blank line separating method blocks and logical code sections (e.g., between constructor } and next method, between Save() and return, between loop } and next logical section). No double blank lines remain. Build verified clean. (9b06c1e)

@jkoritzinsky
Copy link
Member

I found one of the issues: The DehydratedDataNode is the only node type that didn't set its "size" to the size of the output object data. So, we'll need to encode in that data stream the number of fixups so we can correctly delineate between the data and fixup sections.

…encode the size of the dehydrated data blob consistendly with other object nodes.
@jkoritzinsky
Copy link
Member

@MichalStrehovsky pushed a fix. Let me know if it looks good to you.

Co-authored-by: jkoritzinsky <1571408+jkoritzinsky@users.noreply.github.com>
Copy link
Member

@MichalStrehovsky MichalStrehovsky left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@jkoritzinsky jkoritzinsky merged commit 8e6e74e into main Feb 18, 2026
93 of 96 checks passed
@github-project-automation github-project-automation bot moved this to Done in AppModel Feb 18, 2026
@jkoritzinsky jkoritzinsky deleted the copilot/remove-inodewithsize-interface branch February 18, 2026 00:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants