[hotspot]The VM support of static and private interface method
bitter_fox
bitterfoxc at gmail.com
Thu Jan 10 22:35:56 PST 2013
Hi,
I have a question about the VM support of static and private interface
method.
The compiler has the support of static and private interface method from
Dec. 3 and Dec. 17.
And a several people said that there is no VM support.
But I found a commit[1] for hotspot which supports static and private
interface method. However it was overridden by merging[2].
Is this merging correct?
Regards,
bitter_fox
[1]: hg: lambda/lambda/hotspot: 2 new changesets
http://mail.openjdk.java.net/pipermail/lambda-dev/2012-October/006225.html
Changeset: 9b8772388190
Author: kamg
Date: 2012-10-19 17:23 -0400
URL: http://hg.openjdk.java.net/lambda/lambda/hotspot/rev/9b8772388190
Summary: Accept private and state methods in interfaces
! src/share/vm/classfile/classFileParser.cpp
@@ -4334,10 +4334,11 @@
bool is_illegal = false;
if (is_interface) {
- if (!is_public || is_static || is_final || is_native ||
- ((is_synchronized || is_strict) && major_gte_15 &&
- (!major_gte_8 || is_abstract)) ||
- (!major_gte_8 && !is_abstract)) {
+ if (!is_public && !(is_private && major_gte_8) ||
+ (is_static && !major_gte_8) ||
+ is_final || is_native ||
+ (!is_abstract && !major_gte_8) ||
+ (is_synchronized || is_strict) && major_gte_15 && is_abstract) {
is_illegal = true;
}
} else { // not interface
[2]: hg: lambda/lambda/hotspot: 130 new changesets
http://mail.openjdk.java.net/pipermail/lambda-dev/2012-December/006987.html
Changeset: a35a1dd6cd6a
Author: mduigou
Date: 2012-11-20 12:21 -0800
URL: http://hg.openjdk.java.net/lambda/lambda/hotspot/rev/a35a1dd6cd6a
Merge
! src/share/vm/classfile/classFileParser.cpp
@@ -4350,11 +4357,10 @@
bool is_illegal = false;
if (is_interface) {
- if (!is_public && !(is_private && major_gte_8) ||
- (is_static && !major_gte_8) ||
- is_final || is_native ||
- (!is_abstract && !major_gte_8) ||
- (is_synchronized || is_strict) && major_gte_15 && is_abstract) {
+ if (!is_public || is_static || is_final || is_native ||
+ ((is_synchronized || is_strict) && major_gte_15 &&
+ (!major_gte_8 || is_abstract)) ||
+ (!major_gte_8 && !is_abstract)) {
is_illegal = true;
}
} else { // not interface
More information about the lambda-dev
mailing list