Clean up InstanceOf/CheckCast.

Avoid read barriers for boot image class InstanceOf. Boot
image classes are non-moveable, so comparing them against
from-space and to-space reference yields the same result.

Change the notion of a "fatal" type check slow path to mean
that the runtime call shall not return by normal path, i.e.
"fatal" now includes certainly throwing in a try-block. This
avoids unnecessary code to restore registers and jump back.
For boot image classes the CheckCast comparisons do not need
read barriers (for the same reason as for InstanceOf), so we
shall not have any false negatives and can treat the check's
slow paths as final in the same cases as in non-CC configs.

Boot image size for aosp_taimen-userdebug in AOSP master:
  - before:
    arm boot*.oat: 37075460
    arm64 boot*.oat: 43431768
  - after:
    arm boot*.oat: 36894292 (-177KiB, -0.5%)
    arm64 boot*.oat: 43201256 (-225KiB, -0.5%)

Also remove some obsolete helpers from CodeGenerator.

Test: Additional test in 603-checker-instanceof.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Test: Pixel 2 XL boots.
Test: testrunner.py --target --optimizing
Bug: 12687968
Change-Id: Ib1381084e46a10e70320dcc618f0502ad725f0b8
8 files changed