Mercurial > hg > graal-jvmci-8
changeset 22407:708a95bb443c
All SPARC float registers can be addressed in 4 byte portions; hence don't add 4 bytes to pointer pointing to a Narrow Oop
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Thu, 06 Aug 2015 15:50:18 +0200 |
parents | 2117e8883f28 |
children | b1c2b695554b |
files | src/share/vm/compiler/oopMap.cpp |
diffstat | 1 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/compiler/oopMap.cpp Thu Aug 06 15:12:38 2015 +0200 +++ b/src/share/vm/compiler/oopMap.cpp Thu Aug 06 15:50:18 2015 +0200 @@ -36,6 +36,9 @@ #ifdef COMPILER1 #include "c1/c1_Defs.hpp" #endif +#ifdef SPARC +#include "vmreg_sparc.inline.hpp" +#endif // OopMapStream @@ -445,7 +448,9 @@ } else if ( omv.type() == OopMapValue::narrowoop_value ) { narrowOop *nl = (narrowOop*)loc; #ifndef VM_LITTLE_ENDIAN - if (!omv.reg()->is_stack()) { + VMReg vmReg = omv.reg(); + // Don't do this on SPARC float registers as they can be individually addressed + if (!vmReg->is_stack() SPARC_ONLY(&& !vmReg->is_FloatRegister())) { // compressed oops in registers only take up 4 bytes of an // 8 byte register but they are in the wrong part of the // word so adjust loc to point at the right place.