Mercurial > hg > truffle
diff graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java @ 18401:e7ab82e7cc37
Move metaspace pointer handling to hotspot specific WordTypeRewriter.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Mon, 17 Nov 2014 17:25:38 +0100 |
parents | 91283d4a1218 |
children | 6dc4f0be9a70 |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java Mon Nov 17 14:59:54 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReplacementsImpl.java Mon Nov 17 17:25:38 2014 +0100 @@ -30,9 +30,11 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.hotspot.replacements.*; +import com.oracle.graal.hotspot.word.*; import com.oracle.graal.nodes.*; import com.oracle.graal.phases.util.*; import com.oracle.graal.replacements.*; +import com.oracle.graal.word.phases.*; /** * Filters certain method substitutions based on whether there is underlying hardware support for @@ -97,4 +99,23 @@ } return super.getMacroSubstitution(method); } + + @Override + protected GraphMaker createGraphMaker(ResolvedJavaMethod substitute, ResolvedJavaMethod original, FrameStateProcessing frameStateProcessing) { + return new HotSpotGraphMaker(this, substitute, original, frameStateProcessing); + } + + private static class HotSpotGraphMaker extends ReplacementsImpl.GraphMaker { + + protected HotSpotGraphMaker(ReplacementsImpl replacements, ResolvedJavaMethod substitute, ResolvedJavaMethod substitutedMethod, FrameStateProcessing frameStateProcessing) { + super(replacements, substitute, substitutedMethod, frameStateProcessing); + } + + @Override + protected void afterParsing(StructuredGraph graph) { + MetaAccessProvider metaAccess = replacements.providers.getMetaAccess(); + new WordTypeVerificationPhase(metaAccess, replacements.snippetReflection, replacements.target.wordKind).apply(graph); + new HotSpotWordTypeRewriterPhase(metaAccess, replacements.snippetReflection, replacements.target.wordKind).apply(graph); + } + } }