@@ -280,51 +280,34 @@ module MakeMemo (X : MEMO) = struct
280
280
281
281
let cache : (X.result * int * Env.LookupTypeSet.t) M.t = M. create 10000
282
282
283
- let cache_hits : int M.t = M. create 10000
284
-
285
283
let enabled = ref true
286
284
287
- let bump_counter arg =
288
- try
289
- let new_val = M. find cache_hits arg + 1 in
290
- M. replace cache_hits arg new_val;
291
- new_val
292
- with _ ->
293
- M. add cache_hits arg 1 ;
294
- 1
295
-
296
285
let memoize f env arg =
297
286
if not ! enabled then f env arg
298
287
else
299
288
let env_id = Env. id env in
300
- let n = bump_counter arg in
301
289
let no_memo () =
302
290
let lookups, result =
303
291
Env. with_recorded_lookups env (fun env' -> f env' arg)
304
292
in
305
- if n > 1 then M. add cache arg (result, env_id, lookups);
293
+ M. add cache arg (result, env_id, lookups);
306
294
result
307
295
in
308
296
match M. find_all cache arg with
309
297
| [] -> no_memo ()
310
298
| xs ->
311
299
let rec find_fast = function
312
- | (result , env_id' , _ ) :: _ when env_id' = env_id ->
313
- M. replace cache_hits arg (M. find cache_hits arg + 1 );
314
- result
300
+ | (result , env_id' , _ ) :: _ when env_id' = env_id -> result
315
301
| _ :: ys -> find_fast ys
316
302
| [] -> find xs
317
303
and find = function
318
304
| (m , _ , lookups ) :: xs ->
319
- (* let b = Env.verify_lookups env lookups in *)
320
305
if Env. verify_lookups env lookups then m else find xs
321
306
| [] -> no_memo ()
322
307
in
323
308
find_fast xs
324
309
325
- let clear () =
326
- M. clear cache;
327
- M. clear cache_hits
310
+ let clear () = M. clear cache
328
311
end
329
312
330
313
module LookupModuleMemo = MakeMemo (struct
0 commit comments