From a770a163abea062a7322e11ed2989c4c26844ce8 Mon Sep 17 00:00:00 2001 From: Ali Ijaz Sheikh Date: Wed, 20 Apr 2016 16:03:20 -0700 Subject: [PATCH] test: v8-flags is sensitive to script caching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit V8 may cache compiled scripts, and it is not safe to assume that the V8 flags can be changed after an isolate has been created. In this particular case, since we are using the same script multiple times, the test would fail if V8 cached the result of the compilation. Ref: https://github.com/nodejs/node/issues/6280 Fixes: https://github.com/nodejs/node/issues/6258 PR-URL: https://github.com/nodejs/node/pull/6316 Reviewed-By: bnoordhuis - Ben Noordhuis Reviewed-By: targos - Michaƫl Zasso Reviewed-By: cjihrig - Colin Ihrig --- test/parallel/test-v8-flags.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/parallel/test-v8-flags.js b/test/parallel/test-v8-flags.js index cee924d5b13068..50cff9ecefceac 100644 --- a/test/parallel/test-v8-flags.js +++ b/test/parallel/test-v8-flags.js @@ -4,10 +4,13 @@ var assert = require('assert'); var v8 = require('v8'); var vm = require('vm'); +// Note: changing V8 flags after an isolate started is not guaranteed to work. +// Specifically here, V8 may cache compiled scripts between the flip of the +// flag. We use a different script each time to work around this problem. v8.setFlagsFromString('--allow_natives_syntax'); assert(eval('%_IsSmi(42)')); -assert(vm.runInThisContext('%_IsSmi(42)')); +assert(vm.runInThisContext('%_IsSmi(43)')); v8.setFlagsFromString('--noallow_natives_syntax'); -assert.throws(function() { eval('%_IsSmi(42)'); }, SyntaxError); -assert.throws(function() { vm.runInThisContext('%_IsSmi(42)'); }, SyntaxError); +assert.throws(function() { eval('%_IsSmi(44)'); }, SyntaxError); +assert.throws(function() { vm.runInThisContext('%_IsSmi(45)'); }, SyntaxError);