Lines Matching refs:fp
2693 inline REStackFrame *RegexMatcher::StateSave(REStackFrame *fp, int64_t savePatIdx, UErrorCode &stat… in StateSave() argument
2695 return fp; in StateSave()
2708 return fp; in StateSave()
2710 fp = (REStackFrame *)(newFP - fFrameSize); // in case of realloc of stack. in StateSave()
2713 int64_t *source = (int64_t *)fp; in StateSave()
2726 fp->fPatIdx = savePatIdx; in StateSave()
2780 REStackFrame *fp = resetStack(); in MatchAt() local
2786 fp->fPatIdx = 0; in MatchAt()
2787 fp->fInputIdx = startIdx; in MatchAt()
2800 op = (int32_t)pat[fp->fPatIdx]; in MatchAt()
2805 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
2806 printf("inputIdx=%ld inputChar=%x sp=%3ld activeLimit=%ld ", fp->fInputIdx, in MatchAt()
2807 UTEXT_CURRENT32(fInputText), (int64_t *)fp-fStack->getBuffer(), fActiveLimit); in MatchAt()
2808 fPattern->dumpOp(fp->fPatIdx); in MatchAt()
2811 fp->fPatIdx++; in MatchAt()
2824 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
2829 if (fp->fInputIdx < fActiveLimit) { in MatchAt()
2830 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
2833 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
2839 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
2850 op = (int32_t)pat[fp->fPatIdx]; // Fetch the second operand in MatchAt()
2851 fp->fPatIdx++; in MatchAt()
2859 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
2878 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
2880 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
2887 fp = StateSave(fp, opValue, status); in MatchAt()
2894 if (toEnd && fp->fInputIdx != fActiveLimit) { in MatchAt()
2896 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
2909 fp->fExtra[opValue+2] = fp->fInputIdx; in MatchAt()
2915 … U_ASSERT(fp->fExtra[opValue+2] >= 0); // Start pos for this group must be set. in MatchAt()
2916 fp->fExtra[opValue] = fp->fExtra[opValue+2]; // Tentative start becomes real. in MatchAt()
2917 fp->fExtra[opValue+1] = fp->fInputIdx; // End position in MatchAt()
2918 U_ASSERT(fp->fExtra[opValue] <= fp->fExtra[opValue+1]); in MatchAt()
2925 if (fp->fInputIdx >= fAnchorLimit) { in MatchAt()
2932 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
2940 …if ( !(c==0x0a && fp->fInputIdx>fAnchorStart && ((void)UTEXT_PREVIOUS32(fInputText), UTEXT_PREVIOU… in MatchAt()
2957 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
2963 if (fp->fInputIdx >= fAnchorLimit) { in MatchAt()
2969 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
2980 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
2986 if (fp->fInputIdx >= fAnchorLimit) { in MatchAt()
2994 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3000 … if ( !(c==0x0a && fp->fInputIdx>fAnchorStart && UTEXT_PREVIOUS32(fInputText)==0x0d)) { in MatchAt()
3005 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3012 if (fp->fInputIdx >= fAnchorLimit) { in MatchAt()
3020 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3022 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3029 if (fp->fInputIdx != fAnchorStart) { in MatchAt()
3030 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3037 if (fp->fInputIdx == fAnchorStart) { in MatchAt()
3043 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3045 if ((fp->fInputIdx < fAnchorLimit) && isLineTerminator(c)) { in MatchAt()
3051 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3058 U_ASSERT(fp->fInputIdx >= fAnchorStart); in MatchAt()
3059 if (fp->fInputIdx <= fAnchorStart) { in MatchAt()
3064 U_ASSERT(fp->fInputIdx <= fAnchorLimit); in MatchAt()
3065 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3069 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3076 UBool success = isWordBoundary(fp->fInputIdx); in MatchAt()
3079 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3087 UBool success = isUWordBoundary(fp->fInputIdx); in MatchAt()
3090 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3098 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3100 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3104 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3111 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3113 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3120 … if (!((fMatch && fp->fInputIdx==fMatchEnd) || (fMatch==FALSE && fp->fInputIdx==fActiveStart))) { in MatchAt()
3121 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3128 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3130 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3133 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3139 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3141 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3149 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3151 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3154 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3160 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3162 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3170 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3172 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3175 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3180 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3182 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3195 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3197 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3201 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3207 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3221 if (fp->fInputIdx >= fActiveLimit) goto GC_Done; in MatchAt()
3223 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3229 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3233 if (fp->fInputIdx >= fActiveLimit) goto GC_Done; in MatchAt()
3235 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3239 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3243 if (fp->fInputIdx >= fActiveLimit) goto GC_Done; in MatchAt()
3245 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3248 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3254 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3262 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3269 … if (c == 0x0d && fp->fInputIdx < fActiveLimit && UTEXT_CURRENT32(fInputText) == 0x0a) { in MatchAt()
3271 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3275 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3285 if (fp->fInputIdx < fAnchorLimit) { in MatchAt()
3286 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3302 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3304 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3312 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3326 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3329 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3339 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3341 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3347 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3353 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3359 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3364 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3370 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3372 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3375 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3383 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3390 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3396 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3404 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3407 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3411 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3417 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3420 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3428 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3431 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3435 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3441 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3442 if (c==0x0d && fp->fInputIdx < fActiveLimit) { in MatchAt()
3447 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3458 if (fp->fInputIdx >= fActiveLimit) { in MatchAt()
3461 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3465 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3471 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3473 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3480 fp->fPatIdx = opValue; in MatchAt()
3489 fp = StateSave(fp, fp->fPatIdx, status); // State save to loc following current in MatchAt()
3490 fp->fPatIdx = opValue; // Then JMP. in MatchAt()
3504 int64_t prevInputIdx = fp->fExtra[frameLoc]; in MatchAt()
3505 U_ASSERT(prevInputIdx <= fp->fInputIdx); in MatchAt()
3506 if (prevInputIdx < fp->fInputIdx) { in MatchAt()
3508 fp = StateSave(fp, fp->fPatIdx, status); // State save to loc following current in MatchAt()
3509 fp->fPatIdx = opValue; in MatchAt()
3510 fp->fExtra[frameLoc] = fp->fInputIdx; in MatchAt()
3520 fp->fExtra[opValue] = 0; // Set the loop counter variable to zero in MatchAt()
3524 int32_t instrOperandLoc = (int32_t)fp->fPatIdx; in MatchAt()
3525 fp->fPatIdx += 3; in MatchAt()
3531 U_ASSERT(loopLoc>=fp->fPatIdx); in MatchAt()
3534 fp = StateSave(fp, loopLoc+1, status); in MatchAt()
3537 fp->fExtra[opValue+1] = fp->fInputIdx; // For loop breaking. in MatchAt()
3539 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3546 U_ASSERT(opValue>0 && opValue < fp->fPatIdx-2); in MatchAt()
3549 int64_t *pCounter = &fp->fExtra[URX_VAL(initOp)]; in MatchAt()
3561 int64_t *pLastInputIdx = &fp->fExtra[URX_VAL(initOp) + 1]; in MatchAt()
3562 if (fp->fInputIdx == *pLastInputIdx) { in MatchAt()
3565 *pLastInputIdx = fp->fInputIdx; in MatchAt()
3568 fp = StateSave(fp, fp->fPatIdx, status); in MatchAt()
3577 fp->fPatIdx = opValue + 4; // Loop back. in MatchAt()
3585 fp->fExtra[opValue] = 0; // Set the loop counter variable to zero in MatchAt()
3589 int32_t instrOperandLoc = (int32_t)fp->fPatIdx; in MatchAt()
3590 fp->fPatIdx += 3; in MatchAt()
3596 U_ASSERT(loopLoc>fp->fPatIdx); in MatchAt()
3598 … fp->fExtra[opValue+1] = fp->fInputIdx; // Save initial input index for loop breaking. in MatchAt()
3603 fp = StateSave(fp, fp->fPatIdx, status); in MatchAt()
3605 fp->fPatIdx = loopLoc+1; // Continue with stuff after repeated block in MatchAt()
3613 U_ASSERT(opValue>0 && opValue < fp->fPatIdx-2); in MatchAt()
3616 int64_t *pCounter = &fp->fExtra[URX_VAL(initOp)]; in MatchAt()
3632 fp->fPatIdx = opValue + 4; // Loop back. in MatchAt()
3644 int64_t *pLastInputIdx = &fp->fExtra[URX_VAL(initOp) + 1]; in MatchAt()
3645 if (fp->fInputIdx == *pLastInputIdx) { in MatchAt()
3648 *pLastInputIdx = fp->fInputIdx; in MatchAt()
3655 fp = StateSave(fp, opValue + 4, status); in MatchAt()
3671 if (newFP == (int64_t *)fp) { in MatchAt()
3676 newFP[j] = ((int64_t *)fp)[j]; in MatchAt()
3678 fp = (REStackFrame *)newFP; in MatchAt()
3686 int64_t groupStartIdx = fp->fExtra[opValue]; in MatchAt()
3687 int64_t groupEndIdx = fp->fExtra[opValue+1]; in MatchAt()
3691 fp = (REStackFrame *)fStack->popFrame(fFrameSize); // FAIL, no match. in MatchAt()
3695 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3721 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3723 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3733 int64_t groupStartIdx = fp->fExtra[opValue]; in MatchAt()
3734 int64_t groupEndIdx = fp->fExtra[opValue+1]; in MatchAt()
3738 fp = (REStackFrame *)fStack->popFrame(fFrameSize); // FAIL, no match. in MatchAt()
3742 utext_setNativeIndex(fInputText, fp->fInputIdx); in MatchAt()
3777 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3779 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3788 fp->fExtra[opValue] = fp->fInputIdx; in MatchAt()
3794 int32_t instrOperandLoc = (int32_t)fp->fPatIdx; in MatchAt()
3795 fp->fPatIdx += 1; in MatchAt()
3798 int64_t savedInputIdx = fp->fExtra[dataLoc]; in MatchAt()
3799 U_ASSERT(savedInputIdx <= fp->fInputIdx); in MatchAt()
3800 if (savedInputIdx < fp->fInputIdx) { in MatchAt()
3801 fp->fPatIdx = opValue; // JMP in MatchAt()
3803 … fp = (REStackFrame *)fStack->popFrame(fFrameSize); // FAIL, no progress in loop. in MatchAt()
3814 fData[opValue+1] = fp->fInputIdx; in MatchAt()
3835 newFP[j] = ((int64_t *)fp)[j]; in MatchAt()
3837 fp = (REStackFrame *)newFP; in MatchAt()
3840 fp->fInputIdx = fData[opValue+1]; in MatchAt()
3853 if (fp->fInputIdx < fActiveLimit) { in MatchAt()
3854 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3858 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3865 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3878 op = (int32_t)pat[fp->fPatIdx]; in MatchAt()
3879 fp->fPatIdx++; in MatchAt()
3890 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
3910 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
3912 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3925 fData[opValue+1] = fp->fInputIdx; in MatchAt()
3931 fActiveLimit = fp->fInputIdx; in MatchAt()
3943 int32_t minML = (int32_t)pat[fp->fPatIdx++]; in MatchAt()
3944 int32_t maxML = (int32_t)pat[fp->fPatIdx++]; in MatchAt()
3958 lbStartIdx = fp->fInputIdx - minML; in MatchAt()
3976 if (lbStartIdx < 0 || lbStartIdx < fp->fInputIdx - maxML) { in MatchAt()
3980 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
3990 fp = StateSave(fp, fp->fPatIdx-3, status); in MatchAt()
3991 fp->fInputIdx = lbStartIdx; in MatchAt()
3999 if (fp->fInputIdx != fActiveLimit) { in MatchAt()
4005 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
4026 int32_t minML = (int32_t)pat[fp->fPatIdx++]; in MatchAt()
4027 int32_t maxML = (int32_t)pat[fp->fPatIdx++]; in MatchAt()
4033 int32_t continueLoc = (int32_t)pat[fp->fPatIdx++]; in MatchAt()
4037 U_ASSERT(continueLoc > fp->fPatIdx); in MatchAt()
4044 lbStartIdx = fp->fInputIdx - minML; in MatchAt()
4062 if (lbStartIdx < 0 || lbStartIdx < fp->fInputIdx - maxML) { in MatchAt()
4070 fp->fPatIdx = continueLoc; in MatchAt()
4076 fp = StateSave(fp, fp->fPatIdx-4, status); in MatchAt()
4077 fp->fInputIdx = lbStartIdx; in MatchAt()
4085 if (fp->fInputIdx != fActiveLimit) { in MatchAt()
4091 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
4115 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchAt()
4132 int64_t ix = fp->fInputIdx; in MatchAt()
4154 if (ix == fp->fInputIdx) { in MatchAt()
4155 fp->fPatIdx++; // skip the URX_LOOP_C op. in MatchAt()
4162 int32_t loopcOp = (int32_t)pat[fp->fPatIdx]; in MatchAt()
4166 fp->fExtra[stackLoc] = fp->fInputIdx; in MatchAt()
4167 fp->fInputIdx = ix; in MatchAt()
4172 fp = StateSave(fp, fp->fPatIdx, status); in MatchAt()
4173 fp->fPatIdx++; in MatchAt()
4193 ix = fp->fInputIdx; in MatchAt()
4215 if (ix == fp->fInputIdx) { in MatchAt()
4216 fp->fPatIdx++; // skip the URX_LOOP_C op. in MatchAt()
4223 int32_t loopcOp = (int32_t)pat[fp->fPatIdx]; in MatchAt()
4227 fp->fExtra[stackLoc] = fp->fInputIdx; in MatchAt()
4228 fp->fInputIdx = ix; in MatchAt()
4233 fp = StateSave(fp, fp->fPatIdx, status); in MatchAt()
4234 fp->fPatIdx++; in MatchAt()
4242 backSearchIndex = fp->fExtra[opValue]; in MatchAt()
4243 U_ASSERT(backSearchIndex <= fp->fInputIdx); in MatchAt()
4244 if (backSearchIndex == fp->fInputIdx) { in MatchAt()
4255 U_ASSERT(fp->fInputIdx > 0); in MatchAt()
4256 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchAt()
4258 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
4262 fp->fInputIdx > backSearchIndex && in MatchAt()
4264 int32_t prevOp = (int32_t)pat[fp->fPatIdx-2]; in MatchAt()
4267 fp->fInputIdx = UTEXT_GETNATIVEINDEX(fInputText); in MatchAt()
4272 fp = StateSave(fp, fp->fPatIdx-1, status); in MatchAt()
4295 fMatchEnd = fp->fInputIdx; in MatchAt()
4308 fFrame = fp; // The active stack frame when the engine stopped. in MatchAt()
4358 REStackFrame *fp = resetStack(); in MatchChunkAt() local
4364 fp->fPatIdx = 0; in MatchChunkAt()
4365 fp->fInputIdx = startIdx; in MatchChunkAt()
4378 op = (int32_t)pat[fp->fPatIdx]; in MatchChunkAt()
4383 UTEXT_SETNATIVEINDEX(fInputText, fp->fInputIdx); in MatchChunkAt()
4384 printf("inputIdx=%ld inputChar=%x sp=%3ld activeLimit=%ld ", fp->fInputIdx, in MatchChunkAt()
4385 UTEXT_CURRENT32(fInputText), (int64_t *)fp-fStack->getBuffer(), fActiveLimit); in MatchChunkAt()
4386 fPattern->dumpOp(fp->fPatIdx); in MatchChunkAt()
4389 fp->fPatIdx++; in MatchChunkAt()
4402 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4407 if (fp->fInputIdx < fActiveLimit) { in MatchChunkAt()
4409 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4416 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4428 op = (int32_t)pat[fp->fPatIdx]; // Fetch the second operand in MatchChunkAt()
4429 fp->fPatIdx++; in MatchChunkAt()
4435 const UChar * pInp = inputBuf + fp->fInputIdx; in MatchChunkAt()
4453 fp->fInputIdx += stringLen; in MatchChunkAt()
4455 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4462 fp = StateSave(fp, opValue, status); in MatchChunkAt()
4469 if (toEnd && fp->fInputIdx != fActiveLimit) { in MatchChunkAt()
4471 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4484 fp->fExtra[opValue+2] = fp->fInputIdx; in MatchChunkAt()
4490 … U_ASSERT(fp->fExtra[opValue+2] >= 0); // Start pos for this group must be set. in MatchChunkAt()
4491 fp->fExtra[opValue] = fp->fExtra[opValue+2]; // Tentative start becomes real. in MatchChunkAt()
4492 fp->fExtra[opValue+1] = fp->fInputIdx; // End position in MatchChunkAt()
4493 U_ASSERT(fp->fExtra[opValue] <= fp->fExtra[opValue+1]); in MatchChunkAt()
4499 if (fp->fInputIdx < fAnchorLimit-2) { in MatchChunkAt()
4502 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4505 if (fp->fInputIdx >= fAnchorLimit) { in MatchChunkAt()
4514 if (fp->fInputIdx == fAnchorLimit-1) { in MatchChunkAt()
4516 U16_GET(inputBuf, fAnchorStart, fp->fInputIdx, fAnchorLimit, c); in MatchChunkAt()
4519 … if ( !(c==0x0a && fp->fInputIdx>fAnchorStart && inputBuf[fp->fInputIdx-1]==0x0d)) { in MatchChunkAt()
4526 } else if (fp->fInputIdx == fAnchorLimit-2 && in MatchChunkAt()
4527 inputBuf[fp->fInputIdx]==0x0d && inputBuf[fp->fInputIdx+1]==0x0a) { in MatchChunkAt()
4533 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4539 if (fp->fInputIdx >= fAnchorLimit-1) { in MatchChunkAt()
4541 if (fp->fInputIdx == fAnchorLimit-1) { in MatchChunkAt()
4543 if (inputBuf[fp->fInputIdx] == 0x0a) { in MatchChunkAt()
4557 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4563 if (fp->fInputIdx >= fAnchorLimit) { in MatchChunkAt()
4571 UChar32 c = inputBuf[fp->fInputIdx]; in MatchChunkAt()
4576 … if ( !(c==0x0a && fp->fInputIdx>fAnchorStart && inputBuf[fp->fInputIdx-1]==0x0d)) { in MatchChunkAt()
4581 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4588 if (fp->fInputIdx >= fAnchorLimit) { in MatchChunkAt()
4596 if (inputBuf[fp->fInputIdx] != 0x0a) { in MatchChunkAt()
4597 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4604 if (fp->fInputIdx != fAnchorStart) { in MatchChunkAt()
4605 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4612 if (fp->fInputIdx == fAnchorStart) { in MatchChunkAt()
4618 UChar c = inputBuf[fp->fInputIdx - 1]; in MatchChunkAt()
4619 if ((fp->fInputIdx < fAnchorLimit) && in MatchChunkAt()
4626 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4633 U_ASSERT(fp->fInputIdx >= fAnchorStart); in MatchChunkAt()
4634 if (fp->fInputIdx <= fAnchorStart) { in MatchChunkAt()
4639 U_ASSERT(fp->fInputIdx <= fAnchorLimit); in MatchChunkAt()
4640 UChar c = inputBuf[fp->fInputIdx - 1]; in MatchChunkAt()
4643 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4650 UBool success = isChunkWordBoundary((int32_t)fp->fInputIdx); in MatchChunkAt()
4653 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4661 UBool success = isUWordBoundary(fp->fInputIdx); in MatchChunkAt()
4664 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4672 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4674 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4679 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4684 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4691 … if (!((fMatch && fp->fInputIdx==fMatchEnd) || (fMatch==FALSE && fp->fInputIdx==fActiveStart))) { in MatchChunkAt()
4692 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4699 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4701 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4705 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4710 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4718 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4720 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4724 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4726 if (c == 0x0d && fp->fInputIdx < fActiveLimit) { in MatchChunkAt()
4729 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c2); in MatchChunkAt()
4731 U16_PREV(inputBuf, 0, fp->fInputIdx, c2); in MatchChunkAt()
4735 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4743 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4745 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4749 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4753 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4767 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4769 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4776 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4790 if (fp->fInputIdx >= fActiveLimit) goto GC_Done; in MatchChunkAt()
4791 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4796 U16_PREV(inputBuf, 0, fp->fInputIdx, c); in MatchChunkAt()
4800 if (fp->fInputIdx >= fActiveLimit) goto GC_Done; in MatchChunkAt()
4801 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4804 U16_PREV(inputBuf, 0, fp->fInputIdx, c); in MatchChunkAt()
4808 if (fp->fInputIdx >= fActiveLimit) goto GC_Done; in MatchChunkAt()
4809 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4811 U16_PREV(inputBuf, 0, fp->fInputIdx, c); in MatchChunkAt()
4817 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4820 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4822 U16_BACK_1(inputBuf, 0, fp->fInputIdx); in MatchChunkAt()
4831 if (c == 0x0d && fp->fInputIdx < fActiveLimit && inputBuf[fp->fInputIdx] == 0x0a) { in MatchChunkAt()
4832 fp->fInputIdx++; in MatchChunkAt()
4836 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4846 if (fp->fInputIdx < fAnchorLimit) { in MatchChunkAt()
4847 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4863 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4865 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4874 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4887 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4897 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4899 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4906 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4918 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4925 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4927 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4935 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4951 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4959 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4962 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4968 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4971 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4981 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
4984 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
4991 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
4992 if (c==0x0d && fp->fInputIdx < fActiveLimit) { in MatchChunkAt()
4994 if (inputBuf[fp->fInputIdx] == 0x0a) { in MatchChunkAt()
4995 U16_FWD_1(inputBuf, fp->fInputIdx, fActiveLimit); in MatchChunkAt()
5006 if (fp->fInputIdx >= fActiveLimit) { in MatchChunkAt()
5009 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5015 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
5018 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5025 fp->fPatIdx = opValue; in MatchChunkAt()
5034 fp = StateSave(fp, fp->fPatIdx, status); // State save to loc following current in MatchChunkAt()
5035 fp->fPatIdx = opValue; // Then JMP. in MatchChunkAt()
5049 int32_t prevInputIdx = (int32_t)fp->fExtra[frameLoc]; in MatchChunkAt()
5050 U_ASSERT(prevInputIdx <= fp->fInputIdx); in MatchChunkAt()
5051 if (prevInputIdx < fp->fInputIdx) { in MatchChunkAt()
5053 fp = StateSave(fp, fp->fPatIdx, status); // State save to loc following current in MatchChunkAt()
5054 fp->fPatIdx = opValue; in MatchChunkAt()
5055 fp->fExtra[frameLoc] = fp->fInputIdx; in MatchChunkAt()
5065 fp->fExtra[opValue] = 0; // Set the loop counter variable to zero in MatchChunkAt()
5069 int32_t instrOperandLoc = (int32_t)fp->fPatIdx; in MatchChunkAt()
5070 fp->fPatIdx += 3; in MatchChunkAt()
5076 U_ASSERT(loopLoc>=fp->fPatIdx); in MatchChunkAt()
5079 fp = StateSave(fp, loopLoc+1, status); in MatchChunkAt()
5082 fp->fExtra[opValue+1] = fp->fInputIdx; // For loop breaking. in MatchChunkAt()
5084 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5091 U_ASSERT(opValue>0 && opValue < fp->fPatIdx-2); in MatchChunkAt()
5094 int64_t *pCounter = &fp->fExtra[URX_VAL(initOp)]; in MatchChunkAt()
5106 int64_t *pLastInputIdx = &fp->fExtra[URX_VAL(initOp) + 1]; in MatchChunkAt()
5107 if (fp->fInputIdx == *pLastInputIdx) { in MatchChunkAt()
5110 *pLastInputIdx = fp->fInputIdx; in MatchChunkAt()
5113 fp = StateSave(fp, fp->fPatIdx, status); in MatchChunkAt()
5121 fp->fPatIdx = opValue + 4; // Loop back. in MatchChunkAt()
5129 fp->fExtra[opValue] = 0; // Set the loop counter variable to zero in MatchChunkAt()
5133 int32_t instrOperandLoc = (int32_t)fp->fPatIdx; in MatchChunkAt()
5134 fp->fPatIdx += 3; in MatchChunkAt()
5140 U_ASSERT(loopLoc>fp->fPatIdx); in MatchChunkAt()
5142 … fp->fExtra[opValue+1] = fp->fInputIdx; // Save initial input index for loop breaking. in MatchChunkAt()
5147 fp = StateSave(fp, fp->fPatIdx, status); in MatchChunkAt()
5149 fp->fPatIdx = loopLoc+1; // Continue with stuff after repeated block in MatchChunkAt()
5157 U_ASSERT(opValue>0 && opValue < fp->fPatIdx-2); in MatchChunkAt()
5160 int64_t *pCounter = &fp->fExtra[URX_VAL(initOp)]; in MatchChunkAt()
5176 fp->fPatIdx = opValue + 4; // Loop back. in MatchChunkAt()
5187 int64_t *pLastInputIdx = &fp->fExtra[URX_VAL(initOp) + 1]; in MatchChunkAt()
5188 if (fp->fInputIdx == *pLastInputIdx) { in MatchChunkAt()
5191 *pLastInputIdx = fp->fInputIdx; in MatchChunkAt()
5198 fp = StateSave(fp, opValue + 4, status); in MatchChunkAt()
5214 if (newFP == (int64_t *)fp) { in MatchChunkAt()
5219 newFP[j] = ((int64_t *)fp)[j]; in MatchChunkAt()
5221 fp = (REStackFrame *)newFP; in MatchChunkAt()
5229 int64_t groupStartIdx = fp->fExtra[opValue]; in MatchChunkAt()
5230 int64_t groupEndIdx = fp->fExtra[opValue+1]; in MatchChunkAt()
5232 int64_t inputIndex = fp->fInputIdx; in MatchChunkAt()
5235 fp = (REStackFrame *)fStack->popFrame(fFrameSize); // FAIL, no match. in MatchChunkAt()
5257 fp->fInputIdx = inputIndex; in MatchChunkAt()
5259 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5267 int64_t groupStartIdx = fp->fExtra[opValue]; in MatchChunkAt()
5268 int64_t groupEndIdx = fp->fExtra[opValue+1]; in MatchChunkAt()
5272 fp = (REStackFrame *)fStack->popFrame(fFrameSize); // FAIL, no match. in MatchChunkAt()
5276 CaseFoldingUCharIterator inputItr(inputBuf, fp->fInputIdx, fActiveLimit); in MatchChunkAt()
5309 fp->fInputIdx = inputItr.getIndex(); in MatchChunkAt()
5311 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5319 fp->fExtra[opValue] = fp->fInputIdx; in MatchChunkAt()
5325 int32_t instrOperandLoc = (int32_t)fp->fPatIdx; in MatchChunkAt()
5326 fp->fPatIdx += 1; in MatchChunkAt()
5329 int32_t savedInputIdx = (int32_t)fp->fExtra[dataLoc]; in MatchChunkAt()
5330 U_ASSERT(savedInputIdx <= fp->fInputIdx); in MatchChunkAt()
5331 if (savedInputIdx < fp->fInputIdx) { in MatchChunkAt()
5332 fp->fPatIdx = opValue; // JMP in MatchChunkAt()
5334 … fp = (REStackFrame *)fStack->popFrame(fFrameSize); // FAIL, no progress in loop. in MatchChunkAt()
5345 fData[opValue+1] = fp->fInputIdx; in MatchChunkAt()
5366 newFP[j] = ((int64_t *)fp)[j]; in MatchChunkAt()
5368 fp = (REStackFrame *)newFP; in MatchChunkAt()
5371 fp->fInputIdx = fData[opValue+1]; in MatchChunkAt()
5381 if (fp->fInputIdx < fActiveLimit) { in MatchChunkAt()
5383 U16_NEXT(inputBuf, fp->fInputIdx, fActiveLimit, c); in MatchChunkAt()
5390 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5401 op = (int32_t)pat[fp->fPatIdx]; in MatchChunkAt()
5402 fp->fPatIdx++; in MatchChunkAt()
5412 CaseFoldingUCharIterator inputIterator(inputBuf, fp->fInputIdx, fActiveLimit); in MatchChunkAt()
5429 fp->fInputIdx = inputIterator.getIndex(); in MatchChunkAt()
5431 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5443 fData[opValue+1] = fp->fInputIdx; in MatchChunkAt()
5449 fActiveLimit = fp->fInputIdx; in MatchChunkAt()
5461 int32_t minML = (int32_t)pat[fp->fPatIdx++]; in MatchChunkAt()
5462 int32_t maxML = (int32_t)pat[fp->fPatIdx++]; in MatchChunkAt()
5471 lbStartIdx = fp->fInputIdx - minML; in MatchChunkAt()
5485 if (lbStartIdx < 0 || lbStartIdx < fp->fInputIdx - maxML) { in MatchChunkAt()
5489 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5499 fp = StateSave(fp, fp->fPatIdx-3, status); in MatchChunkAt()
5500 fp->fInputIdx = lbStartIdx; in MatchChunkAt()
5508 if (fp->fInputIdx != fActiveLimit) { in MatchChunkAt()
5514 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5535 int32_t minML = (int32_t)pat[fp->fPatIdx++]; in MatchChunkAt()
5536 int32_t maxML = (int32_t)pat[fp->fPatIdx++]; in MatchChunkAt()
5537 int32_t continueLoc = (int32_t)pat[fp->fPatIdx++]; in MatchChunkAt()
5541 U_ASSERT(continueLoc > fp->fPatIdx); in MatchChunkAt()
5548 lbStartIdx = fp->fInputIdx - minML; in MatchChunkAt()
5562 if (lbStartIdx < 0 || lbStartIdx < fp->fInputIdx - maxML) { in MatchChunkAt()
5570 fp->fPatIdx = continueLoc; in MatchChunkAt()
5576 fp = StateSave(fp, fp->fPatIdx-4, status); in MatchChunkAt()
5577 fp->fInputIdx = lbStartIdx; in MatchChunkAt()
5585 if (fp->fInputIdx != fActiveLimit) { in MatchChunkAt()
5591 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5615 fp = (REStackFrame *)fStack->popFrame(fFrameSize); in MatchChunkAt()
5632 int32_t ix = (int32_t)fp->fInputIdx; in MatchChunkAt()
5655 if (ix == fp->fInputIdx) { in MatchChunkAt()
5656 fp->fPatIdx++; // skip the URX_LOOP_C op. in MatchChunkAt()
5663 int32_t loopcOp = (int32_t)pat[fp->fPatIdx]; in MatchChunkAt()
5667 fp->fExtra[stackLoc] = fp->fInputIdx; in MatchChunkAt()
5668 fp->fInputIdx = ix; in MatchChunkAt()
5673 fp = StateSave(fp, fp->fPatIdx, status); in MatchChunkAt()
5674 fp->fPatIdx++; in MatchChunkAt()
5694 ix = (int32_t)fp->fInputIdx; in MatchChunkAt()
5717 if (ix == fp->fInputIdx) { in MatchChunkAt()
5718 fp->fPatIdx++; // skip the URX_LOOP_C op. in MatchChunkAt()
5725 int32_t loopcOp = (int32_t)pat[fp->fPatIdx]; in MatchChunkAt()
5729 fp->fExtra[stackLoc] = fp->fInputIdx; in MatchChunkAt()
5730 fp->fInputIdx = ix; in MatchChunkAt()
5735 fp = StateSave(fp, fp->fPatIdx, status); in MatchChunkAt()
5736 fp->fPatIdx++; in MatchChunkAt()
5744 backSearchIndex = (int32_t)fp->fExtra[opValue]; in MatchChunkAt()
5745 U_ASSERT(backSearchIndex <= fp->fInputIdx); in MatchChunkAt()
5746 if (backSearchIndex == fp->fInputIdx) { in MatchChunkAt()
5757 U_ASSERT(fp->fInputIdx > 0); in MatchChunkAt()
5759 … U16_PREV(inputBuf, 0, fp->fInputIdx, prevC); // !!!: should this 0 be one of f*Limit? in MatchChunkAt()
5762 fp->fInputIdx > backSearchIndex && in MatchChunkAt()
5763 inputBuf[fp->fInputIdx-1] == 0x0d) { in MatchChunkAt()
5764 int32_t prevOp = (int32_t)pat[fp->fPatIdx-2]; in MatchChunkAt()
5767 U16_BACK_1(inputBuf, 0, fp->fInputIdx); in MatchChunkAt()
5772 fp = StateSave(fp, fp->fPatIdx-1, status); in MatchChunkAt()
5795 fMatchEnd = fp->fInputIdx; in MatchChunkAt()
5808 fFrame = fp; // The active stack frame when the engine stopped. in MatchChunkAt()