1 /* |
1 /* |
2 * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
24 |
24 |
25 package org.graalvm.compiler.core.gen; |
25 package org.graalvm.compiler.core.gen; |
26 |
26 |
27 import org.graalvm.compiler.code.CompilationResult; |
27 import org.graalvm.compiler.code.CompilationResult; |
28 import org.graalvm.compiler.core.common.CompilationIdentifier; |
28 import org.graalvm.compiler.core.common.CompilationIdentifier; |
|
29 import org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig; |
29 import org.graalvm.compiler.lir.LIR; |
30 import org.graalvm.compiler.lir.LIR; |
30 import org.graalvm.compiler.lir.asm.CompilationResultBuilder; |
31 import org.graalvm.compiler.lir.asm.CompilationResultBuilder; |
31 import org.graalvm.compiler.lir.asm.CompilationResultBuilderFactory; |
32 import org.graalvm.compiler.lir.asm.CompilationResultBuilderFactory; |
32 import org.graalvm.compiler.lir.framemap.FrameMap; |
33 import org.graalvm.compiler.lir.framemap.FrameMap; |
33 import org.graalvm.compiler.lir.gen.LIRGenerationResult; |
34 import org.graalvm.compiler.lir.gen.LIRGenerationResult; |
34 import org.graalvm.compiler.lir.gen.LIRGeneratorTool; |
35 import org.graalvm.compiler.lir.gen.LIRGeneratorTool; |
35 import org.graalvm.compiler.nodes.StructuredGraph; |
36 import org.graalvm.compiler.nodes.StructuredGraph; |
36 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; |
37 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; |
37 |
38 |
38 import jdk.vm.ci.code.RegisterConfig; |
|
39 import jdk.vm.ci.meta.ResolvedJavaMethod; |
39 import jdk.vm.ci.meta.ResolvedJavaMethod; |
40 |
40 |
41 /** |
41 /** |
42 * Provides compiler backend-specific generation helpers for the {@link LIRCompilerBackend}. |
42 * Provides compiler backend-specific generation helpers for the {@link LIRCompilerBackend}. |
43 */ |
43 */ |
44 public interface LIRGenerationProvider { |
44 public interface LIRGenerationProvider { |
45 LIRGeneratorTool newLIRGenerator(LIRGenerationResult lirGenRes); |
45 LIRGeneratorTool newLIRGenerator(LIRGenerationResult lirGenRes); |
46 |
46 |
47 LIRGenerationResult newLIRGenerationResult(CompilationIdentifier compilationId, LIR lir, RegisterConfig registerConfig, StructuredGraph graph, |
47 LIRGenerationResult newLIRGenerationResult(CompilationIdentifier compilationId, |
|
48 LIR lir, |
|
49 RegisterAllocationConfig registerAllocationConfig, |
|
50 StructuredGraph graph, |
48 Object stub); |
51 Object stub); |
49 |
52 |
50 NodeLIRBuilderTool newNodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool lirGen); |
53 NodeLIRBuilderTool newNodeLIRBuilder(StructuredGraph graph, LIRGeneratorTool lirGen); |
51 |
54 |
52 /** |
55 /** |
53 * Creates the object used to fill in the details of a given compilation result. |
56 * Creates the object used to fill in the details of a given compilation result. |
54 */ |
57 */ |
55 CompilationResultBuilder newCompilationResultBuilder(LIRGenerationResult lirGenResult, FrameMap frameMap, CompilationResult compilationResult, |
58 CompilationResultBuilder newCompilationResultBuilder(LIRGenerationResult lirGenResult, |
|
59 FrameMap frameMap, |
|
60 CompilationResult compilationResult, |
56 CompilationResultBuilderFactory factory); |
61 CompilationResultBuilderFactory factory); |
57 |
62 |
58 /** |
63 /** |
59 * Emits the code for a given graph. |
64 * Emits the code for a given graph. |
60 * |
65 * |