diff options
author | Luca Favatella <[email protected]> | 2015-09-25 00:02:51 +0100 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2016-01-27 08:58:32 +0100 |
commit | 30361077904295cbc7471c44d4b15ae86bfb2f05 (patch) | |
tree | 9d7920fed0148aa75012965695f49d7b6faae755 /lib/dialyzer/src/dialyzer_coordinator.erl | |
parent | 7a2fc5f7ace6f0c3fc03e1f74f6cedf95c7968fd (diff) | |
download | otp-30361077904295cbc7471c44d4b15ae86bfb2f05.tar.gz otp-30361077904295cbc7471c44d4b15ae86bfb2f05.tar.bz2 otp-30361077904295cbc7471c44d4b15ae86bfb2f05.zip |
Clarify usage of coordinator by analysis_callgraph
* Comment in dialyzer_analysis_callgraph what the call to
dialyzer_coordinator does;
* Delegate activation request to each dialyzer_worker;
* There is no reason for the dialyzer_coordinator to request
activation on behalf of the workers: let each worker request its
own activation as it leads to more consistent dialyzer_worker
module (activation is request as soon as status running is hit -
reguardless of mode) and it reduces lines of code.
* Clarify types in coordinator and worker e.g. make opaque and make
type more strict.
Diffstat (limited to 'lib/dialyzer/src/dialyzer_coordinator.erl')
-rw-r--r-- | lib/dialyzer/src/dialyzer_coordinator.erl | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/lib/dialyzer/src/dialyzer_coordinator.erl b/lib/dialyzer/src/dialyzer_coordinator.erl index 3290161ca1..87cbd25b30 100644 --- a/lib/dialyzer/src/dialyzer_coordinator.erl +++ b/lib/dialyzer/src/dialyzer_coordinator.erl @@ -2,7 +2,7 @@ %%----------------------------------------------------------------------- %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2006-2012. All Rights Reserved. +%% Copyright Ericsson AB 2006-2016. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -29,8 +29,8 @@ %%% Export for dialyzer main process -export([parallel_job/4]). -%%% Exports for all possible workers --export([wait_activation/0, job_done/3]). +%%% Export for all possible workers +-export([job_done/3]). %%% Exports for the typesig and dataflow analysis workers -export([sccs_to_pids/2, request_activation/1]). @@ -46,7 +46,7 @@ -type regulator() :: pid(). -type scc_to_pid() :: ets:tid() | 'unused'. --type coordinator() :: {collector(), regulator(), scc_to_pid()}. %%opaque +-opaque coordinator() :: {collector(), regulator(), scc_to_pid()}. -type timing() :: dialyzer_timing:timing_server(). -type scc() :: [mfa_or_funlbl()]. @@ -75,8 +75,9 @@ -type result() :: compile_result() | typesig_result() | dataflow_result() | warnings_result(). --type job_result() :: dialyzer_analysis_callgraph:one_file_result() | - typesig_result() | dataflow_result() | warnings_result(). +-type job_result() :: dialyzer_analysis_callgraph:one_file_mid_error() | + dialyzer_analysis_callgraph:one_file_result_ok() | + typesig_result() | dataflow_result() | warnings_result(). -record(state, {mode :: mode(), active = 0 :: integer(), @@ -119,7 +120,7 @@ spawn_jobs(Mode, Jobs, InitData, Timing) -> Pid = dialyzer_worker:launch(Mode, Job, InitData, Coordinator), case TypesigOrDataflow of true -> true = ets:insert(SCCtoPID, {Job, Pid}), ok; - false -> request_activation(Regulator, Pid) + false -> ok end, Count + 1 end, @@ -218,10 +219,6 @@ request_activation({_Collector, Regulator, _SCCtoPID}) -> Regulator ! {req, self()}, wait_activation(). -request_activation(Regulator, Pid) -> - Regulator ! {req, Pid}, - ok. - spawn_regulator() -> InitTickets = dialyzer_utils:parallelism(), spawn_link(fun() -> regulator_loop(InitTickets, queue:new()) end). |