File tree Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
5
5
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8
- refs/heads/try2: 58d6864ad700d9972b57824eed758c9b71e465d8
8
+ refs/heads/try2: b25c5201028d7e08ef6c40385fd848157ea72567
9
9
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
10
10
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
11
11
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ use sys;
14
14
use unstable:: intrinsics;
15
15
16
16
/// Casts the value at `src` to U. The two types must have the same length.
17
+ #[ cfg( stage0) ]
17
18
pub unsafe fn transmute_copy < T , U > ( src : & T ) -> U {
18
19
let mut dest: U = intrinsics:: uninit ( ) ;
19
20
{
@@ -26,6 +27,26 @@ pub unsafe fn transmute_copy<T, U>(src: &T) -> U {
26
27
dest
27
28
}
28
29
30
+ #[ cfg( target_word_size = "32" , not( stage0) ) ]
31
+ #[ inline( always) ]
32
+ pub unsafe fn transmute_copy < T , U > ( src : & T ) -> U {
33
+ let mut dest: U = intrinsics:: uninit ( ) ;
34
+ let dest_ptr: * mut u8 = transmute ( & mut dest) ;
35
+ let src_ptr: * u8 = transmute ( src) ;
36
+ intrinsics:: memcpy32 ( dest_ptr, src_ptr, sys:: size_of :: < U > ( ) as u64 ) ;
37
+ dest
38
+ }
39
+
40
+ #[ cfg( target_word_size = "64" , not( stage0) ) ]
41
+ #[ inline( always) ]
42
+ pub unsafe fn transmute_copy < T , U > ( src : & T ) -> U {
43
+ let mut dest: U = intrinsics:: uninit ( ) ;
44
+ let dest_ptr: * mut u8 = transmute ( & mut dest) ;
45
+ let src_ptr: * u8 = transmute ( src) ;
46
+ intrinsics:: memcpy64 ( dest_ptr, src_ptr, sys:: size_of :: < U > ( ) as u64 ) ;
47
+ dest
48
+ }
49
+
29
50
/**
30
51
* Move a thing into the void
31
52
*
You can’t perform that action at this time.
0 commit comments