mirror of
https://github.com/openharmony/third_party_rust_encoding_rs.git
synced 2026-07-21 02:05:23 -04:00
Avoid offering functions that get SIMD code inlined into them as candidates to be inlined into other crates.
Hopefully this avoid pessimizations at `opt_level=2`.
This commit is contained in:
-23
@@ -624,7 +624,6 @@ cfg_if!{
|
||||
///
|
||||
/// May read the entire buffer even if it isn't all-ASCII. (I.e. the function
|
||||
/// is not guaranteed to fail fast.)
|
||||
#[inline]
|
||||
pub fn is_ascii(buffer: &[u8]) -> bool {
|
||||
is_ascii_impl(buffer)
|
||||
}
|
||||
@@ -634,7 +633,6 @@ pub fn is_ascii(buffer: &[u8]) -> bool {
|
||||
///
|
||||
/// May read the entire buffer even if it isn't all-ASCII. (I.e. the function
|
||||
/// is not guaranteed to fail fast.)
|
||||
#[inline]
|
||||
pub fn is_basic_latin(buffer: &[u16]) -> bool {
|
||||
is_basic_latin_impl(buffer)
|
||||
}
|
||||
@@ -644,7 +642,6 @@ pub fn is_basic_latin(buffer: &[u16]) -> bool {
|
||||
///
|
||||
/// Fails fast. (I.e. returns before having read the whole buffer if UTF-8
|
||||
/// invalidity or code points above U+00FF are discovered.
|
||||
#[inline]
|
||||
pub fn is_utf8_latin1(buffer: &[u8]) -> bool {
|
||||
is_utf8_latin1_impl(buffer).is_none()
|
||||
}
|
||||
@@ -654,7 +651,6 @@ pub fn is_utf8_latin1(buffer: &[u8]) -> bool {
|
||||
///
|
||||
/// Fails fast. (I.e. returns before having read the whole buffer if code
|
||||
/// points above U+00FF are discovered.
|
||||
#[inline]
|
||||
pub fn is_str_latin1(buffer: &str) -> bool {
|
||||
is_str_latin1_impl(buffer).is_none()
|
||||
}
|
||||
@@ -664,7 +660,6 @@ pub fn is_str_latin1(buffer: &str) -> bool {
|
||||
///
|
||||
/// May read the entire buffer even if it isn't all-Latin1. (I.e. the function
|
||||
/// is not guaranteed to fail fast.)
|
||||
#[inline]
|
||||
pub fn is_utf16_latin1(buffer: &[u16]) -> bool {
|
||||
is_utf16_latin1_impl(buffer)
|
||||
}
|
||||
@@ -689,7 +684,6 @@ pub fn is_utf16_latin1(buffer: &[u16]) -> bool {
|
||||
feature = "cargo-clippy",
|
||||
allow(clippy::collapsible_if, clippy::cyclomatic_complexity)
|
||||
)]
|
||||
#[inline]
|
||||
pub fn is_utf8_bidi(buffer: &[u8]) -> bool {
|
||||
// As of rustc 1.25.0-nightly (73ac5d6a8 2018-01-11), this is faster
|
||||
// than UTF-8 validation followed by `is_str_bidi()` for German,
|
||||
@@ -1111,7 +1105,6 @@ pub fn is_utf8_bidi(buffer: &[u8]) -> bool {
|
||||
/// characters or right-to-left controls are not checked for. As a special
|
||||
/// case, U+FEFF is excluded from Arabic Presentation Forms-B.
|
||||
#[cfg_attr(feature = "cargo-clippy", allow(clippy::collapsible_if))]
|
||||
#[inline]
|
||||
pub fn is_str_bidi(buffer: &str) -> bool {
|
||||
// U+058F: D6 8F
|
||||
// U+0590: D6 90
|
||||
@@ -1271,7 +1264,6 @@ pub fn is_str_bidi(buffer: &str) -> bool {
|
||||
/// high surrogate that could be the high half of an RTL character.
|
||||
/// Returns `false` if the input contains neither RTL characters nor
|
||||
/// unpaired high surrogates that could be higher halves of RTL characters.
|
||||
#[inline]
|
||||
pub fn is_utf16_bidi(buffer: &[u16]) -> bool {
|
||||
is_utf16_bidi_impl(buffer)
|
||||
}
|
||||
@@ -1404,7 +1396,6 @@ pub fn is_utf16_code_unit_bidi(u: u16) -> bool {
|
||||
/// Returns `Latin1Bidi::Latin1` if `is_utf8_latin1()` would return `true`.
|
||||
/// Otherwise, returns `Latin1Bidi::Bidi` if `is_utf8_bidi()` would return
|
||||
/// `true`. Otherwise, returns `Latin1Bidi::LeftToRight`.
|
||||
#[inline]
|
||||
pub fn check_utf8_for_latin1_and_bidi(buffer: &[u8]) -> Latin1Bidi {
|
||||
if let Some(offset) = is_utf8_latin1_impl(buffer) {
|
||||
if is_utf8_bidi(&buffer[offset..]) {
|
||||
@@ -1425,7 +1416,6 @@ pub fn check_utf8_for_latin1_and_bidi(buffer: &[u8]) -> Latin1Bidi {
|
||||
/// Returns `Latin1Bidi::Latin1` if `is_str_latin1()` would return `true`.
|
||||
/// Otherwise, returns `Latin1Bidi::Bidi` if `is_str_bidi()` would return
|
||||
/// `true`. Otherwise, returns `Latin1Bidi::LeftToRight`.
|
||||
#[inline]
|
||||
pub fn check_str_for_latin1_and_bidi(buffer: &str) -> Latin1Bidi {
|
||||
// The transition from the latin1 check to the bidi check isn't
|
||||
// optimal but not tweaking it to perfection today.
|
||||
@@ -1448,7 +1438,6 @@ pub fn check_str_for_latin1_and_bidi(buffer: &str) -> Latin1Bidi {
|
||||
/// Returns `Latin1Bidi::Latin1` if `is_utf16_latin1()` would return `true`.
|
||||
/// Otherwise, returns `Latin1Bidi::Bidi` if `is_utf16_bidi()` would return
|
||||
/// `true`. Otherwise, returns `Latin1Bidi::LeftToRight`.
|
||||
#[inline]
|
||||
pub fn check_utf16_for_latin1_and_bidi(buffer: &[u16]) -> Latin1Bidi {
|
||||
check_utf16_for_latin1_and_bidi_impl(buffer)
|
||||
}
|
||||
@@ -1464,7 +1453,6 @@ pub fn check_utf16_for_latin1_and_bidi(buffer: &[u16]) -> Latin1Bidi {
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the destination buffer is shorter than stated above.
|
||||
#[inline]
|
||||
pub fn convert_utf8_to_utf16(src: &[u8], dst: &mut [u16]) -> usize {
|
||||
// TODO: Can the requirement for dst to be at least one unit longer
|
||||
// be eliminated?
|
||||
@@ -1504,7 +1492,6 @@ pub fn convert_utf8_to_utf16(src: &[u8], dst: &mut [u16]) -> usize {
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the destination buffer is shorter than stated above.
|
||||
#[inline]
|
||||
pub fn convert_str_to_utf16(src: &str, dst: &mut [u16]) -> usize {
|
||||
assert!(
|
||||
dst.len() >= src.len(),
|
||||
@@ -1609,7 +1596,6 @@ pub fn convert_str_to_utf16(src: &str, dst: &mut [u16]) -> usize {
|
||||
/// indicated by the return value, so using a `&mut str` interpreted as
|
||||
/// `&mut [u8]` as the destination is not safe. If you want to convert into
|
||||
/// a `&mut str`, use `convert_utf16_to_str()` instead of this function.
|
||||
#[inline]
|
||||
pub fn convert_utf16_to_utf8_partial(src: &[u16], dst: &mut [u8]) -> (usize, usize) {
|
||||
let mut encoder = Utf8Encoder;
|
||||
let (result, read, written) = encoder.encode_from_utf16_raw(src, dst, true);
|
||||
@@ -1656,7 +1642,6 @@ pub fn convert_utf16_to_utf8(src: &[u16], dst: &mut [u8]) -> usize {
|
||||
/// not allocating memory for the worst case up front. Specifically,
|
||||
/// if the input starts with or ends with an unpaired surrogate, those are
|
||||
/// replaced with the REPLACEMENT CHARACTER.
|
||||
#[inline]
|
||||
pub fn convert_utf16_to_str_partial(src: &[u16], dst: &mut str) -> (usize, usize) {
|
||||
let bytes: &mut [u8] = unsafe { dst.as_bytes_mut() };
|
||||
let (read, written) = convert_utf16_to_utf8_partial(src, bytes);
|
||||
@@ -1705,7 +1690,6 @@ pub fn convert_utf16_to_str(src: &[u16], dst: &mut str) -> usize {
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the destination buffer is shorter than stated above.
|
||||
#[inline]
|
||||
pub fn convert_latin1_to_utf16(src: &[u8], dst: &mut [u16]) {
|
||||
assert!(
|
||||
dst.len() >= src.len(),
|
||||
@@ -1733,7 +1717,6 @@ pub fn convert_latin1_to_utf16(src: &[u8], dst: &mut [u16]) {
|
||||
/// indicated by the return value, so using a `&mut str` interpreted as
|
||||
/// `&mut [u8]` as the destination is not safe. If you want to convert into
|
||||
/// a `&mut str`, use `convert_utf16_to_str()` instead of this function.
|
||||
#[inline]
|
||||
pub fn convert_latin1_to_utf8_partial(src: &[u8], dst: &mut [u8]) -> (usize, usize) {
|
||||
let src_len = src.len();
|
||||
let src_ptr = src.as_ptr();
|
||||
@@ -1872,7 +1855,6 @@ pub fn convert_latin1_to_str(src: &[u8], dst: &mut str) -> usize {
|
||||
///
|
||||
/// If debug assertions are enabled (and not fuzzing) and the input is
|
||||
/// not in the range U+0000 to U+00FF, inclusive.
|
||||
#[inline]
|
||||
pub fn convert_utf8_to_latin1_lossy(src: &[u8], dst: &mut [u8]) -> usize {
|
||||
assert!(
|
||||
dst.len() >= src.len(),
|
||||
@@ -1935,7 +1917,6 @@ pub fn convert_utf8_to_latin1_lossy(src: &[u8], dst: &mut [u8]) -> usize {
|
||||
///
|
||||
/// (Probably in future versions if debug assertions are enabled (and not
|
||||
/// fuzzing) and the input is not in the range U+0000 to U+00FF, inclusive.)
|
||||
#[inline]
|
||||
pub fn convert_utf16_to_latin1_lossy(src: &[u16], dst: &mut [u8]) {
|
||||
assert!(
|
||||
dst.len() >= src.len(),
|
||||
@@ -1949,7 +1930,6 @@ pub fn convert_utf16_to_latin1_lossy(src: &[u16], dst: &mut [u8]) {
|
||||
|
||||
/// Returns the index of the first unpaired surrogate or, if the input is
|
||||
/// valid UTF-16 in its entirety, the length of the input.
|
||||
#[inline]
|
||||
pub fn utf16_valid_up_to(buffer: &[u16]) -> usize {
|
||||
utf16_valid_up_to_impl(buffer)
|
||||
}
|
||||
@@ -1979,7 +1959,6 @@ pub fn ensure_utf16_validity(buffer: &mut [u16]) {
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the destination buffer is shorter than stated above.
|
||||
#[inline]
|
||||
pub fn copy_ascii_to_ascii(src: &[u8], dst: &mut [u8]) -> usize {
|
||||
assert!(
|
||||
dst.len() >= src.len(),
|
||||
@@ -2006,7 +1985,6 @@ pub fn copy_ascii_to_ascii(src: &[u8], dst: &mut [u8]) -> usize {
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the destination buffer is shorter than stated above.
|
||||
#[inline]
|
||||
pub fn copy_ascii_to_basic_latin(src: &[u8], dst: &mut [u16]) -> usize {
|
||||
assert!(
|
||||
dst.len() >= src.len(),
|
||||
@@ -2033,7 +2011,6 @@ pub fn copy_ascii_to_basic_latin(src: &[u8], dst: &mut [u16]) -> usize {
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the destination buffer is shorter than stated above.
|
||||
#[inline]
|
||||
pub fn copy_basic_latin_to_ascii(src: &[u16], dst: &mut [u8]) -> usize {
|
||||
assert!(
|
||||
dst.len() >= src.len(),
|
||||
|
||||
Reference in New Issue
Block a user