多态内联缓存(PIC)通过按对象类型缓存实际方法来工作,以避免昂贵的查找过程(通常是哈希表查找)。
如果类型对象是可变的(即该方法可能在运行时被猴子修补成不同的东西),如何处理类型比较?
我想出的一个想法是一个“类计数器”,每次调整方法时都会增加,但是这似乎在一个猴子补丁严重的环境中会异常昂贵,因为它会杀死所有的图片那个类,即使它们的方法没有改变。
我确信必须有一个好的解决方案,因为这个问题直接适用于 JavaScript,并且 AFAIK 所有三个大型 JavaScript 虚拟机都有 PIC。