Limit size of generated machine code to allow more efficient branching.
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Most architectures have smaller and more efficient ways of branching to "near" locations than "far" locations.
In x86-64 a branch to a location within 2GB is smaller than to an arbitrary 64 bit location.
Likewise, in AArch64, a branch to within 1MB is a single instruction, but further branches will take more instructions.
We should limit the size of traces such that we can use more efficient branches in the generated machine code.
This will have little or no impact, as traces in release builds are unlikely to ever reach this limit, but we will to need enforce it for correctness, especially in debug builds.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Es ist keine Datei oder kein Test genannt. Beginne damit, die Trace-Generierung und die architekturspezifische Branch-Emission für x86-64 und AArch64 zu finden, und ermittle dann, wo ein Trace-Größenlimit durchgesetzt werden kann. Als abgeschlossen gilt die Aufgabe, wenn generierte Traces innerhalb des vorgesehenen Branch-Bereichs bleiben, auch in Debug-Builds, ohne das normale Release-Verhalten zu beeinflussen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers, performance
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 30/100