48 lines
900 B
JavaScript
48 lines
900 B
JavaScript
description("Regression test for 150745");
|
|
|
|
// We should be able to ORS exit from an inlined tail callee of a getter. This test shouldn't crash.
|
|
|
|
"use strict";
|
|
|
|
class Test {
|
|
constructor(a, b)
|
|
{
|
|
this.a = a;
|
|
this.b = b;
|
|
this.callCount = 0;
|
|
}
|
|
|
|
get sum()
|
|
{
|
|
return this.doSum(1, 2);
|
|
}
|
|
|
|
doSum(dummy1, dummy2)
|
|
{
|
|
this.callCount++;
|
|
|
|
if (this.callCount == 49000)
|
|
this.dfgCompiled = true;
|
|
|
|
if (this.callCount == 199000)
|
|
this.ftlCompiled = true;
|
|
|
|
return this.a + this.b;
|
|
}
|
|
}
|
|
|
|
var testObj = new Test(40, 2);
|
|
|
|
function getSum(o)
|
|
{
|
|
return o.sum;
|
|
}
|
|
|
|
for (var i = 0; i < 500000; i++) {
|
|
var result = getSum(testObj);
|
|
if (result != 42)
|
|
testFailed("Expected 42 from \"sum\" getter, got " + result);
|
|
}
|
|
|
|
testPassed("Able to OSR exit from an inlined tail callee of a getter.");
|