Skip to content
Permalink
Browse files

tools: single, cross-platform tick processor

Currently there are three separate tick processor scripts for
mac, windows, and linux. These have been replaced with a single
node.js script to improve maintainability and remove the need
to preserve parallel logic in these separate places.

PR-URL: #2868
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
  • Loading branch information...
Matt Loring authored and rvagg committed Sep 14, 2015
1 parent 2600fb8 commit 6ea8ec1c591777b5ddff314d28bc4cc642971033
@@ -8,7 +8,7 @@ var common = require('../common');
common.refreshTmpDir();
process.chdir(common.tmpDir);
var processor =
path.join(common.testDir, '..', 'tools', 'v8-prof', getScriptName());
path.join(common.testDir, '..', 'tools', 'v8-prof', 'tick-processor.js');
// Unknown checked for to prevent flakiness, if pattern is not found,
// then a large number of unknown ticks should be present
runTest(/LazyCompile.*\[eval\]:1|.*% UNKNOWN/,
@@ -43,19 +43,9 @@ function runTest(pattern, code) {
assert.fail('There should be a single log file.');
}
var log = matches[0];
var out = cp.execSync(processor + ' --call-graph-size=10 ' + log,
var out = cp.execSync(process.execPath + ' ' + processor +
' --call-graph-size=10 ' + log,
{encoding: 'utf8'});
assert(out.match(pattern));
fs.unlinkSync(log);
}

function getScriptName() {
switch (process.platform) {
case 'darwin':
return 'mac-tick-processor';
case 'win32':
return 'windows-tick-processor.bat';
default:
return 'linux-tick-processor';
}
}

This file was deleted.

This file was deleted.

@@ -0,0 +1,51 @@
'use strict';
var cp = require('child_process');
var fs = require('fs');
var path = require('path');

var toolsPath = path.join(__dirname, '..', '..', 'deps', 'v8', 'tools');
var scriptFiles = [
path.join(__dirname, 'polyfill.js'),
path.join(toolsPath, 'splaytree.js'),
path.join(toolsPath, 'codemap.js'),
path.join(toolsPath, 'csvparser.js'),
path.join(toolsPath, 'consarray.js'),
path.join(toolsPath, 'csvparser.js'),
path.join(toolsPath, 'consarray.js'),
path.join(toolsPath, 'profile.js'),
path.join(toolsPath, 'profile_view.js'),
path.join(toolsPath, 'logreader.js'),
path.join(toolsPath, 'tickprocessor.js'),
path.join(toolsPath, 'SourceMap.js'),
path.join(toolsPath, 'tickprocessor-driver.js')];
var tempScript = path.join(__dirname, 'tick-processor-tmp-' + process.pid);

process.on('exit', function() {
try { fs.unlinkSync(tempScript); } catch (e) {}
});
process.on('uncaughtException', function(err) {
try { fs.unlinkSync(tempScript); } catch (e) {}
throw err;
});

var inStreams = scriptFiles.map(function(f) {
return fs.createReadStream(f);
});
var outStream = fs.createWriteStream(tempScript);
inStreams.reduce(function(prev, curr, i) {
prev.on('end', function() {
curr.pipe(outStream, { end: i === inStreams.length - 1});
});
return curr;
});
inStreams[0].pipe(outStream, { end: false });
outStream.on('close', function() {
var tickArguments = [tempScript];
if (process.platform === 'darwin') {
tickArguments.push('--mac', '--nm=' + path.join(toolsPath, 'mac-nm'));
} else if (process.platform === 'win32') {
tickArguments.push('--windows');
}
tickArguments.push.apply(tickArguments, process.argv.slice(2));
var processTicks = cp.spawn(process.execPath, tickArguments, { stdio: 'inherit' });
});

This file was deleted.

0 comments on commit 6ea8ec1

Please sign in to comment.
You can’t perform that action at this time.