// // Thread::saveState // void Thread::saveState(Serial &out) const { out.writeSign(Signature::Thread); env->writeModuleName(out, module->name); WriteVLN(out, codePtr - module->codeV.data()); WriteVLN(out, scopeGbl->id); WriteVLN(out, scopeHub->id); WriteVLN(out, scopeMap->id); env->writeScript(out, script); WriteVLN(out, delay); WriteVLN(out, result); WriteVLN(out, callStk.size()); for(auto &call : callStk) writeCallFrame(out, call); WriteVLN(out, dataStk.size()); for(auto &data : dataStk) WriteVLN(out, data); WriteVLN(out, localArr.sizeFull()); WriteVLN(out, localArr.size()); for(auto itr = localArr.beginFull(), end = localArr.end(); itr != end; ++itr) itr->saveState(out); WriteVLN(out, localReg.sizeFull()); WriteVLN(out, localReg.size()); for(auto itr = localReg.beginFull(), end = localReg.end(); itr != end; ++itr) WriteVLN(out, *itr); WriteVLN(out, printBuf.sizeFull()); WriteVLN(out, printBuf.size()); out.out->write(printBuf.dataFull(), printBuf.sizeFull()); WriteVLN<int>(out, state.state); WriteVLN(out, state.data); WriteVLN(out, state.type); out.writeSign(~Signature::Thread); }