< prev index next >

src/cpu/aarch64/vm/c1_CodeStubs_aarch64.cpp

Print this page
rev 13551 : imported patch gcinterface-aarch64-5.patch


 333   if (ce->compilation()->bailed_out()) {
 334     return; // CodeCache is full
 335   }
 336   Address resolve(SharedRuntime::get_resolve_static_call_stub(),
 337                   relocInfo::static_call_type);
 338   address call = __ trampoline_call(resolve);
 339   if (call == NULL) {
 340     ce->bailout("trampoline stub overflow");
 341     return;
 342   }
 343   ce->add_call_info_here(info());
 344 
 345 #ifndef PRODUCT
 346   __ lea(rscratch2, ExternalAddress((address)&Runtime1::_arraycopy_slowcase_cnt));
 347   __ incrementw(Address(rscratch2));
 348 #endif
 349 
 350   __ b(_continuation);
 351 }
 352 
 353 
 354 /////////////////////////////////////////////////////////////////////////////
 355 #if INCLUDE_ALL_GCS
 356 
 357 void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
 358   // At this point we know that marking is in progress.
 359   // If do_load() is true then we have to emit the
 360   // load of the previous value; otherwise it has already
 361   // been loaded into _pre_val.
 362 
 363   __ bind(_entry);
 364   assert(pre_val()->is_register(), "Precondition.");
 365 
 366   Register pre_val_reg = pre_val()->as_register();
 367 
 368   if (do_load()) {
 369     ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false /*wide*/, false /*unaligned*/);
 370   }
 371   __ cbz(pre_val_reg, _continuation);
 372   ce->store_parameter(pre_val()->as_register(), 0);
 373   __ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_pre_barrier_slow_id)));
 374   __ b(_continuation);
 375 }
 376 
 377 void G1PostBarrierStub::emit_code(LIR_Assembler* ce) {
 378   __ bind(_entry);
 379   assert(addr()->is_register(), "Precondition.");
 380   assert(new_val()->is_register(), "Precondition.");
 381   Register new_val_reg = new_val()->as_register();
 382   __ cbz(new_val_reg, _continuation);
 383   ce->store_parameter(addr()->as_pointer_register(), 0);
 384   __ far_call(RuntimeAddress(Runtime1::entry_for(Runtime1::g1_post_barrier_slow_id)));
 385   __ b(_continuation);
 386 }
 387 
 388 #endif // INCLUDE_ALL_GCS
 389 /////////////////////////////////////////////////////////////////////////////
 390 
 391 #undef __


 333   if (ce->compilation()->bailed_out()) {
 334     return; // CodeCache is full
 335   }
 336   Address resolve(SharedRuntime::get_resolve_static_call_stub(),
 337                   relocInfo::static_call_type);
 338   address call = __ trampoline_call(resolve);
 339   if (call == NULL) {
 340     ce->bailout("trampoline stub overflow");
 341     return;
 342   }
 343   ce->add_call_info_here(info());
 344 
 345 #ifndef PRODUCT
 346   __ lea(rscratch2, ExternalAddress((address)&Runtime1::_arraycopy_slowcase_cnt));
 347   __ incrementw(Address(rscratch2));
 348 #endif
 349 
 350   __ b(_continuation);
 351 }
 352 






































 353 #undef __
< prev index next >