blob: 616e027f359c487c9ef0bac9856f0340a6bf2e1c [file] [log] [blame]
// Test that we can optimize stuff like line.target.x without
// creating an intermediate object.
if (!this.hasOwnProperty("TypedObject"))
quit();
setJitCompilerOption("ion.warmup.trigger", 30);
var PointType = new TypedObject.StructType({x: TypedObject.float64,
y: TypedObject.float64});
var LineType = new TypedObject.StructType({source: PointType,
target: PointType});
function manhattanDistance(line) {
return (Math.abs(line.target.x - line.source.x) +
Math.abs(line.target.y - line.source.y));
}
function foo() {
var N = 100;
var points = [];
var obj;
var s;
var fromAToB = new LineType({source: {x: 22, y: 44},
target: {x: 66, y: 88}});
for (var i = 0; i < N; i++) {
assertEq(manhattanDistance(fromAToB), 88);
}
}
foo();