< prev index next >

src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp

Print this page
rev 58099 : 8239492: [x86] Turn MacroAssembler::verify_oop into macro recording file and line


 287   } else {
 288     // Address already in register
 289     ref_addr = stub->ref_addr()->as_address_ptr()->base()->as_pointer_register();
 290   }
 291 
 292   assert_different_registers(ref, ref_addr, noreg);
 293 
 294   // Save rax unless it is the result or tmp register
 295   if (ref != rax && tmp != rax) {
 296     __ push(rax);
 297   }
 298 
 299   // Setup arguments and call runtime stub
 300   __ subptr(rsp, 2 * BytesPerWord);
 301   ce->store_parameter(ref_addr, 1);
 302   ce->store_parameter(ref, 0);
 303   __ call(RuntimeAddress(stub->runtime_stub()));
 304   __ addptr(rsp, 2 * BytesPerWord);
 305 
 306   // Verify result
 307   __ verify_oop(rax, "Bad oop");
 308 
 309   // Move result into place
 310   if (ref != rax) {
 311     __ movptr(ref, rax);
 312   }
 313 
 314   // Restore rax unless it is the result or tmp register
 315   if (ref != rax && tmp != rax) {
 316     __ pop(rax);
 317   }
 318 
 319   // Stub exit
 320   __ jmp(*stub->continuation());
 321 }
 322 
 323 #undef __
 324 #define __ sasm->
 325 
 326 void ZBarrierSetAssembler::generate_c1_load_barrier_runtime_stub(StubAssembler* sasm,
 327                                                                  DecoratorSet decorators) const {




 287   } else {
 288     // Address already in register
 289     ref_addr = stub->ref_addr()->as_address_ptr()->base()->as_pointer_register();
 290   }
 291 
 292   assert_different_registers(ref, ref_addr, noreg);
 293 
 294   // Save rax unless it is the result or tmp register
 295   if (ref != rax && tmp != rax) {
 296     __ push(rax);
 297   }
 298 
 299   // Setup arguments and call runtime stub
 300   __ subptr(rsp, 2 * BytesPerWord);
 301   ce->store_parameter(ref_addr, 1);
 302   ce->store_parameter(ref, 0);
 303   __ call(RuntimeAddress(stub->runtime_stub()));
 304   __ addptr(rsp, 2 * BytesPerWord);
 305 
 306   // Verify result
 307   __ verify_oop(rax);
 308 
 309   // Move result into place
 310   if (ref != rax) {
 311     __ movptr(ref, rax);
 312   }
 313 
 314   // Restore rax unless it is the result or tmp register
 315   if (ref != rax && tmp != rax) {
 316     __ pop(rax);
 317   }
 318 
 319   // Stub exit
 320   __ jmp(*stub->continuation());
 321 }
 322 
 323 #undef __
 324 #define __ sasm->
 325 
 326 void ZBarrierSetAssembler::generate_c1_load_barrier_runtime_stub(StubAssembler* sasm,
 327                                                                  DecoratorSet decorators) const {


< prev index next >