Comments (2)
Ok I think the correct answer is to stop being dumb and just build a CFG for functions. Doing a single pre-process pass before JIT compilation realistically isn't going to be very slow, and gives us good and useful information, like for example having a "complexity" metric to feed into #15. The basic block layout heuristic would also fall on its face if we ever tried to inline a JIT compiled function, since Cranelift is dumb and doesn't know that you should put cold code outside the instruction fetch pipeline.
from lineiform.
(If we want to be even smarter we could do the CFG pass async, and only block on it the first time we hit a branch)
from lineiform.
Related Issues (18)
- Recursive example incomplete? HOT 1
- Do JIT compilation based on perf counters
- Async JIT compilation HOT 5
- Abort compilation properly
- Lineiform metadata interface
- Implement inlining heuristics HOT 1
- Ahead-of-time compilation mode
- Persistent cache HOT 1
- Better tracing HOT 2
- Use a different IR than Cranelift HOT 3
- Use argument and output info for correct Cranelift function prototype declaration
- Use DWARF info to get the calling convention of external functions
- Compile-time closure freeze checking HOT 1
- Deallocate JIT code on FastFn drop HOT 2
- Handle pointer arguments in lifting
- Implement looping HOT 2
- Handle dynamically linked functions HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lineiform.