svn commit: r268573 - stable/9/lib/libc/locale
Pedro F. Giffuni
pfg at FreeBSD.org
Sat Jul 12 18:30:36 UTC 2014
Author: pfg
Date: Sat Jul 12 18:30:35 2014
New Revision: 268573
URL: http://svnweb.freebsd.org/changeset/base/268573
Log:
MFC r268272:
minor perf enhancement for UTF-8
Reduce some duplicate code.
Reference:
https://www.illumos.org/issues/628
Obtained from: Illumos
Modified:
stable/9/lib/libc/locale/utf8.c
Directory Properties:
stable/9/lib/libc/ (props changed)
Modified: stable/9/lib/libc/locale/utf8.c
==============================================================================
--- stable/9/lib/libc/locale/utf8.c Sat Jul 12 18:23:35 2014 (r268572)
+++ stable/9/lib/libc/locale/utf8.c Sat Jul 12 18:30:35 2014 (r268573)
@@ -1,4 +1,5 @@
/*-
+ * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2002-2004 Tim J. Robbins
* All rights reserved.
*
@@ -112,13 +113,6 @@ _UTF8_mbrtowc(wchar_t * __restrict pwc,
/* Incomplete multibyte sequence */
return ((size_t)-2);
- if (us->want == 0 && ((ch = (unsigned char)*s) & ~0x7f) == 0) {
- /* Fast path for plain ASCII characters. */
- if (pwc != NULL)
- *pwc = ch;
- return (ch != '\0' ? 1 : 0);
- }
-
if (us->want == 0) {
/*
* Determine the number of octets that make up this character
@@ -134,10 +128,12 @@ _UTF8_mbrtowc(wchar_t * __restrict pwc,
*/
ch = (unsigned char)*s;
if ((ch & 0x80) == 0) {
- mask = 0x7f;
- want = 1;
- lbound = 0;
- } else if ((ch & 0xe0) == 0xc0) {
+ /* Fast path for plain ASCII characters. */
+ if (pwc != NULL)
+ *pwc = ch;
+ return (ch != '\0' ? 1 : 0);
+ }
+ if ((ch & 0xe0) == 0xc0) {
mask = 0x1f;
want = 2;
lbound = 0x80;
@@ -309,12 +305,6 @@ _UTF8_wcrtomb(char * __restrict s, wchar
/* Reset to initial shift state (no-op) */
return (1);
- if ((wc & ~0x7f) == 0) {
- /* Fast path for plain ASCII characters. */
- *s = (char)wc;
- return (1);
- }
-
/*
* Determine the number of octets needed to represent this character.
* We always output the shortest sequence possible. Also specify the
@@ -322,8 +312,9 @@ _UTF8_wcrtomb(char * __restrict s, wchar
* about the sequence length.
*/
if ((wc & ~0x7f) == 0) {
- lead = 0;
- len = 1;
+ /* Fast path for plain ASCII characters. */
+ *s = (char)wc;
+ return (1);
} else if ((wc & ~0x7ff) == 0) {
lead = 0xc0;
len = 2;
More information about the svn-src-stable-9
mailing list