Skip to content

Commit daa4d7a

Browse files
gilles-duboscqjormundur00
authored andcommitted
Simplify computeEnclosingClass
1 parent e364b16 commit daa4d7a

File tree

1 file changed

+11
-16
lines changed
  • espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/vm

1 file changed

+11
-16
lines changed

espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso/vm/VM.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,35 +1082,30 @@ private static Klass computeEnclosingClass(ObjectKlass klass) {
10821082
if (innerClasses == null) {
10831083
return null;
10841084
}
1085-
10861085
RuntimeConstantPool pool = klass.getConstantPool();
10871086

1088-
boolean found = false;
1089-
Klass outerKlass = null;
1087+
// TODO(peterssen): Follow HotSpot implementation described below.
1088+
// Throws an exception if outer klass has not declared k as an inner klass
1089+
// We need evidence that each klass knows about the other, or else
1090+
// the system could allow a spoof of an inner class to gain access rights.
10901091

10911092
for (InnerClassesAttribute.Entry entry : innerClasses.entries()) {
10921093
if (entry.innerClassIndex != 0) {
10931094
Symbol<Name> innerDescriptor = pool.classAt(entry.innerClassIndex).getName(pool);
1094-
10951095
// Check decriptors/names before resolving.
10961096
if (innerDescriptor.equals(klass.getName())) {
10971097
Klass innerKlass = pool.resolvedKlassAt(klass, entry.innerClassIndex);
1098-
found = (innerKlass == klass);
1099-
if (found && entry.outerClassIndex != 0) {
1100-
outerKlass = pool.resolvedKlassAt(klass, entry.outerClassIndex);
1098+
if (innerKlass == klass) {
1099+
if (entry.outerClassIndex != 0) {
1100+
return pool.resolvedKlassAt(klass, entry.outerClassIndex);
1101+
} else {
1102+
return null;
1103+
}
11011104
}
11021105
}
11031106
}
1104-
if (found) {
1105-
break;
1106-
}
11071107
}
1108-
1109-
// TODO(peterssen): Follow HotSpot implementation described below.
1110-
// Throws an exception if outer klass has not declared k as an inner klass
1111-
// We need evidence that each klass knows about the other, or else
1112-
// the system could allow a spoof of an inner class to gain access rights.
1113-
return outerKlass;
1108+
return null;
11141109
}
11151110

11161111
@VmImpl(isJni = true)

0 commit comments

Comments
 (0)