changeset 7674:ad6e224490d8

8146094: aarch32: exception handling in putfield corrupts dispatch register Summary: Use rscratch2 instead of rdispatch Reviewed-by: duke Contributed-by: triple.yang@linaro.org
author enevill
date Wed, 23 Dec 2015 12:21:32 +0000
parents 0d63f295c3c2
children f4a5655ece8a
files src/cpu/aarch32/vm/templateTable_aarch32.cpp
diffstat 1 files changed, 2 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/aarch32/vm/templateTable_aarch32.cpp	Wed Dec 30 09:24:57 2015 +0000
+++ b/src/cpu/aarch32/vm/templateTable_aarch32.cpp	Wed Dec 23 12:21:32 2015 +0000
@@ -2507,7 +2507,7 @@
   const Register cache = r2;
   const Register index = r3;
   const Register obj   = r14;
-  const Register off   = rdispatch; //pop_and_check_object
+  const Register off   = rscratch2; //pop_and_check_object
   const Register flags = r0;
   const Register bc    = r14; // uses same reg as obj, so don't mix them
 
@@ -2643,8 +2643,6 @@
   // It's really not worth bothering to check whether this field
   // really is volatile in the slow case.
   __ membar(MacroAssembler::LoadLoad | MacroAssembler::LoadStore);
-
-  __ get_dispatch();
 }
 
 void TemplateTable::getfield(int byte_no) {
@@ -2718,7 +2716,7 @@
   const Register cache = r2;
   const Register index = r0;
   const Register obj   = r2;
-  const Register off   = rdispatch;
+  const Register off   = rscratch2;
   const Register flags = r14;
   const Register bc    = r3;
 
@@ -2904,8 +2902,6 @@
     __ membar(MacroAssembler::StoreLoad);
     __ bind(notVolatile);
   }
-  //FIXME find a more elegant way!
-  __ get_dispatch();
 }
 
 void TemplateTable::putfield(int byte_no) {