[chapel-lang/chapel] Refactor string iterators to reduce generated code

Branch: refs/heads/master
Revision: 295ae81
Author: e-kayrakli
Log Message:

Merge pull request #16266 from e-kayrakli/string-comp-perf

Refactor string iterators to reduce generated code size

This PR refactors several string iterators to use a helper proc. This helps
reduce the code size of the iterators’ bodies and thereby the overall generated
code size as we always inline iterators.

Iterators that are changed:

  • _cpIndexLen
  • split
  • codepoints

The generated code size was initially increased by my #16092. The impact was
especially pronounced in Arkouda. Following are ARKOUDA_QUICK_COMPILE lines of
code with CHPL_COMM=none Chapel setup:

version Total LOC Compile Time (s)
Pre ASCII Opt 1533593 642
Post ASCII Opt (master) 1921869 786
Refactored String Iters 1366355 576

[Reviewed by @ronawho]

Test:

  • [x] standard
  • [x] gasnet

Modified Files:
M modules/internal/BytesStringCommon.chpl
M modules/internal/String.chpl

Compare: https://github.com/chapel-lang/chapel/compare/20069880f632...295ae81943ef