267 bool is_member = nest_host_k->has_nest_member(this, CHECK_NULL); 268 if (is_member) { 269 // save resolved nest-host value 270 _nest_host = nest_host_k; 271 272 if (log_is_enabled(Trace, class, nestmates)) { 273 ResourceMark rm(THREAD); 274 log_trace(class, nestmates)("Resolved nest-host of %s to %s", 275 this->external_name(), k->external_name()); 276 } 277 return nest_host_k; 278 } 279 } 280 error = "current type is not listed as a nest member"; 281 } else { 282 error = "types are in different packages"; 283 } 284 285 if (log_is_enabled(Trace, class, nestmates)) { 286 ResourceMark rm(THREAD); 287 log_trace(class, nestmates)("Type %s is not a nest member of resolved type %s: %s", 288 this->external_name(), 289 k->external_name(), 290 error); 291 } 292 293 if (validationException != NULL) { 294 ResourceMark rm(THREAD); 295 Exceptions::fthrow(THREAD_AND_LOCATION, 296 validationException, 297 "Type %s is not a nest member of %s: %s", 298 this->external_name(), 299 k->external_name(), 300 error 301 ); 302 } 303 return NULL; 304 } else { 305 if (log_is_enabled(Trace, class, nestmates)) { 306 ResourceMark rm(THREAD); 307 log_trace(class, nestmates)("Type %s is not part of a nest: setting nest-host to self", 308 this->external_name()); 309 } 310 // save resolved nest-host value 311 return (_nest_host = this); 312 } 313 } 314 return nest_host_k; 315 } 316 317 // check if 'this' and k are nestmates (same nest_host), or k is our nest_host, 318 // or we are k's nest_host - all of which is covered by comparing the two 319 // resolved_nest_hosts | 267 bool is_member = nest_host_k->has_nest_member(this, CHECK_NULL); 268 if (is_member) { 269 // save resolved nest-host value 270 _nest_host = nest_host_k; 271 272 if (log_is_enabled(Trace, class, nestmates)) { 273 ResourceMark rm(THREAD); 274 log_trace(class, nestmates)("Resolved nest-host of %s to %s", 275 this->external_name(), k->external_name()); 276 } 277 return nest_host_k; 278 } 279 } 280 error = "current type is not listed as a nest member"; 281 } else { 282 error = "types are in different packages"; 283 } 284 285 if (log_is_enabled(Trace, class, nestmates)) { 286 ResourceMark rm(THREAD); 287 log_trace(class, nestmates) 288 ("Type %s (loader: %s) is not a nest member of " 289 "resolved type %s (loader: %s): %s", 290 this->external_name(), 291 this->class_loader_data()->loader_name_and_id(), 292 k->external_name(), 293 k->class_loader_data()->loader_name_and_id(), 294 error); 295 } 296 297 if (validationException != NULL) { 298 ResourceMark rm(THREAD); 299 Exceptions::fthrow(THREAD_AND_LOCATION, 300 validationException, 301 "Type %s (loader: %s) is not a nest member of %s (loader: %s): %s", 302 this->external_name(), 303 this->class_loader_data()->loader_name_and_id(), 304 k->external_name(), 305 k->class_loader_data()->loader_name_and_id(), 306 error 307 ); 308 } 309 return NULL; 310 } else { 311 if (log_is_enabled(Trace, class, nestmates)) { 312 ResourceMark rm(THREAD); 313 log_trace(class, nestmates)("Type %s is not part of a nest: setting nest-host to self", 314 this->external_name()); 315 } 316 // save resolved nest-host value 317 return (_nest_host = this); 318 } 319 } 320 return nest_host_k; 321 } 322 323 // check if 'this' and k are nestmates (same nest_host), or k is our nest_host, 324 // or we are k's nest_host - all of which is covered by comparing the two 325 // resolved_nest_hosts |