Skip to content

Commit bf9900c

Browse files
committed
Renames for clarity
1 parent 73e5de0 commit bf9900c

File tree

4 files changed

+27
-36
lines changed

4 files changed

+27
-36
lines changed

src/main/java/org/truffleruby/language/RubyRootNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public Object execute(VirtualFrame frame) {
8484
public FrameDescriptor getParentFrameDescriptor() {
8585
var info = getFrameDescriptor().getInfo();
8686
if (info instanceof BlockFrameDescriptorInfo) {
87-
return ((BlockFrameDescriptorInfo) info).getDescriptor();
87+
return ((BlockFrameDescriptorInfo) info).getParentDescriptor();
8888
} else {
8989
return null;
9090
}

src/main/java/org/truffleruby/language/locals/FindDeclarationVariableNodes.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.oracle.truffle.api.dsl.ReportPolymorphism;
2626
import com.oracle.truffle.api.dsl.Specialization;
2727
import com.oracle.truffle.api.frame.FrameDescriptor;
28-
import org.truffleruby.parser.BlockFrameDescriptorInfo;
2928

3029
public abstract class FindDeclarationVariableNodes {
3130
public static final class FrameSlotAndDepth {
@@ -50,13 +49,6 @@ public static MaterializedFrame getOuterDeclarationFrame(MaterializedFrame topFr
5049
return frame;
5150
}
5251

53-
public static FrameDescriptor getOuterFrameDescriptor(FrameDescriptor descriptor) {
54-
while (descriptor.getInfo() instanceof BlockFrameDescriptorInfo nextDescriptor) {
55-
descriptor = nextDescriptor.getDescriptor();
56-
}
57-
return descriptor;
58-
}
59-
6052
private static int findSlot(FrameDescriptor descriptor, String name) {
6153
assert descriptor.getNumberOfAuxiliarySlots() == 0;
6254
int slots = descriptor.getNumberOfSlots();

src/main/java/org/truffleruby/parser/BlockFrameDescriptorInfo.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,31 @@
1515
import com.oracle.truffle.api.nodes.ExplodeLoop;
1616
import org.truffleruby.language.threadlocal.SpecialVariableStorage;
1717

18+
/** This is the {@link FrameDescriptor#getInfo() descriptor info} for blocks. The descriptor info for methods is an
19+
* {@link SpecialVariableStorage#getAssumption(FrameDescriptor) Assumption}. */
1820
public final class BlockFrameDescriptorInfo {
1921

2022
@ExplodeLoop
2123
public static FrameDescriptor getDeclarationFrameDescriptor(FrameDescriptor topDescriptor, int depth) {
2224
assert depth > 0;
2325
FrameDescriptor descriptor = topDescriptor;
2426
for (int i = 0; i < depth; i++) {
25-
descriptor = ((BlockFrameDescriptorInfo) descriptor.getInfo()).getDescriptor();
27+
descriptor = ((BlockFrameDescriptorInfo) descriptor.getInfo()).getParentDescriptor();
2628
}
2729
return descriptor;
2830
}
2931

30-
@CompilationFinal private FrameDescriptor descriptor;
32+
@CompilationFinal private FrameDescriptor parentDescriptor;
3133
private final Assumption specialVariableAssumption;
3234

3335
public BlockFrameDescriptorInfo(Assumption specialVariableAssumption) {
3436
assert SpecialVariableStorage.isSpecialVariableAssumption(specialVariableAssumption);
3537
this.specialVariableAssumption = specialVariableAssumption;
3638
}
3739

38-
public BlockFrameDescriptorInfo(FrameDescriptor descriptor) {
39-
this.descriptor = descriptor;
40-
this.specialVariableAssumption = getSpecialVariableAssumptionFromDescriptor(descriptor);
40+
public BlockFrameDescriptorInfo(FrameDescriptor parentDescriptor) {
41+
this.parentDescriptor = parentDescriptor;
42+
this.specialVariableAssumption = getSpecialVariableAssumptionFromDescriptor(parentDescriptor);
4143
}
4244

4345
private Assumption getSpecialVariableAssumptionFromDescriptor(FrameDescriptor descriptor) {
@@ -48,14 +50,14 @@ private Assumption getSpecialVariableAssumptionFromDescriptor(FrameDescriptor de
4850
}
4951
}
5052

51-
public FrameDescriptor getDescriptor() {
52-
assert descriptor != null;
53-
return descriptor;
53+
public FrameDescriptor getParentDescriptor() {
54+
assert parentDescriptor != null;
55+
return parentDescriptor;
5456
}
5557

56-
void set(FrameDescriptor descriptor) {
57-
assert this.descriptor == null;
58-
this.descriptor = descriptor;
58+
void setParentDescriptor(FrameDescriptor parentDescriptor) {
59+
assert this.parentDescriptor == null;
60+
this.parentDescriptor = parentDescriptor;
5961
}
6062

6163
public Assumption getSpecialVariableAssumption() {

src/main/java/org/truffleruby/parser/TranslatorEnvironment.java

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ public final class TranslatorEnvironment {
4646
private EconomicMap<Object, Integer> nameToIndex = EconomicMap.create();
4747
private FrameDescriptor.Builder frameDescriptorBuilder;
4848
private FrameDescriptor frameDescriptor;
49-
private final BlockFrameDescriptorInfo blockFrameDescriptorInfo;
49+
/** The descriptor info is shared for all blocks at the same level (i.e., for TranslatorEnvironment direct
50+
* children), in order to save footprint. It is therefore created in the parent TranslatorEnvironment of those
51+
* blocks using that descriptor info. */
52+
private final BlockFrameDescriptorInfo descriptorInfoForChildren;
5053

5154
private final List<Integer> flipFlopStates = new ArrayList<>();
5255

@@ -82,19 +85,18 @@ public TranslatorEnvironment(
8285

8386
if (descriptor == null) {
8487
if (blockDepth > 0) {
85-
BlockFrameDescriptorInfo parentBlockDescriptor = Objects
86-
.requireNonNull(parent.blockFrameDescriptorInfo);
87-
this.frameDescriptorBuilder = newFrameDescriptorBuilderForBlock(parentBlockDescriptor);
88-
this.blockFrameDescriptorInfo = new BlockFrameDescriptorInfo(
89-
parentBlockDescriptor.getSpecialVariableAssumption());
88+
BlockFrameDescriptorInfo descriptorInfo = Objects.requireNonNull(parent.descriptorInfoForChildren);
89+
this.frameDescriptorBuilder = newFrameDescriptorBuilderForBlock(descriptorInfo);
90+
this.descriptorInfoForChildren = new BlockFrameDescriptorInfo(
91+
descriptorInfo.getSpecialVariableAssumption());
9092
} else {
9193
var specialVariableAssumption = createSpecialVariableAssumption();
9294
this.frameDescriptorBuilder = newFrameDescriptorBuilderForMethod(specialVariableAssumption);
93-
this.blockFrameDescriptorInfo = new BlockFrameDescriptorInfo(specialVariableAssumption);
95+
this.descriptorInfoForChildren = new BlockFrameDescriptorInfo(specialVariableAssumption);
9496
}
9597
} else {
9698
this.frameDescriptor = descriptor;
97-
this.blockFrameDescriptorInfo = new BlockFrameDescriptorInfo(descriptor);
99+
this.descriptorInfoForChildren = new BlockFrameDescriptorInfo(descriptor);
98100

99101
assert descriptor.getNumberOfAuxiliarySlots() == 0;
100102
int slots = descriptor.getNumberOfSlots();
@@ -149,14 +151,9 @@ public boolean isTopLevelObjectScope() {
149151
}
150152

151153
// region frame descriptor
152-
public static FrameDescriptor.Builder newFrameDescriptorBuilderForBlock(BlockFrameDescriptorInfo parentBlockInfo) {
153-
if (parentBlockInfo == null) {
154-
throw CompilerDirectives.shouldNotReachHere(
155-
"Frame descriptor for block has to have parent");
156-
}
157-
154+
public static FrameDescriptor.Builder newFrameDescriptorBuilderForBlock(BlockFrameDescriptorInfo descriptorInfo) {
158155
var builder = FrameDescriptor.newBuilder().defaultValue(Nil.INSTANCE);
159-
builder.info(parentBlockInfo);
156+
builder.info(Objects.requireNonNull(descriptorInfo));
160157

161158
int selfIndex = builder.addSlot(FrameSlotKind.Illegal, SelfNode.SELF_IDENTIFIER, null);
162159
if (selfIndex != SelfNode.SELF_INDEX) {
@@ -298,7 +295,7 @@ public FrameDescriptor computeFrameDescriptor() {
298295
}
299296

300297
frameDescriptor = frameDescriptorBuilder.build();
301-
blockFrameDescriptorInfo.set(frameDescriptor);
298+
descriptorInfoForChildren.setParentDescriptor(frameDescriptor);
302299
frameDescriptorBuilder = null;
303300
nameToIndex = null;
304301
return frameDescriptor;

0 commit comments

Comments
 (0)