Mercurial > hg > graal-compiler
comparison src/cpu/sparc/vm/jvmciCodeInstaller_sparc.cpp @ 22195:a0d0ecbceeb4
[SPARC] Use rdpc for constructing constant table base
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Thu, 09 Jul 2015 15:58:01 +0200 |
parents | d9f3acb4a9a1 |
children | 339beb637508 |
comparison
equal
deleted
inserted
replaced
22194:b8c1c277a6ef | 22195:a0d0ecbceeb4 |
---|---|
74 if(_constants_size > 0) { | 74 if(_constants_size > 0) { |
75 _instructions->relocate(pc + NativeMovConstReg::sethi_offset, internal_word_Relocation::spec((address) dest)); | 75 _instructions->relocate(pc + NativeMovConstReg::sethi_offset, internal_word_Relocation::spec((address) dest)); |
76 _instructions->relocate(pc + NativeMovConstReg::add_offset, internal_word_Relocation::spec((address) dest)); | 76 _instructions->relocate(pc + NativeMovConstReg::add_offset, internal_word_Relocation::spec((address) dest)); |
77 } | 77 } |
78 TRACE_jvmci_3("relocating at %p (+%d) with destination at %d", pc, pc_offset, data_offset); | 78 TRACE_jvmci_3("relocating at %p (+%d) with destination at %d", pc, pc_offset, data_offset); |
79 } else { | 79 }else { |
80 int const_size = align_size_up(_constants->end()-_constants->start(), CodeEntryAlignment); | |
80 NativeMovRegMem* load = nativeMovRegMem_at(pc); | 81 NativeMovRegMem* load = nativeMovRegMem_at(pc); |
81 // The base pointer is set 4k off (see SPARCLoadConstantTableBaseOp) | 82 load->set_offset(- (const_size - data_offset)); |
82 load->set_offset(data_offset - (1<<12)); | |
83 TRACE_jvmci_3("relocating ld at %p (+%d) with destination at %d", pc, pc_offset, data_offset); | 83 TRACE_jvmci_3("relocating ld at %p (+%d) with destination at %d", pc, pc_offset, data_offset); |
84 } | 84 } |
85 } | 85 } |
86 | 86 |
87 void CodeInstaller::pd_relocate_CodeBlob(CodeBlob* cb, NativeInstruction* inst) { | 87 void CodeInstaller::pd_relocate_CodeBlob(CodeBlob* cb, NativeInstruction* inst) { |