aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/src/dialyzer_callgraph.erl
AgeCommit message (Collapse)Author
2017-06-13dialyzer: Do not use two records for PLTsHans Bolinder
Instead of two records, #plt{} with dict:s and #mini_plt{} with ETS tables, one record is used for representing PLT:s in RAM. The #mini_plt{} is the one now used throughout analyses, but it is called #plt{}. When writing the PLT to file, another record is used, #file_plt{} (as before). When creating #file_plt{}, the #plt{} is deleted (it cannot be used for further analyses).
2017-06-09dialyzer: Improve handling of UnicodeHans Bolinder
2017-02-14Fixed typos in lib/dialyzerAndrew Dryga
2017-02-03dialyzer: Do not spawn all workers at onceHans Bolinder
Spawning all worker processes at once has the potential to increase peak memory consumption. Therefore the implementation is now slightly modified: `20 * dialyzer_utils:parallelism()' processes are running in parallel. 20 i quite a big factor, but seems necessary to keep all schedulers busy according to the Observer application's Load Charts, with a 100 ms update interval.
2017-02-03dialyzer: Sort graphs topologicallyHans Bolinder
Although some variable names indicate that lists of SCCs and modules are sorted, that was not always the case. The effect on the execution time of sorting them doesn't seem to be significant. dialyzer_coordinator:sccs_to_pids() should now always return an empty second list (not yet started workers). Since the condensation of graphs often needs a lot of heap memory, it is run in a separate process.
2017-02-03dialyzer: Check return value of digrahp:add_edge()Hans Bolinder
2017-01-12Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Compact 'file' annotations in Core code dialyzer: Try to reduce memory usage dialyzer: Use less memory when translating contracts dialyzer: Use maps instaed of dict dialyzer: Use maps instead of dict for module contracts map dialyzer: Compress a few more ETS tables dialyzer: Optimize memory consumption dialyzer: Reduce memory consumption during 'remote' phase dialyzer: Update code for finding parallelism compiler: Do not spawn process when dialyzing dialyzer: Reduce ETS usage during the typesig phase dialyzer: Optimize graph condensation dialyzer: Do not send full PLTs as messages
2017-01-11dialyzer: Reduce ETS usage during the typesig phaseHans Bolinder
The condensed graph of SCCs occupies less ETS memory. A table translating to and from SCC to a unique integer is introduced.
2017-01-11dialyzer: Optimize graph condensationHans Bolinder
By not using ETS when calculating the condensation of graphs, peak heap memory consumption is reduced.
2016-11-23Correct copyright and license on dialyzer filesRichard Carlsson
2016-01-26Split race_data_server out of dialyzer_callgraphLuca Favatella
... in order to reduce size of module dialyzer_callgraph, down from ~850 to ~750 lines.
2016-01-26Clarify that dialyzer_callgraph:callgraph() type is opaqueLuca Favatella
2015-12-28Merge branch 'maint'Zandra
2015-10-27Teach Dialyzer call to funs `M:F/A` (literal M, F, A)Luca Favatella
2015-10-09Update DialyzerHans Bolinder
Record field types have been modified due to commit 8ce35b2: "Take out automatic insertion of 'undefined' from typed record fields".
2015-06-18Change license text to APLv2Bruce Yinhe
2014-02-23Deprecate pre-defined built-in typesHans Bolinder
The types array(), dict(), digraph(), gb_set(), gb_tree(), queue(), set(), and tid() have been deprecated. They will be removed in OTP 18.0. Instead the types array:array(), dict:dict(), digraph:graph(), gb_set:set(), gb_tree:tree(), queue:queue(), sets:set(), and ets:tid() can be used. (Note: it has always been necessary to use ets:tid().) It is allowed in OTP 17.0 to locally re-define the types array(), dict(), and so on. New types array:array/1, dict:dict/2, gb_sets:set/1, gb_trees:tree/2, queue:queue/1, and sets:set/1 have been added.
2013-12-12Support non top level letrecs in dialyzerJosé Valim
Dialyzer so far only supported letrecs at the top-level and comprehension-like letrecs (i.e. that were directly applied) in their body. This commit address this issue by storing in the callgraph bound letrec labels pointing to their functions. This information is then used by the dataflow to properly lookup recursive definitions.
2013-02-22Update copyright yearsBjörn-Egil Dahlberg
2013-02-19Simplify a case construct using a boolean operatorKostis Sagonas
2012-05-21Regulate all kinds of running workers up to the number of schedulersStavros Aronis
2012-05-21Better names for callgaph ETS tablesStavros Aronis
2012-05-21Remove needless conversionStavros Aronis
The final version of the callgraph needs not be "reduced" for more efficient copying.
2012-05-21Fix types and specsStavros Aronis
2012-05-21Better reflect side-effect based code in dialyzer_callgraphStavros Aronis
2012-05-21Code simplifications (tidier)Kostis Sagonas
2012-05-21More efficient calculation of module deps and postorderStavros Aronis
2012-05-21All spawns are now spawn_linksStavros Aronis
2012-05-21Fix specsStavros Aronis
2012-05-21Add read_concurrency option to some ETS tablesStavros Aronis
2012-05-21Avoid digraph_utils:condensation and ordering in typesigStavros Aronis
2012-05-21Fix types and specs in DialyzerStavros Aronis
2012-05-21Parallel compilation of files under analysisStavros Aronis
2012-05-21Callgraph is ets based from the startStavros Aronis
2012-05-21Parallel dataflowStavros Aronis
2012-05-21Separate race related fields of callgraphStavros Aronis
2012-05-21Remove unused race detection related codeStavros Aronis
2012-05-21Moving code between callgraph & dataflowStavros Aronis
2012-05-21Parallel typesig analysisStavros Aronis
2012-05-21Simplify typesig postorder calculationStavros Aronis
As the storing in the codeserver is organized per function there is no need for fancy code to make use of the old caching capabilities.
2012-05-21Flatten order of dataflow analysesStavros Aronis
Dataflow analysis was structured to find SCCs of modules, without making any use of the information that these were indeed SCCs.
2012-03-30Update copyright yearsBjörn-Egil Dahlberg
2012-02-22Review by Kostis Sagonas and fixesStavros Aronis
2012-02-22Cleanups in dialyzer_callgraph and dialyzer_dataflowStavros Aronis
Refactorings, code movements and reflection of mutable variables in the code.
2010-06-03Support -export_type() in dialyzer and erl_typesKostis Sagonas
2010-02-17Merge branch 'ks/hipe' into ccase/r13b04_devErlang/OTP
* ks/hipe: dialyzer: Fix system_limit exception in race analysis syntax_tools: Add types and specs for most exported functions syntax_tools: Support the --enable-native-libs configure option syntax_tools: Remove $Id$ annotations dialyzer: New version for the R13B04 release hipe: Miscellaneous additions typer: New version for the R13B04 release Fix a HiPE compiler bug evaluating an expression that throws system_limit OTP-8460 ks/hipe
2010-02-16dialyzer: Fix system_limit exception in race analysisKostis Sagonas
dialyzer_callgraph: Avoid creation of too many ets tables by the race analysis. dialyzer_dataflow: The digraph returned by the race analysis should not be the translated one.
2010-02-14dialyzer: New version for the R13B04 releaseKostis Sagonas
2009-11-20The R13B03 release.OTP_R13B03Erlang/OTP