Mercurial > hg > graal-jvmci-8
changeset 18879:5be321eab6ac
made ReplacementsImpl.snippetTemplateCache stable across VM executions to support replay compilation
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 19 Jan 2015 14:50:36 +0100 |
parents | ec7dcd210467 |
children | 5e85485a1b44 |
files | graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java |
diffstat | 1 files changed, 6 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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<String, AtomicReference<ClassReplacements>> classReplacements; private final Map<String, Class<?>[]> internalNameToSubstitutionClasses; - private final Map<Class<? extends SnippetTemplateCache>, 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<String, SnippetTemplateCache> 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 extends SnippetTemplateCache> T getSnippetTemplateCache(Class<T> templatesClass) { - SnippetTemplateCache ret = snippetTemplateCache.get(templatesClass); + SnippetTemplateCache ret = snippetTemplateCache.get(templatesClass.getName()); return templatesClass.cast(ret); } }