Skip to content

Commit 50177fb

Browse files
committed
benchmark: stop v8 benchmark clobbering RegExp
deps/v8/benchmarks/regexp.js clobbers the RegExp global, breaking util.format() and console.log(). Unclobber it to keep the other benchmarks working. Fixes the following error when running benchmark/misc/v8-bench.js: $ out/Release/iojs benchmark/misc/v8-bench.js util.js:84 if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { ^ TypeError: object is not a function at Object.exports.debuglog (util.js:84:9) at timers.js:12:29 at NativeModule.compile (node.js:800:5) at NativeModule.require (node.js:769:18) at net.js:5:14 at NativeModule.compile (node.js:800:5) at NativeModule.require (node.js:769:18) at tty.js:4:11 at NativeModule.compile (node.js:800:5) at Function.NativeModule.require (node.js:769:18) This could alternatively be addressed by caching the RegExp global in lib/util.js. That's not a bad approach and I considered it but doing it for just RegExp and not other globals would be half-baked. Maybe the more thorough approach where we cache all globals at start-up is something for a follow-up pull request. Fixes: #475 PR-URL: #489 Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Yosuke Furukawa <[email protected]>
1 parent 1952219 commit 50177fb

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

benchmark/misc/v8-bench.js

+8-4
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,13 @@ global.print = function(s) {
1010
console.log('misc/v8_bench.js %s', s);
1111
};
1212

13-
global.load = function (x) {
14-
var source = fs.readFileSync(path.join(dir, x), 'utf8');
15-
vm.runInThisContext(source, x);
16-
}
13+
global.load = function(filename) {
14+
var source = fs.readFileSync(path.join(dir, filename), 'utf8');
15+
// deps/v8/benchmarks/regexp.js breaks console.log() because it clobbers
16+
// the RegExp global, Restore the original when the script is done.
17+
var $RegExp = global.RegExp;
18+
vm.runInThisContext(source, { filename: filename });
19+
global.RegExp = $RegExp;
20+
};
1721

1822
load('run.js');

0 commit comments

Comments
 (0)