Skip to content

Commit 22aa44d

Browse files
committed
Fix: do not use capacity but length of sequence storage.
1 parent ee6f222 commit 22aa44d

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/ImpModuleBuiltins.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
import com.oracle.graal.python.builtins.objects.code.PCode;
6565
import com.oracle.graal.python.builtins.objects.common.HashingCollectionNodes.SetItemNode;
6666
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes;
67+
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
6768
import com.oracle.graal.python.builtins.objects.dict.PDict;
6869
import com.oracle.graal.python.builtins.objects.exception.PBaseException;
6970
import com.oracle.graal.python.builtins.objects.ints.PInt;
@@ -86,6 +87,7 @@
8687
import com.oracle.graal.python.runtime.PythonOptions;
8788
import com.oracle.graal.python.runtime.exception.PException;
8889
import com.oracle.graal.python.runtime.exception.PythonErrorType;
90+
import com.oracle.graal.python.runtime.sequence.storage.SequenceStorage;
8991
import com.oracle.truffle.api.CallTarget;
9092
import com.oracle.truffle.api.CompilerAsserts;
9193
import com.oracle.truffle.api.CompilerDirectives;
@@ -467,12 +469,16 @@ public Object run(String modulename, String moduleFile, @SuppressWarnings("unuse
467469

468470
@Specialization
469471
public Object run(VirtualFrame frame, String modulename, String moduleFile, PList modulepath,
472+
@Cached SequenceStorageNodes.LenNode lenNode,
470473
@Shared("cast") @Cached CastToStringNode castString,
471474
@Shared("ctxt") @CachedContext(PythonLanguage.class) PythonContext ctxt,
472475
@Shared("lang") @CachedLanguage PythonLanguage lang) {
473-
Object[] pathList = modulepath.getSequenceStorage().getInternalArray();
474-
String[] paths = new String[pathList.length];
475-
for (int i = 0; i < pathList.length; i++) {
476+
SequenceStorage sequenceStorage = modulepath.getSequenceStorage();
477+
int n = lenNode.execute(sequenceStorage);
478+
Object[] pathList = sequenceStorage.getInternalArray();
479+
assert n <= pathList.length;
480+
String[] paths = new String[n];
481+
for (int i = 0; i < n; i++) {
476482
paths[i] = castString.execute(frame, pathList[i]);
477483
}
478484
return doCache(modulename, moduleFile, paths, ctxt, lang);

0 commit comments

Comments
 (0)