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/,
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';
- }
-}
+++ /dev/null
-#!/usr/bin/env bash
-
-umask 077
-TEMP_SCRIPT_FILE="/tmp/node-tick-processor-input-script-$$"
-tools_path=`cd $(dirname "$0");pwd`
-v8_tools="$tools_path/../../deps/v8/tools"
-
-cat "$tools_path/polyfill.js" "$v8_tools/splaytree.js" "$v8_tools/codemap.js" \
- "$v8_tools/csvparser.js" "$v8_tools/consarray.js" \
- "$v8_tools/profile.js" "$v8_tools/profile_view.js" \
- "$v8_tools/logreader.js" "$v8_tools/tickprocessor.js" \
- "$v8_tools/SourceMap.js" \
- "$v8_tools/tickprocessor-driver.js" >> "$TEMP_SCRIPT_FILE"
-
-NODE=${NODE:-node}
-
-if [ ! -x "$NODE" ] && [ -x "$(dirname "$0")/../../node" ]; then
- NODE="$(dirname "$0")/../../node"
-fi
-
-"$NODE" "$TEMP_SCRIPT_FILE" $@
-
-rm -f "$TEMP_SCRIPT_FILE"
--- /dev/null
+'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' });
+});