# HG changeset patch # User Andreas Woess # Date 1416917337 -3600 # Node ID 97026ca2a86e513beaf80fb8a7cbffdc76f43f19 # Parent 3356ea5936725daac8f747cbcfa9f24201976fe2 Truffle: allow @CompilationFinal on static fields diff -r 3356ea593672 -r 97026ca2a86e graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java Wed Nov 26 00:53:50 2014 +0100 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java Tue Nov 25 13:08:57 2014 +0100 @@ -60,13 +60,17 @@ (fieldType.getKind() == Kind.Object && (field.getAnnotation(Child.class) != null || field.getAnnotation(Children.class) != null))) { JavaConstant constant = graalConstantReflection.readFieldValue(field, receiver); assert verifyFieldValue(field, constant); - if (constant.isNonNull() && fieldType.getKind() == Kind.Object && fieldType.getComponentType() != null && + if (constant.isNonNull() && fieldType.getKind() == Kind.Object && fieldType instanceof ResolvedJavaType && ((ResolvedJavaType) fieldType).isArray() && (field.getAnnotation(CompilationFinal.class) != null || field.getAnnotation(Children.class) != null)) { return graalConstantReflection.readStableFieldValue(field, receiver, true); } else { return graalConstantReflection.readFieldValue(field, receiver); } } + } else if (field.isStatic()) { + if (field.getAnnotation(CompilationFinal.class) != null) { + return graalConstantReflection.readStableFieldValue(field, receiver, true); + } } return graalConstantReflection.readConstantFieldValue(field, receiver); }