32 import java.util.ArrayList;
33 import java.util.Collections;
34 import java.util.Enumeration;
35 import java.util.List;
36 import java.util.concurrent.LinkedBlockingQueue;
37 import java.util.concurrent.ThreadPoolExecutor;
38 import java.util.concurrent.TimeUnit;
39 import java.util.zip.ZipEntry;
40 import java.util.zip.ZipFile;
41
42 import org.graalvm.compiler.api.replacements.Snippet;
43 import org.graalvm.compiler.api.replacements.Snippet.ConstantParameter;
44 import org.graalvm.compiler.api.replacements.Snippet.NonNullParameter;
45 import org.graalvm.compiler.api.replacements.Snippet.VarargsParameter;
46 import org.graalvm.compiler.api.test.Graal;
47 import org.graalvm.compiler.bytecode.BridgeMethodUtils;
48 import org.graalvm.compiler.core.CompilerThreadFactory;
49 import org.graalvm.compiler.core.common.LIRKind;
50 import org.graalvm.compiler.core.common.type.ArithmeticOpTable;
51 import org.graalvm.compiler.debug.DebugCloseable;
52 import org.graalvm.compiler.debug.DebugHandlersFactory;
53 import org.graalvm.compiler.debug.DebugContext;
54 import org.graalvm.compiler.debug.GraalError;
55 import org.graalvm.compiler.graph.Node;
56 import org.graalvm.compiler.graph.NodeClass;
57 import org.graalvm.compiler.java.GraphBuilderPhase;
58 import org.graalvm.compiler.nodeinfo.NodeInfo;
59 import org.graalvm.compiler.nodes.PhiNode;
60 import org.graalvm.compiler.nodes.StructuredGraph;
61 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
62 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration;
63 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins;
64 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;
65 import org.graalvm.compiler.options.OptionValues;
66 import org.graalvm.compiler.phases.OptimisticOptimizations;
67 import org.graalvm.compiler.phases.PhaseSuite;
68 import org.graalvm.compiler.phases.VerifyPhase;
69 import org.graalvm.compiler.phases.VerifyPhase.VerificationError;
70 import org.graalvm.compiler.phases.contract.VerifyNodeCosts;
71 import org.graalvm.compiler.phases.tiers.HighTierContext;
72 import org.graalvm.compiler.phases.util.Providers;
73 import org.graalvm.compiler.phases.verify.VerifyBailoutUsage;
74 import org.graalvm.compiler.phases.verify.VerifyCallerSensitiveMethods;
75 import org.graalvm.compiler.phases.verify.VerifyDebugUsage;
76 import org.graalvm.compiler.phases.verify.VerifyInstanceOfUsage;
77 import org.graalvm.compiler.phases.verify.VerifyUpdateUsages;
78 import org.graalvm.compiler.phases.verify.VerifyUsageWithEquals;
79 import org.graalvm.compiler.phases.verify.VerifyVirtualizableUsage;
80 import org.graalvm.compiler.runtime.RuntimeProvider;
81 import org.graalvm.word.LocationIdentity;
82 import org.junit.Assert;
83 import org.junit.Assume;
84 import org.junit.Test;
85
86 import jdk.vm.ci.code.BailoutException;
87 import jdk.vm.ci.code.Register;
88 import jdk.vm.ci.code.Register.RegisterCategory;
89 import jdk.vm.ci.meta.JavaField;
90 import jdk.vm.ci.meta.JavaMethod;
91 import jdk.vm.ci.meta.JavaType;
92 import jdk.vm.ci.meta.MetaAccessProvider;
93 import jdk.vm.ci.meta.ResolvedJavaMethod;
94 import jdk.vm.ci.meta.ResolvedJavaType;
95 import jdk.vm.ci.meta.Value;
364 if (shouldVerifyEquals(graph.method())) {
365 // If you add a new type to test here, be sure to add appropriate
366 // methods to the BadUsageWithEquals class below
367 new VerifyUsageWithEquals(Value.class).apply(graph, context);
368 new VerifyUsageWithEquals(Register.class).apply(graph, context);
369 new VerifyUsageWithEquals(RegisterCategory.class).apply(graph, context);
370 new VerifyUsageWithEquals(JavaType.class).apply(graph, context);
371 new VerifyUsageWithEquals(JavaMethod.class).apply(graph, context);
372 new VerifyUsageWithEquals(JavaField.class).apply(graph, context);
373 new VerifyUsageWithEquals(LocationIdentity.class).apply(graph, context);
374 new VerifyUsageWithEquals(LIRKind.class).apply(graph, context);
375 new VerifyUsageWithEquals(ArithmeticOpTable.class).apply(graph, context);
376 new VerifyUsageWithEquals(ArithmeticOpTable.Op.class).apply(graph, context);
377 }
378 new VerifyDebugUsage().apply(graph, context);
379 new VerifyCallerSensitiveMethods().apply(graph, context);
380 new VerifyVirtualizableUsage().apply(graph, context);
381 new VerifyUpdateUsages().apply(graph, context);
382 new VerifyBailoutUsage().apply(graph, context);
383 new VerifyInstanceOfUsage().apply(graph, context);
384 if (graph.method().isBridge()) {
385 BridgeMethodUtils.getBridgedMethod(graph.method());
386 }
387 }
388
389 private static boolean matches(String[] filters, String s) {
390 if (filters == null || filters.length == 0) {
391 return true;
392 }
393 for (String filter : filters) {
394 if (s.contains(filter)) {
395 return true;
396 }
397 }
398 return false;
399 }
400
401 private static String printStackTraceToString(Throwable t) {
402 StringWriter sw = new StringWriter();
403 t.printStackTrace(new PrintWriter(sw));
|
32 import java.util.ArrayList;
33 import java.util.Collections;
34 import java.util.Enumeration;
35 import java.util.List;
36 import java.util.concurrent.LinkedBlockingQueue;
37 import java.util.concurrent.ThreadPoolExecutor;
38 import java.util.concurrent.TimeUnit;
39 import java.util.zip.ZipEntry;
40 import java.util.zip.ZipFile;
41
42 import org.graalvm.compiler.api.replacements.Snippet;
43 import org.graalvm.compiler.api.replacements.Snippet.ConstantParameter;
44 import org.graalvm.compiler.api.replacements.Snippet.NonNullParameter;
45 import org.graalvm.compiler.api.replacements.Snippet.VarargsParameter;
46 import org.graalvm.compiler.api.test.Graal;
47 import org.graalvm.compiler.bytecode.BridgeMethodUtils;
48 import org.graalvm.compiler.core.CompilerThreadFactory;
49 import org.graalvm.compiler.core.common.LIRKind;
50 import org.graalvm.compiler.core.common.type.ArithmeticOpTable;
51 import org.graalvm.compiler.debug.DebugCloseable;
52 import org.graalvm.compiler.debug.DebugContext;
53 import org.graalvm.compiler.debug.DebugHandlersFactory;
54 import org.graalvm.compiler.debug.GraalError;
55 import org.graalvm.compiler.graph.Node;
56 import org.graalvm.compiler.graph.NodeClass;
57 import org.graalvm.compiler.java.GraphBuilderPhase;
58 import org.graalvm.compiler.nodeinfo.NodeInfo;
59 import org.graalvm.compiler.nodes.PhiNode;
60 import org.graalvm.compiler.nodes.StructuredGraph;
61 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
62 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration;
63 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins;
64 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;
65 import org.graalvm.compiler.options.OptionValues;
66 import org.graalvm.compiler.phases.OptimisticOptimizations;
67 import org.graalvm.compiler.phases.PhaseSuite;
68 import org.graalvm.compiler.phases.VerifyPhase;
69 import org.graalvm.compiler.phases.VerifyPhase.VerificationError;
70 import org.graalvm.compiler.phases.contract.VerifyNodeCosts;
71 import org.graalvm.compiler.phases.tiers.HighTierContext;
72 import org.graalvm.compiler.phases.util.Providers;
73 import org.graalvm.compiler.phases.verify.VerifyBailoutUsage;
74 import org.graalvm.compiler.phases.verify.VerifyCallerSensitiveMethods;
75 import org.graalvm.compiler.phases.verify.VerifyDebugUsage;
76 import org.graalvm.compiler.phases.verify.VerifyGetOptionsUsage;
77 import org.graalvm.compiler.phases.verify.VerifyGraphAddUsage;
78 import org.graalvm.compiler.phases.verify.VerifyInstanceOfUsage;
79 import org.graalvm.compiler.phases.verify.VerifyUpdateUsages;
80 import org.graalvm.compiler.phases.verify.VerifyUsageWithEquals;
81 import org.graalvm.compiler.phases.verify.VerifyVirtualizableUsage;
82 import org.graalvm.compiler.runtime.RuntimeProvider;
83 import org.graalvm.word.LocationIdentity;
84 import org.junit.Assert;
85 import org.junit.Assume;
86 import org.junit.Test;
87
88 import jdk.vm.ci.code.BailoutException;
89 import jdk.vm.ci.code.Register;
90 import jdk.vm.ci.code.Register.RegisterCategory;
91 import jdk.vm.ci.meta.JavaField;
92 import jdk.vm.ci.meta.JavaMethod;
93 import jdk.vm.ci.meta.JavaType;
94 import jdk.vm.ci.meta.MetaAccessProvider;
95 import jdk.vm.ci.meta.ResolvedJavaMethod;
96 import jdk.vm.ci.meta.ResolvedJavaType;
97 import jdk.vm.ci.meta.Value;
366 if (shouldVerifyEquals(graph.method())) {
367 // If you add a new type to test here, be sure to add appropriate
368 // methods to the BadUsageWithEquals class below
369 new VerifyUsageWithEquals(Value.class).apply(graph, context);
370 new VerifyUsageWithEquals(Register.class).apply(graph, context);
371 new VerifyUsageWithEquals(RegisterCategory.class).apply(graph, context);
372 new VerifyUsageWithEquals(JavaType.class).apply(graph, context);
373 new VerifyUsageWithEquals(JavaMethod.class).apply(graph, context);
374 new VerifyUsageWithEquals(JavaField.class).apply(graph, context);
375 new VerifyUsageWithEquals(LocationIdentity.class).apply(graph, context);
376 new VerifyUsageWithEquals(LIRKind.class).apply(graph, context);
377 new VerifyUsageWithEquals(ArithmeticOpTable.class).apply(graph, context);
378 new VerifyUsageWithEquals(ArithmeticOpTable.Op.class).apply(graph, context);
379 }
380 new VerifyDebugUsage().apply(graph, context);
381 new VerifyCallerSensitiveMethods().apply(graph, context);
382 new VerifyVirtualizableUsage().apply(graph, context);
383 new VerifyUpdateUsages().apply(graph, context);
384 new VerifyBailoutUsage().apply(graph, context);
385 new VerifyInstanceOfUsage().apply(graph, context);
386 new VerifyGraphAddUsage().apply(graph, context);
387 new VerifyGetOptionsUsage().apply(graph, context);
388 if (graph.method().isBridge()) {
389 BridgeMethodUtils.getBridgedMethod(graph.method());
390 }
391 }
392
393 private static boolean matches(String[] filters, String s) {
394 if (filters == null || filters.length == 0) {
395 return true;
396 }
397 for (String filter : filters) {
398 if (s.contains(filter)) {
399 return true;
400 }
401 }
402 return false;
403 }
404
405 private static String printStackTraceToString(Throwable t) {
406 StringWriter sw = new StringWriter();
407 t.printStackTrace(new PrintWriter(sw));
|