Mercurial > hg > graal-compiler
changeset 7691:014092acf009
fixed bootstrap performance issue that occurred because non-static final fields are no longer assumed constant
author | Christian Haeubl <haeubl@ssw.jku.at> |
---|---|
date | Mon, 04 Feb 2013 14:27:32 +0100 |
parents | afa802ff433c |
children | 301cbb131b5d |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Mon Feb 04 13:43:36 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Mon Feb 04 14:27:32 2013 +0100 @@ -27,9 +27,11 @@ import java.lang.reflect.*; import com.oracle.graal.api.meta.*; +import com.oracle.graal.debug.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.nodes.extended.*; import com.oracle.graal.phases.*; +import com.oracle.graal.snippets.*; /** * Represents a field in a HotSpot type. @@ -94,8 +96,10 @@ assert !Modifier.isStatic(flags); if (Modifier.isFinal(getModifiers())) { Constant value = readValue(receiver); - if (!value.isDefaultForKind()) { + if (assumeNonStaticFinalFieldsAsFinal(receiver.asObject().getClass()) || !value.isDefaultForKind()) { return value; + } else { + TTY.println("Non-static final field %s.%s=%s", holder, name, value.toString()); } } } @@ -120,6 +124,10 @@ return clazz == GraalOptions.class; } + private static boolean assumeNonStaticFinalFieldsAsFinal(Class<?> clazz) { + return clazz == SnippetCounter.class; + } + @Override public HotSpotResolvedObjectType getDeclaringClass() { return holder;