annotate graal/com.oracle.graal.lir/src/com/oracle/graal/lir/DelayedFrameMapBuilder.java @ 18432:6b58802e45b2

Revert Backend.frameMap(FrameMapBuilder) to Backend.frameMap(RegisterConfig).
author Josef Eisl <josef.eisl@jku.at>
date Mon, 10 Nov 2014 18:37:28 +0100
parents 84ac6a1a0dcb
children a0cd3a1e7d7d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
1 /*
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
2 * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
4 *
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
7 * published by the Free Software Foundation.
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
8 *
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
13 * accompanied this code).
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
14 *
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
18 *
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
21 * questions.
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
22 */
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
23 package com.oracle.graal.lir;
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
24
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
25 import java.util.*;
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
26
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
27 import com.oracle.graal.api.code.*;
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
28 import com.oracle.graal.api.meta.*;
18426
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
29 import com.oracle.graal.asm.*;
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
30 import com.oracle.graal.compiler.common.*;
18423
c656c5772cfa Pass LIRGenerationResult to FrameMapBuilder.buildFrameMap().
Josef Eisl <josef.eisl@jku.at>
parents: 18422
diff changeset
31 import com.oracle.graal.lir.gen.*;
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
32
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
33 /**
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
34 * A FrameMapBuilder that records allocation.
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
35 */
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
36 public class DelayedFrameMapBuilder implements FrameMapBuilder {
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
37
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
38 @FunctionalInterface
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
39 public interface FrameMapFactory {
18432
6b58802e45b2 Revert Backend.frameMap(FrameMapBuilder) to Backend.frameMap(RegisterConfig).
Josef Eisl <josef.eisl@jku.at>
parents: 18431
diff changeset
40 FrameMap newFrameMap(RegisterConfig registerConfig);
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
41 }
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
42
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
43 private final RegisterConfig registerConfig;
18422
a06ab51f9196 Add FrameMapBuilder.getCodeCache().
Josef Eisl <josef.eisl@jku.at>
parents: 18421
diff changeset
44 private final CodeCacheProvider codeCache;
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
45 private final FrameMapFactory factory;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
46 private final List<TrackedVirtualStackSlot> stackSlots;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
47 private final List<CallingConvention> calls;
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
48
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
49 public DelayedFrameMapBuilder(FrameMapFactory factory, CodeCacheProvider codeCache, RegisterConfig registerConfig) {
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
50 this.registerConfig = registerConfig == null ? codeCache.getRegisterConfig() : registerConfig;
18422
a06ab51f9196 Add FrameMapBuilder.getCodeCache().
Josef Eisl <josef.eisl@jku.at>
parents: 18421
diff changeset
51 this.codeCache = codeCache;
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
52 this.factory = factory;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
53 this.stackSlots = new ArrayList<>();
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
54 this.calls = new ArrayList<>();
18431
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
55 this.mappables = new ArrayList<>();
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
56 }
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
57
18426
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
58 private Set<VirtualStackSlot> freedSlots;
18431
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
59 private final List<FrameMappable> mappables;
18426
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
60
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
61 public VirtualStackSlot allocateSpillSlot(LIRKind kind) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
62 if (freedSlots != null) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
63 for (Iterator<VirtualStackSlot> iter = freedSlots.iterator(); iter.hasNext();) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
64 VirtualStackSlot s = iter.next();
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
65 if (s.getLIRKind().equals(kind)) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
66 iter.remove();
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
67 if (freedSlots.isEmpty()) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
68 freedSlots = null;
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
69 }
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
70 return s;
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
71 }
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
72 }
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
73 }
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
74 SimpleVirtualStackSlot slot = new SimpleVirtualStackSlot(kind);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
75 stackSlots.add(slot);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
76 return slot;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
77 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
78
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
79 public abstract class TrackedVirtualStackSlot extends VirtualStackSlot {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
80 /**
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
81 *
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
82 */
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
83 private static final long serialVersionUID = 408446797222290182L;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
84
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
85 public TrackedVirtualStackSlot(LIRKind lirKind) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
86 super(lirKind);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
87 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
88
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
89 public abstract StackSlot transform(FrameMap frameMap);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
90 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
91
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
92 private class SimpleVirtualStackSlot extends TrackedVirtualStackSlot {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
93
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
94 private static final long serialVersionUID = 7654295701165421750L;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
95
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
96 public SimpleVirtualStackSlot(LIRKind lirKind) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
97 super(lirKind);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
98 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
99
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
100 @Override
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
101 public StackSlot transform(FrameMap frameMap) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
102 int size = frameMap.spillSlotSize(getLIRKind());
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
103 frameMap.spillSize = NumUtil.roundUp(frameMap.spillSize + size, size);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
104 return frameMap.allocateNewSpillSlot(getLIRKind(), 0);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
105 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
106
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
107 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
108
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
109 private class VirtualStackSlotRange extends TrackedVirtualStackSlot {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
110
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
111 private static final long serialVersionUID = 5152592950118317121L;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
112 private final BitSet objects;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
113 private final int slots;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
114
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
115 public VirtualStackSlotRange(int slots, BitSet objects) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
116 super(LIRKind.reference(Kind.Object));
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
117 this.slots = slots;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
118 this.objects = (BitSet) objects.clone();
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
119 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
120
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
121 @Override
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
122 public StackSlot transform(FrameMap frameMap) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
123 frameMap.spillSize += (slots * frameMap.getTarget().wordSize);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
124
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
125 if (!objects.isEmpty()) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
126 assert objects.length() <= slots;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
127 StackSlot result = null;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
128 for (int slotIndex = 0; slotIndex < slots; slotIndex++) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
129 StackSlot objectSlot = null;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
130 if (objects.get(slotIndex)) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
131 objectSlot = frameMap.allocateNewSpillSlot(LIRKind.reference(Kind.Object), slotIndex * frameMap.getTarget().wordSize);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
132 frameMap.addObjectStackSlot(objectSlot);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
133 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
134 if (slotIndex == 0) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
135 if (objectSlot != null) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
136 result = objectSlot;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
137 } else {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
138 result = frameMap.allocateNewSpillSlot(LIRKind.value(frameMap.getTarget().wordKind), 0);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
139 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
140 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
141 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
142 assert result != null;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
143 return result;
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
144
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
145 } else {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
146 return frameMap.allocateNewSpillSlot(LIRKind.value(frameMap.getTarget().wordKind), 0);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
147 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
148 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
149
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
150 }
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
151
18428
0826409daa24 Use VirtualStackSlot for outObjectStackSlots in FrameMapBuilder.allocateStackSlots().
Josef Eisl <josef.eisl@jku.at>
parents: 18427
diff changeset
152 public VirtualStackSlot allocateStackSlots(int slots, BitSet objects, List<VirtualStackSlot> outObjectStackSlots) {
18427
9bf59aa9d8c6 Move allocateStackSlots logic from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18426
diff changeset
153 if (slots == 0) {
9bf59aa9d8c6 Move allocateStackSlots logic from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18426
diff changeset
154 return null;
9bf59aa9d8c6 Move allocateStackSlots logic from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18426
diff changeset
155 }
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
156 if (outObjectStackSlots != null) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
157 throw GraalInternalError.unimplemented();
18427
9bf59aa9d8c6 Move allocateStackSlots logic from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18426
diff changeset
158 }
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
159 VirtualStackSlotRange slot = new VirtualStackSlotRange(slots, objects);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
160 stackSlots.add(slot);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
161 return slot;
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
162 }
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
163
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
164 public RegisterConfig getRegisterConfig() {
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
165 return registerConfig;
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
166 }
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
167
18422
a06ab51f9196 Add FrameMapBuilder.getCodeCache().
Josef Eisl <josef.eisl@jku.at>
parents: 18421
diff changeset
168 public CodeCacheProvider getCodeCache() {
a06ab51f9196 Add FrameMapBuilder.getCodeCache().
Josef Eisl <josef.eisl@jku.at>
parents: 18421
diff changeset
169 return codeCache;
a06ab51f9196 Add FrameMapBuilder.getCodeCache().
Josef Eisl <josef.eisl@jku.at>
parents: 18421
diff changeset
170 }
a06ab51f9196 Add FrameMapBuilder.getCodeCache().
Josef Eisl <josef.eisl@jku.at>
parents: 18421
diff changeset
171
18426
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
172 public void freeSpillSlot(VirtualStackSlot slot) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
173 if (freedSlots == null) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
174 freedSlots = new HashSet<>();
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
175 }
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
176 freedSlots.add(slot);
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
177 }
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
178
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
179 public void callsMethod(CallingConvention cc) {
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
180 calls.add(cc);
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
181 }
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
182
18423
c656c5772cfa Pass LIRGenerationResult to FrameMapBuilder.buildFrameMap().
Josef Eisl <josef.eisl@jku.at>
parents: 18422
diff changeset
183 public FrameMap buildFrameMap(LIRGenerationResult res) {
18432
6b58802e45b2 Revert Backend.frameMap(FrameMapBuilder) to Backend.frameMap(RegisterConfig).
Josef Eisl <josef.eisl@jku.at>
parents: 18431
diff changeset
184 FrameMap frameMap = factory.newFrameMap(registerConfig);
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
185 HashMap<VirtualStackSlot, StackSlot> mapping = new HashMap<>();
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
186 // fill
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
187 mapStackSlots(frameMap, mapping);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
188 for (CallingConvention cc : calls) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
189 frameMap.callsMethod(cc);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
190 }
18431
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
191 // rewrite
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
192 mappables.forEach(m -> m.map(mapping::get));
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
193 //
18426
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
194 if (freedSlots != null) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
195 // If the freed slots cover the complete spill area (except for the return
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
196 // address slot), then the spill size is reset to its initial value.
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
197 // Without this, frameNeedsAllocating() would never return true.
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
198 int total = 0;
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
199 for (VirtualStackSlot s : freedSlots) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
200 total += frameMap.getTarget().getSizeInBytes(s.getKind());
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
201 }
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
202 if (total == frameMap.spillSize - frameMap.initialSpillSize) {
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
203 // reset spill area size
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
204 frameMap.spillSize = frameMap.initialSpillSize;
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
205 }
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
206 freedSlots = null;
b2b37b36a254 Move freeSpillSlot() from FrameMap to ForwardingFrameMapBuilder.
Josef Eisl <josef.eisl@jku.at>
parents: 18425
diff changeset
207 }
18155
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
208 frameMap.finish();
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
209 return frameMap;
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
210 }
115c9fac7542 Move FrameMapBuilderImpl to com.oracle.graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
diff changeset
211
18429
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
212 protected void mapStackSlots(FrameMap frameMap, HashMap<VirtualStackSlot, StackSlot> mapping) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
213 for (TrackedVirtualStackSlot virtualSlot : stackSlots) {
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
214 StackSlot slot = virtualSlot.transform(frameMap);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
215 mapping.put(virtualSlot, slot);
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
216 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
217 }
79268cfc256a StackSlot is no longer a VirtualStackSlot (rename ForwardingFrameMapBuilder to DelayedFrameMapBuilder).
Josef Eisl <josef.eisl@jku.at>
parents: 18428
diff changeset
218
18431
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
219 public void requireMapping(FrameMappable mappable) {
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
220 this.mappables.add(mappable);
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
221 }
84ac6a1a0dcb Introduce FrameMappingTool.
Josef Eisl <josef.eisl@jku.at>
parents: 18429
diff changeset
222
18163
c88ab4f1f04a re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents: 18155
diff changeset
223 }