function store(y) {
  x = y;
}

function load() {
  return x.b;
}

var x = {a : 1};
var x1 = {a : 2};
var x2 = {a : 3};
var x3 = {a : 4};

store(x1);
%PrepareFunctionForOptimization(store);
store(x2);

x1.b = 1;

%OptimizeFunctionOnNextCall(store);
store(x2);

x.b = 1;

%PrepareFunctionForOptimization(load);
load();

%OptimizeFunctionOnNextCall(load);
load();

store(x3);

%DebugPrint(load());