diff options
author | Hans Bolinder <[email protected]> | 2016-12-06 14:02:12 +0100 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2017-01-11 09:34:58 +0100 |
commit | 57e21970a394193e929795629fe5c3cd15310660 (patch) | |
tree | b8c159a8157b7dd5996a190b8e3b27a3e70f04de /lib/dialyzer/src/dialyzer_contracts.erl | |
parent | 605a4627a7383829559a1595457b860c1317da48 (diff) | |
download | otp-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.erl | 3 |
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). |