/* Recompilation while being processed by property ICs. */

var ga = 10;
var gb = 10;

Object.defineProperty(Object.prototype, "a", {
    set: function(a) { eval("ga = true;"); },
    get: function() { eval("gb = true;"); }
  });

function foo() {
  var x = {};
  x.a = 10;
  assertEq(ga + 1, 2);
}
foo();

function bar() {
  var x = {};
  var a = x.a;
  assertEq(gb + 1, 2);
}
bar();