Search in sources :

Example 1 with VirtualStackSlotRange

use of org.graalvm.compiler.lir.framemap.VirtualStackSlotRange in project graal by oracle.

the class SimpleStackSlotAllocator method allocateStackSlots.

public void allocateStackSlots(FrameMapBuilderTool builder, LIRGenerationResult res) {
    DebugContext debug = res.getLIR().getDebug();
    StackSlot[] mapping = new StackSlot[builder.getNumberOfStackSlots()];
    boolean allocatedFramesizeEnabled = allocatedFramesize.isEnabled(debug);
    long currentFrameSize = allocatedFramesizeEnabled ? builder.getFrameMap().currentFrameSize() : 0;
    for (VirtualStackSlot virtualSlot : builder.getStackSlots()) {
        final StackSlot slot;
        if (virtualSlot instanceof SimpleVirtualStackSlot) {
            slot = mapSimpleVirtualStackSlot(builder, (SimpleVirtualStackSlot) virtualSlot);
            virtualFramesize.add(debug, builder.getFrameMap().spillSlotSize(virtualSlot.getValueKind()));
        } else if (virtualSlot instanceof VirtualStackSlotRange) {
            VirtualStackSlotRange slotRange = (VirtualStackSlotRange) virtualSlot;
            slot = mapVirtualStackSlotRange(builder, slotRange);
            virtualFramesize.add(debug, builder.getFrameMap().spillSlotRangeSize(slotRange.getSlots()));
        } else {
            throw GraalError.shouldNotReachHere("Unknown VirtualStackSlot: " + virtualSlot);
        }
        allocatedSlots.increment(debug);
        mapping[virtualSlot.getId()] = slot;
    }
    updateLIR(res, mapping);
    if (allocatedFramesizeEnabled) {
        allocatedFramesize.add(debug, builder.getFrameMap().currentFrameSize() - currentFrameSize);
    }
}
Also used : VirtualStackSlotRange(org.graalvm.compiler.lir.framemap.VirtualStackSlotRange) LIRValueUtil.asVirtualStackSlot(org.graalvm.compiler.lir.LIRValueUtil.asVirtualStackSlot) SimpleVirtualStackSlot(org.graalvm.compiler.lir.framemap.SimpleVirtualStackSlot) StackSlot(jdk.vm.ci.code.StackSlot) LIRValueUtil.isVirtualStackSlot(org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot) VirtualStackSlot(org.graalvm.compiler.lir.VirtualStackSlot) DebugContext(org.graalvm.compiler.debug.DebugContext) SimpleVirtualStackSlot(org.graalvm.compiler.lir.framemap.SimpleVirtualStackSlot) LIRValueUtil.asVirtualStackSlot(org.graalvm.compiler.lir.LIRValueUtil.asVirtualStackSlot) SimpleVirtualStackSlot(org.graalvm.compiler.lir.framemap.SimpleVirtualStackSlot) LIRValueUtil.isVirtualStackSlot(org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot) VirtualStackSlot(org.graalvm.compiler.lir.VirtualStackSlot)

Aggregations

StackSlot (jdk.vm.ci.code.StackSlot)1 DebugContext (org.graalvm.compiler.debug.DebugContext)1 LIRValueUtil.asVirtualStackSlot (org.graalvm.compiler.lir.LIRValueUtil.asVirtualStackSlot)1 LIRValueUtil.isVirtualStackSlot (org.graalvm.compiler.lir.LIRValueUtil.isVirtualStackSlot)1 VirtualStackSlot (org.graalvm.compiler.lir.VirtualStackSlot)1 SimpleVirtualStackSlot (org.graalvm.compiler.lir.framemap.SimpleVirtualStackSlot)1 VirtualStackSlotRange (org.graalvm.compiler.lir.framemap.VirtualStackSlotRange)1