-
Bug
-
Resolution: Fixed
-
P1
-
hs25, 8, 9
-
b109
-
b02
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8032176 | 8u20 | Vladimir Ivanov | P1 | Closed | Fixed | b01 |
JDK-8032424 | 8u5 | Vladimir Ivanov | P1 | Resolved | Fixed | b05 |
JDK-8031786 | 8 | Vladimir Ivanov | P1 | Closed | Fixed | b124 |
JDK-8060520 | 7u80 | Alexander Zuev | P1 | Resolved | Fixed | b03 |
JDK-8060371 | 7u76 | Alexander Zuev | P1 | Resolved | Fixed | b04 |
JDK-8047603 | 7u72 | Alexander Zuev | P1 | Resolved | Fixed | b01 |
JDK-8040084 | 7u71 | Alexander Zuev | P1 | Closed | Fixed | b01 |
Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface java.lang.CharSequence, but class was expected
at java.lang.invoke.LambdaForm$MH/707806938.convert(LambdaForm$MH:1000001)
at java.lang.invoke.LambdaForm$MH/317983781.invokeExact_MT(LambdaForm$MH:1000010)
at TestCharSequence.main(TestCharSequence.java:13)
static java.lang.Object convert(java.lang.Object, java.lang.Object);
flags: ACC_STATIC
Code:
stack=1, locals=2, args_size=2
0: aload_1
1: invokevirtual #16 // InterfaceMethod java/lang/CharSequence.toString:()Ljava/lang/String;
4: areturn
CharSequence is an interface, so invokevirtual fails to invoke toString method and throws ICCE.
The test case passes fine in jdk7.
Filed against hotspot/compiler (and not core-libs/java.lang.invoke), because initial analysis shows that VM returns wrong info when resolving corresponding MemberName:
jdk/src/share/classes/java/lang/invoke/MemberName.java:965
m = MethodHandleNatives.resolve(m, lookupClass);
before: m = java.lang.CharSequence.toString()String/invokeInterface
after: m = java.lang.CharSequence.toString()String/invokeVirtual
ILW = HLH = P2
I = H = regression against jdk7
L = L = very unlikely: (1) interface on boot class path; (2) overrides a method from Object; (3) MH type is converted; (4) MH invoked enough to be compiled into bytecode
W = H = none
- backported by
-
JDK-8032424 JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
-
- Resolved
-
-
JDK-8047603 JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
-
- Resolved
-
-
JDK-8060371 JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
-
- Resolved
-
-
JDK-8060520 JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
-
- Resolved
-
-
JDK-8031786 JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
-
- Closed
-
-
JDK-8032176 JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
-
- Closed
-
-
JDK-8040084 JSR292: IncompatibleClassChangeError in LambdaForm for CharSequence.toString() method handle type converter
-
- Closed
-
- relates to
-
JDK-8014013 CallInfo structure no longer accurately reports the result of a LinkResolver operation
-
- Resolved
-
-
JDK-8033465 JSR292: InvokerBytecodeGenerator: convert a check for REF_invokeVirtual on an interface into an assert
-
- Closed
-