|
37 | 37 | import jdk.vm.ci.meta.ResolvedJavaField; |
38 | 38 | import jdk.vm.ci.meta.ResolvedJavaMethod; |
39 | 39 | import jdk.vm.ci.meta.ResolvedJavaType; |
| 40 | +import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor; |
| 41 | +import org.graalvm.compiler.core.common.spi.ForeignCallSignature; |
40 | 42 | import org.graalvm.compiler.graph.Node; |
41 | 43 | import org.graalvm.compiler.nodes.CallTargetNode; |
42 | 44 | import org.graalvm.compiler.nodes.ConstantNode; |
43 | 45 | import org.graalvm.compiler.nodes.FrameState; |
44 | 46 | import org.graalvm.compiler.nodes.Invoke; |
45 | 47 | import org.graalvm.compiler.nodes.StructuredGraph; |
| 48 | +import org.graalvm.compiler.nodes.extended.ForeignCall; |
46 | 49 | import org.graalvm.compiler.nodes.java.AccessFieldNode; |
47 | 50 | import org.graalvm.compiler.nodes.java.InstanceOfNode; |
48 | 51 | import org.graalvm.compiler.nodes.java.LoadFieldNode; |
49 | 52 | import org.graalvm.compiler.nodes.java.NewArrayNode; |
50 | 53 | import org.graalvm.compiler.nodes.java.NewInstanceNode; |
51 | 54 | import org.graalvm.compiler.nodes.java.NewMultiArrayNode; |
52 | 55 | import org.graalvm.compiler.nodes.java.StoreFieldNode; |
| 56 | +import org.graalvm.compiler.replacements.nodes.BinaryMathIntrinsicNode; |
53 | 57 | import org.graalvm.compiler.replacements.nodes.MacroInvokable; |
| 58 | +import org.graalvm.compiler.replacements.nodes.UnaryMathIntrinsicNode; |
54 | 59 |
|
55 | 60 | import java.util.ArrayList; |
56 | 61 | import java.util.List; |
@@ -113,6 +118,8 @@ protected class Instance { |
113 | 118 | public final List<AnalysisMethod> invokedMethods = new ArrayList<>(); |
114 | 119 | public final List<AnalysisMethod> implementationInvokedMethods = new ArrayList<>(); |
115 | 120 | public final List<JavaConstant> embeddedConstants = new ArrayList<>(); |
| 121 | + public final List<ForeignCallDescriptor> foreignCallDescriptors = new ArrayList<>(); |
| 122 | + public final List<ForeignCallSignature> foreignCallSignatures = new ArrayList<>(); |
116 | 123 |
|
117 | 124 | private MethodSummary createSummaryFromGraph(StructuredGraph graph) { |
118 | 125 |
|
@@ -182,13 +189,19 @@ private MethodSummary createSummaryFromGraph(StructuredGraph graph) { |
182 | 189 | } else { |
183 | 190 | invokedMethods.add(targetMethod); |
184 | 191 | } |
| 192 | + } else if (n instanceof ForeignCall) { |
| 193 | + foreignCallDescriptors.add(((ForeignCall) n).getDescriptor()); |
| 194 | + } else if (n instanceof UnaryMathIntrinsicNode) { |
| 195 | + foreignCallSignatures.add(((UnaryMathIntrinsicNode) n).getOperation().foreignCallSignature); |
| 196 | + } else if (n instanceof BinaryMathIntrinsicNode) { |
| 197 | + foreignCallSignatures.add(((BinaryMathIntrinsicNode) n).getOperation().foreignCallSignature); |
185 | 198 | } |
186 | 199 | delegateNodeProcessing(this, n); |
187 | 200 | } |
188 | 201 | return new MethodSummary(invokedMethods.toArray(new AnalysisMethod[0]), implementationInvokedMethods.toArray(new AnalysisMethod[0]), |
189 | 202 | accessedTypes.toArray(new AnalysisType[0]), |
190 | 203 | instantiatedTypes.toArray(new AnalysisType[0]), readFields.toArray(new AnalysisField[0]), writtenFields.toArray(new AnalysisField[0]), |
191 | | - embeddedConstants.toArray(new JavaConstant[0])); |
| 204 | + embeddedConstants.toArray(new JavaConstant[0]), foreignCallDescriptors.toArray(new ForeignCallDescriptor[0]), foreignCallSignatures.toArray(new ForeignCallSignature[0])); |
192 | 205 | } |
193 | 206 | } |
194 | 207 | } |
0 commit comments