Various optimization fixes

Multiple problems surfaced when register promotion was enabled.  This
CL takes care of a few, but more remain.  The main problems dealt with
here are related to not having data types handy on invokes.  Solved by
intepreting the shorty of the target and updating the operand names
appropriately.

The other problem was a little nastier.  The codgen infrastructure wasn't
expecting wide results to overlap source operands (for example:

    add-long (v0,v1) = (v1,v2) + (v3,v4)

In the old world, the result pair would start with a fresh name
and temps.  In the new world, though, the register promotion mechanism
retains the mappings.  Not a difficult problem to solve, but I'll
need to very carefully examine the existing long op generators to
make sure they can handle overlaps.

Change-Id: I019607620f7a78cadc9e7c57f247806d0a68243d
10 files changed
tree: d5aae61fd7a08d6453e7c2eed6b50a9bd06742f8
  1. build/
  2. oat_process/
  3. oat_runtime/
  4. src/
  5. test/
  6. tools/
  7. Android.mk