| OLD | NEW | 
|   1 // Copyright 2015 the V8 project authors. All rights reserved. |   1 // Copyright 2015 the V8 project authors. All rights reserved. | 
|   2 // Redistribution and use in source and binary forms, with or without |   2 // Redistribution and use in source and binary forms, with or without | 
|   3 // modification, are permitted provided that the following conditions are |   3 // modification, are permitted provided that the following conditions are | 
|   4 // met: |   4 // met: | 
|   5 // |   5 // | 
|   6 //     * Redistributions of source code must retain the above copyright |   6 //     * Redistributions of source code must retain the above copyright | 
|   7 //       notice, this list of conditions and the following disclaimer. |   7 //       notice, this list of conditions and the following disclaimer. | 
|   8 //     * Redistributions in binary form must reproduce the above |   8 //     * Redistributions in binary form must reproduce the above | 
|   9 //       copyright notice, this list of conditions and the following |   9 //       copyright notice, this list of conditions and the following | 
|  10 //       disclaimer in the documentation and/or other materials provided |  10 //       disclaimer in the documentation and/or other materials provided | 
|  11 //       with the distribution. |  11 //       with the distribution. | 
|  12 //     * Neither the name of Google Inc. nor the names of its |  12 //     * Neither the name of Google Inc. nor the names of its | 
|  13 //       contributors may be used to endorse or promote products derived |  13 //       contributors may be used to endorse or promote products derived | 
|  14 //       from this software without specific prior written permission. |  14 //       from this software without specific prior written permission. | 
|  15 // |  15 // | 
|  16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |  16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 
|  17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |  17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 
|  18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |  18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 
|  19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |  19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 
|  20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |  20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 
|  21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |  21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 
|  22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |  22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
|  23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |  23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
|  24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |  24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
|  25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |  25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
|  26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |  26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
|  27  |  27  | 
|  28 // Flags: --max-old-space-size=60 --check-handle-count |  28 // Node polyfill | 
 |  29 var os = os || { | 
 |  30   system: function(name, args) { | 
 |  31     return require('child_process').execFileSync( | 
 |  32         name, args, {encoding: 'utf8'}).toString(); | 
 |  33   } | 
 |  34 }; | 
 |  35 var print = print || console.log.bind(console); | 
 |  36 var read = read || function(fileName) { | 
 |  37   return require('fs').readFileSync(fileName, 'utf8'); | 
 |  38 }; | 
 |  39 if (typeof process !== "undefined" && process.argv) { | 
 |  40   print("Polyfilling arguments"); | 
 |  41   arguments = process.argv.slice(2); | 
|  29  |  42  | 
|  30 table = []; |  43   // Polyfill "readline()". | 
 |  44   var fs = require('fs'); | 
 |  45   var fd = fs.openSync(arguments[0], 'rs'); | 
 |  46   var buf = new Buffer(4096); | 
 |  47   var line = ""; | 
 |  48   var readline = function() { | 
 |  49     while (true) { | 
 |  50       var line_break = line.indexOf('\n'); | 
 |  51       if (line_break !== -1) { | 
 |  52         var res = line.slice(0, line_break); | 
 |  53         line = line.slice(line_break + 1); | 
 |  54         return res; | 
 |  55       } | 
 |  56       var bytes = fs.readSync(fd, buf, 0, buf.length); | 
 |  57       line += buf.toString('utf8', 0, bytes); | 
 |  58       if (line.length === 0) { | 
 |  59         return false; | 
 |  60       } | 
 |  61     } | 
 |  62   } | 
|  31  |  63  | 
|  32 for (var i = 0; i < 32; i++) { |  | 
|  33  table[i] = String.fromCharCode(i + 0x410); |  | 
|  34 } |  64 } | 
|  35  |  | 
|  36  |  | 
|  37 var random = (function() { |  | 
|  38   var seed = 10; |  | 
|  39   return function() { |  | 
|  40     seed = (seed * 1009) % 8831; |  | 
|  41     return seed; |  | 
|  42   }; |  | 
|  43 })(); |  | 
|  44  |  | 
|  45  |  | 
|  46 function key(length) { |  | 
|  47   var s = ""; |  | 
|  48   for (var i = 0; i < length; i++) { |  | 
|  49     s += table[random() % 32]; |  | 
|  50   } |  | 
|  51   return '"' + s + '"'; |  | 
|  52 } |  | 
|  53  |  | 
|  54  |  | 
|  55 function value() { |  | 
|  56   return '[{' + '"field1" : ' + random() + ', "field2" : ' + random() + '}]'; |  | 
|  57 } |  | 
|  58  |  | 
|  59  |  | 
|  60 function generate(n) { |  | 
|  61   var s = '{'; |  | 
|  62   for (var i = 0; i < n; i++) { |  | 
|  63      if (i > 0) s += ', '; |  | 
|  64      s += key(random() % 10 + 7); |  | 
|  65      s += ':'; |  | 
|  66      s += value(); |  | 
|  67   } |  | 
|  68   s += '}'; |  | 
|  69   return s; |  | 
|  70 } |  | 
|  71  |  | 
|  72  |  | 
|  73 print("generating"); |  | 
|  74  |  | 
|  75 var str = generate(50000); |  | 
|  76  |  | 
|  77 print("parsing "  + str.length); |  | 
|  78 JSON.parse(str); |  | 
|  79  |  | 
|  80 print("done"); |  | 
| OLD | NEW |