소스 검색

remove use of `code:load_abs/1` in favor of `beam_lib:chunks/2` to

avoid repeated loading and unloading of modules
pull/440/head
alisdair sullivan 10 년 전
부모
커밋
04f63ff53c
1개의 변경된 파일14개의 추가작업 그리고 8개의 파일을 삭제
  1. +14
    -8
      src/rebar_erlc_compiler.erl

+ 14
- 8
src/rebar_erlc_compiler.erl 파일 보기

@ -227,14 +227,20 @@ maybe_rm_beam_and_edge(G, OutDir, Source) ->
digraph:del_vertex(G, Source)
end.
opts_changed(Opts, ObjectFile) ->
case code:load_abs(ObjectFile) of
{module, Mod} ->
Compile = Mod:module_info(compile),
lists:sort(Opts) =/= lists:sort(proplists:get_value(options,
Compile,
[]));
{error, _} -> true
opts_changed(NewOpts, Target) ->
case compile_info(Target) of
{ok, Opts} -> lists:sort(Opts) =/= lists:sort(NewOpts);
_ -> true
end.
compile_info(Target) ->
case beam_lib:chunks(Target, [compile_info]) of
{ok, {_mod, Chunks}} ->
CompileInfo = proplists:get_value(compile_info, Chunks, []),
{ok, proplists:get_value(options, CompileInfo, [])};
{error, beam_lib, Reason} ->
?WARN("Couldn't read debug info from ~p for reason: ~p", [Target, Reason]),
{error, Reason}
end.
erlcinfo_file(Dir) ->

불러오는 중...
취소
저장