changeset 7314:4b2830dcf178

8071818: Incorrect addressing mode used for ldf in SPARC assembler Summary: Update MacroAssembler::ldf to select addressing mode depending on Address parameter. Reviewed-by: kvn, dlong
author zmajo
date Fri, 30 Jan 2015 10:40:08 +0100
parents 80ce7fc26d44
children 35c7330b68e2
files src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp	Mon Feb 16 07:19:22 2015 -0800
+++ b/src/cpu/sparc/vm/macroAssembler_sparc.inline.hpp	Fri Jan 30 10:40:08 2015 +0100
@@ -630,7 +630,12 @@
 
 inline void MacroAssembler::ldf(FloatRegisterImpl::Width w, const Address& a, FloatRegister d, int offset) {
   relocate(a.rspec(offset));
-  ldf(w, a.base(), a.disp() + offset, d);
+  if (a.has_index()) {
+    assert(offset == 0, "");
+    ldf(w, a.base(), a.index(), d);
+  } else {
+    ldf(w, a.base(), a.disp() + offset, d);
+  }
 }
 
 // returns if membar generates anything, obviously this code should mirror