You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
2.0 KiB

'use strict';
const fs = require('fs');
const assert = require('assert');
const cp = require('child_process');
const common = require('../common');
// TODO(mhdawson) Currently the test-tick-processor functionality in V8
// depends on addresses being smaller than a full 64 bits. Aix supports
// the full 64 bits and the result is that it does not process the
// addresses correctly and runs out of memory
// Disabling until we get a fix upstreamed into V8
if (common.isAix) {
common.skip('Aix address range too big for scripts.');
return;
}
common.refreshTmpDir();
process.chdir(common.tmpDir);
// 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/,
`function f() {
for (var i = 0; i < 1000000; i++) {
i++;
}
setImmediate(function() { f(); });
};
setTimeout(function() { process.exit(0); }, 2000);
f();`);
if (common.isWindows ||
common.isSunOS ||
common.isAix ||
common.isLinuxPPCBE ||
common.isFreeBSD) {
common.skip('C++ symbols are not mapped for this os.');
return;
}
runTest(/RunInDebugContext/,
`function f() {
require(\'vm\').runInDebugContext(\'Debug\');
setImmediate(function() { f(); });
};
setTimeout(function() { process.exit(0); }, 2000);
f();`);
runTest(/Runtime_DateCurrentTime/,
`function f() {
this.ts = Date.now();
setImmediate(function() { new f(); });
};
setTimeout(function() { process.exit(0); }, 2000);
f();`);
function runTest(pattern, code) {
cp.execFileSync(process.execPath, ['-prof', '-pe', code]);
var matches = fs.readdirSync(common.tmpDir);
assert.strictEqual(matches.length, 1, 'There should be a single log file.');
var log = matches[0];
var out = cp.execSync(process.execPath +
' --prof-process --call-graph-size=10 ' + log,
{encoding: 'utf8'});
assert(pattern.test(out), `${pattern} not matching ${out}`);
fs.unlinkSync(log);
}