Age | Commit message (Collapse) | Author |
|
* maint:
Unicode support for erlang:display_string/1
|
|
* rickard/unicode-display_string/OTP-14545:
Unicode support for erlang:display_string/1
|
|
|
|
|
|
* sverker/halt-unicode-slogan/OTP-14553:
erts: Allow any unicode string as crash dump slogan
erts: Generate crash_dump slogan string as UTF8
erts: Refactor erts_unicode_list_to_buf
|
|
i.e the first argument to erlang:halt
|
|
* john/erts/fix-binary-append-syslimit/OTP-14524:
Check for overflow when appending binaries, and error out with system_limit
# Conflicts:
# erts/emulator/test/bs_construct_SUITE.erl
|
|
As a preparation for potentially improving packing in the future,
we will need to make sure that packable types have a defined maximum
size.
The packer algorithm assumes that two 'I' operands can be packed
into one 64-bit word, but there are instructions that use an 'I'
operand to store a pointer. It only works because those instructions
are not packed for other reasons.
Introduce the 'W' type and use it for operands that don't fit in
32 bits.
|
|
The instruction put_map_assoc/5 (used for updating a map) has a
failure operand, but it can't actually fail provided that its "map"
argument is a map.
The following code:
M#{key=>value}.
will be compiled to:
{test,is_map,{f,3},[{x,0}]}.
{line,[...]}.
{put_map_assoc,{f,0},{x,0},{x,0},1,{list,[{atom,key},{atom,value}]}}.
return.
{label,3}.
%% Code that produces a 'badmap' exception follows.
Because of the is_map instruction, {x,0} always contains a map when
the put_map_assoc instruction is executed. Therefore we can remove
the failure operand. That will save one word, and also eliminate
two tests at run-time.
The only problem is that the compiler in OTP 17 did not emit a
is_map instruction before the put_map_assoc instruction. Therefore,
we must add an instruction that tests for a map if the code was
compiled with the OTP 17 compiler.
Unfortunately, there is no safe and relatively easy way to known that
the OTP 17 compiler was used, so we will check whether a compiler
before OTP 20 was used. OTP 20 introduced a new chunk type for atoms,
which is trivial to check.
|
|
Also, fix cleaning up the OS environment setting modified by this test
case to prevent problems with later test cases using the echo_drv too.
|
|
'0 bsl 134217728' would fail with a system limit exception on a 32-bit
BEAM machine, but not on a 64-bit BEAM machine. Smaller values
on the right would always work.
Make erlang:bsl(0, BigNumber) always return 0 to make for consistency.
(The previous commit accidentally did that change for
'0 bsl BigNumber'.)
|
|
This fixes the following bug:
A = <<0:((1 bsl 32)-8)>>,
B = <<2, 3>>.
B =:= <<A/binary,1,B/binary>>. %% Evaluated to true...
|
|
* sverker/big-bxor-bug/ERL-450/OTP-14514:
erts: Fix bug in bxor of a big negative number
|
|
|
|
* sverker/enif_whereis-bug:
erts: Fix bug in enif_whereis_pid/port
|
|
* sverker/big-bxor-bug/ERL-450/OTP-14514:
erts: Fix bug in bxor of a big negative number
|
|
|
|
|
|
* sverker/big-bxor-bug/ERL-450/OTP-14514:
erts: Fix bug in bxor of a big negative number
|
|
Wrong result for
(X bsl WS) bxor Y.
where
X is any negative integer
Y is any integer that does not require more words than X
WS is erlang:system_info(wordsize) or larger
Fix: The subtraction of 1 (for 2-complement conversion)
must be carried along all the way to the last words.
|
|
that could cause heap corruption if
whereis lookup conflicts with other register updater
AND other thread sends on-heap message while main lock is released.
Also improved enif_whereis from dirty nifs by passing c_p as NULL.
|
|
Add stacktrace entries to BIF calls from emulator
|
|
The goal of this change is to improve debugging of
emulator calls. For example, the following code
rem(1, y)
will error with atom `badarith` when y is 0 and the
stacktrace has no entry for `erlang:rem/2`, making
such cases very hard to debug. This patch makes it
so the stacktrace includes `erlang:rem(1, 0)`.
The following emulator BIFs have been changed:
* band/2
* bnot/1
* bor/2
* bsl/2
* bsr/2
* bxor/2
* div/2
* element/2
* int_div/2
* rem/2
* sminus/2
* splus/2
* stimes/2
|
|
* john/erts/runtime-lcnt:
Document rt_mask and add warnings about copy_save
Add an emulator test suite for lock counting
Break erts_debug:lock_counters/1 into separate BIFs
Allow toggling lock counting at runtime
Move lock flags to a common header
Enable register_SUITE for lcnt builds
Enable lcnt smoke test on all builds that have lcnt enabled
Make lock counter info independent of the locks being counted
OTP-14412
OTP-13170
OTP-14413
|
|
OTP-14413
|
|
It was disabled for performance reasons, and the new implementation handles
it just fine (roughly half as fast as without lcnt).
|
|
into maint-20
* lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481:
fixup! erts: Cleanup dropped port tasks correctly
erts: Add tests to detect port close race
erts: Cleanup dropped port tasks correctly
|
|
* sverker/erts/apply-badarg/ERL-432/OTP-14490:
erts: Make apply throw 'badarg' if Args is not a list
|
|
instead of a strange 'undef' exception.
|
|
* maint-19:
Updated OTP version
Update release notes
Update version numbers
Fix statistics(wall_clock) and statistics(runtime) implementation
fixup! erts: Cleanup dropped port tasks correctly
erts: Add tests to detect port close race
Add a testcase for OTP-13939/ERL-193
erts: Cleanup dropped port tasks correctly
Mark socket disconnected on tcp_send_or_shutdown_error
|
|
into maint-19
* lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481:
fixup! erts: Cleanup dropped port tasks correctly
erts: Add tests to detect port close race
erts: Cleanup dropped port tasks correctly
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Add z_SUITE:leaked_processes/1 to print the process information for
all new processes created during execution of the emulator test
suite. Test cases are not supposed leak processes, because that
could disturb later test cases.
|
|
|
|
|
|
|
|
|
|
Add enif_whereis_pid() and enif_whereis_port() functions
OTP-14453
|
|
* rickard/purge-hibernated-20:
Update testcase to check that purge handle hibernated process correct
Do not GC hibernated process from other processes
Fix check_process_code() on hibernated process
|
|
* bjorn/cuddle-with-tests:
Stabilize call_with_huge_message_queue/1
same_time_yielding/1: Avoid failing if there are many schedulers
Remove obsolete old_scheduler_SUITE
Robustify process_SUITE:spawn_opt_max_heap_size/1
Contain damage cause by spawn_opt_max_heap_size failing
Make bulk_send_bigbig/1 purely informational
distribution_SUITE: Refactor bulk_send_bigbig/1
receive_SUITE: Remove ?line macros
Lengthen too short timetraps
Fix process_SUITE:low_prio/1
|