commit
e7f2be7ce8
@ -76,8 +76,8 @@ allocate_store_maps(Used, ?FATE_STORE_MAP(Cache, _Id) = Val, Maps) when Cache =:
|
|||||||
{Used, Val, Maps};
|
{Used, Val, Maps};
|
||||||
allocate_store_maps(Used, ?FATE_STORE_MAP(Cache, Id), Maps) ->
|
allocate_store_maps(Used, ?FATE_STORE_MAP(Cache, Id), Maps) ->
|
||||||
{NewId, Used1} = next_id(Used),
|
{NewId, Used1} = next_id(Used),
|
||||||
{Used1, Cache1, Maps1} = allocate_store_maps_m(Used1, Cache, Maps),
|
{Used2, Cache1, Maps1} = allocate_store_maps_m(Used1, Cache, Maps),
|
||||||
{Used1, ?FATE_STORE_MAP(#{}, NewId), Maps1#{NewId => ?FATE_STORE_MAP(Cache1, Id)}}.
|
{Used2, ?FATE_STORE_MAP(#{}, NewId), Maps1#{NewId => ?FATE_STORE_MAP(Cache1, Id)}}.
|
||||||
|
|
||||||
allocate_store_maps_l(Used, [], Maps) -> {Used, [], Maps};
|
allocate_store_maps_l(Used, [], Maps) -> {Used, [], Maps};
|
||||||
allocate_store_maps_l(Used, [H | T], Maps) ->
|
allocate_store_maps_l(Used, [H | T], Maps) ->
|
||||||
@ -95,7 +95,8 @@ allocate_store_maps_m(Used, Val, Maps) ->
|
|||||||
|
|
||||||
-type unfold_fun() :: fun((id()) -> aeb_fate_data:fate_map()).
|
-type unfold_fun() :: fun((id()) -> aeb_fate_data:fate_map()).
|
||||||
|
|
||||||
-spec unfold_store_maps(unfold_fun(), fate_value()) -> fate_value().
|
-spec unfold_store_maps(unfold_fun(), fate_value_or_tombstone()) -> fate_value_or_tombstone().
|
||||||
|
unfold_store_maps(_Unfold, ?FATE_MAP_TOMBSTONE = Val) -> Val;
|
||||||
unfold_store_maps(_Unfold, ?FATE_TRUE = Val) -> Val;
|
unfold_store_maps(_Unfold, ?FATE_TRUE = Val) -> Val;
|
||||||
unfold_store_maps(_Unfold, ?FATE_FALSE = Val) -> Val;
|
unfold_store_maps(_Unfold, ?FATE_FALSE = Val) -> Val;
|
||||||
unfold_store_maps(_Unfold, ?FATE_UNIT = Val) -> Val;
|
unfold_store_maps(_Unfold, ?FATE_UNIT = Val) -> Val;
|
||||||
@ -121,7 +122,8 @@ unfold_store_maps(Unfold, Val) when ?IS_FATE_MAP(Val) ->
|
|||||||
?MAKE_FATE_MAP(unfold_store_maps_m(Unfold, ?FATE_MAP_VALUE(Val)));
|
?MAKE_FATE_MAP(unfold_store_maps_m(Unfold, ?FATE_MAP_VALUE(Val)));
|
||||||
unfold_store_maps(Unfold, ?FATE_STORE_MAP(Cache, Id)) ->
|
unfold_store_maps(Unfold, ?FATE_STORE_MAP(Cache, Id)) ->
|
||||||
StoreMap = Unfold(Id),
|
StoreMap = Unfold(Id),
|
||||||
maps:fold(fun write_cache/3, unfold_store_maps(Unfold, StoreMap), Cache).
|
maps:fold(fun write_cache/3, unfold_store_maps(Unfold, StoreMap),
|
||||||
|
unfold_store_maps_m(Unfold, Cache)).
|
||||||
|
|
||||||
unfold_store_maps_l(Unfold, Vals) ->
|
unfold_store_maps_l(Unfold, Vals) ->
|
||||||
[ unfold_store_maps(Unfold, Val) || Val <- Vals ].
|
[ unfold_store_maps(Unfold, Val) || Val <- Vals ].
|
||||||
|
Loading…
x
Reference in New Issue
Block a user