File tree Expand file tree Collapse file tree 1 file changed +25
-3
lines changed Expand file tree Collapse file tree 1 file changed +25
-3
lines changed Original file line number Diff line number Diff line change @@ -1039,13 +1039,35 @@ impl CurrentDepGraph {
10391039 match * icx. task {
10401040 OpenTask :: Regular ( ref task) => {
10411041 let mut task = task. lock ( ) ;
1042+ let RegularOpenTask {
1043+ ref mut reads,
1044+ ref mut read_set,
1045+ ref node,
1046+ } = * task;
10421047 self . total_read_count += 1 ;
1043- if task. read_set . insert ( source) {
1044- task. reads . push ( source) ;
1048+
1049+ let is_new_entry = if reads. spilled ( ) {
1050+ read_set. insert ( source)
1051+ } else {
1052+ if reads. as_slice ( ) . contains ( & source) {
1053+ false
1054+ } else {
1055+ if reads. inline_size ( ) == reads. len ( ) {
1056+ read_set. reserve ( 16 ) ;
1057+ read_set. extend ( reads. iter ( ) . cloned ( ) ) ;
1058+ read_set. insert ( source) ;
1059+ }
1060+ true
1061+ }
1062+ } ;
1063+
1064+ if is_new_entry {
1065+ reads. push ( source) ;
1066+ debug_assert ! ( read_set. is_empty( ) ^ reads. spilled( ) ) ;
10451067
10461068 if cfg ! ( debug_assertions) {
10471069 if let Some ( ref forbidden_edge) = self . forbidden_edge {
1048- let target = & task . node ;
1070+ let target = node;
10491071 let source = self . nodes [ source] ;
10501072 if forbidden_edge. test ( & source, & target) {
10511073 bug ! ( "forbidden edge {:?} -> {:?} created" ,
You can’t perform that action at this time.
0 commit comments