neBreak); line = line.slice(lineBreak + 1); return res; } const bytes = fs.readSync(fd, buf, 0, buf.length); line += dec.write(buf.slice(0, bytes)); if (line.length === 0) { return ''; } if (bytes === 0) { process.emitWarning(`Profile file ${logFile} is broken`, { code: 'BROKEN_PROFILE_FILE', detail: `${JSON.stringify(line)} at the file end is broken` }); return ''; } } } function versionCheck(firstLine, expected) { // v8-version looks like // "v8-version,$major,$minor,$build,$patch[,$embedder],$candidate" // whereas process.versions.v8 is either "$major.$minor.$build-$embedder" or // "$major.$minor.$build.$patch-$embedder". firstLine = firstLine.split(','); const curVer = expected.split(/[.-]/); if ((firstLine.length !== 6 && firstLine.length !== 7) || firstLine[0] !== 'v8-version') { return 'Unable to read v8-version from log file.'; } // Compare major, minor and build; ignore the patch and candidate fields. for (let i = 0; i < 3; i++) if (curVer[i] !== firstLine[i + 1]) return 'Testing v8 version different from logging version'; } function macCppfiltNm(out) { // Re-grouped copy-paste from `tickprocessor.js` const FUNC_RE = /^([0-9a-fA-F]{8,16} [iItT] )(.*)$/gm; const CLEAN_RE = /^[0-9a-fA-F]{8,16} [iItT] /; let entries = out.match(FUNC_RE); if (entries === null) return out; entries = entries.map((entry) => entry.replace(CLEAN_RE, '')); let filtered; try { filtered = cp.spawnSync('c++filt', [ '-p', '-i' ], { input: entries.join('\n') }).stdout.toString(); } catch { return out; } let i = 0; filtered = filtered.split('\n'); return out.replace(FUNC_RE, (all, prefix, postfix) => { return prefix + (filtered[i++] || postfix); }); } Object.assign(globalThis, { os, print, read, quit, readline, });