1073 private: 1074 jint _method_index; // resolved method for a Java call 1075 1076 opt_virtual_call_Relocation(int method_index) { 1077 _method_index = method_index; 1078 } 1079 1080 friend class RelocIterator; 1081 opt_virtual_call_Relocation() {} 1082 1083 public: 1084 int method_index() { return _method_index; } 1085 Method* method_value(); 1086 1087 void pack_data_to(CodeSection* dest); 1088 void unpack_data(); 1089 1090 void clear_inline_cache(); 1091 1092 // find the matching static_stub 1093 address static_stub(); 1094 }; 1095 1096 1097 class static_call_Relocation : public CallRelocation { 1098 relocInfo::relocType type() { return relocInfo::static_call_type; } 1099 1100 public: 1101 static RelocationHolder spec(int method_index = 0) { 1102 RelocationHolder rh = newHolder(); 1103 new(rh) static_call_Relocation(method_index); 1104 return rh; 1105 } 1106 1107 private: 1108 jint _method_index; // resolved method for a Java call 1109 1110 static_call_Relocation(int method_index) { 1111 _method_index = method_index; 1112 } 1113 1114 friend class RelocIterator; 1115 static_call_Relocation() {} 1116 1117 public: 1118 int method_index() { return _method_index; } 1119 Method* method_value(); 1120 1121 void pack_data_to(CodeSection* dest); 1122 void unpack_data(); 1123 1124 void clear_inline_cache(); 1125 1126 // find the matching static_stub 1127 address static_stub(); 1128 }; 1129 1130 class static_stub_Relocation : public Relocation { 1131 relocInfo::relocType type() { return relocInfo::static_stub_type; } 1132 1133 public: 1134 static RelocationHolder spec(address static_call) { 1135 RelocationHolder rh = newHolder(); 1136 new(rh) static_stub_Relocation(static_call); 1137 return rh; 1138 } 1139 1140 private: 1141 address _static_call; // location of corresponding static_call 1142 1143 static_stub_Relocation(address static_call) { 1144 _static_call = static_call; 1145 } 1146 1147 friend class RelocIterator; 1148 static_stub_Relocation() { } 1149 1150 public: 1151 void clear_inline_cache(); 1152 1153 address static_call() { return _static_call; } 1154 1155 // data is packed as a scaled offset in "1_int" format: [c] or [Cc] 1156 void pack_data_to(CodeSection* dest); 1157 void unpack_data(); 1158 }; 1159 1160 class runtime_call_Relocation : public CallRelocation { 1161 relocInfo::relocType type() { return relocInfo::runtime_call_type; } 1162 1163 public: 1164 static RelocationHolder spec() { 1165 RelocationHolder rh = newHolder(); 1166 new(rh) runtime_call_Relocation(); 1167 return rh; 1168 } 1169 1170 private: 1171 friend class RelocIterator; 1172 runtime_call_Relocation() { } 1173 | 1073 private: 1074 jint _method_index; // resolved method for a Java call 1075 1076 opt_virtual_call_Relocation(int method_index) { 1077 _method_index = method_index; 1078 } 1079 1080 friend class RelocIterator; 1081 opt_virtual_call_Relocation() {} 1082 1083 public: 1084 int method_index() { return _method_index; } 1085 Method* method_value(); 1086 1087 void pack_data_to(CodeSection* dest); 1088 void unpack_data(); 1089 1090 void clear_inline_cache(); 1091 1092 // find the matching static_stub 1093 address static_stub(bool is_aot); 1094 }; 1095 1096 1097 class static_call_Relocation : public CallRelocation { 1098 relocInfo::relocType type() { return relocInfo::static_call_type; } 1099 1100 public: 1101 static RelocationHolder spec(int method_index = 0) { 1102 RelocationHolder rh = newHolder(); 1103 new(rh) static_call_Relocation(method_index); 1104 return rh; 1105 } 1106 1107 private: 1108 jint _method_index; // resolved method for a Java call 1109 1110 static_call_Relocation(int method_index) { 1111 _method_index = method_index; 1112 } 1113 1114 friend class RelocIterator; 1115 static_call_Relocation() {} 1116 1117 public: 1118 int method_index() { return _method_index; } 1119 Method* method_value(); 1120 1121 void pack_data_to(CodeSection* dest); 1122 void unpack_data(); 1123 1124 void clear_inline_cache(); 1125 1126 // find the matching static_stub 1127 address static_stub(bool is_aot); 1128 }; 1129 1130 class static_stub_Relocation : public Relocation { 1131 relocInfo::relocType type() { return relocInfo::static_stub_type; } 1132 1133 public: 1134 static RelocationHolder spec(address static_call, bool is_aot = false) { 1135 RelocationHolder rh = newHolder(); 1136 new(rh) static_stub_Relocation(static_call, is_aot); 1137 return rh; 1138 } 1139 1140 private: 1141 address _static_call; // location of corresponding static_call 1142 bool _is_aot; // trampoline to aot code 1143 1144 static_stub_Relocation(address static_call, bool is_aot) { 1145 _static_call = static_call; 1146 _is_aot = is_aot; 1147 } 1148 1149 friend class RelocIterator; 1150 static_stub_Relocation() { } 1151 1152 public: 1153 void clear_inline_cache(); 1154 1155 address static_call() { return _static_call; } 1156 bool is_aot() { return _is_aot; } 1157 1158 // data is packed as a scaled offset in "1_int" format: [c] or [Cc] 1159 void pack_data_to(CodeSection* dest); 1160 void unpack_data(); 1161 }; 1162 1163 class runtime_call_Relocation : public CallRelocation { 1164 relocInfo::relocType type() { return relocInfo::runtime_call_type; } 1165 1166 public: 1167 static RelocationHolder spec() { 1168 RelocationHolder rh = newHolder(); 1169 new(rh) runtime_call_Relocation(); 1170 return rh; 1171 } 1172 1173 private: 1174 friend class RelocIterator; 1175 runtime_call_Relocation() { } 1176 |