michael@0: michael@0: x = [1,2,3]; michael@0: setObjectMetadata(x, {y:0}); michael@0: assertEq(getObjectMetadata(x).y, 0); michael@0: michael@0: setObjectMetadataCallback(true); michael@0: michael@0: function Foo() { michael@0: this.x = 0; michael@0: this.y = 1; michael@0: } michael@0: michael@0: function hello() { michael@0: function there() { michael@0: w = new Foo(); michael@0: x = [1,2,3]; michael@0: y = [2,3,5]; michael@0: z = {a:0,b:1}; michael@0: } michael@0: callee = there; michael@0: callee(); michael@0: } michael@0: hello(); michael@0: michael@0: var wc = getObjectMetadata(w).index; michael@0: var xc = getObjectMetadata(x).index; michael@0: var yc = getObjectMetadata(y).index; michael@0: var zc = getObjectMetadata(z).index; michael@0: michael@0: assertEq(xc > wc, true); michael@0: assertEq(yc > xc, true); michael@0: assertEq(zc > yc, true); michael@0: assertEq(getObjectMetadata(x).stack[0], callee); michael@0: assertEq(getObjectMetadata(x).stack[1], hello);