changeset 12430:c0e660b07e02

introduced HotSpotRegistersProvider interface
author Doug Simon <doug.simon@oracle.com>
date Tue, 15 Oct 2013 22:19:41 +0200
parents 5124eeec1a7b
children 7080a96be216
files graal/com.oracle.graal.hotspot.ptx/src/com/oracle/graal/hotspot/ptx/PTXHotSpotGraalRuntime.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotCRuntimeCallPrologueOp.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotLoweringProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotProviders.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRegisters.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRegistersProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/LoadExceptionObjectSnippets.java
diffstat 9 files changed, 60 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- 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);
     }
 
--- 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();
--- 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) {
--- 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)) {
 
--- 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;
--- 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;
     }
 
--- 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;
     }
--- /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();
+}
--- 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));