void JSGlobalObject::copyGlobalsTo(RegisterFile& registerFile) { JSGlobalObject* lastGlobalObject = registerFile.globalObject(); if (lastGlobalObject && lastGlobalObject != this) lastGlobalObject->copyGlobalsFrom(registerFile); registerFile.setGlobalObject(this); registerFile.setNumGlobals(symbolTable().size()); if (d()->registerArray) { memcpy(registerFile.start() - d()->registerArraySize, d()->registerArray.get(), d()->registerArraySize * sizeof(Register)); setRegisters(registerFile.start(), 0, 0); } }
void JSGlobalObject::copyGlobalsTo(RegisterFile& registerFile) { JSGlobalObject* lastGlobalObject = registerFile.globalObject(); if (lastGlobalObject && lastGlobalObject != this) lastGlobalObject->copyGlobalsFrom(registerFile); registerFile.setGlobalObject(this); registerFile.setNumGlobals(symbolTable().size()); if (m_registerArray) { // The register file is always a gc root so no barrier is needed here memcpy(registerFile.start() - m_registerArraySize, m_registerArray.get(), m_registerArraySize * sizeof(WriteBarrier<Unknown>)); setRegisters(reinterpret_cast<WriteBarrier<Unknown>*>(registerFile.start()), nullptr, 0); } }