Fix x86 art_quick_set64_instance quick entrypoint
art_quick_set64_instance accept ebx as a 4-th parameter.
At the same time it is used as a temporary for SETUP_REFS_ONLY_CALLEE_SAVE_FRAME.
We should preserve it and restore to pass the right value to artSet64InstanceFromCode.
Change-Id: Iac0a32583be1015e502ae0f8ff57c4b9c0301730
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
diff --git a/runtime/arch/x86/quick_entrypoints_x86.S b/runtime/arch/x86/quick_entrypoints_x86.S
index 69527ce..0109a7c 100644
--- a/runtime/arch/x86/quick_entrypoints_x86.S
+++ b/runtime/arch/x86/quick_entrypoints_x86.S
@@ -917,9 +917,10 @@
// Call artSet64InstanceFromCode with 4 word size arguments and the referrer.
DEFINE_FUNCTION art_quick_set64_instance
+ movd %ebx, %xmm0
SETUP_REFS_ONLY_CALLEE_SAVE_FRAME ebx, ebx // save ref containing registers for GC
+ movd %xmm0, %ebx
// Outgoing argument set up
- mov FRAME_SIZE_REFS_ONLY_CALLEE_SAVE(%esp), %ebx // get referrer
subl LITERAL(8), %esp // alignment padding
CFI_ADJUST_CFA_OFFSET(8)
pushl %fs:THREAD_SELF_OFFSET // pass Thread::Current()