# HG changeset patch # User Lukas Stadler # Date 1326285612 -3600 # Node ID f461a4a09e539538257a42c174e00bd0518ce7fa # Parent 744dade427b8f1f947e24691e61b803dae33590c remove CompilerStub class diff -r 744dade427b8 -r f461a4a09e53 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalCompiler.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalCompiler.java Wed Jan 11 13:35:49 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/GraalCompiler.java Wed Jan 11 13:40:12 2012 +0100 @@ -22,21 +22,16 @@ */ package com.oracle.max.graal.compiler; -import java.util.*; - import com.oracle.max.cri.ci.*; import com.oracle.max.cri.ri.*; import com.oracle.max.cri.xir.*; import com.oracle.max.criutils.*; import com.oracle.max.graal.compiler.phases.*; -import com.oracle.max.graal.compiler.stub.*; import com.oracle.max.graal.compiler.target.*; import com.oracle.max.graal.cri.*; public class GraalCompiler { - public final Map stubs = new HashMap<>(); - public final GraalContext context; /** diff -r 744dade427b8 -r f461a4a09e53 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java Wed Jan 11 13:35:49 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/lir/FrameMap.java Wed Jan 11 13:40:12 2012 +0100 @@ -27,9 +27,8 @@ import java.util.*; import com.oracle.max.cri.ci.*; -import com.oracle.max.cri.ci.CiCallingConvention.*; +import com.oracle.max.cri.ci.CiCallingConvention.Type; import com.oracle.max.cri.ri.*; -import com.oracle.max.graal.compiler.stub.*; import com.oracle.max.graal.compiler.util.*; /** @@ -213,18 +212,6 @@ } /** - * Informs the frame map that the compiled code uses a particular compiler stub, which - * may need stack space for outgoing arguments. - * @param stub The compiler stub. - */ - public void usesStub(CompilerStub stub) { - // TODO look at the actual stack slot offsets? - int argsSize = stub.inArgs.length * target.wordSize; - int resultSize = stub.resultKind.isVoid() ? 0 : target.wordSize; - reserveOutgoing(Math.max(argsSize, resultSize)); - } - - /** * Reserves space for stack-based outgoing arguments. * @param argsSize The amount of space (in bytes) to reserve for stack-based outgoing arguments. */ diff -r 744dade427b8 -r f461a4a09e53 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/stub/CompilerStub.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/stub/CompilerStub.java Wed Jan 11 13:35:49 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2009, 2011, 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.max.graal.compiler.stub; - -import static com.oracle.max.cri.ci.CiKind.*; - -import com.oracle.max.cri.ci.*; - -/** - * A compiler stub is a shared routine that performs an operation on behalf of compiled code. - * Typically the routine is too large to inline, is infrequent, or requires runtime support. - * Compiler stubs are called with a callee-save convention; the compiler stub must save any - * registers it may destroy and then restore them upon return. This allows the register - * allocator to ignore calls to compiler stubs. Parameters to compiler stubs are - * passed on the stack in order to preserve registers for the rest of the code. - */ -public class CompilerStub { - - public enum Id { - f2i(Int, Float), - f2l(Long, Float), - d2i(Int, Double), - d2l(Long, Double); - - public final CiKind resultKind; - public final CiKind[] arguments; - - private Id(CiKind resultKind, CiKind... args) { - this.resultKind = resultKind; - this.arguments = args; - } - } - - public final Id id; - public final CiKind resultKind; - public final Object stubObject; - - /** - * The slots in which the stub finds its incoming arguments. - * To get the arguments from the perspective of the stub's caller, - * use {@link CiStackSlot#asOutArg()}. - */ - public final CiStackSlot[] inArgs; - - /** - * The slot in which the stub places its return value (if any). - * To get the value from the perspective of the stub's caller, - * use {@link CiStackSlot#asOutArg()}. - */ - public final CiStackSlot outResult; - - public CompilerStub(Id id, CiKind resultKind, Object stubObject, CiStackSlot[] argSlots, CiStackSlot resultSlot) { - this.id = id; - this.resultKind = resultKind; - this.stubObject = stubObject; - this.inArgs = argSlots; - this.outResult = resultSlot; - } - -} diff -r 744dade427b8 -r f461a4a09e53 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64CallOpcode.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64CallOpcode.java Wed Jan 11 13:35:49 2012 +0100 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64CallOpcode.java Wed Jan 11 13:40:12 2012 +0100 @@ -28,12 +28,11 @@ import com.oracle.max.asm.target.amd64.*; import com.oracle.max.cri.ci.*; -import com.oracle.max.cri.ci.CiTargetMethod.*; -import com.oracle.max.cri.xir.CiXirAssembler.*; +import com.oracle.max.cri.ci.CiTargetMethod.Mark; +import com.oracle.max.cri.xir.CiXirAssembler.XirMark; import com.oracle.max.graal.compiler.*; import com.oracle.max.graal.compiler.asm.*; import com.oracle.max.graal.compiler.lir.*; -import com.oracle.max.graal.compiler.stub.*; import com.oracle.max.graal.compiler.util.*; public enum AMD64CallOpcode implements StandardOpcode.CallOpcode { @@ -94,30 +93,6 @@ } } - public static void callStub(TargetMethodAssembler tasm, AMD64MacroAssembler masm, CompilerStub stub, LIRDebugInfo info, CiValue result, CiValue... args) { - assert args.length == stub.inArgs.length; - for (int i = 0; i < args.length; i++) { - assert stub.inArgs[i].inCallerFrame(); - AMD64MoveOpcode.move(tasm, masm, stub.inArgs[i].asOutArg(), args[i]); - } - - directCall(tasm, masm, stub.stubObject, info); - - if (isLegal(result)) { - AMD64MoveOpcode.move(tasm, masm, result, stub.outResult.asOutArg()); - } - - // Clear out parameters - if (GraalOptions.GenAssertionCode) { - for (int i = 0; i < args.length; i++) { - CiStackSlot inArg = stub.inArgs[i]; - CiStackSlot outArg = inArg.asOutArg(); - CiAddress dst = tasm.asAddress(outArg); - masm.movptr(dst, 0); - } - } - } - public static void directCall(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Object target, LIRDebugInfo info) { int before = masm.codeBuffer.position(); if (target instanceof CiRuntimeCall) {