@@ -1199,24 +1199,12 @@ module DB = struct
11991199 ; dep_pkg_digest : Pkg_digest .t
12001200 }
12011201
1202- let dep_equal (dep : dep ) { dep_pkg; dep_loc; dep_pkg_digest } =
1203- Pkg. equal dep.dep_pkg dep_pkg
1204- && Loc. equal dep.dep_loc dep_loc
1205- && Pkg_digest. equal dep.dep_pkg_digest dep_pkg_digest
1206- ;;
1207-
12081202 type entry =
12091203 { pkg : Pkg .t
12101204 ; deps : dep list
12111205 ; pkg_digest : Pkg_digest .t
12121206 }
12131207
1214- let entry_equal (entry : entry ) { pkg; deps; pkg_digest } =
1215- Pkg. equal entry.pkg pkg
1216- && List. equal dep_equal entry.deps deps
1217- && Pkg_digest. equal entry.pkg_digest pkg_digest
1218- ;;
1219-
12201208 let entries_by_name_of_lock_dir
12211209 (lock_dir : Dune_pkg.Lock_dir.t )
12221210 ~platform
@@ -1270,8 +1258,6 @@ module DB = struct
12701258 (* Associate each package's digest with the package and its dependencies. *)
12711259 type t = entry Pkg_digest.Map .t
12721260
1273- let equal = Pkg_digest.Map. equal ~equal: entry_equal
1274-
12751261 let of_lock_dir lock_dir ~platform ~system_provided =
12761262 entries_by_name_of_lock_dir lock_dir ~platform ~system_provided
12771263 |> Package.Name.Map. values
@@ -1335,22 +1321,24 @@ module DB = struct
13351321 ;;
13361322 end
13371323
1324+ module Id = Id. Make ()
1325+
13381326 type t =
1339- { pkg_digest_table : Pkg_table .t
1327+ { id : Id .t
1328+ ; pkg_digest_table : Pkg_table .t
13401329 ; system_provided : Package.Name.Set .t
13411330 }
13421331
1343- let equal t ({ pkg_digest_table; system_provided } as t' ) =
1344- phys_equal t t'
1345- || (Pkg_table. equal t.pkg_digest_table pkg_digest_table
1346- && Package.Name.Set. equal t.system_provided system_provided)
1347- ;;
1332+ let equal x y = Id. equal x.id y.id
13481333
1349- let hash = `Do_not_hash
1350- let _ = hash
1351- (* Because t is large, hashing is expensive, so much so that hashing the db in Input.t
1352- below slowed down the dune call in the test repo described in #12248 from 1s to
1353- 2s. *)
1334+ let create =
1335+ let table = Table. create (module Id ) 16 in
1336+ fun ~pkg_digest_table ~system_provided ->
1337+ let id = Id. gen () in
1338+ let t = { id; pkg_digest_table; system_provided } in
1339+ Table. set table id t;
1340+ t
1341+ ;;
13541342
13551343 let pkg_digest_of_name lock_dir platform pkg_name ~system_provided =
13561344 let entries_by_name =
@@ -1393,7 +1381,7 @@ module DB = struct
13931381 >> | Pkg_table. union
13941382 (Pkg_table. of_lock_dir lock_dir ~platform ~system_provided )
13951383 in
1396- { pkg_digest_table; system_provided } )
1384+ create ~ pkg_digest_table ~ system_provided )
13971385 in
13981386 fun ctx ~allow_sharing -> Memo. exec of_ctx_memo (ctx, allow_sharing)
13991387 ;;
@@ -1422,12 +1410,12 @@ module DB = struct
14221410 | true ->
14231411 let + pkg_digest_table_all_dev_tools =
14241412 Memo.Lazy. force Pkg_table. all_existing_dev_tools
1425- and + { pkg_digest_table = pkg_digest_table_default_ctx; system_provided = _ } =
1413+ and + { pkg_digest_table = pkg_digest_table_default_ctx; _ } =
14261414 of_ctx Context_name. default ~allow_sharing: true
14271415 in
14281416 Pkg_table. union pkg_digest_table_default_ctx pkg_digest_table_all_dev_tools
14291417 in
1430- ( { pkg_digest_table; system_provided }
1418+ ( create ~ pkg_digest_table ~ system_provided
14311419 , pkg_digest_of_name
14321420 lock_dir
14331421 platform
0 commit comments