8223437: Backout JDK-8219974 Restore static callsite resolution for the current class

Reviewed-by: jwilhelm, vlivanov
This commit is contained in:
David Holmes 2019-05-07 17:33:19 -04:00
parent 9e2784b24f
commit b0d52bcca1
4 changed files with 23 additions and 44 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -1376,18 +1376,12 @@ methodHandle SharedRuntime::resolve_sub_helper(JavaThread *thread,
}
#endif
// Do not patch call site for static call to another class
// when the class is not fully initialized.
if (invoke_code == Bytecodes::_invokestatic) {
if (!callee_method->method_holder()->is_initialized() &&
callee_method->method_holder() != caller_nm->method()->method_holder()) {
assert(callee_method->method_holder()->is_linked(), "must be");
return callee_method;
} else {
assert(callee_method->method_holder()->is_initialized() ||
callee_method->method_holder()->is_reentrant_initialization(thread),
"invalid class initialization state for invoke_static");
}
// Do not patch call site for static call when the class is not
// fully initialized.
if (invoke_code == Bytecodes::_invokestatic &&
!callee_method->method_holder()->is_initialized()) {
assert(callee_method->method_holder()->is_linked(), "must be");
return callee_method;
}
// JSR 292 key invariant: