diff options
author | Björn Gustavsson <[email protected]> | 2012-01-12 20:12:59 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2012-02-21 12:23:08 +0100 |
commit | 64bcf5db63d73fe09298dac8cf5f6cad33fe7253 (patch) | |
tree | 8a9ec2d51b32bb2da2b97de4077e0dc6d956cd25 /erts/emulator/beam/global.h | |
parent | 5d4759518008a3bdd9c7e9d2adde94a4bd01169e (diff) | |
download | otp-64bcf5db63d73fe09298dac8cf5f6cad33fe7253.tar.gz otp-64bcf5db63d73fe09298dac8cf5f6cad33fe7253.tar.bz2 otp-64bcf5db63d73fe09298dac8cf5f6cad33fe7253.zip |
Break apart erlang:load_module/2 into two separate BIFs
Introduce two new BIFs, erlang:prepare_loading/2 and
erlang:finish_loading/1, and re-implement erlang:load_module/2 in
Erlang code.
We have two reasons for doing this:
* To facilitate suspending a process if another process
is already doing code loading.
* In the future, we can implement parallel and atomic loading
of several modules. Atomic loading works except for modules with
on_load handlers. Because of that issue, erlang:finish_loading/2
will currently only accept a list with a single magic binary.
Diffstat (limited to 'erts/emulator/beam/global.h')
-rw-r--r-- | erts/emulator/beam/global.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/erts/emulator/beam/global.h b/erts/emulator/beam/global.h index 6bafff0d6e..53a73fd762 100644 --- a/erts/emulator/beam/global.h +++ b/erts/emulator/beam/global.h @@ -873,6 +873,7 @@ typedef struct { } FunctionInfo; Binary* erts_alloc_loader_state(void); +int erts_module_for_prepared_code(Binary* magic); Eterm erts_prepare_loading(Binary* loader_state, Process *c_p, Eterm group_leader, Eterm* modp, byte* code, Uint size); |