Nice article.
Of course if you get some of the benefits of run time specialization, you also get some of the downside, i.e., overspecialization.
The heuristics to know when to stop specializing is a really hard part of those kind of systems.
You could have a program that does a single write() on 100k different files. You could have thousands of processes each writing to a single file and bloating the I$ with useless copies of write.