python / python/cpython

Tier 2 trace projection does not insert necessary guards

Offen
#118,540 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

interpreter-core
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Tier 2 trace projection can project traces through branches, calls, etc.
Currently we rely on the tier 1 instruction definition to perform the necessary checks, but this is flawed.

Consider a perfectly valid specialization of calls to class, that checked merely that the callable was a class.
This would be a perfectly valid instruction and will work flawlessly in tier 1, but will be wrong in a tier 2 trace that assumes a specific class.
Tier 2 trace projection needs to insert the necessary guards.

A lot of these extra guards will be redundant, but we can rely on the optimizer to remove them.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Lokalisieren Sie die Einstiegspunkte der Tier-2-Trace-Projektion und vergleichen Sie sie mit den Tier-1-Instruktionsdefinitionen, wobei Sie sich auf Verzweigungen und Aufrufe konzentrieren. Definieren Sie die fehlenden Guard-Fälle und überprüfen Sie anschließend, dass projizierte Traces korrekt bleiben, wenn eine Instruktion ein callable auf eine bestimmte Klasse spezialisiert, einschließlich der Abdeckung redundanter Guards, die durch die Optimierung entfernt wurden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.