equal
deleted
inserted
replaced
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] |