File tree Expand file tree Collapse file tree 4 files changed +33
-14
lines changed Expand file tree Collapse file tree 4 files changed +33
-14
lines changed Original file line number Diff line number Diff line change @@ -470,10 +470,7 @@ impl f32 {
470470 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
471471 #[ inline]
472472 pub fn log2 ( self ) -> f32 {
473- #[ cfg( target_os = "android" ) ]
474- return crate :: sys:: android:: log2f32 ( self ) ;
475- #[ cfg( not( target_os = "android" ) ) ]
476- return unsafe { intrinsics:: log2f32 ( self ) } ;
473+ return crate :: sys:: log2f32 ( self ) ;
477474 }
478475
479476 /// Returns the base 10 logarithm of the number.
Original file line number Diff line number Diff line change @@ -470,12 +470,7 @@ impl f64 {
470470 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
471471 #[ inline]
472472 pub fn log2 ( self ) -> f64 {
473- self . log_wrapper ( |n| {
474- #[ cfg( target_os = "android" ) ]
475- return crate :: sys:: android:: log2f64 ( n) ;
476- #[ cfg( not( target_os = "android" ) ) ]
477- return unsafe { intrinsics:: log2f64 ( n) } ;
478- } )
473+ self . log_wrapper ( crate :: sys:: log2f64)
479474 }
480475
481476 /// Returns the base 10 logarithm of the number.
@@ -936,8 +931,8 @@ impl f64 {
936931 // of expected NaN).
937932 #[ rustc_allow_incoherent_impl]
938933 fn log_wrapper < F : Fn ( f64 ) -> f64 > ( self , log_fn : F ) -> f64 {
939- if ! cfg ! ( any ( target_os = "solaris" , target_os = "illumos" ) ) {
940- log_fn ( self )
934+ if let Some ( result ) = crate :: sys :: log_wrapper ( self ) {
935+ log_fn ( result )
941936 } else if self . is_finite ( ) {
942937 if self > 0.0 {
943938 log_fn ( self )
Original file line number Diff line number Diff line change @@ -76,3 +76,32 @@ cfg_if::cfg_if! {
7676 pub mod c;
7777 }
7878}
79+
80+ #[ cfg( not( test) ) ]
81+ cfg_if:: cfg_if! {
82+ if #[ cfg( target_os = "android" ) ] {
83+ pub use crate :: android:: log2f32;
84+ pub use crate :: android:: log2f64;
85+ } else {
86+ pub fn log2f32( n: f32 ) -> f32 {
87+ unsafe { crate :: intrinsics:: log2f32( n) }
88+ }
89+
90+ pub fn log2f64( n: f64 ) -> f64 {
91+ unsafe { crate :: intrinsics:: log2f64( n) }
92+ }
93+ }
94+ }
95+
96+ #[ cfg( not( test) ) ]
97+ cfg_if:: cfg_if! {
98+ if #[ cfg( any( target_os = "solaris" , target_os = "illumos" ) ) ] {
99+ pub fn log_wrapper( n: f64 ) -> Option <f64 > {
100+ Some ( n)
101+ }
102+ } else {
103+ pub fn log_wrapper( _n: f64 ) -> Option <f64 > {
104+ None
105+ }
106+ }
107+ }
Original file line number Diff line number Diff line change @@ -54,8 +54,6 @@ const EXCEPTION_PATHS: &[&str] = &[
5454 // FIXME: platform-specific code should be moved to `sys`
5555 "library/std/src/io/copy.rs" ,
5656 "library/std/src/io/stdio.rs" ,
57- "library/std/src/f32.rs" ,
58- "library/std/src/f64.rs" ,
5957 "library/std/src/path.rs" ,
6058 "library/std/src/sys_common" , // Should only contain abstractions over platforms
6159 "library/std/src/net/test.rs" , // Utility helpers for tests
You can’t perform that action at this time.
0 commit comments