js/src/jit-test/tests/ion/bug991457.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 function test() {
     2     this.init();
     3     for (var i=0; i<10; i++) {
     4         delete this.blocks[10][9];
     5         this.collapse_blocks();
     6     }
     7     this.look_for_holes();
     8 }
     9 test.prototype.init = function() {
    10     this.blocks = new Array(20);
    11     for (var x=0; x<this.blocks.length; x++) {
    12         this.blocks[x] = new Array(10);
    13         for (var y=0; y<this.blocks[x].length; y++) {
    14             this.blocks[x][y] = {};
    15         }
    16     }
    17 }
    18 test.prototype.move_block = function(x,y,x1,y1) {
    19     this.blocks[x][y] = this.blocks[x1][y1];
    20     if (this.blocks[x][y])
    21         delete this.blocks[x1][y1];
    22 }
    23 test.prototype.collapse_blocks = function() {
    24     var didSomething=0;
    25     do {
    26         didSomething=0;
    27         for (var x=0; x<this.blocks.length; x++)
    28             for (var y=1; y<this.blocks[x].length; y++) {
    29                 if (!this.blocks[x][y] && this.blocks[x][y-1]) {
    30                     this.move_block(x,y,x,y-1);
    31                     didSomething=1;
    32                 }
    33             }
    34     } while (didSomething);
    36     do {
    37         didSomething = 0;
    38         for (var x=0; x<this.blocks.length-1; x++) {
    39             if (!this.blocks[x][9] && this.blocks[x+1][9]) {
    40                 for (var y=0; y<this.blocks[x].length; y++)
    41                     this.move_block(x,y,x+1,y);
    42                 didSomething = 1;
    43             }
    44 	}
    45     } while (didSomething);
    46 }
    47 test.prototype.look_for_holes = function() {
    48     var was_empty = false;
    49     var n_empty = 0;
    50     for (var x=0; x<this.blocks.length; x++) {
    51         var empty = true;
    52         for (var y=0; y<this.blocks[x].length; y++) {
    53             if (this.blocks[x][y]) {
    54                 empty = false;
    55 		n_empty++;
    56 	    }
    57 	}
    58 	if (was_empty)
    59 	    assertEq(empty, true);
    60         was_empty = empty;
    61     }
    62     assertEq(n_empty, 190);
    63 }
    64 new test();

mercurial