Skip to content

php-in-php: chunk_split() JIT via ChunkSplitJitHelper PHP — drop inline LLVM in JitChunkSplit.php #14626

Closed

Description

@PurHur

Category

php-in-php · php-src-strict

Problem

chunk_split() VM uses VmString::chunkSplit() but JIT/AOT still lowers the split loop through ~110-line JitChunkSplit::split() LLVM in ext/standard/JitChunkSplit.php.

php-src reference

  • ext/standard/string.c — PHP_FUNCTION(chunk_split)

Repro

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && php bin/jit.php -r "echo chunk_split(\"1234567890\", 3, \"-\");"'

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && php vendor/bin/phpunit --filter ChunkSplitRuntimeShrinkTest'

Scope

Path Work
ext/standard/ChunkSplitJitHelper.php JIT SSOT delegating to VmString
lib/JIT/Builtin/StringChunkSplit.php Thin __compiler_chunk_split bridge
ext/standard/chunk_split.php Route split through bridge
Shrink Delete JitChunkSplit::split() LLVM (~110 LOC)

Done when

  • JIT/AOT chunk_split matches Zend on test/compliance/cases/stdlib/chunk_split*.phpt
  • JitChunkSplit::split() removed; PR notes LLVM lines removed
  • make bootstrap-selfhost-vm-driver-execute-probe green

Refs north star #1492

Activity

  1. added
    enhancementNew feature or request
    implementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claim
    on Jul 1, 2026
  2. PurHur commented on Jul 1, 2026

    @PurHur
    OwnerAuthor

    claim: PHP Runtime → PHP — batch (issues #14626, #14627)

  3. PurHur commented on Jul 1, 2026

    @PurHur
    OwnerAuthor

    Merged via PR #14628.

    Verification: ChunkSplitRuntimeShrinkTest OK (3/3); JIT chunk_split core cases green; spine sync OK; bootstrap-selfhost-vm-driver-execute-probe OK.

    Shrink: JitChunkSplit.php 359→247 (−112 LOC LLVM split loop).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claim

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions