# HG changeset patch # User Doug Simon # Date 1381868381 -7200 # Node ID c0e660b07e025b6334c52bf352fd12ca306dfea5 # Parent 5124eeec1a7bd1704d1cc1c684b10d2e791480d3 introduced HotSpotRegistersProvider interface diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotGraalRuntime.java --- a/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotGraalRuntime.java Tue Oct 15 14:14:06 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotGraalRuntime.java Tue Oct 15 22:19:41 2013 +0200 @@ -68,7 +68,7 @@ HotSpotReplacementsImpl replacements = new HotSpotReplacementsImpl(p, getConfig(), assumptions); HotSpotDisassemblerProvider disassembler = new HotSpotDisassemblerProvider(this); HotSpotSuitesProvider suites = new HotSpotSuitesProvider(this); - HotSpotRegisters registers = new HotSpotRegisters(PTX.tid, Register.None, Register.None); + HotSpotRegistersProvider registers = new HotSpotRegisters(PTX.tid, Register.None, Register.None); return new HotSpotProviders(metaAccess, codeCache, constantReflection, foreignCalls, lowerer, replacements, disassembler, suites, registers); } diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java Tue Oct 15 14:14:06 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java Tue Oct 15 22:19:41 2013 +0200 @@ -39,7 +39,7 @@ @Override public void emitCode(TargetMethodAssembler tasm, SPARCMacroAssembler masm) { - HotSpotRegisters runtime = graalRuntime().getProviders().getRegisters(); + HotSpotRegistersProvider runtime = graalRuntime().getProviders().getRegisters(); HotSpotVMConfig config = graalRuntime().getConfig(); Register thread = runtime.getThreadRegister(); Register stackPointer = runtime.getStackPointerRegister(); diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Tue Oct 15 14:14:06 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Tue Oct 15 22:19:41 2013 +0200 @@ -368,7 +368,7 @@ if (clazz == Replacements.class) { return (T) providers.getReplacements(); } - if (clazz == HotSpotRegisters.class) { + if (clazz == HotSpotRegistersProvider.class) { return (T) providers.getRegisters(); } if (clazz == Backend.class) { diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Tue Oct 15 14:14:06 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java Tue Oct 15 22:19:41 2013 +0200 @@ -322,7 +322,7 @@ } } - public static void lower(DynamicCounterNode counter, HotSpotRegisters registers, HotSpotVMConfig config, Kind wordKind) { + public static void lower(DynamicCounterNode counter, HotSpotRegistersProvider registers, HotSpotVMConfig config, Kind wordKind) { StructuredGraph graph = counter.graph(); if (excludedClassPrefix == null || !counter.graph().method().getDeclaringClass().getName().startsWith(excludedClassPrefix)) { diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java Tue Oct 15 14:14:06 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java Tue Oct 15 22:19:41 2013 +0200 @@ -26,6 +26,8 @@ import static com.oracle.graal.api.meta.DeoptimizationAction.*; import static com.oracle.graal.api.meta.DeoptimizationReason.*; import static com.oracle.graal.api.meta.LocationIdentity.*; +import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; +import static com.oracle.graal.hotspot.meta.HotSpotForeignCallsProvider.*; import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.replacements.NewObjectSnippets.*; import static com.oracle.graal.nodes.java.ArrayLengthNode.*; @@ -387,7 +389,7 @@ OSRStartNode osrStart = (OSRStartNode) n; StartNode newStart = graph.add(new StartNode()); LocalNode buffer = graph.unique(new LocalNode(0, StampFactory.forKind(wordKind))); - ForeignCallNode migrationEnd = graph.add(new ForeignCallNode(foreignCalls, HotSpotForeignCallsProvider.OSR_MIGRATION_END, buffer)); + ForeignCallNode migrationEnd = graph.add(new ForeignCallNode(foreignCalls, OSR_MIGRATION_END, buffer)); migrationEnd.setStateAfter(osrStart.stateAfter()); newStart.setNext(migrationEnd); @@ -621,7 +623,7 @@ protected IndexedLocationNode createArrayLocation(Graph graph, Kind elementKind, ValueNode index, boolean initialization) { LocationIdentity loc = initialization ? INIT_LOCATION : NamedLocationIdentity.getArrayLocation(elementKind); int scale = getScalingFactor(elementKind); - return IndexedLocationNode.create(loc, elementKind, HotSpotGraalRuntime.getArrayBaseOffset(elementKind), index, graph, scale); + return IndexedLocationNode.create(loc, elementKind, getArrayBaseOffset(elementKind), index, graph, scale); } @Override @@ -645,7 +647,7 @@ throw GraalInternalError.shouldNotReachHere(); } - base -= HotSpotGraalRuntime.getArrayBaseOffset(elementKind); + base -= getArrayBaseOffset(elementKind); assert base >= 0 && base % scale == 0; base /= scale; diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotProviders.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotProviders.java Tue Oct 15 14:14:06 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotProviders.java Tue Oct 15 22:19:41 2013 +0200 @@ -35,10 +35,10 @@ private final HotSpotDisassemblerProvider disassembler; private final HotSpotSuitesProvider suites; - private final HotSpotRegisters registers; + private final HotSpotRegistersProvider registers; public HotSpotProviders(HotSpotMetaAccessProvider metaAccess, HotSpotCodeCacheProvider codeCache, ConstantReflectionProvider constantReflection, HotSpotForeignCallsProvider foreignCalls, - LoweringProvider lowerer, Replacements replacements, HotSpotDisassemblerProvider disassembler, HotSpotSuitesProvider suites, HotSpotRegisters registers) { + LoweringProvider lowerer, Replacements replacements, HotSpotDisassemblerProvider disassembler, HotSpotSuitesProvider suites, HotSpotRegistersProvider registers) { super(metaAccess, codeCache, constantReflection, foreignCalls, lowerer, replacements); this.disassembler = disassembler; this.suites = suites; @@ -72,7 +72,7 @@ return suites; } - public HotSpotRegisters getRegisters() { + public HotSpotRegistersProvider getRegisters() { return registers; } diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRegisters.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRegisters.java Tue Oct 15 14:14:06 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRegisters.java Tue Oct 15 22:19:41 2013 +0200 @@ -24,10 +24,7 @@ import com.oracle.graal.api.code.*; -/** - * Special registers reserved by HotSpot for frequently used values. - */ -public class HotSpotRegisters { +public class HotSpotRegisters implements HotSpotRegistersProvider { private final Register threadRegister; private final Register heapBaseRegister; @@ -39,23 +36,14 @@ this.stackPointerRegister = stackPointerRegister; } - /** - * Gets the register holding the current thread. - */ public Register getThreadRegister() { return threadRegister; } - /** - * Gets the register holding the heap base address for compressed pointers. - */ public Register getHeapBaseRegister() { return heapBaseRegister; } - /** - * Gets the stack pointer register. - */ public Register getStackPointerRegister() { return stackPointerRegister; } diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRegistersProvider.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRegistersProvider.java Tue Oct 15 22:19:41 2013 +0200 @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.oracle.graal.hotspot.meta; + +import com.oracle.graal.api.code.*; + +/** + * Special registers reserved by HotSpot for frequently used values. + */ +public interface HotSpotRegistersProvider { + + /** + * Gets the register holding the current thread. + */ + Register getThreadRegister(); + + /** + * Gets the register holding the heap base address for compressed pointers. + */ + Register getHeapBaseRegister(); + + /** + * Gets the stack pointer register. + */ + Register getStackPointerRegister(); +} diff -r 5124eeec1a7b -r c0e660b07e02 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java Tue Oct 15 14:14:06 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java Tue Oct 15 22:19:41 2013 +0200 @@ -70,7 +70,7 @@ public void lower(LoadExceptionObjectNode loadExceptionObject) { if (USE_C_RUNTIME) { StructuredGraph graph = loadExceptionObject.graph(); - HotSpotRegisters registers = ((HotSpotProviders) providers).getRegisters(); + HotSpotRegistersProvider registers = ((HotSpotProviders) providers).getRegisters(); ReadRegisterNode thread = graph.add(new ReadRegisterNode(registers.getThreadRegister(), true, false)); graph.addBeforeFixed(loadExceptionObject, thread); ForeignCallNode loadExceptionC = graph.add(new ForeignCallNode(providers.getForeignCalls(), LOAD_AND_CLEAR_EXCEPTION, thread));