← All issues

[JSC] Add String#lastIndexOf optimizations

5efecc3

Source/WTF/wtf/SIMDHelpers.h

+ALWAYS_INLINE uint8_t findLastNonZeroIndex(SIMDRegister<uint8_t, N> mask)
+{
+ for (int i = N - 1; i >= 0; --i)
+ if (mask[i])
+ return static_cast<uint8_t>(i);
+ return UINT8_MAX;
+}

String.prototype.lastIndexOf에 대한 JIT intrinsic 지원이 추가되었습니다. DFG와 FTL 모두에 적용되었으며, 기존 indexOf 인프라를 거울처럼 반영하는 구조입니다. 구체적으로는 StringLastIndexOf DFG 노드, FTL B3 lowering, 그리고 WTF 내의 SIMD 기반 역방향 문자열 탐색(SIMD::reverseFind, findLastNonZeroIndex)이 함께 도입되었습니다. fromIndex 처리 방식은 순방향 탐색과 다릅니다. NaN은 0이 아닌 +Infinity로 처리되며, 탐색은 min(fromIndex, len - searchLen) 위치에서 역방향으로 진행됩니다.

새로운 노드 semantics, 새로운 SIMD primitive, 그리고 순방향 탐색과 비자명하게 다른 fromIndex 경계 로직까지 — 상당한 규모의 JIT 코드 surface가 새로 추가되었습니다.

🔒

New SIMD reverse-scan kernel and JIT fast path with non-trivial fromIndex boundary semantics — several edge cases warrant security investigation.

더 확인하려면 구독해 주세요