Index: tools/node-polyfill.js |
diff --git a/test/mjsunit/regress/regress-3976.js b/tools/node-polyfill.js |
similarity index 61% |
copy from test/mjsunit/regress/regress-3976.js |
copy to tools/node-polyfill.js |
index efa3ac03bc05a5b1018eb1bdd0db761154f2b664..a82b6370d0381615af6c3cee21314d43740844e7 100644 |
--- a/test/mjsunit/regress/regress-3976.js |
+++ b/tools/node-polyfill.js |
@@ -25,56 +25,40 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// Flags: --max-old-space-size=60 --check-handle-count |
- |
-table = []; |
- |
-for (var i = 0; i < 32; i++) { |
- table[i] = String.fromCharCode(i + 0x410); |
-} |
- |
- |
-var random = (function() { |
- var seed = 10; |
- return function() { |
- seed = (seed * 1009) % 8831; |
- return seed; |
- }; |
-})(); |
- |
- |
-function key(length) { |
- var s = ""; |
- for (var i = 0; i < length; i++) { |
- s += table[random() % 32]; |
+// Node polyfill |
+var os = os || { |
+ system: function(name, args) { |
+ return require('child_process').execFileSync( |
+ name, args, {encoding: 'utf8'}).toString(); |
} |
- return '"' + s + '"'; |
-} |
- |
- |
-function value() { |
- return '[{' + '"field1" : ' + random() + ', "field2" : ' + random() + '}]'; |
-} |
- |
- |
-function generate(n) { |
- var s = '{'; |
- for (var i = 0; i < n; i++) { |
- if (i > 0) s += ', '; |
- s += key(random() % 10 + 7); |
- s += ':'; |
- s += value(); |
+}; |
+var print = print || console.log.bind(console); |
+var read = read || function(fileName) { |
+ return require('fs').readFileSync(fileName, 'utf8'); |
+}; |
+if (typeof process !== "undefined" && process.argv) { |
+ print("Polyfilling arguments"); |
+ arguments = process.argv.slice(2); |
+ |
+ // Polyfill "readline()". |
+ var fs = require('fs'); |
+ var fd = fs.openSync(arguments[0], 'rs'); |
+ var buf = new Buffer(4096); |
+ var line = ""; |
+ var readline = function() { |
+ while (true) { |
+ var line_break = line.indexOf('\n'); |
+ if (line_break !== -1) { |
+ var res = line.slice(0, line_break); |
+ line = line.slice(line_break + 1); |
+ return res; |
+ } |
+ var bytes = fs.readSync(fd, buf, 0, buf.length); |
+ line += buf.toString('utf8', 0, bytes); |
+ if (line.length === 0) { |
+ return false; |
+ } |
+ } |
} |
- s += '}'; |
- return s; |
-} |
- |
-print("generating"); |
- |
-var str = generate(50000); |
- |
-print("parsing " + str.length); |
-JSON.parse(str); |
- |
-print("done"); |
+} |