【javascript – 为什么创建多个单态缓存而不是一个多态】教程文章相关的互联网学习教程文章

javascript – 多态内联缓存如何与可变类型一起使用?

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

javascript – 为什么创建多个单态缓存而不是一个多态【代码】

我在单态上读到this article,那里有以下代码片段:function ff(b, o) {if (b) {return o.x} else {return o.x} }ff(true, { x: 1 }) ff(false, { x: 2, y: 0 }) ff(true, { x: 1 }) ff(false, { x: 2, y: 0 })How many property access inline caches are in the function ff? What’sstate they are in?Answers: there are 2 caches, both are monomorphic because each sees only objects of one shape.我以为会有一个多态,因为之...