# HG changeset patch # User Andreas Woess # Date 1428586553 -7200 # Node ID b7ec3020800e37aa0111b56c2113e6bc0de0a9cd # Parent 50a3be6223a71cb5de04c7e711cdf99f7d7c2474 Truffle: avoid redundant readFieldValue diff -r 50a3be6223a7 -r b7ec3020800e 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 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) {