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);
     }