# HG changeset patch # User Doug Simon # Date 1421675436 -3600 # Node ID 5be321eab6acae9fdc70493524850c2934767889 # Parent ec7dcd2104677e40a63dfbf9bf705168a44bda88 made ReplacementsImpl.snippetTemplateCache stable across VM executions to support replay compilation diff -r ec7dcd210467 -r 5be321eab6ac graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Mon Jan 19 14:46:55 2015 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Mon Jan 19 14:50:36 2015 +0100 @@ -196,7 +196,9 @@ private final Map> classReplacements; private final Map[]> internalNameToSubstitutionClasses; - private final Map, SnippetTemplateCache> snippetTemplateCache; + // This map is key'ed by a class name instead of a Class object so that + // it is stable across VM executions (in support of replay compilation). + private final Map snippetTemplateCache; public ReplacementsImpl(Providers providers, SnippetReflectionProvider snippetReflection, Assumptions assumptions, TargetDescription target) { this.providers = providers.copyWith(this); @@ -797,13 +799,13 @@ @Override public void registerSnippetTemplateCache(SnippetTemplateCache templates) { - assert snippetTemplateCache.get(templates.getClass()) == null; - snippetTemplateCache.put(templates.getClass(), templates); + assert snippetTemplateCache.get(templates.getClass().getName()) == null; + snippetTemplateCache.put(templates.getClass().getName(), templates); } @Override public T getSnippetTemplateCache(Class templatesClass) { - SnippetTemplateCache ret = snippetTemplateCache.get(templatesClass); + SnippetTemplateCache ret = snippetTemplateCache.get(templatesClass.getName()); return templatesClass.cast(ret); } }