AMD64FrameMapBuilder.java revision 12651:6ef01bd40ce2
185909Simp/*
285909Simp * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
385909Simp * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
485909Simp *
585909Simp * This code is free software; you can redistribute it and/or modify it
685909Simp * under the terms of the GNU General Public License version 2 only, as
788893Simp * published by the Free Software Foundation.
888893Simp *
988969Simp * This code is distributed in the hope that it will be useful, but WITHOUT
1088893Simp * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1185909Simp * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1285909Simp * version 2 for more details (a copy is included in the LICENSE file that
1385909Simp * accompanied this code).
1485909Simp *
1585909Simp * You should have received a copy of the GNU General Public License version
1685909Simp * 2 along with this work; if not, write to the Free Software Foundation,
1785909Simp * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1885909Simp *
1985909Simp * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2085909Simp * or visit www.oracle.com if you need additional information or have any
2185909Simp * questions.
2285909Simp */
2385909Simppackage org.graalvm.compiler.lir.amd64;
2485909Simp
2585909Simpimport org.graalvm.compiler.lir.framemap.FrameMap;
2685909Simpimport org.graalvm.compiler.lir.framemap.FrameMapBuilderImpl;
2785909Simp
2885909Simpimport jdk.vm.ci.code.CodeCacheProvider;
2985909Simpimport jdk.vm.ci.code.RegisterConfig;
3085909Simpimport jdk.vm.ci.code.StackSlot;
3185909Simp
3285909Simppublic class AMD64FrameMapBuilder extends FrameMapBuilderImpl {
3385909Simp
3485909Simp    public AMD64FrameMapBuilder(FrameMap frameMap, CodeCacheProvider codeCache, RegisterConfig registerConfig) {
3585909Simp        super(frameMap, codeCache, registerConfig);
3685909Simp    }
3785909Simp
3885909Simp    /**
3985909Simp     * For non-leaf methods, RBP is preserved in the special stack slot required by the HotSpot
4085909Simp     * runtime for walking/inspecting frames of such methods.
4185909Simp     */
4285909Simp    public StackSlot allocateRBPSpillSlot() {
4385909Simp        return ((AMD64FrameMap) getFrameMap()).allocateRBPSpillSlot();
4485909Simp    }
4585909Simp
4685909Simp    public void freeRBPSpillSlot() {
4785909Simp        ((AMD64FrameMap) getFrameMap()).freeRBPSpillSlot();
4885909Simp    }
4985909Simp
5085909Simp    public StackSlot allocateDeoptimizationRescueSlot() {
5185909Simp        return ((AMD64FrameMap) getFrameMap()).allocateDeoptimizationRescueSlot();
5285909Simp    }
5385909Simp}
5485909Simp