Mercurial > hg > truffle
changeset 18506:97026ca2a86e
Truffle: allow @CompilationFinal on static fields
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Tue, 25 Nov 2014 13:08:57 +0100 |
parents | 3356ea593672 |
children | c2b45b536677 |
files | graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java |
diffstat | 1 files changed, 5 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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); }