/[pcre]/code/trunk/pcre_jit_compile.c
ViewVC logotype

Diff of /code/trunk/pcre_jit_compile.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1423 by zherczeg, Tue Dec 31 07:57:56 2013 UTC revision 1424 by zherczeg, Tue Dec 31 11:22:31 2013 UTC
# Line 3234  while (TRUE) Line 3234  while (TRUE)
3234          return consumed;          return consumed;
3235  #endif  #endif
3236        mask = 0;        mask = 0;
3237        if (len == (caseless & 0xff))        if ((pcre_uint32)len == (caseless & 0xff))
3238          {          {
3239          mask = caseless >> 8;          mask = caseless >> 8;
3240          chr |= mask;          chr |= mask;
# Line 4371  return cc; Line 4371  return cc;
4371    if ((value) != charoffset) \    if ((value) != charoffset) \
4372      { \      { \
4373      if ((value) > charoffset) \      if ((value) > charoffset) \
4374        OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, (value) - charoffset); \        OP2(SLJIT_SUB, TMP1, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)((value) - charoffset)); \
4375      else \      else \
4376        OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, charoffset - (value)); \        OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(charoffset - (value))); \
4377      } \      } \
4378    charoffset = (value);    charoffset = (value);
4379    
# Line 4382  static void compile_xclass_matchingpath( Line 4382  static void compile_xclass_matchingpath(
4382  DEFINE_COMPILER;  DEFINE_COMPILER;
4383  jump_list *found = NULL;  jump_list *found = NULL;
4384  jump_list **list = (cc[0] & XCL_NOT) == 0 ? &found : backtracks;  jump_list **list = (cc[0] & XCL_NOT) == 0 ? &found : backtracks;
4385  pcre_int32 c, charoffset;  sljit_uw c, charoffset, max = 0;
4386  struct sljit_jump *jump = NULL;  struct sljit_jump *jump = NULL;
4387  pcre_uchar *ccbegin;  pcre_uchar *ccbegin;
4388  int compares, invertcmp, numberofcmps;  int compares, invertcmp, numberofcmps;
4389    #if defined SUPPORT_UTF && (defined COMPILE_PCRE8 || defined COMPILE_PCRE16)
4390    BOOL utf = common->utf;
4391    #endif
4392    
4393  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
4394  BOOL needstype = FALSE, needsscript = FALSE, needschar = FALSE;  BOOL needstype = FALSE, needsscript = FALSE, needschar = FALSE;
# Line 4395  const pcre_uint32 *other_cases; Line 4398  const pcre_uint32 *other_cases;
4398  pcre_int32 typeoffset;  pcre_int32 typeoffset;
4399  #endif  #endif
4400    
 /* Although SUPPORT_UTF must be defined, we are  
    not necessary in utf mode even in 8 bit mode. */  
 detect_partial_match(common, backtracks);  
 read_char(common);  
   
 cc++;  
 if ((cc[-1] & XCL_HASPROP) == 0)  
   {  
   if ((cc[-1] & XCL_MAP) != 0)  
     {  
     OP1(SLJIT_MOV, TMP3, 0, TMP1, 0);  
 #ifdef SUPPORT_UCP  
     charsaved = TRUE;  
 #endif  
     if (!check_class_ranges(common, (const pcre_uint8 *)cc, TRUE, FALSE, backtracks))  
       {  
       jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255);  
   
       OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7);  
       OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3);  
       OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc);  
       OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0);  
       OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0);  
       add_jump(compiler, &found, JUMP(SLJIT_C_NOT_ZERO));  
       add_jump(compiler, backtracks, JUMP(SLJIT_JUMP));  
   
       JUMPHERE(jump);  
       }  
     else  
       add_jump(compiler, &found, CMP(SLJIT_C_LESS_EQUAL, TMP3, 0, SLJIT_IMM, 0xff));  
   
     OP1(SLJIT_MOV, TMP1, 0, TMP3, 0);  
     cc += 32 / sizeof(pcre_uchar);  
     }  
   else  
     add_jump(compiler, (cc[-1] & XCL_NOT) == 0 ? backtracks : &found, CMP(SLJIT_C_LESS_EQUAL, TMP1, 0, SLJIT_IMM, 0xff));  
   }  
 else if ((cc[-1] & XCL_MAP) != 0)  
   {  
   OP1(SLJIT_MOV, TMP3, 0, TMP1, 0);  
 #ifdef SUPPORT_UCP  
   charsaved = TRUE;  
 #endif  
   if (!check_class_ranges(common, (const pcre_uint8 *)cc, FALSE, TRUE, list))  
     {  
 #ifdef COMPILE_PCRE8  
     SLJIT_ASSERT(common->utf);  
 #endif  
     jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255);  
   
     OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7);  
     OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3);  
     OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc);  
     OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0);  
     OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0);  
     add_jump(compiler, list, JUMP(SLJIT_C_NOT_ZERO));  
   
     JUMPHERE(jump);  
     }  
   
   OP1(SLJIT_MOV, TMP1, 0, TMP3, 0);  
   cc += 32 / sizeof(pcre_uchar);  
   }  
   
4401  /* Scanning the necessary info. */  /* Scanning the necessary info. */
4402    cc++;
4403  ccbegin = cc;  ccbegin = cc;
4404  compares = 0;  compares = 0;
4405    if (cc[-1] & XCL_MAP) cc += 32 / sizeof(pcre_uchar);
4406    
4407  while (*cc != XCL_END)  while (*cc != XCL_END)
4408    {    {
4409    compares++;    compares++;
4410    if (*cc == XCL_SINGLE)    if (*cc == XCL_SINGLE)
4411      {      {
4412      cc += 2;      cc ++;
4413  #ifdef SUPPORT_UTF      GETCHARINCTEST(c, cc);
4414      if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);      if (c > max) max = c;
 #endif  
4415  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
4416      needschar = TRUE;      needschar = TRUE;
4417  #endif  #endif
# Line 4481  while (*cc != XCL_END) Line 4422  while (*cc != XCL_END)
4422  #ifdef SUPPORT_UTF  #ifdef SUPPORT_UTF
4423      if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);      if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);
4424  #endif  #endif
4425      cc++;      GETCHARINCTEST(c, cc);
4426  #ifdef SUPPORT_UTF      if (c > max) max = c;
     if (common->utf && HAS_EXTRALEN(cc[-1])) cc += GET_EXTRALEN(cc[-1]);  
 #endif  
4427  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
4428      needschar = TRUE;      needschar = TRUE;
4429  #endif  #endif
# Line 4494  while (*cc != XCL_END) Line 4433  while (*cc != XCL_END)
4433      {      {
4434      SLJIT_ASSERT(*cc == XCL_PROP || *cc == XCL_NOTPROP);      SLJIT_ASSERT(*cc == XCL_PROP || *cc == XCL_NOTPROP);
4435      cc++;      cc++;
4436        if (*cc == PT_CLIST)
4437          {
4438          other_cases = PRIV(ucd_caseless_sets) + cc[1];
4439          while (*other_cases != NOTACHAR)
4440            {
4441            if (*other_cases > max) max = *other_cases;
4442            other_cases++;
4443            }
4444          }
4445        else
4446          max = READ_CHAR_ANY;
4447    
4448      switch(*cc)      switch(*cc)
4449        {        {
4450        case PT_ANY:        case PT_ANY:
# Line 4534  while (*cc != XCL_END) Line 4485  while (*cc != XCL_END)
4485  #endif  #endif
4486    }    }
4487    
4488    /* We are not necessary in utf mode even in 8 bit mode. */
4489    cc = ccbegin;
4490    detect_partial_match(common, backtracks);
4491    read_char_max(common, max, (cc[0] & XCL_NOT) != 0);
4492    
4493    if ((cc[-1] & XCL_HASPROP) == 0)
4494      {
4495      if ((cc[-1] & XCL_MAP) != 0)
4496        {
4497        jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255);
4498        if (!check_class_ranges(common, (const pcre_uint8 *)cc, (((const pcre_uint8 *)cc)[31] & 0x80) != 0, TRUE, &found))
4499          {
4500          OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7);
4501          OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3);
4502          OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc);
4503          OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0);
4504          OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0);
4505          add_jump(compiler, &found, JUMP(SLJIT_C_NOT_ZERO));
4506          }
4507    
4508        add_jump(compiler, backtracks, JUMP(SLJIT_JUMP));
4509        JUMPHERE(jump);
4510    
4511        cc += 32 / sizeof(pcre_uchar);
4512        }
4513      else
4514        add_jump(compiler, (cc[-1] & XCL_NOT) == 0 ? backtracks : &found, CMP(SLJIT_C_LESS_EQUAL, TMP1, 0, SLJIT_IMM, 0xff));
4515      }
4516    else if ((cc[-1] & XCL_MAP) != 0)
4517      {
4518      OP1(SLJIT_MOV, TMP3, 0, TMP1, 0);
4519    #ifdef SUPPORT_UCP
4520      charsaved = TRUE;
4521    #endif
4522      if (!check_class_ranges(common, (const pcre_uint8 *)cc, FALSE, TRUE, list))
4523        {
4524    #ifdef COMPILE_PCRE8
4525        SLJIT_ASSERT(common->utf);
4526    #endif
4527        jump = CMP(SLJIT_C_GREATER, TMP1, 0, SLJIT_IMM, 255);
4528    
4529        OP2(SLJIT_AND, TMP2, 0, TMP1, 0, SLJIT_IMM, 0x7);
4530        OP2(SLJIT_LSHR, TMP1, 0, TMP1, 0, SLJIT_IMM, 3);
4531        OP1(SLJIT_MOV_UB, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)cc);
4532        OP2(SLJIT_SHL, TMP2, 0, SLJIT_IMM, 1, TMP2, 0);
4533        OP2(SLJIT_AND | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, TMP2, 0);
4534        add_jump(compiler, list, JUMP(SLJIT_C_NOT_ZERO));
4535    
4536        JUMPHERE(jump);
4537        }
4538    
4539      OP1(SLJIT_MOV, TMP1, 0, TMP3, 0);
4540      cc += 32 / sizeof(pcre_uchar);
4541      }
4542    
4543  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
4544  /* Simple register allocation. TMP1 is preferred if possible. */  /* Simple register allocation. TMP1 is preferred if possible. */
4545  if (needstype || needsscript)  if (needstype || needsscript)
# Line 4575  if (needstype || needsscript) Line 4581  if (needstype || needsscript)
4581  #endif  #endif
4582    
4583  /* Generating code. */  /* Generating code. */
 cc = ccbegin;  
4584  charoffset = 0;  charoffset = 0;
4585  numberofcmps = 0;  numberofcmps = 0;
4586  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP
# Line 4591  while (*cc != XCL_END) Line 4596  while (*cc != XCL_END)
4596    if (*cc == XCL_SINGLE)    if (*cc == XCL_SINGLE)
4597      {      {
4598      cc ++;      cc ++;
4599  #ifdef SUPPORT_UTF      GETCHARINCTEST(c, cc);
     if (common->utf)  
       {  
       GETCHARINC(c, cc);  
       }  
     else  
 #endif  
       c = *cc++;  
4600    
4601      if (numberofcmps < 3 && (*cc == XCL_SINGLE || *cc == XCL_RANGE))      if (numberofcmps < 3 && (*cc == XCL_SINGLE || *cc == XCL_RANGE))
4602        {        {
4603        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, c - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset));
4604        OP_FLAGS(numberofcmps == 0 ? SLJIT_MOV : SLJIT_OR, TMP2, 0, numberofcmps == 0 ? SLJIT_UNUSED : TMP2, 0, SLJIT_C_EQUAL);        OP_FLAGS(numberofcmps == 0 ? SLJIT_MOV : SLJIT_OR, TMP2, 0, numberofcmps == 0 ? SLJIT_UNUSED : TMP2, 0, SLJIT_C_EQUAL);
4605        numberofcmps++;        numberofcmps++;
4606        }        }
4607      else if (numberofcmps > 0)      else if (numberofcmps > 0)
4608        {        {
4609        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, c - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset));
4610        OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);        OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);
4611        jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp);        jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp);
4612        numberofcmps = 0;        numberofcmps = 0;
4613        }        }
4614      else      else
4615        {        {
4616        jump = CMP(SLJIT_C_EQUAL ^ invertcmp, TMP1, 0, SLJIT_IMM, c - charoffset);        jump = CMP(SLJIT_C_EQUAL ^ invertcmp, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset));
4617        numberofcmps = 0;        numberofcmps = 0;
4618        }        }
4619      }      }
4620    else if (*cc == XCL_RANGE)    else if (*cc == XCL_RANGE)
4621      {      {
4622      cc ++;      cc ++;
4623  #ifdef SUPPORT_UTF      GETCHARINCTEST(c, cc);
     if (common->utf)  
       {  
       GETCHARINC(c, cc);  
       }  
     else  
 #endif  
       c = *cc++;  
4624      SET_CHAR_OFFSET(c);      SET_CHAR_OFFSET(c);
4625  #ifdef SUPPORT_UTF      GETCHARINCTEST(c, cc);
4626      if (common->utf)  
       {  
       GETCHARINC(c, cc);  
       }  
     else  
 #endif  
       c = *cc++;  
4627      if (numberofcmps < 3 && (*cc == XCL_SINGLE || *cc == XCL_RANGE))      if (numberofcmps < 3 && (*cc == XCL_SINGLE || *cc == XCL_RANGE))
4628        {        {
4629        OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, c - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset));
4630        OP_FLAGS(numberofcmps == 0 ? SLJIT_MOV : SLJIT_OR, TMP2, 0, numberofcmps == 0 ? SLJIT_UNUSED : TMP2, 0, SLJIT_C_LESS_EQUAL);        OP_FLAGS(numberofcmps == 0 ? SLJIT_MOV : SLJIT_OR, TMP2, 0, numberofcmps == 0 ? SLJIT_UNUSED : TMP2, 0, SLJIT_C_LESS_EQUAL);
4631        numberofcmps++;        numberofcmps++;
4632        }        }
4633      else if (numberofcmps > 0)      else if (numberofcmps > 0)
4634        {        {
4635        OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, c - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset));
4636        OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL);        OP_FLAGS(SLJIT_OR | SLJIT_SET_E, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL);
4637        jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp);        jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp);
4638        numberofcmps = 0;        numberofcmps = 0;
4639        }        }
4640      else      else
4641        {        {
4642        jump = CMP(SLJIT_C_LESS_EQUAL ^ invertcmp, TMP1, 0, SLJIT_IMM, c - charoffset);        jump = CMP(SLJIT_C_LESS_EQUAL ^ invertcmp, TMP1, 0, SLJIT_IMM, (sljit_sw)(c - charoffset));
4643        numberofcmps = 0;        numberofcmps = 0;
4644        }        }
4645      }      }
# Line 4720  while (*cc != XCL_END) Line 4705  while (*cc != XCL_END)
4705        break;        break;
4706    
4707        case PT_WORD:        case PT_WORD:
4708        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, CHAR_UNDERSCORE - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(CHAR_UNDERSCORE - charoffset));
4709        OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL);        OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL);
4710        /* Fall through. */        /* Fall through. */
4711    
# Line 4768  while (*cc != XCL_END) Line 4753  while (*cc != XCL_END)
4753          OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP2, 0, SLJIT_IMM, other_cases[2]);          OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP2, 0, SLJIT_IMM, other_cases[2]);
4754          OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL);          OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL);
4755    
4756          OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, other_cases[0] - charoffset);          OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(other_cases[0] - charoffset));
4757          OP_FLAGS(SLJIT_OR | ((other_cases[3] == NOTACHAR) ? SLJIT_SET_E : 0), TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);          OP_FLAGS(SLJIT_OR | ((other_cases[3] == NOTACHAR) ? SLJIT_SET_E : 0), TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);
4758    
4759          other_cases += 3;          other_cases += 3;
4760          }          }
4761        else        else
4762          {          {
4763          OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, *other_cases++ - charoffset);          OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(*other_cases++ - charoffset));
4764          OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL);          OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL);
4765          }          }
4766    
4767        while (*other_cases != NOTACHAR)        while (*other_cases != NOTACHAR)
4768          {          {
4769          OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, *other_cases++ - charoffset);          OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(*other_cases++ - charoffset));
4770          OP_FLAGS(SLJIT_OR | ((*other_cases == NOTACHAR) ? SLJIT_SET_E : 0), TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);          OP_FLAGS(SLJIT_OR | ((*other_cases == NOTACHAR) ? SLJIT_SET_E : 0), TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);
4771          }          }
4772        jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp);        jump = JUMP(SLJIT_C_NOT_ZERO ^ invertcmp);
4773        break;        break;
4774    
4775        case PT_UCNC:        case PT_UCNC:
4776        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, CHAR_DOLLAR_SIGN - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(CHAR_DOLLAR_SIGN - charoffset));
4777        OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL);        OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_UNUSED, 0, SLJIT_C_EQUAL);
4778        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, CHAR_COMMERCIAL_AT - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(CHAR_COMMERCIAL_AT - charoffset));
4779        OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);        OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);
4780        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, CHAR_GRAVE_ACCENT - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(CHAR_GRAVE_ACCENT - charoffset));
4781        OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);        OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_EQUAL);
4782    
4783        SET_CHAR_OFFSET(0xa0);        SET_CHAR_OFFSET(0xa0);
4784        OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xd7ff - charoffset);        OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, (sljit_sw)(0xd7ff - charoffset));
4785        OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL);        OP_FLAGS(SLJIT_OR, TMP2, 0, TMP2, 0, SLJIT_C_LESS_EQUAL);
4786        SET_CHAR_OFFSET(0);        SET_CHAR_OFFSET(0);
4787        OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xe000 - 0);        OP2(SLJIT_SUB | SLJIT_SET_U, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, 0xe000 - 0);

Legend:
Removed from v.1423  
changed lines
  Added in v.1424

  ViewVC Help
Powered by ViewVC 1.1.5