When we implemented this approach we found that transpilation time was very slow (upwards of 30 seconds per file). After some debugging we found that this slowdown is caused by Jalangi2 attempting to instrument the entirety of Babel while performing program transpilation. This is due to the lazy evaluation of Babel dependencies at runtime. We fixed this issue by finding every entry-point to Jalangi2 and ensuring that transpilation of an empty source-file is done before the initial analysis is loaded.
One limitation of our modification is that our Jalangi2 fork no longer works when attempting to analyze dynamically evaluated code in a web browser. Luckily, we have some upcoming work which should mitigate this and make analyzing web software with Jalangi2 significantly easier.
The source code available here
© Blake Loring 2018