diff options
author | Peter Andersson <[email protected]> | 2012-08-10 11:41:38 +0200 |
---|---|---|
committer | Peter Andersson <[email protected]> | 2012-08-10 11:41:38 +0200 |
commit | 4b70df67d825c1b44ca15a5a4ecd57ad1828ead3 (patch) | |
tree | cd31772649b8f1e599e7fbe2cf7b76b1c2dc7a7b /lib/compiler/src | |
parent | c075ac6484e3d5a93a0d870ab4483d39ae26eaec (diff) | |
parent | f968ff87b1d6fb74237010bffa0390953337425e (diff) | |
download | otp-4b70df67d825c1b44ca15a5a4ecd57ad1828ead3.tar.gz otp-4b70df67d825c1b44ca15a5a4ecd57ad1828ead3.tar.bz2 otp-4b70df67d825c1b44ca15a5a4ecd57ad1828ead3.zip |
Merge remote branch 'upstream/maint' into maint
Diffstat (limited to 'lib/compiler/src')
-rw-r--r-- | lib/compiler/src/compile.erl | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/lib/compiler/src/compile.erl b/lib/compiler/src/compile.erl index 9b505ad15c..7365706b94 100644 --- a/lib/compiler/src/compile.erl +++ b/lib/compiler/src/compile.erl @@ -146,10 +146,17 @@ env_default_opts() -> do_compile(Input, Opts0) -> Opts = expand_opts(Opts0), - Self = self(), - Serv = spawn_link(fun() -> internal(Self, Input, Opts) end), + {Pid,Ref} = + spawn_monitor(fun() -> + exit(try + internal(Input, Opts) + catch + error:Reason -> + {error,Reason} + end) + end), receive - {Serv,Rep} -> Rep + {'DOWN',Ref,process,Pid,Rep} -> Rep end. expand_opts(Opts0) -> @@ -242,15 +249,12 @@ format_error({module_name,Mod,Filename}) -> errors=[], warnings=[]}). -internal(Master, Input, Opts) -> - Master ! {self(), try internal(Input, Opts) - catch error:Reason -> {error, Reason} - end}. - -internal({forms,Forms}, Opts) -> - {_,Ps} = passes(forms, Opts), - internal_comp(Ps, "", "", #compile{code=Forms,options=Opts, - mod_options=Opts}); +internal({forms,Forms}, Opts0) -> + {_,Ps} = passes(forms, Opts0), + Source = proplists:get_value(source, Opts0, ""), + Opts1 = proplists:delete(source, Opts0), + Compile = #compile{code=Forms,options=Opts1,mod_options=Opts1}, + internal_comp(Ps, Source, "", Compile); internal({file,File}, Opts) -> {Ext,Ps} = passes(file, Opts), Compile = #compile{options=Opts,mod_options=Opts}, |