Skip to content

Commit 815f63b

Browse files
committed
fix order of varnames in pcode
1 parent c5a0f64 commit 815f63b

File tree

1 file changed

+11
-11
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/code

1 file changed

+11
-11
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/code/PCode.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
*/
4141
package com.oracle.graal.python.builtins.objects.code;
4242

43+
import java.util.ArrayList;
4344
import java.util.Arrays;
4445
import java.util.HashSet;
4546
import java.util.List;
@@ -287,29 +288,28 @@ private void extractArgStats() {
287288
Set<String> freeVarsSet = asSet((String[]) freevars);
288289
Set<String> cellVarsSet = asSet((String[]) cellvars);
289290

290-
Set<String> argNames = new HashSet<>();
291-
argNames.addAll(Arrays.asList(arity.getParameterIds()));
292-
argNames.addAll(Arrays.asList(arity.getKeywordNames()));
291+
ArrayList<String> varNameList = new ArrayList<>(); // must be ordered!
292+
varNameList.addAll(Arrays.asList(arity.getParameterIds()));
293+
varNameList.addAll(Arrays.asList(arity.getKeywordNames()));
293294

294-
Set<String> varnamesSet = new HashSet<>();
295295
for (Object identifier : getRootNode().getFrameDescriptor().getIdentifiers()) {
296296
if (identifier instanceof String) {
297297
String varName = (String) identifier;
298298

299299
if (FrameSlotIDs.RETURN_SLOT_ID.equals(varName) || varName.startsWith(FrameSlotIDs.TEMP_LOCAL_PREFIX)) {
300300
// pass
301-
} else if (PythonLanguage.getCore().getParser().isIdentifier(PythonLanguage.getCore(), varName)) {
302-
if (argNames.contains(varName)) {
303-
varnamesSet.add(varName);
304-
} else if (!freeVarsSet.contains(varName) && !cellVarsSet.contains(varName)) {
305-
varnamesSet.add(varName);
301+
} else if (!varNameList.contains(varName)) {
302+
if (PythonLanguage.getCore().getParser().isIdentifier(PythonLanguage.getCore(), varName)) {
303+
if (!freeVarsSet.contains(varName) && !cellVarsSet.contains(varName)) {
304+
varNameList.add(varName);
305+
}
306306
}
307307
}
308308
}
309309
}
310310

311-
this.varnames = varnamesSet.toArray();
312-
this.nlocals = varnamesSet.size();
311+
this.varnames = varNameList.toArray();
312+
this.nlocals = varNameList.size();
313313
}
314314

315315
public RootNode getRootNode() {

0 commit comments

Comments
 (0)