20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 * |
22 * |
23 */ |
23 */ |
24 |
24 |
|
25 #ifndef SHARE_VM_CODE_RELOCINFO_HPP |
|
26 #define SHARE_VM_CODE_RELOCINFO_HPP |
|
27 |
|
28 #include "memory/allocation.hpp" |
|
29 #include "utilities/top.hpp" |
|
30 |
25 // Types in this file: |
31 // Types in this file: |
26 // relocInfo |
32 // relocInfo |
27 // One element of an array of halfwords encoding compressed relocations. |
33 // One element of an array of halfwords encoding compressed relocations. |
28 // Also, the source of relocation types (relocInfo::oop_type, ...). |
34 // Also, the source of relocation types (relocInfo::oop_type, ...). |
29 // Relocation |
35 // Relocation |
413 // Both methods takes old_type, so it is able to performe sanity checks on the information removed. |
419 // Both methods takes old_type, so it is able to performe sanity checks on the information removed. |
414 static void change_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type, relocType new_type); |
420 static void change_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type, relocType new_type); |
415 static void remove_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type); |
421 static void remove_reloc_info_for_address(RelocIterator *itr, address pc, relocType old_type); |
416 |
422 |
417 // Machine dependent stuff |
423 // Machine dependent stuff |
418 #include "incls/_relocInfo_pd.hpp.incl" |
424 #ifdef TARGET_ARCH_x86 |
|
425 # include "relocInfo_x86.hpp" |
|
426 #endif |
|
427 #ifdef TARGET_ARCH_sparc |
|
428 # include "relocInfo_sparc.hpp" |
|
429 #endif |
|
430 #ifdef TARGET_ARCH_zero |
|
431 # include "relocInfo_zero.hpp" |
|
432 #endif |
|
433 |
419 |
434 |
420 protected: |
435 protected: |
421 // Derived constant, based on format_width which is PD: |
436 // Derived constant, based on format_width which is PD: |
422 enum { |
437 enum { |
423 offset_width = nontype_width - format_width, |
438 offset_width = nontype_width - format_width, |
1323 PatchingRelocIterator(nmethod* nm, address begin = NULL, address limit = NULL) |
1338 PatchingRelocIterator(nmethod* nm, address begin = NULL, address limit = NULL) |
1324 : RelocIterator(nm, begin, limit) { prepass(); } |
1339 : RelocIterator(nm, begin, limit) { prepass(); } |
1325 |
1340 |
1326 ~PatchingRelocIterator() { postpass(); } |
1341 ~PatchingRelocIterator() { postpass(); } |
1327 }; |
1342 }; |
|
1343 |
|
1344 #endif // SHARE_VM_CODE_RELOCINFO_HPP |