Mercurial > hg > truffle
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) {