# HG changeset patch # User Doug Simon # Date 1368446244 -7200 # Node ID c5b1b4dcc0947d2835f9c5a58403bef8bfff208a # Parent d64083db3c118f837419642f99f0adcdda8dfaea create fake JavaMethod for non-snippet stubs so that -G:MethodFilter can be applied to them diff -r d64083db3c11 -r c5b1b4dcc094 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/RuntimeCallStub.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/RuntimeCallStub.java Mon May 13 13:51:59 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/RuntimeCallStub.java Mon May 13 13:57:24 2013 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.hotspot.stubs; +import static com.oracle.graal.api.meta.MetaUtil.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; import java.util.*; @@ -121,7 +122,31 @@ @Override protected Object debugScopeContext() { - return new DebugDumpScope(linkage.descriptor.getName()); + return new JavaMethod() { + + public Signature getSignature() { + Descriptor d = linkage.descriptor; + Class[] arguments = d.getArgumentTypes(); + JavaType[] parameters = new JavaType[arguments.length]; + for (int i = 0; i < arguments.length; i++) { + parameters[i] = runtime.lookupJavaType(arguments[i]); + } + return new HotSpotSignature(runtime.lookupJavaType(d.getResultType()), parameters); + } + + public String getName() { + return linkage.descriptor.getName(); + } + + public JavaType getDeclaringClass() { + return runtime.lookupJavaType(RuntimeCallStub.class); + } + + @Override + public String toString() { + return format("HotSpotStub<%n(%p)>", this); + } + }; } @Override @@ -164,9 +189,17 @@ ReturnNode ret = graph.add(new ReturnNode(linkage.descriptor.getResultType() == void.class ? null : call)); graph.addAfterFixed(hpeInvoke, ret); + if (Debug.isDumpEnabled()) { + Debug.dump(graph, "Initial stub graph"); + } + // Inline call to handlePendingException inline(hpeInvoke); + if (Debug.isDumpEnabled()) { + Debug.dump(graph, "Stub graph before compilation"); + } + return graph; }