Skip to content

Commit 1d769c7

Browse files
olpawdougxc
andcommitted
implement GuestGraal
Co-authored-by: Doug Simon <[email protected]>
1 parent 9065536 commit 1d769c7

File tree

102 files changed

+5916
-1076
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+5916
-1076
lines changed

compiler/mx.compiler/mx_compiler.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,8 @@ def __init__(self, option_strings, nargs=None, **kwargs):
748748
def __call__(self, parser, namespace, values, option_string=None):
749749
# do not override existing values
750750
old_values = getattr(namespace, self.dest)
751+
# shlex.split interprets '\' as an escape char so it needs to be escaped itself
752+
values = values.replace("\\", "\\\\")
751753
setattr(namespace, self.dest, (old_values if old_values else []) + shlex.split(values))
752754

753755
mx_gate.add_gate_runner(_suite, _graal_gate_runner)

compiler/mx.compiler/suite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@
173173
],
174174
"requiresConcealed" : {
175175
"java.base" : [
176-
"jdk.internal.misc",
176+
"jdk.internal.misc"
177177
],
178178
"jdk.internal.vm.ci" : [
179179
"jdk.vm.ci.meta",

compiler/src/jdk.graal.compiler.microbenchmarks/src/jdk/graal/compiler/microbenchmarks/lir/GraalCompilerState.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ protected PhaseSuite<HighTierContext> getDefaultGraphBuilderSuite() {
299299
}
300300

301301
protected LIRSuites getLIRSuites() {
302-
return request.lirSuites;
302+
return request.lirSuites();
303303
}
304304

305305
private Request<CompilationResult> request;
@@ -325,15 +325,15 @@ protected final void prepareRequest() {
325325
ResolvedJavaMethod installedCodeOwner = graph.method();
326326
request = new Request<>(graph, installedCodeOwner, getProviders(), getBackend(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL,
327327
graph.getProfilingInfo(), createSuites(getOptions()), createLIRSuites(getOptions()), new CompilationResult(graph.compilationId()), CompilationResultBuilderFactory.Default,
328-
null, true);
328+
null, null, true);
329329
}
330330

331331
/**
332332
* Executes the high-level (FrontEnd) part of the compiler.
333333
*/
334334
protected final void emitFrontEnd() {
335-
GraalCompiler.emitFrontEnd(request.providers, request.backend, request.graph, request.graphBuilderSuite, request.optimisticOpts, request.profilingInfo, request.suites);
336-
request.graph.freeze();
335+
GraalCompiler.emitFrontEnd(request.providers(), request.backend(), request.graph(), request.graphBuilderSuite(), request.optimisticOpts(), request.profilingInfo(), request.suites());
336+
request.graph().freeze();
337337
}
338338

339339
/**
@@ -364,24 +364,24 @@ protected final void generateLIR() {
364364
* Sets up {@link LIR} generation.
365365
*/
366366
protected final void preLIRGeneration() {
367-
assert request.graph.isFrozen() : "Graph not frozen.";
367+
assert request.graph().isFrozen() : "Graph not frozen.";
368368
Object stub = null;
369-
schedule = request.graph.getLastSchedule();
369+
schedule = request.graph().getLastSchedule();
370370
ControlFlowGraph cfg = deepCopy(schedule.getCFG());
371371
HIRBlock[] blocks = cfg.getBlocks();
372372
HIRBlock startBlock = cfg.getStartBlock();
373373
assert startBlock != null;
374374
assert startBlock.getPredecessorCount() == 0;
375375

376-
blockOrder = request.backend.newBlockOrder(blocks.length, startBlock);
376+
blockOrder = request.backend().newBlockOrder(blocks.length, startBlock);
377377
linearScanOrder = LinearScanOrder.computeLinearScanOrder(blocks.length, startBlock);
378378

379379
LIR lir = new LIR(cfg, linearScanOrder, getGraphOptions(), getGraphDebug());
380-
LIRGenerationProvider lirBackend = (LIRGenerationProvider) request.backend;
381-
RegisterAllocationConfig registerAllocationConfig = request.backend.newRegisterAllocationConfig(registerConfig, null, stub);
382-
lirGenRes = lirBackend.newLIRGenerationResult(graph.compilationId(), lir, registerAllocationConfig, request.graph, stub);
380+
LIRGenerationProvider lirBackend = (LIRGenerationProvider) request.backend();
381+
RegisterAllocationConfig registerAllocationConfig = request.backend().newRegisterAllocationConfig(registerConfig, null, stub);
382+
lirGenRes = lirBackend.newLIRGenerationResult(graph.compilationId(), lir, registerAllocationConfig, request.graph(), stub);
383383
lirGenTool = lirBackend.newLIRGenerator(lirGenRes);
384-
nodeLirGen = lirBackend.newNodeLIRBuilder(request.graph, lirGenTool);
384+
nodeLirGen = lirBackend.newNodeLIRBuilder(request.graph(), lirGenTool);
385385
}
386386

387387
protected OptionValues getGraphOptions() {
@@ -401,8 +401,8 @@ private static ControlFlowGraph deepCopy(ControlFlowGraph cfg) {
401401
* Executes the {@link LIRGenerationPhase}.
402402
*/
403403
protected final void lirGeneration() {
404-
LIRGenerationContext context = new LIRGenerationContext(lirGenTool, nodeLirGen, request.graph, schedule);
405-
new LIRGenerationPhase().apply(request.backend.getTarget(), lirGenRes, context);
404+
LIRGenerationContext context = new LIRGenerationContext(lirGenTool, nodeLirGen, request.graph(), schedule);
405+
new LIRGenerationPhase().apply(request.backend().getTarget(), lirGenRes, context);
406406
}
407407

408408
/**
@@ -418,7 +418,7 @@ protected final void emitLowLevel() {
418418
* Executes a {@link LIRPhase} within a given {@code context}.
419419
*/
420420
protected <C> void applyLIRPhase(LIRPhase<C> phase, C context) {
421-
phase.apply(request.backend.getTarget(), lirGenRes, context);
421+
phase.apply(request.backend().getTarget(), lirGenRes, context);
422422
}
423423

424424
/**
@@ -464,12 +464,12 @@ protected PostAllocationOptimizationContext createPostAllocationOptimizationCont
464464
* Emits the machine code.
465465
*/
466466
protected final void emitCode() {
467-
int bytecodeSize = request.graph.method() == null ? 0 : request.graph.getBytecodeSize();
467+
int bytecodeSize = request.graph().method() == null ? 0 : request.graph().getBytecodeSize();
468468
SpeculationLog speculationLog = null;
469-
request.compilationResult.setHasUnsafeAccess(request.graph.hasUnsafeAccess());
470-
LIRCompilerBackend.emitCode(request.backend, request.graph.getAssumptions(), request.graph.method(), request.graph.getMethods(), speculationLog,
471-
bytecodeSize, lirGenRes, request.compilationResult,
472-
request.installedCodeOwner, request.factory, request.entryPointDecorator);
469+
request.compilationResult().setHasUnsafeAccess(request.graph().hasUnsafeAccess());
470+
LIRCompilerBackend.emitCode(request.backend(), request.graph().getAssumptions(), request.graph().method(), request.graph().getMethods(), speculationLog,
471+
bytecodeSize, lirGenRes, request.compilationResult(),
472+
request.installedCodeOwner(), request.factory(), request.entryPointDecorator());
473473
}
474474

475475
protected StructuredGraph graph() {
@@ -495,7 +495,7 @@ public void setup() {
495495
public CompilationResult compile() {
496496
emitFrontEnd();
497497
emitBackEnd();
498-
return super.request.compilationResult;
498+
return super.request.compilationResult();
499499
}
500500

501501
}
@@ -538,7 +538,7 @@ public void setupGraph() {
538538

539539
public CompilationResult compile() {
540540
emitBackEnd();
541-
return super.request.compilationResult;
541+
return super.request.compilationResult();
542542
}
543543
}
544544

compiler/src/jdk.graal.compiler.processor/src/jdk/graal/compiler/core/match/processor/MatchProcessor.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ private void createFiles(MatchRuleDescriptor info) {
518518
out.println("import jdk.graal.compiler.core.match.*;");
519519
out.println("import jdk.graal.compiler.core.gen.NodeMatchRules;");
520520
out.println("import jdk.graal.compiler.graph.Position;");
521+
521522
for (String p : info.requiredPackages) {
522523
if (p.equals(pkg)) {
523524
continue;
@@ -593,6 +594,17 @@ private void createFiles(MatchRuleDescriptor info) {
593594

594595
out.println();
595596

597+
out.println(" @Override");
598+
out.println(" public String getArchitecture() {");
599+
String archStr = topDeclaringClass.toString().replace("NodeMatchRules", "");
600+
if (!archStr.equals("AMD64")) {
601+
// The AMD64 JVMCI class is the exception in terms of using an uppercase value
602+
// for the name field.
603+
archStr = archStr.toLowerCase();
604+
}
605+
out.println(" return " + '"' + archStr + "\";");
606+
out.println(" }");
607+
596608
out.println("}");
597609
}
598610
this.createProviderFile(pkg + "." + matchStatementClassName, "jdk.graal.compiler.core.match.MatchStatementSet", originatingElements);

compiler/src/jdk.graal.compiler.test/src/jdk/graal/compiler/core/test/GraalCompilerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1269,7 +1269,7 @@ protected CompilationResult compile(ResolvedJavaMethod installedCodeOwner, Struc
12691269
}
12701270

12711271
Request<CompilationResult> request = new Request<>(graphToCompile, installedCodeOwner, getProviders(), getBackend(), getDefaultGraphBuilderSuite(), getOptimisticOptimizations(),
1272-
graphToCompile.getProfilingInfo(), suites, createLIRSuites(options), compilationResult, CompilationResultBuilderFactory.Default, null, true);
1272+
graphToCompile.getProfilingInfo(), suites, createLIRSuites(options), compilationResult, CompilationResultBuilderFactory.Default, null, null, true);
12731273
CompilationResult result = GraalCompiler.compile(request);
12741274
graphToCompile.getOptimizationLog().emit(new StableMethodNameFormatter(getDefaultGraphBuilderPhase(), getProviders(), graphToCompile.getDebug()));
12751275
return result;

compiler/src/jdk.graal.compiler.test/src/jdk/graal/compiler/core/test/InfopointReasonTest.java

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,24 @@
2424
*/
2525
package jdk.graal.compiler.core.test;
2626

27-
import static jdk.graal.compiler.core.GraalCompiler.compileGraph;
2827
import static jdk.graal.compiler.core.common.GraalOptions.OptAssumptions;
2928
import static org.junit.Assert.assertNotNull;
3029

3130
import jdk.graal.compiler.code.CompilationResult;
31+
import jdk.graal.compiler.core.GraalCompiler;
32+
import jdk.graal.compiler.core.target.Backend;
3233
import jdk.graal.compiler.lir.asm.CompilationResultBuilderFactory;
34+
import jdk.graal.compiler.lir.phases.LIRSuites;
3335
import jdk.graal.compiler.nodes.FullInfopointNode;
3436
import jdk.graal.compiler.nodes.StructuredGraph;
3537
import jdk.graal.compiler.nodes.StructuredGraph.AllowAssumptions;
3638
import jdk.graal.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration;
3739
import jdk.graal.compiler.phases.OptimisticOptimizations;
3840
import jdk.graal.compiler.phases.PhaseSuite;
3941
import jdk.graal.compiler.phases.tiers.HighTierContext;
42+
import jdk.graal.compiler.phases.tiers.Suites;
43+
import jdk.graal.compiler.phases.util.Providers;
44+
import jdk.vm.ci.meta.ProfilingInfo;
4045
import org.junit.Test;
4146

4247
import jdk.vm.ci.code.site.Call;
@@ -70,8 +75,25 @@ public String testMethod() {
7075
public void callInfopoints() {
7176
final ResolvedJavaMethod method = getResolvedJavaMethod("testMethod");
7277
final StructuredGraph graph = parseEager(method, AllowAssumptions.YES);
73-
final CompilationResult cr = compileGraph(graph, graph.method(), getProviders(), getBackend(), getDefaultGraphBuilderSuite(), OptimisticOptimizations.ALL, graph.getProfilingInfo(),
74-
createSuites(graph.getOptions()), createLIRSuites(graph.getOptions()), new CompilationResult(graph.compilationId()), CompilationResultBuilderFactory.Default, true);
78+
Providers providers = getProviders();
79+
Backend backend = getBackend();
80+
PhaseSuite<HighTierContext> graphBuilderSuite = getDefaultGraphBuilderSuite();
81+
ProfilingInfo profilingInfo = graph.getProfilingInfo();
82+
Suites suites = createSuites(graph.getOptions());
83+
LIRSuites lirSuites = createLIRSuites(graph.getOptions());
84+
CompilationResult compilationResult = new CompilationResult(graph.compilationId());
85+
final CompilationResult cr = GraalCompiler.compile(new GraalCompiler.Request<>(graph,
86+
graph.method(),
87+
providers,
88+
backend,
89+
graphBuilderSuite,
90+
OptimisticOptimizations.ALL,
91+
profilingInfo,
92+
suites,
93+
lirSuites,
94+
compilationResult,
95+
CompilationResultBuilderFactory.Default,
96+
true));
7597
for (Infopoint sp : cr.getInfopoints()) {
7698
assertNotNull(sp.reason);
7799
if (sp instanceof Call) {
@@ -92,8 +114,24 @@ public void lineInfopoints() {
92114
}
93115
assertTrue(graphLineSPs > 0);
94116
PhaseSuite<HighTierContext> graphBuilderSuite = getCustomGraphBuilderSuite(GraphBuilderConfiguration.getDefault(getDefaultGraphBuilderPlugins()).withFullInfopoints(true));
95-
final CompilationResult cr = compileGraph(graph, graph.method(), getProviders(), getBackend(), graphBuilderSuite, OptimisticOptimizations.ALL, graph.getProfilingInfo(),
96-
createSuites(graph.getOptions()), createLIRSuites(graph.getOptions()), new CompilationResult(graph.compilationId()), CompilationResultBuilderFactory.Default, true);
117+
Providers providers = getProviders();
118+
Backend backend = getBackend();
119+
ProfilingInfo profilingInfo = graph.getProfilingInfo();
120+
Suites suites = createSuites(graph.getOptions());
121+
LIRSuites lirSuites = createLIRSuites(graph.getOptions());
122+
CompilationResult compilationResult = new CompilationResult(graph.compilationId());
123+
final CompilationResult cr = GraalCompiler.compile(new GraalCompiler.Request<>(graph,
124+
graph.method(),
125+
providers,
126+
backend,
127+
graphBuilderSuite,
128+
OptimisticOptimizations.ALL,
129+
profilingInfo,
130+
suites,
131+
lirSuites,
132+
compilationResult,
133+
CompilationResultBuilderFactory.Default,
134+
true));
97135
int lineSPs = 0;
98136
for (Infopoint sp : cr.getInfopoints()) {
99137
assertNotNull(sp.reason);

0 commit comments

Comments
 (0)