src/hotspot/share/code/relocInfo.hpp
changeset 52857 7e268f863ff0
parent 49392 2956d0ece7a9
child 53192 0042eb88035b
equal deleted inserted replaced
52856:5f3b9b633731 52857:7e268f863ff0
   812   virtual address  value();
   812   virtual address  value();
   813 
   813 
   814   // all relocations are able to reassert their values
   814   // all relocations are able to reassert their values
   815   virtual void set_value(address x);
   815   virtual void set_value(address x);
   816 
   816 
   817   virtual void clear_inline_cache()              { }
   817   virtual bool clear_inline_cache()              { return true; }
   818 
   818 
   819   // This method assumes that all virtual/static (inline) caches are cleared (since for static_call_type and
   819   // This method assumes that all virtual/static (inline) caches are cleared (since for static_call_type and
   820   // ic_call_type is not always posisition dependent (depending on the state of the cache)). However, this is
   820   // ic_call_type is not always posisition dependent (depending on the state of the cache)). However, this is
   821   // probably a reasonable assumption, since empty caches simplifies code reloacation.
   821   // probably a reasonable assumption, since empty caches simplifies code reloacation.
   822   virtual void fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) { }
   822   virtual void fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) { }
  1050   // When unpacking, a zero oop_limit is taken to refer to the end of the call.
  1050   // When unpacking, a zero oop_limit is taken to refer to the end of the call.
  1051   // (This has the effect of bringing in the call's delay slot on SPARC.)
  1051   // (This has the effect of bringing in the call's delay slot on SPARC.)
  1052   void pack_data_to(CodeSection* dest);
  1052   void pack_data_to(CodeSection* dest);
  1053   void unpack_data();
  1053   void unpack_data();
  1054 
  1054 
  1055   void clear_inline_cache();
  1055   bool clear_inline_cache();
  1056 };
  1056 };
  1057 
  1057 
  1058 
  1058 
  1059 class opt_virtual_call_Relocation : public CallRelocation {
  1059 class opt_virtual_call_Relocation : public CallRelocation {
  1060   relocInfo::relocType type() { return relocInfo::opt_virtual_call_type; }
  1060   relocInfo::relocType type() { return relocInfo::opt_virtual_call_type; }
  1081   Method* method_value();
  1081   Method* method_value();
  1082 
  1082 
  1083   void pack_data_to(CodeSection* dest);
  1083   void pack_data_to(CodeSection* dest);
  1084   void unpack_data();
  1084   void unpack_data();
  1085 
  1085 
  1086   void clear_inline_cache();
  1086   bool clear_inline_cache();
  1087 
  1087 
  1088   // find the matching static_stub
  1088   // find the matching static_stub
  1089   address static_stub(bool is_aot);
  1089   address static_stub(bool is_aot);
  1090 };
  1090 };
  1091 
  1091 
  1115   Method* method_value();
  1115   Method* method_value();
  1116 
  1116 
  1117   void pack_data_to(CodeSection* dest);
  1117   void pack_data_to(CodeSection* dest);
  1118   void unpack_data();
  1118   void unpack_data();
  1119 
  1119 
  1120   void clear_inline_cache();
  1120   bool clear_inline_cache();
  1121 
  1121 
  1122   // find the matching static_stub
  1122   // find the matching static_stub
  1123   address static_stub(bool is_aot);
  1123   address static_stub(bool is_aot);
  1124 };
  1124 };
  1125 
  1125 
  1144 
  1144 
  1145   friend class RelocIterator;
  1145   friend class RelocIterator;
  1146   static_stub_Relocation() { }
  1146   static_stub_Relocation() { }
  1147 
  1147 
  1148  public:
  1148  public:
  1149   void clear_inline_cache();
  1149   bool clear_inline_cache();
  1150 
  1150 
  1151   address static_call() { return _static_call; }
  1151   address static_call() { return _static_call; }
  1152   bool is_aot() { return _is_aot; }
  1152   bool is_aot() { return _is_aot; }
  1153 
  1153 
  1154   // data is packed as a scaled offset in "1_int" format:  [c] or [Cc]
  1154   // data is packed as a scaled offset in "1_int" format:  [c] or [Cc]