Eliminate redundant CHECKCAST instructions

CHECKCAST is redundant if the corresponding static type exactly matches the target type.
CHECKCAST instructions to-be-reified should not be eliminated.

KT-14811 Unnecessary checkcast generated in parameterized functions
KT-14963 unnecessary checkcast java/lang/Object
This commit is contained in:
Dmitry Petrov
2017-02-15 11:36:49 +03:00
parent ec403bfdbc
commit a087ea559f
8 changed files with 91 additions and 5 deletions

View File

@@ -17,5 +17,4 @@ public class MyFragment : Fragment() {
// 1 INVOKEVIRTUAL android/app/Activity\.getFragmentManager
// 1 INVOKEVIRTUAL android/app/Fragment\.getFragmentManager
// 2 GETSTATIC test/R\$id\.fragm
// 2 INVOKEVIRTUAL android/app/FragmentManager\.findFragmentById
// 2 CHECKCAST android/app/Fragment
// 2 INVOKEVIRTUAL android/app/FragmentManager\.findFragmentById

View File

@@ -28,5 +28,4 @@ public class MyFragment : Fragment() {
// 1 INVOKEVIRTUAL android/support/v4/app/FragmentActivity\.getSupportFragmentManager
// 1 INVOKEVIRTUAL android/support/v4/app/Fragment\.getFragmentManager
// 2 GETSTATIC test/R\$id\.fragm
// 2 INVOKEVIRTUAL android/support/v4/app/FragmentManager\.findFragmentById
// 2 CHECKCAST android/support/v4/app/Fragment
// 2 INVOKEVIRTUAL android/support/v4/app/FragmentManager\.findFragmentById