changeset 8642:1093255fd0d4

simplified registration of snippets
author Doug Simon <doug.simon@oracle.com>
date Fri, 05 Apr 2013 01:58:32 +0200
parents bea614953503
children 3d2c2b68fe93
files graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRuntime.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java
diffstat 3 files changed, 10 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRuntime.java	Fri Apr 05 01:53:50 2013 +0200
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRuntime.java	Fri Apr 05 01:58:32 2013 +0200
@@ -207,7 +207,6 @@
 
     @Override
     public void registerReplacements(Replacements replacements) {
-        replacements.registerSnippets(AMD64ConvertSnippets.class);
         convertSnippets = new AMD64ConvertSnippets.Templates(this, replacements, graalRuntime.getTarget());
         super.registerReplacements(replacements);
     }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java	Fri Apr 05 01:53:50 2013 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java	Fri Apr 05 01:58:32 2013 +0200
@@ -331,15 +331,6 @@
             replacements.registerSnippets(ObjectCloneSnippets.class);
         }
 
-        replacements.registerSnippets(CheckCastSnippets.class);
-        replacements.registerSnippets(InstanceOfSnippets.class);
-        replacements.registerSnippets(NewObjectSnippets.class);
-        replacements.registerSnippets(MonitorSnippets.class);
-
-        replacements.registerSnippets(NewInstanceStub.class);
-        replacements.registerSnippets(NewArrayStub.class);
-        replacements.registerSnippets(WriteBarrierSnippets.class);
-
         checkcastSnippets = new CheckCastSnippets.Templates(this, replacements, graalRuntime.getTarget());
         instanceofSnippets = new InstanceOfSnippets.Templates(this, replacements, graalRuntime.getTarget());
         newObjectSnippets = new NewObjectSnippets.Templates(this, replacements, graalRuntime.getTarget(), config.useTLAB);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Fri Apr 05 01:53:50 2013 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Fri Apr 05 01:58:32 2013 +0200
@@ -22,6 +22,8 @@
  */
 package com.oracle.graal.replacements;
 
+import static com.oracle.graal.api.meta.MetaUtil.*;
+
 import java.lang.reflect.*;
 import java.util.*;
 import java.util.Map.Entry;
@@ -40,7 +42,10 @@
 import com.oracle.graal.nodes.type.*;
 import com.oracle.graal.nodes.util.*;
 import com.oracle.graal.phases.common.*;
-import com.oracle.graal.replacements.Snippet.*;
+import com.oracle.graal.replacements.Snippet.ConstantParameter;
+import com.oracle.graal.replacements.Snippet.Parameter;
+import com.oracle.graal.replacements.Snippet.Varargs;
+import com.oracle.graal.replacements.Snippet.VarargsParameter;
 import com.oracle.graal.replacements.nodes.*;
 import com.oracle.graal.word.*;
 import com.oracle.graal.word.phases.*;
@@ -202,6 +207,7 @@
                 this.snippetsClass = snippetsClass;
             }
             this.cache = new Cache(runtime, replacements, target);
+            replacements.registerSnippets(this.snippetsClass);
         }
 
         protected ResolvedJavaMethod snippet(String name, Class<?>... parameterTypes) {
@@ -239,6 +245,9 @@
 
         // Copy snippet graph, replacing constant parameters with given arguments
         StructuredGraph snippetGraph = replacements.getSnippet(method);
+        if (snippetGraph == null) {
+            throw new GraalInternalError("Snippet has not been registered: %s", format("%H.%n(%p)", method));
+        }
         StructuredGraph snippetCopy = new StructuredGraph(snippetGraph.name, snippetGraph.method());
         IdentityHashMap<Node, Node> nodeReplacements = new IdentityHashMap<>();
         nodeReplacements.put(snippetGraph.start(), snippetCopy.start());