8
8
// option. This file may not be copied, modified, or distributed
9
9
// except according to those terms.
10
10
11
+ #[ cfg( target_has_atomic = "ptr" ) ]
11
12
use core:: sync:: atomic:: { AtomicPtr , Ordering } ;
13
+ #[ cfg( target_has_atomic = "ptr" ) ]
12
14
use core:: mem;
13
15
use core:: intrinsics;
14
16
17
+ #[ cfg( target_has_atomic = "ptr" ) ]
15
18
static OOM_HANDLER : AtomicPtr < ( ) > = AtomicPtr :: new ( default_oom_handler as * mut ( ) ) ;
16
19
17
20
fn default_oom_handler ( ) -> ! {
@@ -21,6 +24,7 @@ fn default_oom_handler() -> ! {
21
24
}
22
25
23
26
/// Common out-of-memory routine
27
+ #[ cfg( target_has_atomic = "ptr" ) ]
24
28
#[ cold]
25
29
#[ inline( never) ]
26
30
#[ unstable( feature = "oom" , reason = "not a scrutinized interface" ,
@@ -31,10 +35,21 @@ pub fn oom() -> ! {
31
35
handler ( ) ;
32
36
}
33
37
38
+ /// Common out-of-memory routine
39
+ #[ cfg( not( target_has_atomic = "ptr" ) ) ]
40
+ #[ cold]
41
+ #[ inline( never) ]
42
+ #[ unstable( feature = "oom" , reason = "not a scrutinized interface" ,
43
+ issue = "27700" ) ]
44
+ pub fn oom ( ) -> ! {
45
+ default_oom_handler ( )
46
+ }
47
+
34
48
/// Set a custom handler for out-of-memory conditions
35
49
///
36
50
/// To avoid recursive OOM failures, it is critical that the OOM handler does
37
51
/// not allocate any memory itself.
52
+ #[ cfg( target_has_atomic = "ptr" ) ]
38
53
#[ unstable( feature = "oom" , reason = "not a scrutinized interface" ,
39
54
issue = "27700" ) ]
40
55
pub fn set_oom_handler ( handler : fn ( ) -> !) {
0 commit comments