workaround `vm` context issue in `node-chakracore` (#3106)
authorAlex Lam S.L <alexlamsl@gmail.com>
Thu, 26 Apr 2018 23:40:34 +0000 (07:40 +0800)
committerGitHub <noreply@github.com>
Thu, 26 Apr 2018 23:40:34 +0000 (07:40 +0800)
test/compress/collapse_vars.js
test/sandbox.js

index d106056..950ebd0 100644 (file)
@@ -3751,7 +3751,7 @@ issue_2506: {
         function f0(bar) {
             function f1(Infinity_2) {
                 function f13(NaN) {
-                    if (false <= NaN & f0 >> 1 >= 0) {
+                    if (false <= NaN & this >> 1 >= 0) {
                         c++;
                     }
                 }
@@ -3767,7 +3767,7 @@ issue_2506: {
         function f0(bar) {
             (function(Infinity_2) {
                 (function(NaN) {
-                    if (false <= 0/0 & f0 >> 1 >= 0)
+                    if (false <= 0/0 & this >> 1 >= 0)
                         c++;
                 })(0, c++);
             })();
index 426ac1f..ecf95d3 100644 (file)
@@ -2,24 +2,18 @@ var semver = require("semver");
 var vm = require("vm");
 
 function createContext() {
-    var context = Object.create(null);
-    Object.defineProperty(context, "console", {
-        value: function() {
-            var con = Object.create(null);
-            Object.defineProperty(con, "log", {
-                value: function(msg) {
-                    if (arguments.length == 1 && typeof msg == "string") {
-                        return console.log("%s", msg);
-                    }
-                    return console.log.apply(console, [].map.call(arguments, function(arg) {
-                        return safe_log(arg, 3);
-                    }));
+    return vm.createContext(Object.defineProperty({}, "console", {
+        value: {
+            log: function(msg) {
+                if (arguments.length == 1 && typeof msg == "string") {
+                    return console.log("%s", msg);
                 }
-            });
-            return con;
-        }()
-    });
-    return vm.createContext(context);
+                return console.log.apply(console, [].map.call(arguments, function(arg) {
+                    return safe_log(arg, 3);
+                }));
+            }
+        }
+    }));
 }
 
 function safe_log(arg, level) {