< prev index next >

src/share/vm/code/relocInfo.hpp

Print this page




 817 
 818   // some relocations can compute their own values
 819   virtual address  value();
 820 
 821   // all relocations are able to reassert their values
 822   virtual void set_value(address x);
 823 
 824   virtual void clear_inline_cache()              { }
 825 
 826   // This method assumes that all virtual/static (inline) caches are cleared (since for static_call_type and
 827   // ic_call_type is not always posisition dependent (depending on the state of the cache)). However, this is
 828   // probably a reasonable assumption, since empty caches simplifies code reloacation.
 829   virtual void fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) { }
 830 
 831   void print();
 832 };
 833 
 834 
 835 // certain inlines must be deferred until class Relocation is defined:
 836 
 837 inline RelocationHolder::RelocationHolder() {
 838   // initialize the vtbl, just to keep things type-safe
 839   new(*this) Relocation();
 840 }
 841 
 842 
 843 inline RelocationHolder::RelocationHolder(Relocation* r) {
 844   // wordwise copy from r (ok if it copies garbage after r)
 845   for (int i = 0; i < _relocbuf_size; i++) {
 846     _relocbuf[i] = ((void**)r)[i];
 847   }
 848 }
 849 
 850 
 851 relocInfo::relocType RelocationHolder::type() const {
 852   return reloc()->type();
 853 }
 854 
 855 // A DataRelocation always points at a memory or load-constant instruction..
 856 // It is absolute on most machines, and the constant is split on RISCs.
 857 // The specific subtypes are oop, external_word, and internal_word.




 817 
 818   // some relocations can compute their own values
 819   virtual address  value();
 820 
 821   // all relocations are able to reassert their values
 822   virtual void set_value(address x);
 823 
 824   virtual void clear_inline_cache()              { }
 825 
 826   // This method assumes that all virtual/static (inline) caches are cleared (since for static_call_type and
 827   // ic_call_type is not always posisition dependent (depending on the state of the cache)). However, this is
 828   // probably a reasonable assumption, since empty caches simplifies code reloacation.
 829   virtual void fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) { }
 830 
 831   void print();
 832 };
 833 
 834 
 835 // certain inlines must be deferred until class Relocation is defined:
 836 
 837 inline RelocationHolder::RelocationHolder() : _relocbuf() {
 838   // initialize the vtbl, just to keep things type-safe
 839   new(*this) Relocation();
 840 }
 841 
 842 
 843 inline RelocationHolder::RelocationHolder(Relocation* r) {
 844   // wordwise copy from r (ok if it copies garbage after r)
 845   for (int i = 0; i < _relocbuf_size; i++) {
 846     _relocbuf[i] = ((void**)r)[i];
 847   }
 848 }
 849 
 850 
 851 relocInfo::relocType RelocationHolder::type() const {
 852   return reloc()->type();
 853 }
 854 
 855 // A DataRelocation always points at a memory or load-constant instruction..
 856 // It is absolute on most machines, and the constant is split on RISCs.
 857 // The specific subtypes are oop, external_word, and internal_word.


< prev index next >