Skip to content

Commit 9ec1b60

Browse files
committed
Fix exhausted array iterator pickling
1 parent 8db8f14 commit 9ec1b60

File tree

2 files changed

+19
-1
lines changed
  • graalpython

2 files changed

+19
-1
lines changed

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_array.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
*graalpython.lib-python.3.test.test_array.ByteTest.test_initialize_with_unicode
3232
*graalpython.lib-python.3.test.test_array.ByteTest.test_insert
3333
*graalpython.lib-python.3.test.test_array.ByteTest.test_iterationcontains
34+
*graalpython.lib-python.3.test.test_array.ByteTest.test_iterator_pickle
3435
*graalpython.lib-python.3.test.test_array.ByteTest.test_len
3536
*graalpython.lib-python.3.test.test_array.ByteTest.test_mul
3637
*graalpython.lib-python.3.test.test_array.ByteTest.test_obsolete_write_lock
@@ -87,6 +88,7 @@
8788
*graalpython.lib-python.3.test.test_array.DoubleTest.test_initialize_with_unicode
8889
*graalpython.lib-python.3.test.test_array.DoubleTest.test_insert
8990
*graalpython.lib-python.3.test.test_array.DoubleTest.test_iterationcontains
91+
*graalpython.lib-python.3.test.test_array.DoubleTest.test_iterator_pickle
9092
*graalpython.lib-python.3.test.test_array.DoubleTest.test_len
9193
*graalpython.lib-python.3.test.test_array.DoubleTest.test_mul
9294
*graalpython.lib-python.3.test.test_array.DoubleTest.test_obsolete_write_lock
@@ -140,6 +142,7 @@
140142
*graalpython.lib-python.3.test.test_array.FloatTest.test_initialize_with_unicode
141143
*graalpython.lib-python.3.test.test_array.FloatTest.test_insert
142144
*graalpython.lib-python.3.test.test_array.FloatTest.test_iterationcontains
145+
*graalpython.lib-python.3.test.test_array.FloatTest.test_iterator_pickle
143146
*graalpython.lib-python.3.test.test_array.FloatTest.test_len
144147
*graalpython.lib-python.3.test.test_array.FloatTest.test_mul
145148
*graalpython.lib-python.3.test.test_array.FloatTest.test_obsolete_write_lock
@@ -193,6 +196,7 @@
193196
*graalpython.lib-python.3.test.test_array.IntTest.test_initialize_with_unicode
194197
*graalpython.lib-python.3.test.test_array.IntTest.test_insert
195198
*graalpython.lib-python.3.test.test_array.IntTest.test_iterationcontains
199+
*graalpython.lib-python.3.test.test_array.IntTest.test_iterator_pickle
196200
*graalpython.lib-python.3.test.test_array.IntTest.test_len
197201
*graalpython.lib-python.3.test.test_array.IntTest.test_mul
198202
*graalpython.lib-python.3.test.test_array.IntTest.test_obsolete_write_lock
@@ -262,6 +266,7 @@
262266
*graalpython.lib-python.3.test.test_array.LongLongTest.test_initialize_with_unicode
263267
*graalpython.lib-python.3.test.test_array.LongLongTest.test_insert
264268
*graalpython.lib-python.3.test.test_array.LongLongTest.test_iterationcontains
269+
*graalpython.lib-python.3.test.test_array.LongLongTest.test_iterator_pickle
265270
*graalpython.lib-python.3.test.test_array.LongLongTest.test_len
266271
*graalpython.lib-python.3.test.test_array.LongLongTest.test_mul
267272
*graalpython.lib-python.3.test.test_array.LongLongTest.test_obsolete_write_lock
@@ -316,6 +321,7 @@
316321
*graalpython.lib-python.3.test.test_array.LongTest.test_initialize_with_unicode
317322
*graalpython.lib-python.3.test.test_array.LongTest.test_insert
318323
*graalpython.lib-python.3.test.test_array.LongTest.test_iterationcontains
324+
*graalpython.lib-python.3.test.test_array.LongTest.test_iterator_pickle
319325
*graalpython.lib-python.3.test.test_array.LongTest.test_len
320326
*graalpython.lib-python.3.test.test_array.LongTest.test_mul
321327
*graalpython.lib-python.3.test.test_array.LongTest.test_obsolete_write_lock
@@ -372,6 +378,7 @@
372378
*graalpython.lib-python.3.test.test_array.ShortTest.test_initialize_with_unicode
373379
*graalpython.lib-python.3.test.test_array.ShortTest.test_insert
374380
*graalpython.lib-python.3.test.test_array.ShortTest.test_iterationcontains
381+
*graalpython.lib-python.3.test.test_array.ShortTest.test_iterator_pickle
375382
*graalpython.lib-python.3.test.test_array.ShortTest.test_len
376383
*graalpython.lib-python.3.test.test_array.ShortTest.test_mul
377384
*graalpython.lib-python.3.test.test_array.ShortTest.test_obsolete_write_lock
@@ -421,6 +428,7 @@
421428
*graalpython.lib-python.3.test.test_array.UnicodeTest.test_index
422429
*graalpython.lib-python.3.test.test_array.UnicodeTest.test_initialize_with_unicode
423430
*graalpython.lib-python.3.test.test_array.UnicodeTest.test_insert
431+
*graalpython.lib-python.3.test.test_array.UnicodeTest.test_iterator_pickle
424432
*graalpython.lib-python.3.test.test_array.UnicodeTest.test_len
425433
*graalpython.lib-python.3.test.test_array.UnicodeTest.test_mul
426434
*graalpython.lib-python.3.test.test_array.UnicodeTest.test_obsolete_write_lock
@@ -475,6 +483,7 @@
475483
*graalpython.lib-python.3.test.test_array.UnsignedByteTest.test_initialize_with_unicode
476484
*graalpython.lib-python.3.test.test_array.UnsignedByteTest.test_insert
477485
*graalpython.lib-python.3.test.test_array.UnsignedByteTest.test_iterationcontains
486+
*graalpython.lib-python.3.test.test_array.UnsignedByteTest.test_iterator_pickle
478487
*graalpython.lib-python.3.test.test_array.UnsignedByteTest.test_len
479488
*graalpython.lib-python.3.test.test_array.UnsignedByteTest.test_mul
480489
*graalpython.lib-python.3.test.test_array.UnsignedByteTest.test_obsolete_write_lock
@@ -532,6 +541,7 @@
532541
*graalpython.lib-python.3.test.test_array.UnsignedIntTest.test_initialize_with_unicode
533542
*graalpython.lib-python.3.test.test_array.UnsignedIntTest.test_insert
534543
*graalpython.lib-python.3.test.test_array.UnsignedIntTest.test_iterationcontains
544+
*graalpython.lib-python.3.test.test_array.UnsignedIntTest.test_iterator_pickle
535545
*graalpython.lib-python.3.test.test_array.UnsignedIntTest.test_len
536546
*graalpython.lib-python.3.test.test_array.UnsignedIntTest.test_mul
537547
*graalpython.lib-python.3.test.test_array.UnsignedIntTest.test_obsolete_write_lock
@@ -588,6 +598,7 @@
588598
*graalpython.lib-python.3.test.test_array.UnsignedLongLongTest.test_initialize_with_unicode
589599
*graalpython.lib-python.3.test.test_array.UnsignedLongLongTest.test_insert
590600
*graalpython.lib-python.3.test.test_array.UnsignedLongLongTest.test_iterationcontains
601+
*graalpython.lib-python.3.test.test_array.UnsignedLongLongTest.test_iterator_pickle
591602
*graalpython.lib-python.3.test.test_array.UnsignedLongLongTest.test_len
592603
*graalpython.lib-python.3.test.test_array.UnsignedLongLongTest.test_mul
593604
*graalpython.lib-python.3.test.test_array.UnsignedLongLongTest.test_obsolete_write_lock
@@ -644,6 +655,7 @@
644655
*graalpython.lib-python.3.test.test_array.UnsignedLongTest.test_initialize_with_unicode
645656
*graalpython.lib-python.3.test.test_array.UnsignedLongTest.test_insert
646657
*graalpython.lib-python.3.test.test_array.UnsignedLongTest.test_iterationcontains
658+
*graalpython.lib-python.3.test.test_array.UnsignedLongTest.test_iterator_pickle
647659
*graalpython.lib-python.3.test.test_array.UnsignedLongTest.test_len
648660
*graalpython.lib-python.3.test.test_array.UnsignedLongTest.test_mul
649661
*graalpython.lib-python.3.test.test_array.UnsignedLongTest.test_obsolete_write_lock
@@ -700,6 +712,7 @@
700712
*graalpython.lib-python.3.test.test_array.UnsignedShortTest.test_initialize_with_unicode
701713
*graalpython.lib-python.3.test.test_array.UnsignedShortTest.test_insert
702714
*graalpython.lib-python.3.test.test_array.UnsignedShortTest.test_iterationcontains
715+
*graalpython.lib-python.3.test.test_array.UnsignedShortTest.test_iterator_pickle
703716
*graalpython.lib-python.3.test.test_array.UnsignedShortTest.test_len
704717
*graalpython.lib-python.3.test.test_array.UnsignedShortTest.test_mul
705718
*graalpython.lib-python.3.test.test_array.UnsignedShortTest.test_obsolete_write_lock

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/iterator/IteratorBuiltins.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,13 @@ public abstract static class ReduceNode extends PythonUnaryBuiltinNode {
334334
@Specialization
335335
public Object reduce(VirtualFrame frame, PArrayIterator self,
336336
@CachedContext(PythonLanguage.class) PythonContext context,
337+
@Cached ConditionProfile exhaustedProfile,
337338
@Cached.Shared("pol") @CachedLibrary(limit = "1") PythonObjectLibrary pol) {
338-
return reduceInternal(frame, self.array, self.getIndex(), context, pol);
339+
if (!exhaustedProfile.profile(self.isExhausted())) {
340+
return reduceInternal(frame, self.array, self.getIndex(), context, pol);
341+
} else {
342+
return reduceInternal(frame, factory().createEmptyTuple(), context, pol);
343+
}
339344
}
340345

341346
@Specialization

0 commit comments

Comments
 (0)