[Tailcall] Fix virtual generic methods that F# tests uses. (#7524)
commitb8fdce6c0532392eadb9d14060fe5c798aab00b3
authorjaykrell <jay.krell@cornell.edu>
Fri, 23 Mar 2018 13:11:41 +0000 (23 06:11 -0700)
committerGitHub <noreply@github.com>
Fri, 23 Mar 2018 13:11:41 +0000 (23 06:11 -0700)
tree3582f3aeccb791611c480eca8e70cd826115617d
parent066ce338255e0abb06b20eb3fa3526a4ccd35ab5
[Tailcall] Fix virtual generic methods that F# tests uses. (#7524)

* [Tailcall] Add but do not use the F# tailcall test suite.

* [Tailcall] Compute inst_tailcall much earlier, it is cheap, and it will be used more and earlier.

* [Tailcall] Compute supported_tail_call and tail_call earlier.

* [Tailcall] Fix virtual generic methods that F# test TailCallLoopGenericClassAndMethodAbstractClass<byte>.Method3<byte> uses.
There is a general problem of customized code paths missing pieces.
This fixes just part of it.

* [Tailcall] Use common code for removing ret after tailcall, and not handling return value.

* [Tailcall] Cleanup.

* [Tailcall] Short circuit looking at parameters for has_vtargs.

* [Tailcall] Tailcalls presumably do not need sequence points, or anything, after them.

* [Tailcall] Fewer labels, more booleans, move existing label up, with additional booleans
 controlling its behavior -- intent is to tease one altered behavior (tailcall of
 virtual generic) and one existing and one new sharing of common code (remove_ret).
 Longer term might have more tailcall handling.

* [Tailcall] F# tests closer to original.

* [Tailcall] Add the F# tests in blob form.
comment out the two failing tests
fsharpc --standalone --optimize- fsharp.fs
monolinker fsharp.exe to trim a little
change resource-using code to use constant strings

* [Tailcall] CI fails roughly where local passes.

* [Tailcall] Merge fsharp.fs into fshar.il as a comment.

* [Tailcall] Cleanup, remove unused labels, etc.

* [Tailcall] Cleanup test code some.

* [Tailcall] Cleanup.

* [Tailcall] Try harder to disable fsharp for AOT due to CI failures.
mono/mini/method-to-ir.c
mono/tests/Makefile.am
mono/tests/tailcall/fsharp.il [new file with mode: 0644]