aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/src/dialyzer_contracts.erl
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2016-12-06 14:02:12 +0100
committerHans Bolinder <[email protected]>2017-01-11 09:34:58 +0100
commit57e21970a394193e929795629fe5c3cd15310660 (patch)
treeb8c159a8157b7dd5996a190b8e3b27a3e70f04de /lib/dialyzer/src/dialyzer_contracts.erl
parent605a4627a7383829559a1595457b860c1317da48 (diff)
downloadotp-57e21970a394193e929795629fe5c3cd15310660.tar.gz
otp-57e21970a394193e929795629fe5c3cd15310660.tar.bz2
otp-57e21970a394193e929795629fe5c3cd15310660.zip
dialyzer: Do not send full PLTs as messages
The mini PLT is extended to hold all data of the full PLT, and the full PLT is restored when needed (for storing the PLT on file).
Diffstat (limited to 'lib/dialyzer/src/dialyzer_contracts.erl')
-rw-r--r--lib/dialyzer/src/dialyzer_contracts.erl3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/dialyzer/src/dialyzer_contracts.erl b/lib/dialyzer/src/dialyzer_contracts.erl
index 73b04b305b..331786466f 100644
--- a/lib/dialyzer/src/dialyzer_contracts.erl
+++ b/lib/dialyzer/src/dialyzer_contracts.erl
@@ -170,6 +170,7 @@ process_contract_remote_types(CodeServer) ->
lists:mapfoldl(ContractFun, C3, dict:to_list(ContractDict)),
{{ModuleName, dict:from_list(NewContractList)}, C4}
end,
+ erlang:garbage_collect(),
Cache = erl_types:cache__new(),
{NewContractList, C5} =
lists:mapfoldl(ModuleFun, Cache, dict:to_list(TmpContractDict)),
@@ -177,6 +178,8 @@ process_contract_remote_types(CodeServer) ->
lists:mapfoldl(ModuleFun, C5, dict:to_list(TmpCallbackDict)),
NewContractDict = dict:from_list(NewContractList),
NewCallbackDict = dict:from_list(NewCallbackList),
+ %% Make sure the (huge) cache is garbage collected:
+ erlang:garbage_collect(),
dialyzer_codeserver:finalize_contracts(NewContractDict, NewCallbackDict,
CodeServer).