Skip to content

Stdlib: AOT ParentIterator / MultipleIterator / RecursiveTreeIterator foreach (#27584) - #27672

Merged
PurHur merged 1 commit into
masterfrom
fix/27584-spl-wrap-iterators-aot-foreach
Aug 4, 2026
Merged

PurHur merged 1 commit into
masterfrom
fix/27584-spl-wrap-iterators-aot-foreach

Conversation

@PurHur

@PurHur PurHur commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Summary

Test plan

  • Issue repro Zend / VM / AOT ×3 — all print:
    Parent:b 
    Multi:a:1 b:2 
    Tree:\-Array|  |-1|  \-2|
    
    Commands:
    ./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
    cp test/repro/spl_wrap_iterators_foreach_aot.php /tmp/spl_wrap.php
    php /tmp/spl_wrap.php
    php bin/vm.php /tmp/spl_wrap.php
    ./phpc build -o /tmp/spl_wrap /tmp/spl_wrap.php
    for i in 1 2 3; do /tmp/spl_wrap; done'
  • vendor/bin/phpunit --filter spl_wrap_iterators_foreach — OK (1 test)
  • php script/bootstrap-inventory.php --check — OK 7004/7004
  • php script/check-selfhost-spine-coverage-sync.php — OK
  • Gen-0 sidecar stamp intentionally stale after spine require adds (same pattern as Stdlib: AOT FilterIterator subclass current()/accept fetch (#27565) #27651); trust follow-up refreshes prelinked/bootstrap-gen0/

Closes #27584

Made with Cursor

… foreach (#27584)

Snapshot wrappers into __spl_ht with pure LLVM (no NestedJIT bridges), and
route foreach through usesArrayIteratorHt so thin AOT matches Zend/VM.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit 39dc060 into master Aug 4, 2026
0 of 2 checks passed
@PurHur
PurHur deleted the fix/27584-spl-wrap-iterators-aot-foreach branch August 4, 2026 08:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Regression: AOT ParentIterator / MultipleIterator / RecursiveTreeIterator foreach silent empty — VM/JIT match Zend (ext/spl/spl_iterators.c)

1 participant