(&self, fi: usize, args: &[Val], heap: &super::types::HeapPool)
| 242 | pub fn new() -> Self { Self { slots: Vec::new() } } |
| 243 | |
| 244 | pub fn lookup(&self, fi: usize, args: &[Val], heap: &super::types::HeapPool) -> Option<Val> { |
| 245 | let h = hash_args(args); |
| 246 | self.slots.get(fi)?.iter() |
| 247 | .find(|e| e.hits >= TPL_THRESH && args_match(e, args, h, heap)) |
| 248 | .map(|e| e.result) |
| 249 | } |
| 250 | |
| 251 | pub fn record(&mut self, fi: usize, args: &[Val], result: Val, heap: &super::types::HeapPool) { |
| 252 | if !args_memoizable(args, heap) || !result_memoizable(result, heap) { return; } |
no test coverage detected