x86-64: Code size improvement for MethodLoadKind::kDirectAddress.
Instead of movq(), use Load64BitValue() which uses MOVL
for 32-bit unsigned values. For pointers to low 2GiB,
this saves 2 bytes, for pointers to high 2GiB (of 32-bit
range) it saves 5 bytes.
Test: testrunner.py --host
Change-Id: I437be6e7486329da53674b051f48a0afc4b3a5a5
diff --git a/compiler/optimizing/code_generator_x86_64.cc b/compiler/optimizing/code_generator_x86_64.cc
index 644fcee..714215b 100644
--- a/compiler/optimizing/code_generator_x86_64.cc
+++ b/compiler/optimizing/code_generator_x86_64.cc
@@ -983,7 +983,7 @@
callee_method = invoke->GetLocations()->InAt(invoke->GetSpecialInputIndex());
break;
case HInvokeStaticOrDirect::MethodLoadKind::kDirectAddress:
- __ movq(temp.AsRegister<CpuRegister>(), Immediate(invoke->GetMethodAddress()));
+ Load64BitValue(temp.AsRegister<CpuRegister>(), invoke->GetMethodAddress());
break;
case HInvokeStaticOrDirect::MethodLoadKind::kDexCachePcRelative: {
__ movq(temp.AsRegister<CpuRegister>(),