# HG changeset patch # User Christian Wimmer # Date 1385150579 28800 # Node ID c9660efac5f68084f47aba5c0f7651dd8ecee5e8 # Parent f42f1f5d5ce0b5e64a3866b8871824d5ed899f66 Factor out methods that use reflection so that they can be substituted diff -r f42f1f5d5ce0 -r c9660efac5f6 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Fri Nov 22 11:59:39 2013 -0800 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Fri Nov 22 12:02:59 2013 -0800 @@ -1502,12 +1502,7 @@ InliningUtil.replaceInvokeCallTarget(invoke, graph, InvokeKind.Special, concrete); } - FixedWithNextNode macroNode; - try { - macroNode = macroNodeClass.getConstructor(Invoke.class).newInstance(invoke); - } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) { - throw new GraalInternalError(e).addContext(invoke.asNode()).addContext("macroSubstitution", macroNodeClass); - } + FixedWithNextNode macroNode = createMacroNodeInstance(macroNodeClass, invoke); CallTargetNode callTarget = invoke.callTarget(); if (invoke instanceof InvokeNode) { @@ -1520,4 +1515,12 @@ GraphUtil.killWithUnusedFloatingInputs(callTarget); return macroNode; } + + private static FixedWithNextNode createMacroNodeInstance(Class macroNodeClass, Invoke invoke) throws GraalInternalError { + try { + return macroNodeClass.getConstructor(Invoke.class).newInstance(invoke); + } catch (ReflectiveOperationException | IllegalArgumentException | SecurityException e) { + throw new GraalInternalError(e).addContext(invoke.asNode()).addContext("macroSubstitution", macroNodeClass); + } + } } diff -r f42f1f5d5ce0 -r c9660efac5f6 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 Fri Nov 22 11:59:39 2013 -0800 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Fri Nov 22 12:02:59 2013 -0800 @@ -212,7 +212,15 @@ return originalJavaMethod; } - private SnippetInliningPolicy inliningPolicy(ResolvedJavaMethod method) { + private static SnippetInliningPolicy createPolicyClassInstance(Class policyClass) { + try { + return policyClass.getConstructor().newInstance(); + } catch (Exception e) { + throw new GraalInternalError(e); + } + } + + protected SnippetInliningPolicy inliningPolicy(ResolvedJavaMethod method) { Class policyClass = SnippetInliningPolicy.class; Snippet snippet = method.getAnnotation(Snippet.class); if (snippet != null) { @@ -221,11 +229,7 @@ if (policyClass == SnippetInliningPolicy.class) { return new DefaultSnippetInliningPolicy(providers.getMetaAccess()); } - try { - return policyClass.getConstructor().newInstance(); - } catch (Exception e) { - throw new GraalInternalError(e); - } + return createPolicyClassInstance(policyClass); } /**