| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | 
|  | 2 /* ***** BEGIN LICENSE BLOCK ***** | 
|  | 3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1 | 
|  | 4  * | 
|  | 5  * The contents of this file are subject to the Mozilla Public License Version | 
|  | 6  * 1.1 (the "License"); you may not use this file except in compliance with | 
|  | 7  * the License. You may obtain a copy of the License at | 
|  | 8  * http://www.mozilla.org/MPL/ | 
|  | 9  * | 
|  | 10  * Software distributed under the License is distributed on an "AS IS" basis, | 
|  | 11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | 
|  | 12  * for the specific language governing rights and limitations under the | 
|  | 13  * License. | 
|  | 14  * | 
|  | 15  * The Original Code is JavaScript Engine testing utilities. | 
|  | 16  * | 
|  | 17  * The Initial Developer of the Original Code is | 
|  | 18  * Mozilla Foundation. | 
|  | 19  * Portions created by the Initial Developer are Copyright (C) 2008 | 
|  | 20  * the Initial Developer. All Rights Reserved. | 
|  | 21  * | 
|  | 22  * Contributor(s): Gary Kwong | 
|  | 23  *                 Jesse Ruderman | 
|  | 24  * | 
|  | 25  * Alternatively, the contents of this file may be used under the terms of | 
|  | 26  * either the GNU General Public License Version 2 or later (the "GPL"), or | 
|  | 27  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), | 
|  | 28  * in which case the provisions of the GPL or the LGPL are applicable instead | 
|  | 29  * of those above. If you wish to allow use of your version of this file only | 
|  | 30  * under the terms of either the GPL or the LGPL, and not to allow others to | 
|  | 31  * use your version of this file under the terms of the MPL, indicate your | 
|  | 32  * decision by deleting the provisions above and replace them with the notice | 
|  | 33  * and other provisions required by the GPL or the LGPL. If you do not delete | 
|  | 34  * the provisions above, a recipient may use your version of this file under | 
|  | 35  * the terms of any one of the MPL, the GPL or the LGPL. | 
|  | 36  * | 
|  | 37  * ***** END LICENSE BLOCK ***** */ | 
|  | 38 | 
|  | 39 var gTestfile = 'regress-476414-02.js'; | 
|  | 40 //----------------------------------------------------------------------------- | 
|  | 41 var BUGNUMBER = 476414; | 
|  | 42 var summary = 'Do not crash @ js_NativeSet'; | 
|  | 43 var actual = ''; | 
|  | 44 var expect = ''; | 
|  | 45 | 
|  | 46 printBugNumber(BUGNUMBER); | 
|  | 47 printStatus (summary); | 
|  | 48 | 
|  | 49 function whatToTestSpidermonkeyTrunk(code) | 
|  | 50 { | 
|  | 51   return { | 
|  | 52   allowExec: true | 
|  | 53       }; | 
|  | 54 } | 
|  | 55 whatToTest = whatToTestSpidermonkeyTrunk; | 
|  | 56 function tryItOut(code) | 
|  | 57 { | 
|  | 58   var wtt = whatToTest(code.replace(/\n/g, " ").replace(/\r/g, " ")); | 
|  | 59   var f = new Function(code); | 
|  | 60   if (wtt.allowExec && f) { | 
|  | 61     rv = tryRunning(f, code); | 
|  | 62   } | 
|  | 63 } | 
|  | 64 function tryRunning(f, code) | 
|  | 65 { | 
|  | 66   try { | 
|  | 67     var rv = f(); | 
|  | 68   } catch(runError) {} | 
|  | 69 } | 
|  | 70 var realFunction = Function; | 
|  | 71 var realUneval = uneval; | 
|  | 72 var realToString = toString; | 
|  | 73 var realToSource = toSource; | 
|  | 74 function tryEnsureSanity() | 
|  | 75 { | 
|  | 76   delete Function; | 
|  | 77   delete uneval; | 
|  | 78   delete toSource; | 
|  | 79   delete toString; | 
|  | 80   Function = realFunction; | 
|  | 81   uneval = realUneval; | 
|  | 82   toSource = realToSource; | 
|  | 83   toString = realToString; | 
|  | 84 } | 
|  | 85 for (let iters = 0; iters < 2000; ++iters) { | 
|  | 86   count=27745; tryItOut("with({x: (c) = (x2 = [])})false;"); | 
|  | 87   tryEnsureSanity(); | 
|  | 88   count=35594; tryItOut("switch(null) { case this.__defineSetter__(\"window\", f
     unction () { yield  \"\"  } ): break; }"); | 
|  | 89   tryEnsureSanity(); | 
|  | 90   count=45020; tryItOut("with({}) { (this.__defineGetter__(\"x\", function (y)th
     is)); } "); | 
|  | 91   tryEnsureSanity(); | 
|  | 92   count=45197; tryItOut("M:with((p={}, (p.z = <x/> ===  '' )()))/*TUUL*/for each
      (let y in [true, {}, {}, (void 0), true, true, true, (void 0), true, (void 0)])
      { return; }"); | 
|  | 93   tryEnsureSanity(); | 
|  | 94   gc(); | 
|  | 95   tryEnsureSanity(); | 
|  | 96   count=45254; tryItOut("for each (NaN in this);"); | 
|  | 97   tryEnsureSanity(); | 
|  | 98 } | 
|  | 99 | 
|  | 100 reportCompare(expect, actual, summary); | 
| OLD | NEW | 
|---|