Age | Commit message (Collapse) | Author |
|
Literal tags are used by the VM as an alternative to reserving a large
virtual memory space in order to be able to quickly identify which terms
are literals. The use of literal tags harms performance, but is useful
to support systems where allocating a large amount of virtual memory is
not an option.
|
|
Since gcunsafe values are live over is_divisible calls (although only
the happy path, which never GCd), it should be a primop so there cannot
be any GCs.
|
|
|
|
Fix hipe bug in binary <<X/utf32>> construction
|
|
by introducing new primop 'is_unicode'
with no exception (ab)use and no GC.
Replaces bs_validate_unicode which is kept for backward compat for now.
|
|
Fix for x86_64 only.
The calling native code can not handle a GC
as it has a raw pointer where to write the binary data.
If a GC happens the data (utf32) will be written
to the old deallocated heap.
|
|
|
|
OTP-13760
SCTP connect could return error even if the connect is ongoing
|
|
* lukas/erts/misc_fixes:
erts: Fix a bunch of compiler warnings
kernel: Fix gen_tcp_misc indentation
erts: Fail port_SUITE:huge_env if error code > 127
erts: Add lcnt prototype for dist locks update
|
|
|
|
* lukas/erts/pgo/OTP-14604:
erts: Only do PGO if gcc supports -fprofile-correction
|
|
Correct erlang:is_builtin/3 for apply/2 and yield/0
|
|
* maint:
erl_process_dump: Don't assume that literals can be found
Remove one superfluous closing parenthesis in oam_intro.xml
|
|
Native code does not register its literals in the code header for the
loaded code. Therefore, a literal created by native code can not be
found by mark_literal(). Ignore literals that can't be found instead
of crashing (the crasdump_viewer will report such literals as
incomplete heap data, but will not crash).
|
|
* lukas/erts/gc-docs:
erts: Add Garbage Collection internal docs
|
|
|
|
erlang:is_builtin(erlang, M, F) returns false for apply/2 and
yield/0. The documentation for erlang:is_builtin/3 says that it
returns true for BIFs that are implemented in C. apply/2 and
yield/0 are implemented in C (as BEAM instructions), and
therefore the correct return value is true.
Also see a similar argument that was made for apply/3 in the past:
http://erlang.org/pipermail/erlang-bugs/2015-October/005101.html
https://bugs.erlang.org/browse/ERL-500
|
|
gen_sctp:connect_init/4 could return error even though the connect are in progress.
I.e. connect on socket returned "in progress".
The error can come from packet_inet_output() which is checking the socket for errors.
The issue here is that from erlang you don't think the connect is still ongoing.
But you will receive a sctp_assoc_change message later on.
|
|
This fixes statistics_SUITE:msacc when dirty schedulers are used
during the test.
|
|
|
|
* maint:
Updated OTP version
Update release notes
Update version numbers
erts: Fix so that bind correct schedulers
Update version
Fix error handling when decoding an AVP with an alternate dictionary
Remove unused function arguments
Fix faulty recursion
vsn -> 2.1.2
Update appup for ERIERL-14684
Fix speling error 'sndbuf' -> 'recbuf'
Add zlib:set_controlling_process/2
|
|
* maint-20:
Updated OTP version
Update release notes
Update version numbers
erts: Fix so that bind correct schedulers
Update version
Fix error handling when decoding an AVP with an alternate dictionary
Remove unused function arguments
Fix faulty recursion
vsn -> 2.1.2
Update appup for ERIERL-14684
Fix speling error 'sndbuf' -> 'recbuf'
Add zlib:set_controlling_process/2
|
|
into maint-20
* lukas/erts/fix-cpu-bind-w-modifies-scheduler-avail/OTP-14694:
erts: Fix so that bind correct schedulers
|
|
When the cpu ids and scheduler ids don't match,
the end schedulers could end up not being bound
when they should be.
example:
> taskset -c 1-3 erl +S 4 +sbts
> erlang:system_info(scheduler_bindings).
{1,2,3,unbound}
This fix makes it so that all cores are used to
bind schedulers.
|
|
* bjorn/compiler/match-literals:
Optimize instructions for comparing a register with a literal
Optimize matching of literals for single-valued types
|
|
We can avoid calling eq() from the is_eq_exact_literal/3
and is_ne_exact_literal/3 instructions if the source operand is
an immediate (since a literal is either a boxed or a list, never
an immediate).
|
|
* maint:
Bump version of crash dumps to 0.4
Verify that binaries of different sizes are dumped correctly
Don't dump literal areas that are not referenced at all
Dump literals separately to avoid incomplete heap data
Implement dumping of maps in crash dumps
Buffer writing of crash dumps
Conflicts:
erts/emulator/beam/erl_alloc.types
|
|
This can happen for instance if erl_child_setup segfaults
before it can do the execv.
|
|
|
|
* bjorn/erts/cuddle-with-tests:
Eliminate use of deprecated functions in string
Eliminate warnings for ignoring the result of an expression
|
|
|
|
|
|
When a literal was used from several processes, the literal would
be dumped in only one of the processes. The other processes
that referenced the literals would have incomplete heap data.
|
|
Maps would be dumped as the atom 'undefined', which is
not very informative.
|
|
Writing of crash dumps were done using unbuffered IO. This
is slow since many small writes are done.
Use a FILE* with an allocated buffer to obtain buffered IO.
I wrote a small test program that created 50000 binaries of 200 bytes
each and then created a crash dump. The crash dumping was an order of
magnitude faster with buffered IO than without.
|
|
* sverker/on_load-nonblocking/OTP-14680:
erts: Remove scheduler blocking during finish_after_on_load_2
|
|
|
|
* sverker/dist-send-noreply-opt/OTP-14689:
erts: Improve distribution send operations
|
|
|
|
(Slightly) optimize catch and try/catch
OTP-14683
|
|
Explicitly disable HiPE's range analysis
|
|
* lukas/erts/use_SIGRTMIN_for_sys_suspend/OTP-14682:
erts: Use SIGRTMIN on linux for sys_suspend
|
|
The Linux real-time signal is better used on Linux
for suspending schedulers during shutdown as it doesn't
collide with SIGUSR2 usage of other applications.
|
|
* lukas/erts/poll-thread/OTP-14346:
erts: Make a copy of erl_poll.c to help debuggers
|
|
* rickard/null-chars/ERL-370/OTP-14543:
Don't allow null chars in various strings
Conflicts:
erts/emulator/beam/erl_alloc.types
erts/preloaded/ebin/erlang.beam
|
|
* maint:
Revert "Merge branch 'rickard/null-char-filenames/ERL-370/OTP-14543' into maint"
|
|
This reverts commit 0717a2194e863f3a78595184ccc5637697f03353, reversing
changes made to 71a40658a0cef8b3e25df3a8e48a72d0563a89bf.
|
|
for normal case.
We still block for default trace and hipe.
|
|
Conflicts:
erts/emulator/beam/beam_bp.c
erts/emulator/beam/erl_process.c
|
|
* lukas/erts/tracing/recv_exit_signal_deadlock/OTP-14678:
erts: Fix lock order when recv tracing trapped exit signal
|