How to make a fast dynamic language interpreter