@@ -181,8 +181,9 @@ private boolean methodReturnsLocalPlayerDependentValue(ImMethod method) {
181181 if (localPlayerDependentReturns .contains (method .getImplementation ())) {
182182 return true ;
183183 }
184- for (ImMethod subMethod : method .getSubMethods ()) {
185- if (methodReturnsLocalPlayerDependentValue (subMethod )) {
184+ List <ImMethod > subMethods = method .getSubMethods ();
185+ for (int i = 0 ; i < subMethods .size (); i ++) {
186+ if (methodReturnsLocalPlayerDependentValue (subMethods .get (i ))) {
186187 return true ;
187188 }
188189 }
@@ -259,9 +260,12 @@ private void indexElementAfterChildren(Element element, ImFunction owner, Object
259260 } else if (element instanceof ImMemberAccess ) {
260261 addDependency (variableFact (((ImMemberAccess ) element ).getVar ()), element );
261262 } else if (element instanceof ImVarargLoop ) {
263+ ImVarargLoop loop = (ImVarargLoop ) element ;
262264 ImVar varargParameter = varargParameter (owner );
263265 if (varargParameter != null ) {
264- for (ImVarargLoopVar loopVar : ((ImVarargLoop ) element ).getLoopVars ()) {
266+ List <ImVarargLoopVar > loopVars = loop .getLoopVars ();
267+ for (int i = 0 ; i < loopVars .size (); i ++) {
268+ ImVarargLoopVar loopVar = loopVars .get (i );
265269 addDependency (variableFact (varargParameter ), variableFact (loopVar .getVar ()));
266270 }
267271 }
@@ -292,7 +296,8 @@ private void scheduleStatementSequence(ImStmts statements,
292296 Deque <IndexTask > work ) {
293297 List <IndexTask > tasks = new ArrayList <>(statements .size ());
294298 Object continuationControl = controlContext ;
295- for (ImStmt statement : statements ) {
299+ for (int i = 0 ; i < statements .size (); i ++) {
300+ ImStmt statement = statements .get (i );
296301 addDependency (statement , statements );
297302 tasks .add (new IndexTask (statement , continuationControl , false ));
298303
@@ -380,6 +385,8 @@ private void indexFunctionCall(ImFunctionCall call, ImFunction owner, Object con
380385 ImFunction called = call .getFunc ();
381386 addDependency (returnFact (called ), call );
382387 addDependency (useFact (called ), useFact (owner ));
388+ List <ImExpr > arguments = call .getArguments ();
389+ List <ImVar > calledParameters = called .getParameters ();
383390 if (!called .isNative ()) {
384391 addEnclosingControlDependency (controlContext , entryControlFact (called ));
385392 }
@@ -388,19 +395,20 @@ private void indexFunctionCall(ImFunctionCall call, ImFunction owner, Object con
388395 addLocalPlayerSource (called );
389396 }
390397
391- int fixedParameterCount = called . getParameters () .size ();
398+ int fixedParameterCount = calledParameters .size ();
392399 if (called .hasFlag (IS_VARARG ) && fixedParameterCount > 0 ) {
393400 fixedParameterCount --;
394401 }
395- int positionalCount = Math .min (call .getArguments ().size (), fixedParameterCount );
402+ int argumentCount = arguments .size ();
403+ int positionalCount = Math .min (argumentCount , fixedParameterCount );
396404 for (int i = 0 ; i < positionalCount ; i ++) {
397- addDependency (call . getArguments () .get (i ),
398- variableFact (called . getParameters () .get (i )));
405+ addDependency (arguments .get (i ),
406+ variableFact (calledParameters .get (i )));
399407 }
400408 ImVar varargParameter = varargParameter (called );
401409 if (varargParameter != null ) {
402- for (int i = fixedParameterCount ; i < call . getArguments (). size () ; i ++) {
403- addDependency (call . getArguments () .get (i ),
410+ for (int i = fixedParameterCount ; i < argumentCount ; i ++) {
411+ addDependency (arguments .get (i ),
404412 variableFact (varargParameter ));
405413 }
406414 }
@@ -425,14 +433,18 @@ private void indexMethodCall(ImMethodCall call, ImFunction owner, Object control
425433 addDependency (unknownDispatchSource , useFact (owner ));
426434 }
427435
436+ List <ImExpr > arguments = call .getArguments ();
428437 for (ImFunction implementation : implementations ) {
429438 addDependency (returnFact (implementation ), call );
430439 addDependency (useFact (implementation ), useFact (owner ));
431440 addEnclosingControlDependency (controlContext , entryControlFact (implementation ));
432- for (ImVar parameter : implementation .getParameters ()) {
433- addDependency (call .getReceiver (), variableFact (parameter ));
434- for (ImExpr argument : call .getArguments ()) {
435- addDependency (argument , variableFact (parameter ));
441+ Element receiver = call .getReceiver ();
442+ List <ImVar > parameters = implementation .getParameters ();
443+ for (int i = 0 ; i < parameters .size (); i ++) {
444+ ImVar parameter = parameters .get (i );
445+ addDependency (receiver , variableFact (parameter ));
446+ for (int j = 0 ; j < arguments .size (); j ++) {
447+ addDependency (arguments .get (j ), variableFact (parameter ));
436448 }
437449 }
438450 }
@@ -487,8 +499,9 @@ private boolean collectMethodImplementations(ImMethod method,
487499 return method != null && method .getImplementation () != null ;
488500 }
489501 implementations .add (method .getImplementation ());
490- for (ImMethod subMethod : method .getSubMethods ()) {
491- if (!collectMethodImplementations (subMethod , implementations , visited )) {
502+ List <ImMethod > subMethods = method .getSubMethods ();
503+ for (int i = 0 ; i < subMethods .size (); i ++) {
504+ if (!collectMethodImplementations (subMethods .get (i ), implementations , visited )) {
492505 return false ;
493506 }
494507 }
@@ -508,9 +521,11 @@ private void forEachAssignedVariable(ImLExpr left, Consumer<ImVar> consumer) {
508521 forEachAssignedVariable ((ImLExpr ) tupleExpr , consumer );
509522 }
510523 } else if (left instanceof ImTupleExpr ) {
511- for (ImExpr expr : ((ImTupleExpr ) left ).getExprs ()) {
512- if (expr instanceof ImLExpr ) {
513- forEachAssignedVariable ((ImLExpr ) expr , consumer );
524+ ImExprs exprs = ((ImTupleExpr ) left ).getExprs ();
525+ for (int i = 0 ; i < exprs .size (); i ++) {
526+ ImExpr expr = exprs .get (i );
527+ if (expr instanceof ImLExpr lExpr ) {
528+ forEachAssignedVariable (lExpr , consumer );
514529 }
515530 }
516531 } else if (left instanceof ImStatementExpr ) {
0 commit comments