src/hotspot/share/gc/shenandoah/c1/shenandoahBarrierSetC1.cpp
changeset 58693 3f35a9efd7de
parent 58219 bc0648405d67
child 58694 199ee1bf9b3b
equal deleted inserted replaced
58692:04946947ca79 58693:3f35a9efd7de
   213   DecoratorSet decorators = access.decorators();
   213   DecoratorSet decorators = access.decorators();
   214   if ((decorators & IN_NATIVE) != 0) {
   214   if ((decorators & IN_NATIVE) != 0) {
   215     assert(access.is_oop(), "IN_NATIVE access only for oop values");
   215     assert(access.is_oop(), "IN_NATIVE access only for oop values");
   216     BarrierSetC1::load_at_resolved(access, result);
   216     BarrierSetC1::load_at_resolved(access, result);
   217     LIR_OprList* args = new LIR_OprList();
   217     LIR_OprList* args = new LIR_OprList();
       
   218     LIR_Opr addr = access.resolved_addr();
       
   219     addr = ensure_in_register(gen, addr);
   218     args->append(result);
   220     args->append(result);
       
   221     args->append(addr);
   219     BasicTypeList signature;
   222     BasicTypeList signature;
   220     signature.append(T_OBJECT);
   223     signature.append(T_OBJECT);
       
   224     signature.append(T_ADDRESS);
   221     LIR_Opr call_result = gen->call_runtime(&signature, args,
   225     LIR_Opr call_result = gen->call_runtime(&signature, args,
   222                                             CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_native),
   226                                             CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_native),
   223                                             objectType, NULL);
   227                                             objectType, NULL);
   224     __ move(call_result, result);
   228     __ move(call_result, result);
   225     return;
   229     return;