3939#include " classfile/vmSymbols.hpp"
4040#include " code/vmreg.hpp"
4141#include " vmreg_x86.inline.hpp"
42+ #if INCLUDE_ZGC
43+ #include " gc/z/zBarrierSetAssembler.hpp"
44+ #endif
4245
4346jint CodeInstaller::pd_next_offset (NativeInstruction* inst, jint pc_offset, JVMCI_TRAPS) {
4447 if (inst->is_call () || inst->is_jump ()) {
@@ -197,7 +200,7 @@ void CodeInstaller::pd_relocate_JavaMethod(CodeBuffer &, methodHandle& method, j
197200 }
198201}
199202
200- void CodeInstaller::pd_relocate_poll (address pc, jint mark, JVMCI_TRAPS ) {
203+ bool CodeInstaller::pd_relocate (address pc, jint mark) {
201204 switch (mark) {
202205 case POLL_NEAR:
203206 case POLL_FAR:
@@ -206,15 +209,35 @@ void CodeInstaller::pd_relocate_poll(address pc, jint mark, JVMCI_TRAPS) {
206209 // so that poll_Relocation::fix_relocation_after_move does the right
207210 // thing (i.e. ignores this relocation record)
208211 _instructions->relocate (pc, relocInfo::poll_type, Assembler::imm_operand);
209- break ;
212+ return true ;
210213 case POLL_RETURN_NEAR:
211214 case POLL_RETURN_FAR:
212215 // see comment above for POLL_FAR
213216 _instructions->relocate (pc, relocInfo::poll_return_type, Assembler::imm_operand);
214- break ;
217+ return true ;
218+ case Z_BARRIER_RELOCATION_FORMAT_LOAD_GOOD_BEFORE_SHL:
219+ _instructions->relocate (pc, barrier_Relocation::spec (), ZBarrierRelocationFormatLoadGoodBeforeShl);
220+ return true ;
221+ case Z_BARRIER_RELOCATION_FORMAT_LOAD_BAD_AFTER_TEST:
222+ _instructions->relocate (pc, barrier_Relocation::spec (), ZBarrierRelocationFormatLoadBadAfterTest);
223+ return true ;
224+ case Z_BARRIER_RELOCATION_FORMAT_MARK_BAD_AFTER_TEST:
225+ _instructions->relocate (pc, barrier_Relocation::spec (), ZBarrierRelocationFormatMarkBadAfterTest);
226+ return true ;
227+ case Z_BARRIER_RELOCATION_FORMAT_STORE_GOOD_AFTER_CMP:
228+ _instructions->relocate (pc, barrier_Relocation::spec (), ZBarrierRelocationFormatStoreGoodAfterCmp);
229+ return true ;
230+ case Z_BARRIER_RELOCATION_FORMAT_STORE_BAD_AFTER_TEST:
231+ _instructions->relocate (pc, barrier_Relocation::spec (), ZBarrierRelocationFormatStoreBadAfterTest);
232+ return true ;
233+ case Z_BARRIER_RELOCATION_FORMAT_STORE_GOOD_AFTER_OR:
234+ _instructions->relocate (pc, barrier_Relocation::spec (), ZBarrierRelocationFormatStoreGoodAfterOr);
235+ return true ;
236+ case Z_BARRIER_RELOCATION_FORMAT_STORE_GOOD_AFTER_MOV:
237+ _instructions->relocate (pc, barrier_Relocation::spec (), ZBarrierRelocationFormatStoreGoodAfterMov);
238+ return true ;
215239 default :
216- JVMCI_ERROR (" invalid mark value: %d" , mark);
217- break ;
240+ return false ;
218241 }
219242}
220243
0 commit comments