1010
1111-include (" elixir.hrl" ).
1212-define (cache , {elixir , cache_env }).
13+ -define (locals , {elixir , locals }).
1314-define (tracker , 'Elixir.Module.LocalsTracker' ).
1415
1516setup ({DataSet , _DataBag }) ->
1617 ets :insert (DataSet , {? cache , 0 , nil }),
17- ok .
1818
19- stop ({_DataSet , _DataBag }) ->
19+ case elixir_config :get (bootstrap ) of
20+ false -> ets :insert (DataSet , {? locals , true });
21+ true -> ok
22+ end ,
23+
2024 ok .
2125
26+ stop ({DataSet , _DataBag }) ->
27+ ets :delete (DataSet , ? locals ).
28+
2229yank (Tuple , Module ) ->
2330 if_tracker (Module , fun (Tracker ) -> ? tracker :yank (Tracker , Tuple ) end ).
2431
@@ -44,9 +51,12 @@ if_tracker(Module, Callback) ->
4451 if_tracker (Module , ok , Callback ).
4552
4653if_tracker (Module , Default , Callback ) ->
47- try {elixir_config :get (bootstrap ), elixir_module :data_tables (Module )} of
48- {true , _Tracker } -> Default ;
49- {false , Tracker } -> Callback (Tracker )
54+ try
55+ {DataSet , _ } = Tables = elixir_module :data_tables (Module ),
56+ {ets :member (DataSet , ? locals ), Tables }
57+ of
58+ {true , Tracker } -> Callback (Tracker );
59+ {false , _ } -> Default
5060 catch
5161 error :badarg -> Default
5262 end .
0 commit comments