//length, string, object

var expected = "3,6,4,3,6,4,3,6,4,3,6,4,";
var actual = '';

function f() {
    var ss = [new String("abc"), new String("foobar"), new String("quux")];

    for (var i = 0; i < 12; ++i) {
        actual += ss[i%3].length + ',';
    }
}

f();

assertEq(actual, expected);


function g(s) {
    return new String(s).length;
}

assertEq(g("x"), 1); // Warm-up
assertEq(g("x"), 1); // Create IC
assertEq(g("x"), 1); // Test IC

function h(s) {
    var x = new String(s);
    for (var i = 0; i < 100; i++)
        x[i] = i;
    return x.length;
}

assertEq(h("x"), 1);
assertEq(h("x"), 1);
assertEq(h("x"), 1);