This repository was archived by the owner on May 28, 2025. It is now read-only.
Commit 27529d5
committed
Auto merge of rust-lang#125525 - joboet:tls_accessor, r=cuviper
Make TLS accessors closures that return pointers
The current TLS macros generate a function that returns an `Option<&'static T>`. This is both risky as we lie about lifetimes, and necessitates that those functions are `unsafe`. By returning a `*const T` instead, the accessor function do not have safety requirements any longer and can be made closures without hassle. This PR does exactly that!
For native TLS, the closure approach makes it trivial to select the right accessor function at compile-time, which could result in a slight speed-up (I have the hope that the accessors are now simple enough for the MIR-inliner to kick in).File tree
8 files changed
+128
-271
lines changed- library/std/src
- sys/thread_local
- fast_local
- thread
- tests/ui/suggestions
8 files changed
+128
-271
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
25 | | - | |
| 24 | + | |
| 25 | + | |
26 | 26 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
| 27 | + | |
| 28 | + | |
32 | 29 | | |
33 | | - | |
| 30 | + | |
| 31 | + | |
34 | 32 | | |
35 | | - | |
| 33 | + | |
36 | 34 | | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
| 35 | + | |
| 36 | + | |
42 | 37 | | |
43 | 38 | | |
44 | 39 | | |
45 | 40 | | |
46 | 41 | | |
47 | | - | |
| 42 | + | |
48 | 43 | | |
49 | 44 | | |
50 | 45 | | |
51 | | - | |
52 | | - | |
| 46 | + | |
53 | 47 | | |
54 | 48 | | |
55 | 49 | | |
| 50 | + | |
56 | 51 | | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
| 52 | + | |
61 | 53 | | |
62 | 54 | | |
63 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
43 | | - | |
44 | | - | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
45 | 45 | | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
| 46 | + | |
| 47 | + | |
51 | 48 | | |
52 | | - | |
| 49 | + | |
| 50 | + | |
53 | 51 | | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
| 52 | + | |
63 | 53 | | |
64 | 54 | | |
65 | | - | |
66 | | - | |
| 55 | + | |
| 56 | + | |
67 | 57 | | |
68 | 58 | | |
69 | 59 | | |
70 | 60 | | |
71 | 61 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
| 62 | + | |
77 | 63 | | |
78 | 64 | | |
79 | 65 | | |
80 | 66 | | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | 67 | | |
86 | 68 | | |
87 | 69 | | |
| |||
92 | 74 | | |
93 | 75 | | |
94 | 76 | | |
95 | | - | |
96 | | - | |
97 | | - | |
| 77 | + | |
98 | 78 | | |
99 | 79 | | |
100 | | - | |
| 80 | + | |
101 | 81 | | |
102 | 82 | | |
103 | 83 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
| 55 | + | |
61 | 56 | | |
62 | | - | |
| 57 | + | |
| 58 | + | |
63 | 59 | | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
69 | 73 | | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
| 74 | + | |
81 | 75 | | |
82 | 76 | | |
83 | 77 | | |
| |||
88 | 82 | | |
89 | 83 | | |
90 | 84 | | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
| 85 | + | |
97 | 86 | | |
| 87 | + | |
| 88 | + | |
98 | 89 | | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
104 | 103 | | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
| 104 | + | |
116 | 105 | | |
117 | 106 | | |
118 | 107 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
23 | 22 | | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
37 | 26 | | |
38 | | - | |
39 | | - | |
40 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
41 | 33 | | |
42 | | - | |
| 34 | + | |
43 | 35 | | |
44 | 36 | | |
45 | 37 | | |
| |||
67 | 59 | | |
68 | 60 | | |
69 | 61 | | |
70 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
71 | 65 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
80 | 69 | | |
81 | 70 | | |
82 | 71 | | |
83 | 72 | | |
84 | 73 | | |
85 | | - | |
| 74 | + | |
86 | 75 | | |
87 | | - | |
88 | | - | |
89 | | - | |
| 76 | + | |
90 | 77 | | |
91 | 78 | | |
92 | 79 | | |
93 | | - | |
| 80 | + | |
94 | 81 | | |
95 | 82 | | |
96 | 83 | | |
97 | 84 | | |
98 | | - | |
| 85 | + | |
99 | 86 | | |
100 | 87 | | |
101 | | - | |
| 88 | + | |
102 | 89 | | |
103 | 90 | | |
104 | 91 | | |
| |||
119 | 106 | | |
120 | 107 | | |
121 | 108 | | |
122 | | - | |
| 109 | + | |
123 | 110 | | |
124 | 111 | | |
125 | 112 | | |
| |||
0 commit comments