// Try to test that we handle shape regeneration correctly.
// This is a fragile test, but as of this writing, on dmandelin's
// windows box, we have the same shape number with different
// logical shapes in the two assertEq lines.

var o;
var p;
var zz;
var o2;

function f(x) {
  return x.a;
}

gczeal(1);
gc();

zz = { q: 11 };
o = { a: 77, b: 88 };
o2 = { c: 11 };
p = { b: 99, a: 11 };

//print('s ' + shapeOf(zz) + ' ' + shapeOf(o) + ' ' + shapeOf(o2) + ' ' + shapeOf(p));

assertEq(f(o), 77);

o = undefined;

gczeal(1);
gc();
//print('s ' + 'x' + ' ' + shapeOf(p));

assertEq(f(p), 11);