changeset 20841:b7ec3020800e

Truffle: avoid redundant readFieldValue
author Andreas Woess <andreas.woess@oracle.com>
date Thu, 09 Apr 2015 15:35:53 +0200
parents 50a3be6223a7
children 9ea32f3fc8ce
files graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java	Thu Apr 09 15:12:23 2015 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleConstantReflectionProvider.java	Thu Apr 09 15:35:53 2015 +0200
@@ -58,14 +58,15 @@
             JavaType fieldType = field.getType();
             if (field.isFinal() || field.getAnnotation(CompilationFinal.class) != null ||
                             (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 instanceof ResolvedJavaType && ((ResolvedJavaType) fieldType).isArray() &&
+                final JavaConstant constant;
+                if (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);
+                    constant = graalConstantReflection.readStableFieldValue(field, receiver, true);
                 } else {
-                    return graalConstantReflection.readFieldValue(field, receiver);
+                    constant = graalConstantReflection.readFieldValue(field, receiver);
                 }
+                assert verifyFieldValue(field, constant);
+                return constant;
             }
         } else if (field.isStatic()) {
             if (field.getAnnotation(CompilationFinal.class) != null) {