< prev index next >

src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp

Print this page




 163     if (atomic) {
 164       __ push(rdx);
 165       __ push(rax);                 // Must update atomically with FIST
 166       __ fild_d(Address(rsp,0));    // So load into FPU register
 167       __ fistp_d(dst);              // and put into memory atomically
 168       __ addptr(rsp, 2*wordSize);
 169     } else {
 170       __ movptr(dst, rax);
 171       __ movptr(dst.plus_disp(wordSize), rdx);
 172     }
 173 #endif
 174     break;
 175   case T_FLOAT:
 176     assert(val == noreg, "only tos");
 177     __ store_float(dst);
 178     break;
 179   case T_DOUBLE:
 180     assert(val == noreg, "only tos");
 181     __ store_double(dst);
 182     break;



 183   default: Unimplemented();
 184   }
 185 }
 186 
 187 void BarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
 188                                                         Register obj, Register tmp, Label& slowpath) {
 189   __ clear_jweak_tag(obj);
 190   __ movptr(obj, Address(obj, 0));
 191 }


 163     if (atomic) {
 164       __ push(rdx);
 165       __ push(rax);                 // Must update atomically with FIST
 166       __ fild_d(Address(rsp,0));    // So load into FPU register
 167       __ fistp_d(dst);              // and put into memory atomically
 168       __ addptr(rsp, 2*wordSize);
 169     } else {
 170       __ movptr(dst, rax);
 171       __ movptr(dst.plus_disp(wordSize), rdx);
 172     }
 173 #endif
 174     break;
 175   case T_FLOAT:
 176     assert(val == noreg, "only tos");
 177     __ store_float(dst);
 178     break;
 179   case T_DOUBLE:
 180     assert(val == noreg, "only tos");
 181     __ store_double(dst);
 182     break;
 183   case T_ADDRESS:
 184     __ movptr(dst, val);
 185     break;
 186   default: Unimplemented();
 187   }
 188 }
 189 
 190 void BarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm, Register jni_env,
 191                                                         Register obj, Register tmp, Label& slowpath) {
 192   __ clear_jweak_tag(obj);
 193   __ movptr(obj, Address(obj, 0));
 194 }
< prev index next >