-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Support MCJIT #5208
Support MCJIT #5208
Conversation
Whoa! Amazing stuff! |
Has this a large impact on the performance of compilation? |
Nice! |
Looking forward to this, particularly if it fixes the AVX issue #4418. |
@@ -182,7 +182,6 @@ LLVM_TAR=llvm-$(LLVM_VER).tar.gz | |||
else | |||
LLVM_TAR=llvm-$(LLVM_VER).src.tar.gz | |||
endif | |||
endif |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this change doesn't seem necessary / related
@JeffBezanson @loladiro this looks good to me (ready to merge), from doing a code read-through |
Alright, I'll rebase this this and then let's merge it. Actually using MCJIT still crashes sometimes, but to figure out why I need to add more debug info that master can make use of as well and this doesn't change anything for the current REPL. |
@JeffBezanson bump |
Adds prepare_call/prepare_global methods to all usages of functions or global variables. Since MCJIT is multi-module, these will be needed if the function/global variable is declared in a different module.
@JeffBezanson Can we just merge this? |
I bet @loladiro is dancing a jig in his room right now. |
Wheeeeeee! |
👍 |
Woops. Sorry about the branch deletion. Too excited. |
Oh, you betcha |
And apparently he's from Fargo too. |
So, am I correct that this didn't just add support for MCJIT but also turned on MCJIT as the default JIT? |
no, the old JIT is still the default (on 3.3 anyway). This branch was just a pain to maintain, because it touches so many lines |
Changes Unknown when pulling ed7d660 on kf/mcjit into * on master*. |
@lemurheavy you guys have a hash collision or something going on, a couple times a month now we get a coveralls notification on a long-closed PR, that judging by the source files (here some python) are for a totally different repo. |
This adds MCJIT support (only enabled on 3.4+ though due missing functionality and patches in 3.3). MCJIT is ifdef'ed out for 3.3, so we can merge this soon, so we don't have to keep maintaining a branch that touches so many different locations. For 3.4 with MCJIT, I'm still seeing random failures when running the tests, though sequentially everything is fine. This might well be an MCJIT bug, we'll see.
I ended up going with the shadow module approach during imaging (i.e. everything gets emitted into a giant module and we pull out the functions we're actually running).
Closes #3922
Closes #4418