@@ -180,7 +180,7 @@ public void createLocal(String name) {
180180 }
181181
182182 private FrameSlot createAndReturnLocal (String name ) {
183- return currentScope .getFrameDescriptor (). findOrAddFrameSlot (name );
183+ return currentScope .createSlotIfNotPresent (name );
184184 }
185185
186186 private boolean isCellInCurrentScope (String name ) {
@@ -224,35 +224,33 @@ private StatementNode getWriteNode(String name, FrameSlot slot, ExpressionNode r
224224 return factory .createWriteLocal (right , slot );
225225 }
226226
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 );
232230 }
233231
234232 public StatementNode getWriteArgumentToLocal (String name ) {
235- return getWriteNode (name , slot -> ReadIndexedArgumentNode .create (slot . getIndex () ));
233+ return getWriteNode (name , index -> ReadIndexedArgumentNode .create (index ));
236234 }
237235
238236 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 ));
240238 }
241239
242240 public StatementNode getWriteRequiredKeywordArgumentToLocal (String name ) {
243- return getWriteNode (name , slot -> ReadKeywordNode .create (name ));
241+ return getWriteNode (name , index -> ReadKeywordNode .create (name ));
244242 }
245243
246244 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 ));
248246 }
249247
250248 public StatementNode getWriteVarArgsToLocal (String name ) {
251- return getWriteNode (name , slot -> ReadVarArgsNode .create (slot . getIndex () ));
249+ return getWriteNode (name , index -> ReadVarArgsNode .create (index ));
252250 }
253251
254252 public StatementNode getWriteKwArgsToLocal (String name , String [] names ) {
255- return getWriteNode (name , slot -> ReadVarKeywordsNode .createForUserFunction (names ));
253+ return getWriteNode (name , index -> ReadVarKeywordsNode .createForUserFunction (names ));
256254 }
257255
258256 static ScopeInfo findVariableScope (ScopeInfo enclosingScope , String identifier ) {
@@ -351,7 +349,7 @@ public static FrameSlot makeTempLocalVariable(FrameDescriptor frameDescriptor) {
351349
352350 private void createGlobal (String name ) {
353351 assert name != null : "name is null!" ;
354- globalScope .getFrameDescriptor (). findOrAddFrameSlot (name );
352+ globalScope .createSlotIfNotPresent (name );
355353 }
356354
357355 public void addLocalGlobals (String name ) {
@@ -401,7 +399,7 @@ protected ReadDefaultArgumentNode[] getDefaultArgumentReads() {
401399 }
402400
403401 public FrameSlot getReturnSlot () {
404- return currentScope .getFrameDescriptor (). findOrAddFrameSlot (RETURN_SLOT_ID );
402+ return currentScope .createSlotIfNotPresent (RETURN_SLOT_ID );
405403 }
406404
407405 private ScopeInfo findEnclosingClassScope () {
0 commit comments