JDK-8026066 : InvokeInterface needs to throw ICCE for static methods
Type:Bug
Component:hotspot
Sub-Component:runtime
Affected Version:hs25
Priority:P2
Status:Closed
Resolution:Fixed
Submitted:2013-10-08
Updated:2014-01-29
Resolved:2013-12-03
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
StaticMethodsTest.testInvokeIntf() should result in ICCE, right now it's throwing NSME
Comments
Release team: Approved for fixing
03-12-2013
SQE is OK with fixing this in JDK8, fix is needed to comply with the spec.
02-12-2013
Justification:
This is a bug in the default method handling needed to match the updated specification and correctly handle static methods in interfaces.
Risk is low, this is an error handling condition that javac should not be generating. We have specific sqe tests to test the failure condition, and
I have run
jck.vm, jck.lang, jtreg java.util, java.lang, lambda, langtools lambda, vm nsk quick, vm nsk mlvm and the vm defmeth tests
02-12-2013
SQE DefMethTest StaticMethodsTest.testOverrideDefault and testInvokeIntf were both changed to match the specfication to expect ICCE.
30-11-2013
11/14/15: Specification will be updated - interface method resolution should SKIP static methods in java.lang.Object, but not in
the interfacemethodref itself. JDK-8028741.
Karen has a prototype fix without the spec modification that might be worth starting with.
30-11-2013
Also check StaticMethodsTest.testOverrideDefault
31-10-2013
NSME is a subclass of ICCE.
Does the spec accept a subclass of ICCE?
Check: java.lang.Object static?