src/hotspot/share/gc/shared/c1/modRefBarrierSetC1.cpp
changeset 51484 2730e629e32d
parent 50728 9375184cec98
equal deleted inserted replaced
51483:2d7bff7367c6 51484:2730e629e32d
    84 // This overrides the default to resolve the address into a register,
    84 // This overrides the default to resolve the address into a register,
    85 // assuming it will be used by a write barrier anyway.
    85 // assuming it will be used by a write barrier anyway.
    86 LIR_Opr ModRefBarrierSetC1::resolve_address(LIRAccess& access, bool resolve_in_register) {
    86 LIR_Opr ModRefBarrierSetC1::resolve_address(LIRAccess& access, bool resolve_in_register) {
    87   DecoratorSet decorators = access.decorators();
    87   DecoratorSet decorators = access.decorators();
    88   bool needs_patching = (decorators & C1_NEEDS_PATCHING) != 0;
    88   bool needs_patching = (decorators & C1_NEEDS_PATCHING) != 0;
    89   bool is_write = (decorators & C1_WRITE_ACCESS) != 0;
    89   bool is_write = (decorators & ACCESS_WRITE) != 0;
    90   bool is_array = (decorators & IS_ARRAY) != 0;
    90   bool is_array = (decorators & IS_ARRAY) != 0;
    91   bool on_anonymous = (decorators & ON_UNKNOWN_OOP_REF) != 0;
    91   bool on_anonymous = (decorators & ON_UNKNOWN_OOP_REF) != 0;
    92   bool precise = is_array || on_anonymous;
    92   bool precise = is_array || on_anonymous;
    93   resolve_in_register |= !needs_patching && is_write && access.is_oop() && precise;
    93   resolve_in_register |= !needs_patching && is_write && access.is_oop() && precise;
    94   return BarrierSetC1::resolve_address(access, resolve_in_register);
    94   return BarrierSetC1::resolve_address(access, resolve_in_register);