dotnet / dotnet/jitutils

PMI arm diffs issue

Open
#143 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
160
Forks
69
Avg merge
1h 56m
Merged PRs (30d)
1

Description

I saw this a few times in some arm altjit frameworks PMI diffs:
```
Base:

movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // System.Threading.Tasks.Dataflow.BatchBlock`1[__Canon][System.__Canon]:get_DebuggerDisplayContent():ref:this

diff:

mov r3, 0x3d8000
blx r3 // System.Threading.Tasks.Dataflow.BatchBlock`1[__Canon][System.__Canon]:get_DebuggerDisplayContent():ref:this
```

I presume what’s happening is the addresses are different between base and diff, and we’re getting lucky to be able to encode a constant with one of arm’s wacky constant encodings. I don’t remember ever seeing this with ngen-base altjit asm diffs – presumably because the addresses always required relocs, so we always forced movw/movt encoding. This could be kind of annoying; we might have to thing about how to make this stable.

(This points out an advantage for SuperPMI diffs, where the addresses are guaranteed to be identical.)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.