-
Bug
-
Resolution: Fixed
-
P3
-
8u231, 9, 11, 14, 15
-
b26
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8247552 | 11.0.9-oracle | Christian Hagedorn | P3 | Resolved | Fixed | b01 |
JDK-8248209 | 11.0.9 | Christian Hagedorn | P3 | Resolved | Fixed | b01 |
Running the following code:
public class Test {
static final MethodHandle MH_m;
static {
try {
MH_m = lookup().findStatic(MyInterface.class, "m", MethodType.methodType(void.class));
} catch (ReflectiveOperationException e) {
throw new BootstrapMethodError(e);
}
}
public static void main(String[] args) throws Throwable {
for (int i = 0; i < 20_000; i++) {
payload();
}
}
static void payload() throws Throwable {
MH_m.invokeExact();
}
}
interface MyInterface {
static void m() {}
}
With `-Xbatch -XX:TieredStopAtLevel=3` fails with the assertion from the title in c1_GraphBuilder::profile_call.
The MethodHandle is significant here since known_holder in the assert is null with a regular call to a static interface method.
public class Test {
static final MethodHandle MH_m;
static {
try {
MH_m = lookup().findStatic(MyInterface.class, "m", MethodType.methodType(void.class));
} catch (ReflectiveOperationException e) {
throw new BootstrapMethodError(e);
}
}
public static void main(String[] args) throws Throwable {
for (int i = 0; i < 20_000; i++) {
payload();
}
}
static void payload() throws Throwable {
MH_m.invokeExact();
}
}
interface MyInterface {
static void m() {}
}
With `-Xbatch -XX:TieredStopAtLevel=3` fails with the assertion from the title in c1_GraphBuilder::profile_call.
The MethodHandle is significant here since known_holder in the assert is null with a regular call to a static interface method.
- backported by
-
JDK-8247552 C1 assert(known_holder == NULL || (known_holder->is_instance_klass() && (!known_holder->is_interface() || ((ciInstanceKlass*)known_holder)->has_nonstatic_concrete_methods())), "should be non-static concrete method");
-
- Resolved
-
-
JDK-8248209 C1 assert(known_holder == NULL || (known_holder->is_instance_klass() && (!known_holder->is_interface() || ((ciInstanceKlass*)known_holder)->has_nonstatic_concrete_methods())), "should be non-static concrete method");
-
- Resolved
-
- duplicates
-
JDK-8316951 assert(known_holder == NULL || ... ) failed: should be default method
-
- Closed
-