Optimize shadow frame initialization during invoke.

This CL improves the initialization of the new shadow frame (callee) from the
current shadow frame (caller) following invoke format (non-range or range).

This also removes the use of Instruction::GetArgs for non-range invoke when we
can go the fast route (no use of shorty). This avoids decoding arguments into
the stack from the instruction and then read these arguments from the stack. We
now do both at once. Note the slow path (doing runtime checks) is not modified
since it should be rarely used.

Performance improved by 3% in average on our benchmarks. Good news it is more
important on benchmark doing lots of invokes:
- Dhrystone: +11%
- DeltaBlue: +7%
- CaffeineMark Method: +16%

Bug: 10668955
Change-Id: I5c230777b2388a78dca7b3a88189e007c1c2bb7a
1 file changed