10
10
11
11
-include (" elixir.hrl" ).
12
12
-define (cache , {elixir , cache_env }).
13
+ -define (locals , {elixir , locals }).
13
14
-define (tracker , 'Elixir.Module.LocalsTracker' ).
14
15
15
16
setup ({DataSet , _DataBag }) ->
16
17
ets :insert (DataSet , {? cache , 0 , nil }),
17
- ok .
18
18
19
- stop ({_DataSet , _DataBag }) ->
19
+ case elixir_config :get (bootstrap ) of
20
+ false -> ets :insert (DataSet , {? locals , true });
21
+ true -> ok
22
+ end ,
23
+
20
24
ok .
21
25
26
+ stop ({DataSet , _DataBag }) ->
27
+ ets :delete (DataSet , ? locals ).
28
+
22
29
yank (Tuple , Module ) ->
23
30
if_tracker (Module , fun (Tracker ) -> ? tracker :yank (Tracker , Tuple ) end ).
24
31
@@ -44,9 +51,12 @@ if_tracker(Module, Callback) ->
44
51
if_tracker (Module , ok , Callback ).
45
52
46
53
if_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
50
60
catch
51
61
error :badarg -> Default
52
62
end .
0 commit comments