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 {
1039
1039
match * icx. task {
1040
1040
OpenTask :: Regular ( ref task) => {
1041
1041
let mut task = task. lock ( ) ;
1042
+ let RegularOpenTask {
1043
+ ref mut reads,
1044
+ ref mut read_set,
1045
+ ref node,
1046
+ } = * task;
1042
1047
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( ) ) ;
1045
1067
1046
1068
if cfg ! ( debug_assertions) {
1047
1069
if let Some ( ref forbidden_edge) = self . forbidden_edge {
1048
- let target = & task . node ;
1070
+ let target = node;
1049
1071
let source = self . nodes [ source] ;
1050
1072
if forbidden_edge. test ( & source, & target) {
1051
1073
bug ! ( "forbidden edge {:?} -> {:?} created" ,
You can’t perform that action at this time.
0 commit comments