# HG changeset patch # User Doug Simon # Date 1384957915 -3600 # Node ID 5341a7fca039251266da2ac05fce9fdadf5742f2 # Parent 68ff7abbfae5f627ee9444b7852daf5f9bc45bd0 made HSAIL reuse HotSpotLoweringProvider, just with a different set of registers diff -r 68ff7abbfae5 -r 5341a7fca039 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java Wed Nov 20 15:31:13 2013 +0100 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java Wed Nov 20 15:31:55 2013 +0100 @@ -64,6 +64,14 @@ return true; } + @Override + public void completeInitialization() { + final HotSpotProviders providers = getProviders(); + HotSpotVMConfig config = getRuntime().getConfig(); + final HotSpotLoweringProvider lowerer = (HotSpotLoweringProvider) providers.getLowerer(); + lowerer.initialize(providers, config); + } + /** * Use the HSAIL register set when the compilation target is HSAIL. */ diff -r 68ff7abbfae5 -r 5341a7fca039 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackendFactory.java --- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackendFactory.java Wed Nov 20 15:31:13 2013 +0100 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackendFactory.java Wed Nov 20 15:31:55 2013 +0100 @@ -38,11 +38,12 @@ public HSAILHotSpotBackend createBackend(HotSpotGraalRuntime runtime, HotSpotBackend hostBackend) { HotSpotProviders host = hostBackend.getProviders(); + HotSpotRegisters registers = new HotSpotRegisters(Register.None, Register.None, Register.None); HotSpotMetaAccessProvider metaAccess = host.getMetaAccess(); HSAILHotSpotCodeCacheProvider codeCache = new HSAILHotSpotCodeCacheProvider(runtime, createTarget()); ConstantReflectionProvider constantReflection = host.getConstantReflection(); HotSpotForeignCallsProvider foreignCalls = new HSAILHotSpotForeignCallsProvider(runtime, metaAccess, codeCache); - LoweringProvider lowerer = new HSAILHotSpotLoweringProvider(host.getLowerer()); + LoweringProvider lowerer = new HSAILHotSpotLoweringProvider(runtime, metaAccess, foreignCalls, registers); // Replacements cannot have speculative optimizations since they have // to be valid for the entire run of the VM. Assumptions assumptions = new Assumptions(false); @@ -50,7 +51,6 @@ Replacements replacements = new HSAILHotSpotReplacementsImpl(p, assumptions, host.getReplacements()); HotSpotDisassemblerProvider disassembler = host.getDisassembler(); HotSpotSuitesProvider suites = host.getSuites(); - HotSpotRegisters registers = new HotSpotRegisters(Register.None, Register.None, Register.None); HotSpotProviders providers = new HotSpotProviders(metaAccess, codeCache, constantReflection, foreignCalls, lowerer, replacements, disassembler, suites, registers); return new HSAILHotSpotBackend(runtime, providers); diff -r 68ff7abbfae5 -r 5341a7fca039 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java Wed Nov 20 15:31:13 2013 +0100 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotLoweringProvider.java Wed Nov 20 15:31:55 2013 +0100 @@ -22,30 +22,27 @@ */ package com.oracle.graal.hotspot.hsail; +import com.oracle.graal.api.code.*; +import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; -import com.oracle.graal.nodes.*; +import com.oracle.graal.hotspot.*; +import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.nodes.calc.*; -import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.spi.*; -public class HSAILHotSpotLoweringProvider implements LoweringProvider { +public class HSAILHotSpotLoweringProvider extends HotSpotLoweringProvider { - private LoweringProvider host; - - public HSAILHotSpotLoweringProvider(LoweringProvider host) { - this.host = host; + public HSAILHotSpotLoweringProvider(HotSpotGraalRuntime runtime, MetaAccessProvider metaAccess, ForeignCallsProvider foreignCalls, HotSpotRegistersProvider registers) { + super(runtime, metaAccess, foreignCalls, registers); } + @Override public void lower(Node n, LoweringTool tool) { if (n instanceof ConvertNode) { - // TODO return; } else { - host.lower(n, tool); + super.lower(n, tool); } } - public ValueNode reconstructArrayIndex(LocationNode location) { - throw GraalInternalError.unimplemented(); - } } diff -r 68ff7abbfae5 -r 5341a7fca039 graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotReplacementsImpl.java --- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotReplacementsImpl.java Wed Nov 20 15:31:13 2013 +0100 +++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotReplacementsImpl.java Wed Nov 20 15:31:55 2013 +0100 @@ -62,8 +62,8 @@ @Override public StructuredGraph getSnippet(ResolvedJavaMethod method) { - // TODO must work in cooperation with HSAILHotSpotLoweringProvider - return null; + // Must work in cooperation with HSAILHotSpotLoweringProvider + return host.getSnippet(method); } @Override