<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
</head>
<body><div>Ooh, that looks similar, but better, to what we did in Erleans:<br></div>
<div><br></div>
<div>    erlang:function_exported(Module, module_info, 0) orelse code:ensure_loaded(Module),<br></div>
<div>    case erlang:function_exported(Module, FunctionName, Arity) of<br></div>
<div>        true -><br></div>
<div>            erlang:apply(Module, FunctionName, Args);<br></div>
<div>        false -><br></div>
<div>            Default<br></div>
<div>    end.<br></div>
<div><br></div>
<div>I guess we should likely switch to `erlang:module_loaded(M)` instead of checking if `module_info` is exported. Thanks!<br></div>
<div><br></div>
<div>Would be nice to have it patched though :)<br></div>
<div><br></div>
<div id="sig19496053"><div class="signature">--<br></div>
<div class="signature">  Tristan Sloughter<br></div>
<div class="signature">  "I am not a crackpot" - Abe Simpson<br></div>
<div class="signature">  t@crashfast.com<br></div>
</div>
<div><br></div>
<div><br></div>
<div>On Tue, Mar 6, 2018, at 12:23 PM, Richard Carlsson wrote:<br></div>
<blockquote type="cite"><div dir="ltr">I was actually considering submitting such a patch a while back, but one argument against making that short-cut could be that operations against the code server should be serialized. On the other hand I haven't yet come up with an example where the short-cut would make a difference that couldn't already happen due to processor scheduling.<br></div>
<div><div><br></div>
<div><div><div><br></div>
<div>        /Richard<br></div>
</div>
</div>
<div><br></div>
<div defang_data-gmailquote="yes"><div>2018-03-06 16:40 GMT+01:00 Michał Muskała <span dir="ltr"><<a href="mailto:michal@muskala.eu">michal@muskala.eu</a>></span>:<br></div>
<blockquote defang_data-gmailquote="yes" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-color:rgb(204, 204, 204);border-left-style:solid;border-left-width:1px;padding-left:1ex;"><div><div><span></span><br></div>
<div name="messageBodySection" style="font-size:14px;font-family:-apple-system, BlinkMacSystemFont, sans-serif;"><span>On 6 Mar 2018, 16:36 +0100, Richard Carlsson <<a href="mailto:carlsson.richard@gmail.com">carlsson.richard@gmail.com</a>>, wrote:</span><br></div>
<div><span></span><br></div>
<div name="messageReplySection" style="font-size:14px;font-family:-apple-system, BlinkMacSystemFont, sans-serif;"><div><span><br></span></div>
<blockquote type="cite" style="margin-top:5px;margin-right:5px;margin-bottom:5px;margin-left:5px;padding-left:10px;border-left-color:rgb(26, 188, 156);border-left-style:solid;border-left-width:thin;"><div dir="ltr"><div><span></span><br></div>
<div><div><span>is_exported(M, F, A) -></span><br></div>
<div><span>  case erlang:module_loaded(M) of</span><br></div>
<div><span>    false -> code:ensure_loaded(M);</span><br></div>
<div><span>    true -> ok</span><br></div>
<div><span>  end,</span><br></div>
<div><span>  erlang:function_exported(M, F, A).</span><br></div>
<div><span></span><br></div>
<div><span>(code:ensure_loaded() is slow compared to the fast call to erlang:module_loaded(), even if the module is already in memory).</span><br></div>
<div> <br></div>
</div>
</div>
</blockquote><div><span><br></span></div>
<div>I was recently wondering about this. Is there a reason code:ensure_loaded() does not short circuit using erlang:module_loaded()? It could probably even skip the request to the code server entirely in case the module is already loaded.<br></div>
<div><span><span class="colour" style="color:rgb(136, 136, 136)"></span></span><br></div>
<div><span><span class="colour" style="color:rgb(136, 136, 136)"></span></span><br></div>
<div><span><span class="colour" style="color:rgb(136, 136, 136)">Michał.</span></span><br></div>
<div><br></div>
<div><span><span class="colour" style="color:rgb(136, 136, 136)"></span></span><br></div>
</div>
</div>
</blockquote></div>
</div>
<div><u>_______________________________________________</u><br></div>
<div>erlang-questions mailing list<br></div>
<div><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br></div>
<div><a href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a><br></div>
</blockquote><div><br></div>
</body>
</html>