Revert^2 "Improve ArraySet codegen."

This reverts commit 0dda8c84938d6bb4ce5a1707e5e109ea187fc33d.

The original change had two issues that have been fixed.
First, for heap poisoning, the null branch skipped over the
reference poisoning instructions which copy and poison the
value, thus writing whatever was left in the register.
Second, the change erroneously assumed that the slow path
performed only the assignability check and bound the slow
path exit label before the actual array store, unnecessarily
re-doing the store.

Change-Id: I9f380efa12aa807b4f566a932dbc9dae824fb25a
Test: m test-art-host-gtest
Test: --host --optimizing
Test: aosp_taimen-userdebug boots.
Test: --target --optimizing
Test: Repeat the above with
Bug: 32489401
4 files changed