src/hotspot/cpu/aarch64/gc/shenandoah/c1/shenandoahBarrierSetC1_aarch64.cpp
changeset 58273 08a5148e7c4e
parent 58219 bc0648405d67
child 58679 9c3209ff7550
equal deleted inserted replaced
58272:e27564cd10e3 58273:08a5148e7c4e
     1 /*
     1 /*
     2  * Copyright (c) 2018, Red Hat, Inc. All rights reserved.
     2  * Copyright (c) 2018, 2019, Red Hat, Inc. All rights reserved.
     3  *
     3  *
     4  * This code is free software; you can redistribute it and/or modify it
     4  * This code is free software; you can redistribute it and/or modify it
     5  * under the terms of the GNU General Public License version 2 only, as
     5  * under the terms of the GNU General Public License version 2 only, as
     6  * published by the Free Software Foundation.
     6  * published by the Free Software Foundation.
     7  *
     7  *
    92 
    92 
    93   if (access.is_oop()) {
    93   if (access.is_oop()) {
    94     value_opr = storeval_barrier(access.gen(), value_opr, access.access_emit_info(), access.decorators());
    94     value_opr = storeval_barrier(access.gen(), value_opr, access.access_emit_info(), access.decorators());
    95   }
    95   }
    96 
    96 
    97   assert(type == T_INT || type == T_OBJECT || type == T_ARRAY LP64_ONLY( || type == T_LONG ), "unexpected type");
    97   assert(type == T_INT || is_reference_type(type) LP64_ONLY( || type == T_LONG ), "unexpected type");
    98   LIR_Opr tmp = gen->new_register(T_INT);
    98   LIR_Opr tmp = gen->new_register(T_INT);
    99   __ xchg(access.resolved_addr(), value_opr, result, tmp);
    99   __ xchg(access.resolved_addr(), value_opr, result, tmp);
   100 
   100 
   101   if (access.is_oop()) {
   101   if (access.is_oop()) {
   102     result = load_reference_barrier(access.gen(), result, LIR_OprFact::addressConst(0));
   102     result = load_reference_barrier(access.gen(), result, LIR_OprFact::addressConst(0));