Skip to content

Commit 99a3105

Browse files
committed
Extract initialization to a different method for host inlining
* 971 -> 695 for org.truffleruby.language.SpecialVariablesSendingNode.getSpecialVariablesIfRequired
1 parent 784a7ae commit 99a3105

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/main/java/org/truffleruby/core/kernel/TruffleKernelNodes.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,7 @@ protected SpecialVariableStorage getFromKnownFrameDescriptor(Frame frame,
231231
variables = SpecialVariableStorage.get(frame);
232232
if (variables == nil) {
233233
CompilerDirectives.transferToInterpreterAndInvalidate();
234-
variables = new SpecialVariableStorage();
235-
SpecialVariableStorage.set(frame, (SpecialVariableStorage) variables);
236-
SpecialVariableStorage.getAssumption(frame.getFrameDescriptor()).invalidate();
234+
variables = initializeSpecialVariablesSlot(frame);
237235
}
238236
} else {
239237
Frame storageFrame = RubyArguments.getDeclarationFrame(frame, declarationFrameDepth);
@@ -246,9 +244,7 @@ protected SpecialVariableStorage getFromKnownFrameDescriptor(Frame frame,
246244
variables = SpecialVariableStorage.get(storageFrame);
247245
if (variables == nil) {
248246
CompilerDirectives.transferToInterpreterAndInvalidate();
249-
variables = new SpecialVariableStorage();
250-
SpecialVariableStorage.set(storageFrame, (SpecialVariableStorage) variables);
251-
SpecialVariableStorage.getAssumption(storageFrame.getFrameDescriptor()).invalidate();
247+
variables = initializeSpecialVariablesSlot(storageFrame);
252248
}
253249
}
254250
return (SpecialVariableStorage) variables;
@@ -264,13 +260,18 @@ public static SpecialVariableStorage getSlow(MaterializedFrame aFrame) {
264260
MaterializedFrame frame = FindDeclarationVariableNodes.getOuterDeclarationFrame(aFrame);
265261
Object variables = SpecialVariableStorage.get(frame);
266262
if (variables == Nil.INSTANCE) {
267-
variables = new SpecialVariableStorage();
268-
SpecialVariableStorage.set(frame, (SpecialVariableStorage) variables);
269-
SpecialVariableStorage.getAssumption(frame.getFrameDescriptor()).invalidate();
263+
variables = initializeSpecialVariablesSlot(frame);
270264
}
271265
return (SpecialVariableStorage) variables;
272266
}
273267

268+
private static Object initializeSpecialVariablesSlot(Frame storageFrame) {
269+
var variables = new SpecialVariableStorage();
270+
SpecialVariableStorage.set(storageFrame, variables);
271+
SpecialVariableStorage.getAssumption(storageFrame.getFrameDescriptor()).invalidate();
272+
return variables;
273+
}
274+
274275
private static void noStorageFrameError(Frame frame, int declarationFrameDepth) {
275276
int depth = 0;
276277
MaterializedFrame currentFrame = RubyArguments.getDeclarationFrame(frame);

0 commit comments

Comments
 (0)