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

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit-test/tests/ion/bug684384.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,58 @@
     1.4 +// Labeled break tests.
     1.5 +function f1() {
     1.6 +    foo:
     1.7 +    if ([1]) {
     1.8 +	bar:
     1.9 +	for (var i=0; i<100; i++) {
    1.10 +	    if (i > 60)
    1.11 +		break foo;
    1.12 +	}
    1.13 +	assertEq(0, 1);
    1.14 +    }
    1.15 +    assertEq(i, 61);
    1.16 +    return true;
    1.17 +}
    1.18 +assertEq(f1(), true);
    1.19 +
    1.20 +// Label with no breaks.
    1.21 +function f2() {
    1.22 +    foo:
    1.23 +    if ([1]) {
    1.24 +	for (var i=0; i<100; i++) {
    1.25 +	}
    1.26 +    }
    1.27 +    assertEq(i, 100);
    1.28 +    return true;
    1.29 +}
    1.30 +assertEq(f2(), true);
    1.31 +
    1.32 +// No breaks and early return.
    1.33 +function f3() {
    1.34 +    foo: {
    1.35 +	if (true) {
    1.36 +	    for (var i=0; i<100; i++) {
    1.37 +	    }
    1.38 +	}
    1.39 +	return false;
    1.40 +    }
    1.41 +    assertEq(i, 100);
    1.42 +    return true;
    1.43 +}
    1.44 +assertEq(f3(), false);
    1.45 +
    1.46 +// Multiple breaks.
    1.47 +function f4() {
    1.48 +    foo: {
    1.49 +	if (true) {
    1.50 +	    for (var i=0; i<100; i++)
    1.51 +		if (i > 70)
    1.52 +		    break foo;
    1.53 +	        if (i > 80)
    1.54 +		    break foo;
    1.55 +	}
    1.56 +	break foo;
    1.57 +    }
    1.58 +    assertEq(i, 71);
    1.59 +    return true;
    1.60 +}
    1.61 +assertEq(f4(), true);

mercurial