view graal/com.oracle.graal.truffle.test/sl/TestInliningRecursive2.sl @ 19960:999430bcc941

Small fix for memory schedule verification. The begin node is not always the first node in the block if it is at the same time also the end node.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 19 Mar 2015 15:38:33 +0100
parents e66a6f8d63e3
children
line wrap: on
line source

/* 
 * Tests that indirect recursions are not inlined.
 */
function fib(a) { 
    if (a == 2 || a == 1) {
        return 1;
    }
    return call(fib, a-1) + call(fib, a-2) + call(void, 0);
}

function call(f, a) {
    return f(a);
}

function void(a) {
    return a;
}

function test() {
    i = 0;
    sum = 0;
    while (i < 100) {
        sum = sum + fib(7);
        i = i + 1;
    }
    return sum;
}

function main() {
    callUntilOptimized(test);
    assertTrue(isInlined(test, test, fib), "not inlined: test -> fib");
}