@@ -61,8 +61,7 @@ trait EvalContextExtPriv<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
61
61
let current_thread = this. get_active_thread ( ) ;
62
62
63
63
if let Some ( data_race) = & this. machine . data_race {
64
- data_race
65
- . acquire_clock ( & this. machine . threads . sync . init_onces [ id] . clock , current_thread) ;
64
+ data_race. acquire_clock ( & this. machine . sync . init_onces [ id] . clock , current_thread) ;
66
65
}
67
66
}
68
67
@@ -112,11 +111,11 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
112
111
) -> InterpResult < ' tcx , Option < InitOnceId > > ,
113
112
{
114
113
let this = self . eval_context_mut ( ) ;
115
- let next_index = this. machine . threads . sync . init_onces . next_index ( ) ;
114
+ let next_index = this. machine . sync . init_onces . next_index ( ) ;
116
115
if let Some ( old) = existing ( this, next_index) ? {
117
116
Ok ( old)
118
117
} else {
119
- let new_index = this. machine . threads . sync . init_onces . push ( Default :: default ( ) ) ;
118
+ let new_index = this. machine . sync . init_onces . push ( Default :: default ( ) ) ;
120
119
assert_eq ! ( next_index, new_index) ;
121
120
Ok ( new_index)
122
121
}
@@ -125,7 +124,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
125
124
#[ inline]
126
125
fn init_once_status ( & mut self , id : InitOnceId ) -> InitOnceStatus {
127
126
let this = self . eval_context_ref ( ) ;
128
- this. machine . threads . sync . init_onces [ id] . status
127
+ this. machine . sync . init_onces [ id] . status
129
128
}
130
129
131
130
/// Put the thread into the queue waiting for the initialization.
@@ -137,7 +136,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
137
136
callback : Box < dyn MachineCallback < ' mir , ' tcx > + ' tcx > ,
138
137
) {
139
138
let this = self . eval_context_mut ( ) ;
140
- let init_once = & mut this. machine . threads . sync . init_onces [ id] ;
139
+ let init_once = & mut this. machine . sync . init_onces [ id] ;
141
140
assert_ne ! ( init_once. status, InitOnceStatus :: Complete , "queueing on complete init once" ) ;
142
141
init_once. waiters . push_back ( InitOnceWaiter { thread, callback } ) ;
143
142
this. block_thread ( thread, BlockReason :: InitOnce ( id) ) ;
@@ -148,7 +147,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
148
147
#[ inline]
149
148
fn init_once_begin ( & mut self , id : InitOnceId ) {
150
149
let this = self . eval_context_mut ( ) ;
151
- let init_once = & mut this. machine . threads . sync . init_onces [ id] ;
150
+ let init_once = & mut this. machine . sync . init_onces [ id] ;
152
151
assert_eq ! (
153
152
init_once. status,
154
153
InitOnceStatus :: Uninitialized ,
@@ -160,9 +159,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
160
159
#[ inline]
161
160
fn init_once_complete ( & mut self , id : InitOnceId ) -> InterpResult < ' tcx > {
162
161
let this = self . eval_context_mut ( ) ;
163
- let current_thread = this. get_active_thread ( ) ;
164
- let current_span = this. machine . current_span ( ) ;
165
- let init_once = & mut this. machine . threads . sync . init_onces [ id] ;
162
+ let init_once = & mut this. machine . sync . init_onces [ id] ;
166
163
167
164
assert_eq ! (
168
165
init_once. status,
@@ -174,7 +171,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
174
171
175
172
// Each complete happens-before the end of the wait
176
173
if let Some ( data_race) = & this. machine . data_race {
177
- init_once. clock . clone_from ( & data_race. release_clock ( current_thread , current_span ) ) ;
174
+ init_once. clock . clone_from ( & data_race. release_clock ( & this . machine . threads ) ) ;
178
175
}
179
176
180
177
// Wake up everyone.
@@ -189,9 +186,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
189
186
#[ inline]
190
187
fn init_once_fail ( & mut self , id : InitOnceId ) -> InterpResult < ' tcx > {
191
188
let this = self . eval_context_mut ( ) ;
192
- let current_thread = this. get_active_thread ( ) ;
193
- let current_span = this. machine . current_span ( ) ;
194
- let init_once = & mut this. machine . threads . sync . init_onces [ id] ;
189
+ let init_once = & mut this. machine . sync . init_onces [ id] ;
195
190
assert_eq ! (
196
191
init_once. status,
197
192
InitOnceStatus :: Begun ,
@@ -200,7 +195,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
200
195
201
196
// Each complete happens-before the end of the wait
202
197
if let Some ( data_race) = & this. machine . data_race {
203
- init_once. clock . clone_from ( & data_race. release_clock ( current_thread , current_span ) ) ;
198
+ init_once. clock . clone_from ( & data_race. release_clock ( & this . machine . threads ) ) ;
204
199
}
205
200
206
201
// Wake up one waiting thread, so they can go ahead and try to init this.
0 commit comments