@@ -180,7 +180,7 @@ public void createLocal(String name) {
180
180
}
181
181
182
182
private FrameSlot createAndReturnLocal (String name ) {
183
- return currentScope .getFrameDescriptor (). findOrAddFrameSlot (name );
183
+ return currentScope .createSlotIfNotPresent (name );
184
184
}
185
185
186
186
private boolean isCellInCurrentScope (String name ) {
@@ -224,35 +224,33 @@ private StatementNode getWriteNode(String name, FrameSlot slot, ExpressionNode r
224
224
return factory .createWriteLocal (right , slot );
225
225
}
226
226
227
- private StatementNode getWriteNode (String name , Function <FrameSlot , ReadArgumentNode > getReadNode ) {
228
- FrameSlot slot = currentScope .findFrameSlot (name );
229
- ExpressionNode right = getReadNode .apply (slot ).asExpression ();
230
-
231
- return getWriteNode (name , slot , right );
227
+ private StatementNode getWriteNode (String name , Function <Integer , ReadArgumentNode > getReadNode ) {
228
+ ExpressionNode right = getReadNode .apply (currentScope .getVariableIndex (name )).asExpression ();
229
+ return getWriteNode (name , currentScope .findFrameSlot (name ), right );
232
230
}
233
231
234
232
public StatementNode getWriteArgumentToLocal (String name ) {
235
- return getWriteNode (name , slot -> ReadIndexedArgumentNode .create (slot . getIndex () ));
233
+ return getWriteNode (name , index -> ReadIndexedArgumentNode .create (index ));
236
234
}
237
235
238
236
public StatementNode getWriteKeywordArgumentToLocal (String name , ReadDefaultArgumentNode readDefaultArgumentNode ) {
239
- return getWriteNode (name , slot -> ReadKeywordNode .create (name , slot . getIndex () , readDefaultArgumentNode ));
237
+ return getWriteNode (name , index -> ReadKeywordNode .create (name , index , readDefaultArgumentNode ));
240
238
}
241
239
242
240
public StatementNode getWriteRequiredKeywordArgumentToLocal (String name ) {
243
- return getWriteNode (name , slot -> ReadKeywordNode .create (name ));
241
+ return getWriteNode (name , index -> ReadKeywordNode .create (name ));
244
242
}
245
243
246
244
public StatementNode getWriteRequiredKeywordArgumentToLocal (String name , ReadDefaultArgumentNode readDefaultArgumentNode ) {
247
- return getWriteNode (name , slot -> ReadKeywordNode .create (name , readDefaultArgumentNode ));
245
+ return getWriteNode (name , index -> ReadKeywordNode .create (name , readDefaultArgumentNode ));
248
246
}
249
247
250
248
public StatementNode getWriteVarArgsToLocal (String name ) {
251
- return getWriteNode (name , slot -> ReadVarArgsNode .create (slot . getIndex () ));
249
+ return getWriteNode (name , index -> ReadVarArgsNode .create (index ));
252
250
}
253
251
254
252
public StatementNode getWriteKwArgsToLocal (String name , String [] names ) {
255
- return getWriteNode (name , slot -> ReadVarKeywordsNode .createForUserFunction (names ));
253
+ return getWriteNode (name , index -> ReadVarKeywordsNode .createForUserFunction (names ));
256
254
}
257
255
258
256
static ScopeInfo findVariableScope (ScopeInfo enclosingScope , String identifier ) {
@@ -351,7 +349,7 @@ public static FrameSlot makeTempLocalVariable(FrameDescriptor frameDescriptor) {
351
349
352
350
private void createGlobal (String name ) {
353
351
assert name != null : "name is null!" ;
354
- globalScope .getFrameDescriptor (). findOrAddFrameSlot (name );
352
+ globalScope .createSlotIfNotPresent (name );
355
353
}
356
354
357
355
public void addLocalGlobals (String name ) {
@@ -401,7 +399,7 @@ protected ReadDefaultArgumentNode[] getDefaultArgumentReads() {
401
399
}
402
400
403
401
public FrameSlot getReturnSlot () {
404
- return currentScope .getFrameDescriptor (). findOrAddFrameSlot (RETURN_SLOT_ID );
402
+ return currentScope .createSlotIfNotPresent (RETURN_SLOT_ID );
405
403
}
406
404
407
405
private ScopeInfo findEnclosingClassScope () {
0 commit comments