| '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' }); |
| }); |