@@ -68,19 +68,18 @@ pub fn execute_memoized_function<Db: Database>(
68
68
db. get_storage ( ) . top_level_calls . push ( derived_node_id) ;
69
69
}
70
70
71
- let ( time_updated, did_recalculate) = if let Some ( derived_node) =
72
- db. get_storage ( ) . internal . get_derived_node ( derived_node_id)
71
+ let ( did_recalculate, time_updated) = if let Some ( ( derived_node, revision) ) = db
72
+ . get_storage ( )
73
+ . internal
74
+ . get_derived_node_and_revision ( derived_node_id)
73
75
{
74
76
if db
75
77
. get_storage ( )
76
78
. internal
77
79
. node_verified_in_current_epoch ( derived_node_id)
78
80
{
79
81
event ! ( Level :: TRACE , "epoch not changed" ) ;
80
- (
81
- db. get_storage ( ) . internal . current_epoch ,
82
- DidRecalculate :: ReusedMemoizedValue ,
83
- )
82
+ ( DidRecalculate :: ReusedMemoizedValue , revision. time_updated )
84
83
} else {
85
84
db. get_storage ( )
86
85
. internal
@@ -90,10 +89,7 @@ pub fn execute_memoized_function<Db: Database>(
90
89
update_derived_node ( db, derived_node_id, derived_node. value . as_ref ( ) , inner_fn)
91
90
} else {
92
91
event ! ( Level :: TRACE , "dependencies up-to-date" ) ;
93
- (
94
- db. get_storage ( ) . internal . current_epoch ,
95
- DidRecalculate :: ReusedMemoizedValue ,
96
- )
92
+ ( DidRecalculate :: ReusedMemoizedValue , revision. time_updated )
97
93
}
98
94
}
99
95
} else {
@@ -111,7 +107,7 @@ fn create_derived_node<Db: Database>(
111
107
db : & Db ,
112
108
derived_node_id : DerivedNodeId ,
113
109
inner_fn : InnerFn < Db > ,
114
- ) -> ( Epoch , DidRecalculate ) {
110
+ ) -> ( DidRecalculate , Epoch ) {
115
111
let ( value, tracked_dependencies) =
116
112
invoke_with_dependency_tracking ( db, derived_node_id, inner_fn) . expect (
117
113
"InnerFn call cannot fail for a new derived node. This is indicative of a bug in Pico." ,
@@ -128,8 +124,8 @@ fn create_derived_node<Db: Database>(
128
124
index,
129
125
) ;
130
126
(
131
- tracked_dependencies. max_time_updated ,
132
127
DidRecalculate :: Recalculated ,
128
+ tracked_dependencies. max_time_updated ,
133
129
)
134
130
}
135
131
@@ -138,7 +134,7 @@ fn update_derived_node<Db: Database>(
138
134
derived_node_id : DerivedNodeId ,
139
135
prev_value : & dyn DynEq ,
140
136
inner_fn : InnerFn < Db > ,
141
- ) -> ( Epoch , DidRecalculate ) {
137
+ ) -> ( DidRecalculate , Epoch ) {
142
138
match invoke_with_dependency_tracking ( db, derived_node_id, inner_fn) {
143
139
Some ( ( value, tracked_dependencies) ) => {
144
140
let mut occupied = if let Entry :: Occupied ( occupied) = db
@@ -169,9 +165,9 @@ fn update_derived_node<Db: Database>(
169
165
170
166
occupied. get_mut ( ) . index = index;
171
167
172
- ( tracked_dependencies. max_time_updated , did_recalculate )
168
+ ( did_recalculate , tracked_dependencies. max_time_updated )
173
169
}
174
- None => ( Epoch :: new ( ) , DidRecalculate :: Error ) ,
170
+ None => ( DidRecalculate :: Error , Epoch :: new ( ) ) ,
175
171
}
176
172
}
177
173
0 commit comments