[Mono-bugs] [Bug 476785] Tail call support in F#

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Nov 16 17:14:45 EST 2010


https://bugzilla.novell.com/show_bug.cgi?id=476785

https://bugzilla.novell.com/show_bug.cgi?id=476785#c5


Zoltan Varga <vargaz at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vargaz at gmail.com

--- Comment #5 from Zoltan Varga <vargaz at gmail.com> 2010-11-16 22:14:44 UTC ---
We now run most of these tests on amd64 at least, the one which still fails is
this one:

// Interesting parameter types (large stack frame)
// Making mutually recurisve to ensure the .tail call
let rec mutualTail2IsOdd a b c d e f g h i x = 
    match x with
    | 1 -> (true, a, b, c)
    | n -> mutualTail2IsEven a b c d e f g h i 0L 0L 0L 0L (x - 1)
and mutualTail2IsEven a b c d e f g h i j k l m x =
    match x with
    | 1 -> (false, a, b, c)
    | 0 -> (true,  a, b, c)
    | n -> mutualTail2IsOdd a b c d e f g h i (x - 1)

RunTest "mutualTail2IsOdd"  (mutualTail2IsOdd  0.0M [| 1 .. 10 |] "str" 0L 0L
0L 0L 0L 0L HugeInt)             (false, 0.0M, [| 1 .. 10 |], "str")
RunTest "mutualTail2IsEven" (mutualTail2IsEven 0.0M [| 1 .. 10 |] "str" 0L 0L
0L 0L 0L 0L 0L 0L 0L 0L HugeInt) (true,  0.0M, [| 1 .. 10 |], "str")

Notice that the called function has more parameters than the caller, which
makes it kinda hard to support this, since the callee's parameters cannot be
stored in the callers parameter area.

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list