Compute intra-BB liveness information
When emitting frame information, we pass all currently-live variable names. We clear dead register names at the end of every basic block, but for long basic blocks we can end up accumulating many temporary names (one per sub expression). This ends up hugely increasing the LLVM compilation times since we will pass hundreds of arguments to many different callsites. Now, we remove dead variable names as soon as they die. (Note: user-visible names are always live since they can always be seen by the locals() function.) This means that we pass many fewer values as frame arguments. A better solution will be to have a real bytecode language which encodes such liveness information, instead of mostly-having it and then discarding it.
Showing
Please register or sign in to comment