ammarbinfaisal / sahl

a programming language with channels and coroutines/threads
MIT License
9 stars 1 forks source link

recursion in x86-64 backend #18

Closed ammarbinfaisal closed 8 months ago

ammarbinfaisal commented 1 year ago

Before https://github.com/abooishaaq/sahl/commit/4b152e79ac5ca539411ba552ce581bc8ed6bff94 fibonacci.sahl and factorial.sahl were segfaulting. Now, fibonacci works fine but factorial does something weird.

fun factorial(n: int) -> int {
    print(n)
    if n == 1 { return 1 }
    let fact_n_1 = factorial(n - 1)
    return n * fact_n_1
}

fun main() {
    print(factorial(5))
}

this outputs

5
4
3
2
1
240

but if we remove the print statement it outputs correctly!!

ammarbinfaisal commented 1 year ago

in x86_64

fun factorial(n: int) -> int {
    print(n)
    if n == 1 { return 1 }
    return n * factorial(n - 1)
}

fun main() {
    print(factorial(15))
}

outputs

15
1

gotta fix this

ammarbinfaisal commented 8 months ago

Not emitting x86 asm anymore