- Timestamp:
- Oct 10, 2008 5:19:30 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/config.h.win
r968 r1810 525 525 #define BATCH_MODE_ONLY_SHELL 526 526 527 #if defined(_M_X64) 528 #include <string.h> 529 static void * 530 my_inline_memchr(const void *pv, int ch, register size_t cb) 531 { 532 register const unsigned int uch = (unsigned)ch; 533 register const unsigned char *pb = (const unsigned char *)pv; 534 #if 1 /* this one beats the CRT (on 2nd gen AMD64). */ 535 while (cb >= 4) 536 { 537 if (*pb == uch) 538 return (unsigned char *)pb; 539 if (pb[1] == uch) 540 return (unsigned char *)pb + 1; 541 if (pb[2] == uch) 542 return (unsigned char *)pb + 2; 543 if (pb[3] == uch) 544 return (unsigned char *)pb + 3; 545 cb -= 4; 546 pb += 4; 547 } 548 switch (cb & 3) 549 { 550 case 0: 551 break; 552 case 1: 553 if (*pb == uch) 554 return (unsigned char *)pb; 555 break; 556 case 2: 557 if (*pb == uch) 558 return (unsigned char *)pb; 559 if (pb[1] == uch) 560 return (unsigned char *)pb + 1; 561 break; 562 case 3: 563 if (*pb == uch) 564 return (unsigned char *)pb; 565 if (pb[1] == uch) 566 return (unsigned char *)pb + 1; 567 if (pb[2] == uch) 568 return (unsigned char *)pb + 2; 569 break; 570 } 571 572 #else /* This is just as good the CRT one. */ 573 while (cb > 0) 574 { 575 if (*pb == uch) 576 return (void *)pb; 577 cb--; 578 pb++; 579 } 580 #endif 581 return 0; 582 } 583 #define memchr my_inline_memchr 584 #endif 585
Note:
See TracChangeset
for help on using the changeset viewer.