diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-12-10 11:04:26 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-12-10 11:11:57 +0100 |
commit | f0d913b51dbe1a098e813aa08197eef9c6cbf737 (patch) | |
tree | 59e8343f0411b9c676f0a94d1174f5132e71f092 /test/files/pos/t8062.flags | |
parent | 7e996c1b05902df0144709a37d9149252885495c (diff) | |
download | scala-f0d913b51dbe1a098e813aa08197eef9c6cbf737.tar.gz scala-f0d913b51dbe1a098e813aa08197eef9c6cbf737.tar.bz2 scala-f0d913b51dbe1a098e813aa08197eef9c6cbf737.zip |
SI-8062 Fix inliner cycle with recursion, separate compilation
ICodeReaders, which decompiles JVM bytecode to ICode, was not
setting the `recursive` attribute of `IMethod`. This meant that
the inliner got into a cycle, repeatedly inlining the recursive
call.
The method name `filter` was needed to trigger this as the inliner
heuristically treats that as a more attractive inlining candidate,
based on `isMonadicMethod`.
This commit:
- refactors the checking / setting of `virtual`
- adds this to ICodeReaders
- tests the case involving `invokevirtual`
I'm not sure how to setup a test that fails without the other changes
to `ICodeReader` (for invokestatic and invokespecial).
Diffstat (limited to 'test/files/pos/t8062.flags')
-rw-r--r-- | test/files/pos/t8062.flags | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/test/files/pos/t8062.flags b/test/files/pos/t8062.flags new file mode 100644 index 0000000000..49d036a887 --- /dev/null +++ b/test/files/pos/t8062.flags @@ -0,0 +1 @@ +-optimize |