Age | Commit message (Collapse) | Author |
|
|
|
Running this test when for some reason stdlib has been
unstickied could cause the emulator to die. So we check first
to make sure that the expected files are sticky.
|
|
|
|
|
|
* maint:
Store messages for 'rex' and 'error_logger' off heap
file: match enoent and enotdir in path_open
|
|
Performance for processes that receive huge amounts of
messages can be increased by storing the incoming messages
outside the heap (that avoids copying the message in a
garbage collection).
Two OTP processes that are known to receive many messages
are 'rex' (used by 'rpc') and 'error_logger'.
|
|
The new chunk stores atoms encoded in UTF-8.
beam_lib has also been modified to handle the new
'utf8_atoms' attribute while the 'atoms' attribute
may be a missing chunk from now on.
The binary_to_atom/2 BIF can now encode any utf8
binary with up to 255 characters.
The list_to_atom/1 BIF can now accept codepoints
higher than 255 with up to 255 characters (thanks
to Björn Gustavsson).
|
|
* richcarl/kernel/disk_log_tweaks/OTP-14057/PR-1245:
Pass log format through from handle()
Improve caching in disk_log
Use pattern matching for records where suitable
Eliminate more code duplication
Simplify for rflat
Clarify that the type for disk log data is iodata()
Pass through known size instead of recomputing
Use iolist_size instead of local function
Only read log format once in collect loop
Eliminate some code duplication
Rename internal function for clarity
Minor documentation cleanup
|
|
Avoid starting timers for flushing when the written data is empty or larger
than the max cache size. Previously, a single huge write to an empty cache
would be put in the cache until the next write or the timer event. Also
increase the cache size from 16K to 64K.
|
|
|
|
These functions use the MD5 beam/native checksum to determine whether the
code for a module has changed on disk and is a candidate for loading.
|
|
|
|
in code_SUITE:upgrade. Combining both takes time.
|
|
from code_SUITE:upgrade
|
|
|
|
* sverker/hipe-code-loadnpurge: (35 commits)
erts: Cleanup dead code
kernel,hipe: Fix dialyzer warnings
erts: Replace unsafe Module.first_hipe_ref
erts: Disable DBG_TRACE_MFA for debug build
kernel: Fix code_SUITE:upgrade for non-hipe
erts: Cleanup hipe trampoline code
erts: Remove dead alloc stats in hipe_amd64.c
erts: Remove code_SUITE:make_stub and make_stub_many_funs
erts: Let code:make_stub_module raise 'notsup'
erts: Fix bug in stack walk on risc
erts: Fix old leak for ppc hipe code
erts: Fix old leak for arm hipe code
erts: Fix old leak of sparc hipe code
erts: Fix old leak of hipe code on x86 32-bit
erts: Enable exec_alloc for all hipe architectures
erts: Remove debug printout for hipe loader state
erts: Free hipe_refs and hipe_sdesc of a failed load
erts: Refactor out hipe_purge_refs/sdesc
erts: Refactor hipe_loader_state_dtor into a true destructor
hipe: TRY fix llvm external calls to own module
...
|
|
|
|
to get some coverage in beam_load.c:hash_internal_genop_arg().
|
|
A step toward better integration of hipe load and purge
Highlights:
* code_server no longer needs to call hipe_unified_loader:post_beam_load/1
Instead new internal function hipe_redirect_to_module()
is called by loading BIFs to patch native call sites if needed.
* hipe_purge_module() is called by erts_internal:purge_module/2
to purge any native code.
* struct hipe_mfa_info redesigned and only used for exported
functions that are called from or implemented by native code.
A list of native call sites (struct hipe_ref) are kept for each hipe_mfa_info.
* struct hipe_sdesc used by hipe_find_mfa_from_ra()
to build native stack traces.
|
|
* rickard/time-unit/OTP-13831:
Replace usage of deprecated time units
|
|
* maint:
file_SUITE: Test file:write_file/3
|
|
* sverker/include-erl_nif/PR-1171:
Use more correct delimiters for erl_nif.h include
|
|
Extend file_SUITE:read_write_file/1 to test file:write_file/3
which was not tested at all.
While we are it, remove the superfluous roundtrips tests of
term_to_binary/1 and binary_to_term/1. Those BIFs are tested
in detail in other test suites (for example, binary_SUITE in
emulator_test).
|
|
Anywhere but the beam sources we shouldn't #include "erl_nif.h", because
what "erl_nif.h" does is: (1) fail to find it outside of -I dirs, (2)
then treat it as if it was written like <erl_nif.h>. Using <erl_nif.h>
skips (1).
More information can be found in 6.10.2 of the C standard.
Because the examples use "erl_nif.h", NIF projects in the Erlang
ecosystem copy this verbatim and make the same mistake.
|
|
|
|
* raimo/diffserv-socket-option/OTP-13582:
Tune 'tclass' semantics
Implement IPV6_TCLASS
|
|
* maint:
erts: Add nif_SUITE:t_on_load
erts: Improve nif_SUITE:upgrade test
Don't leak old code when loading a modules with an on_load function
Conflicts:
erts/preloaded/ebin/erts_code_purger.beam
erts/preloaded/ebin/erts_internal.beam
erts/preloaded/src/erts_code_purger.erl
|
|
Normally, calling code:delete/1 before re-loading the code for a
module is unnecessary but causes no problem.
But there will be be problems if the new code has an on_load function.
Code with an on_load function will always be loaded as old code
to allowed it to be easily purged if the on_load function would fail.
If the on_load function succeeds, the old and current code will be
swapped.
So in the scenario where code:delete/1 has been called explicitly,
there is old code but no current code. Loading code with an
on_load function will cause the reference to the old code to be
overwritten. That will at best cause a memory leak, and at worst
an emulator crash (especially if NIFs are involved).
To avoid that situation, we will put the code with the on_load
function in a special, third slot in Module.
ERL-240
|
|
|
|
|
|
|
|
* lukas/kernel/os_cmd_fix_stdin_close/OTP-13867:
kernel: Close stdin of commands run in os:cmd
|
|
|
|
This is needed when running programs that only exit when
stdin has been closed, e.g. 'more'.
|
|
We don't want the infinite loop as it leaks after the test finished.
|
|
* maint:
Fix tracing of processes executing dirty
Perform check_process_code while process is executing dirty
Fix purge of code
Reclaim literal area after purge has completed
Separate literal area from code
Conflicts:
erts/emulator/beam/global.h
|
|
* rickard/ds-purge-module/OTP-13808:
Perform check_process_code while process is executing dirty
Conflicts:
erts/doc/src/erl_nif.xml
|
|
'rickard/new-purge-strategy/OTP-13833' into maint
* rickard/fun-purge-bug/OTP-13809:
Fix purge of code
Reclaim literal area after purge has completed
Separate literal area from code
Conflicts:
erts/doc/src/erlang.xml
erts/emulator/beam/beam_bif_load.c
erts/emulator/beam/erl_init.c
erts/preloaded/ebin/init.beam
|
|
|
|
* g-andrade/kernel/fetch_ztream_dictionary/PR-1139/OTP-13842:
Update preloaded modules
Specify min zlib ver on inflateGetDictionary doc
Skip inflateGetDictionary test case if unsupported
zlib: Only link inflateGetDictionary if available
zlib: Add test case for inflateGetDictionary
zlib: support extraction of inflation dictionary
|
|
|
|
|
|
|
|
|
|
* maint-19:
Updated OTP version
Prepare release
erts: Make sure to flush potential exit message
|
|
|
|
to test net_kernel:setopts and getopts.
|
|
|
|
Conflicts:
lib/ssl/src/ssl.appup.src
|
|
This is needed as doing only an 'exit' will only exit the
program, but any children started in the program that have
stdout/stderr still open will keep the port open until they
terminate. i.e.
os:cmd("while true; do echo sleep 1; sleep 1; done&").
would block os:cmd forever because the while loop keeps its copies
of stdout/stderr open forever.
It could be argued that this is correct behaviour, and it is
the way it works on windows, but changing this breaks backwards
compatability for os:cmd which is not acceptable.
|