equal
deleted
inserted
replaced
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); |