# HG changeset patch # User Josef Eisl # Date 1433248806 -7200 # Node ID e1ca9b57b63bd2c5acc424ee0a9341c68175deae # Parent 8580851e7605c950dbc07e474ecc3caaace9be1c BytecodeParser#lookupField: explicitly initialize interface if it is the declaring class of the field. diff -r 8580851e7605 -r e1ca9b57b63b graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java Tue Jun 02 14:48:05 2015 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java Tue Jun 02 14:40:06 2015 +0200 @@ -2861,6 +2861,14 @@ private JavaField lookupField(int cpi, int opcode) { maybeEagerlyResolve(cpi, opcode); JavaField result = constantPool.lookupField(cpi, opcode); + if (graphBuilderConfig.unresolvedIsError()) { + assert result instanceof ResolvedJavaField : "Not resolved: " + result; + ResolvedJavaType declaringClass = ((ResolvedJavaField) result).getDeclaringClass(); + if (!declaringClass.isInitialized()) { + assert declaringClass.isInterface() : "Declaring class not initialized but not an interface? " + declaringClass; + declaringClass.initialize(); + } + } assert !graphBuilderConfig.unresolvedIsError() || (result instanceof ResolvedJavaField && ((ResolvedJavaField) result).getDeclaringClass().isInitialized()) : result; return result; }