# HG changeset patch # User Christian Haeubl # Date 1359984452 -3600 # Node ID 014092acf0090fd4d0ec5bb224a2a488c181b4f6 # Parent afa802ff433cabab8b8f6c052eced8560b7cc5a5 fixed bootstrap performance issue that occurred because non-static final fields are no longer assumed constant diff -r afa802ff433c -r 014092acf009 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java --- 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;