v8 JIT编译器如何管理动态变化的变量

时间:2018-04-24 02:27:18

标签: v8 jit

所以turns out v8数组是连续存储的,如果数组在内存中超过当前的插槽,它将被重新分配在内存中的不同位置。

这让我想知道如何指针。如果这是在C中并且您重新分配了数组you have to get a reference to a new pointer!。这意味着使用旧指针的所有代码现在都必须使用新指针。

这让我想知道如V8这样的JIT编译器如何处理动态变化的变量。如果你有var a = []然后触发v8来增加数组大小,并且它将它重新分配到内存的不同部分,那么任何引用a的代码都需要更新以指向新的如果JIT的东西与我想象的汇编方式类似,那就说明。 (我对汇编,C和JIT知之甚少。)

所以我想知道,v8如何在内部管理这些变量引用。它是如何运作的。

我的困惑在于它连接到实际内存地址的部分。有些东西必须存储实际的内存地址,有些东西是硬编码的。但是如果它被重新分配,那么这些引用似乎需要更新。

0 个答案:

没有答案