diff options
author | José Valim <[email protected]> | 2018-10-01 13:24:11 +0200 |
---|---|---|
committer | José Valim <[email protected]> | 2018-10-01 13:24:11 +0200 |
commit | 39c04c516bf728f93759ad50eb4ac2cf37727d2c (patch) | |
tree | c4d28520465737258ee3427d032f7f2cc6c85c4e /lib/compiler | |
parent | b0af859401fe5f7317a5ed474dfab2740a73b4c8 (diff) | |
download | otp-39c04c516bf728f93759ad50eb4ac2cf37727d2c.tar.gz otp-39c04c516bf728f93759ad50eb4ac2cf37727d2c.tar.bz2 otp-39c04c516bf728f93759ad50eb4ac2cf37727d2c.zip |
Introduce the no_spawn_compiler_process option
By default, all code is compiled in a separate process
which is terminated at the end of compilation. However,
some tools, like Dialyzer or compilers for other BEAM languages,
may already manage their own worker processes and spawning
an extra process may slow the compilation down.
In such scenarios, you can pass this option to stop the
compiler from spawning an additional process.
This generalizes commit 657760e18087b0cdbaecc5e96e46f6f66bc9497a.
Diffstat (limited to 'lib/compiler')
-rw-r--r-- | lib/compiler/doc/src/compile.xml | 11 | ||||
-rw-r--r-- | lib/compiler/src/compile.erl | 7 |
2 files changed, 16 insertions, 2 deletions
diff --git a/lib/compiler/doc/src/compile.xml b/lib/compiler/doc/src/compile.xml index 1a71c83521..f64986d55c 100644 --- a/lib/compiler/doc/src/compile.xml +++ b/lib/compiler/doc/src/compile.xml @@ -415,6 +415,17 @@ module.beam: module.erl \ is not documented, and can change between releases.</p> </item> + <tag><c>no_spawn_compiler_process</c></tag> + <item> + <p>By default, all code is compiled in a separate process + which is terminated at the end of compilation. However, + some tools, like Dialyzer or compilers for other BEAM languages, + may already manage their own worker processes and spawning + an extra process may slow the compilation down. + In such scenarios, you can pass this option to stop the + compiler from spawning an additional process.</p> + </item> + <tag><c>no_strict_record_tests</c></tag> <item> <p>This option is not recommended.</p> diff --git a/lib/compiler/src/compile.erl b/lib/compiler/src/compile.erl index d894694c79..7a0531cb2b 100644 --- a/lib/compiler/src/compile.erl +++ b/lib/compiler/src/compile.erl @@ -210,8 +210,11 @@ do_compile(Input, Opts0) -> {error,Reason} end end, - %% Dialyzer has already spawned workers. - case lists:member(dialyzer, Opts) of + %% Some tools, like Dialyzer, has already spawned workers + %% and spawning extra workers actually slow the compilation + %% down instead of speeding it up, so we provide a mechanism + %% to bypass the compiler process. + case lists:member(no_spawn_compiler_process, Opts) of true -> IntFun(); false -> |