diff options
author | Björn Gustavsson <[email protected]> | 2010-05-26 11:49:25 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-11-02 12:12:30 +0100 |
commit | 71f2687e53ef52ae94ab3569a601456d1e906a59 (patch) | |
tree | 095227f5e17d1d965b40c088c17bf2ebd2b414f4 | |
parent | 82e41d4b3a57774a23a57d345637a0e19e8727d0 (diff) | |
download | otp-71f2687e53ef52ae94ab3569a601456d1e906a59.tar.gz otp-71f2687e53ef52ae94ab3569a601456d1e906a59.tar.bz2 otp-71f2687e53ef52ae94ab3569a601456d1e906a59.zip |
beam_loader: Support external funs in the literal pool
A future release of the compiler might want to treat external
funs as literals. Make sure that the loader can cope with an
export entry being created from both an entry in the literal
pool and from the export table (i.e. if an external fun refers
to an exported function in the same module).
-rw-r--r-- | erts/emulator/beam/beam_bif_load.c | 2 | ||||
-rw-r--r-- | erts/emulator/beam/beam_load.c | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/erts/emulator/beam/beam_bif_load.c b/erts/emulator/beam/beam_bif_load.c index 2561d7a630..8c1f85ea37 100644 --- a/erts/emulator/beam/beam_bif_load.c +++ b/erts/emulator/beam/beam_bif_load.c @@ -66,8 +66,6 @@ load_module_2(BIF_ALIST_2) erts_smp_proc_unlock(BIF_P, ERTS_PROC_LOCK_MAIN); erts_smp_block_system(0); - erts_export_consolidate(); - hp = HAlloc(BIF_P, 3); sz = binary_size(BIF_ARG_2); if ((i = erts_load_module(BIF_P, 0, diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c index 57f5ad0a62..d82b5dbcac 100644 --- a/erts/emulator/beam/beam_load.c +++ b/erts/emulator/beam/beam_load.c @@ -758,6 +758,14 @@ bin_load(Process *c_p, ErtsProcLocks c_p_locks, } /* + * Since the literal table *may* have contained external + * funs (containing references to export entries), now is + * the time to consolidate the export tables. + */ + + erts_export_consolidate(); + + /* * Load the code chunk. */ |