Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Musings on Tracing in PyPy | PyPy #149

Open
utterances-bot opened this issue Jan 10, 2025 · 1 comment
Open

Musings on Tracing in PyPy | PyPy #149

utterances-bot opened this issue Jan 10, 2025 · 1 comment

Comments

@utterances-bot
Copy link

Musings on Tracing in PyPy | PyPy

https://www.pypy.org/posts/2025/01/musings-tracing.html

Copy link

The notion of tracing JITs definitely predated calling them tracing JIT compilers. See my PhD for my own bad name (lazy recursion detection, what was I thinking): https://apt.cs.manchester.ac.uk/ftp/pub/apt/theses/IanRogers_PhD.pdf For method JITs I think it is important to mention uncommon traps, code that has never been executed is uncommon and so you trap and deoptimize into the interpreter, much as you'd exit a trace to an interpreter. Further off in the weeds, I think the approach of JITs like jython, just creating a trace of bytecode calls to the interpreter functions, look a lot like a kind of directed meta-tracing. It was a sad day when the Java class file format was changed to mandate stack frame maps, as the ability to easily JIT blobs of bytecode was a significant feature. In 2008 I gave a presentation on my first visit to the bay area to the Mozilla TraceMonkey folks advocating against traces, primarily as you should work the best you can with the branch prediction hardware. There were proposed MSc projects for an interpreter in Jikes RVM that would do something like meta JIT compilation as a replacement for the baseline compiler. Some of the people who worked in that area overlapped with Maxine, Graal and Truffle. I think often the invention of names is taken as meaning an idea was created at the same time. Certainly for tracing this isn't true, perhaps had the term hyperblock been more popular we'd be using that - although I always mentally link hyperblocks with Itanium.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants