Age | Commit message (Collapse) | Author |
|
|
|
|
|
* hipe-trap-gc/PR-1116:
hipe: Fix bug in trap frame allocation wrappers
hipe: Add assertion for gc in bif without wrapper
|
|
Broken on master by f0f4e72c8ec5c08993ff.
|
|
The trap frame allocation wrappers occasionally call the garbage
collector, even though built-in functions are not supposed to.
On non-{x86,amd64} platforms, HiPE was optimising the BIF wrapper
interface on the basis that BIFs do not GC. So, when
hipe_reserve_beam_trap_frame called the garbage collector, the state in
the PCB was stale and corruption happened.
Now, these particular BIFs are reclassified as GC BIFs.
Unfortunately, in order to do that we needed to introduce a
gc_bif_interface_3 macro in every hipe_$ARCH_bifs.m4 file.
|
|
Conflicts:
OTP_VERSION
|
|
An easy source of tricky bugs is to start calling the garbage collector
from a built-in function without adding that bif to hipe_bif_list.m4.
With this change we, in the debug build, keep track of whether the
canonical stack and heap pointers are stored in the PCB or in
registers/stack, allowing us to catch this class of mistakes with an
assertion.
|
|
|
|
|
|
|
|
* bjorn/gc-bifs:
compiler: Eliminate num_bif_SUITE
erl_internal: Eliminate duplication of guard tests
beam_debug: Improve the disassembly of gc_bif instructions
Simplify creation of new GC BIFs
make_tables: Remove broken automatic BIF aliasing
|
|
* bjorn/erts/use-const:
beam_makeops: Save some memory by making loader tables 'const'
beam_makeops: Separate static information from counters
make_preload: Save some memory by making preloaded code 'const'
|
|
Using the translation table in erts_gc_bifs[], we can now print
out the name of GC BIFs, instead of just the pointer value.
|
|
Add the BIF type "gcbif" in bif.tab for defining GC BIFs. That will
eliminate some of the hand-written administrative code for handling
GC BIFs, saving the developer's time.
|
|
Before:
$ size bin/x86_64-unknown-linux-gnu/beam.smp
text data bss dec hex filename
3080982 188369 158472 3427823 344def bin/x86_64-unknown-linux-gnu/beam.smp
After:
$ size bin/x86_64-unknown-linux-gnu/beam.smp
text data bss dec hex filename
3164694 104657 158472 3427823 344def bin/x86_64-unknown-linux-gnu/beam.smp
|
|
The counters are only used in the special 'icount' emulator.
We will save some memory by including the counters in the
OpEntry. It will also make it possible to make opc 'const'.
|
|
The make_tables script still contains a broken implementation
of a mechanism to automatically give a BIF an additional
(for example, was used for erlang:'++'/2 and erlang:append/2).
When that featured broke, it was worked around by adding
additional entries to bif.tab. There is therefore no reason
to mend the feature.
|
|
|
|
Symptom: open_port() succeeds, port program never starts but instead
seem to terminate with exit_status 150 (EINVAL+128).
When: If the command payload buffer (including the entire environment)
for the port program is between 1 to 4 bytes above the pipe capacity,
which is 65536 bytes on newer Linux, but can be as low as 4096 on older
32-bit Linux.
Since: OTP-19.0-rc1.
|
|
|
|
* zandra/update-dist-doc:
Remove unused Cookie from ControlMessage in the dist protocol doc
|
|
* rickard/ds-job-type-doc:
Minor reorganization of dirty NIF documentation
|
|
|
|
The Cookie was removed a long time ago, but the documentation was
not updated accordingly.
|
|
* raimo/uds-support/OTP-13643:
Update test cases after daily builds
Return eafnosupport when not supported
Add AF_LOCAL test cases
Handle 'undefined' in fdopen
|
|
Mark the preloaded code 'const' to allow the compiler to put it into
the 'text' segment instead of into the 'data' segment. Since the
'text' segment is shared among all instances of the Erlang virtual
machine, this change could potentially reduce memory consumption
(slightly).
Before the change:
$ size bin/x86_64-unknown-linux-gnu/beam.smp
text data bss dec hex filename
2920246 352273 158472 3430991 345a4f bin/x86_64-unknown-linux-gnu/beam.smp
After the change:
$ size bin/x86_64-unknown-linux-gnu/beam.smp
text data bss dec hex filename
3081046 191473 158472 3430991 345a4f bin/x86_64-unknown-linux-gnu/beam.smp
Roughly speaking, this change cuts the size of the data segment in half.
|
|
|
|
* rickard/mach-clock-fix/OTP-13686:
Fix mach clock usage on Sierra
|
|
|
|
* lukas/erts/nif_allow_port_command_in_non_sched_thread/OTP-13442:
erts: Allow enif_port_command in non-sched thread
|
|
|
|
|
|
Yes this is an ugly workaround. One approach for a better
solution could be to introduce an internal secret atom
tagged as an atom with a unique index, but impossible
to find by string hash lookup/insert.
|
|
|
|
* egil/erts/fix-runnable_proc-race/OTP-13675:
erts: Fix profile runnable processes race
|
|
|
|
|
|
* lukas/erts/testfixes-19:
erts: Increase bif and nif call_time trace test
erts: Fix distribution_SUITE:bulk_send_bigbig on windows
erts: Ensure bs_add_overflow test has enough memory
kernel: Better explain controlling_process' tcp behaviour
kernel: Fix t_recv_delim on bsd
os_mon: Make sure to start/stop os_mon in tests correctly
ssl: Fix use_interface dist_SSL test
erl_interface: Fix signed int overflow tc bug
erts: fix atom_roundtrip_r15b tc
erts: Require more memory for debug tests
|
|
This makes the time that the tests execute longer, which means
that on systems with low resolution on timers (e.g. windows)
the test is less likely to fail.
|
|
The granualarity of the windows time sometimes makes timer:tc
return 0 as the time taken for the test. Change this to use
the most common time instead.
|
|
|
|
|
|
if node fails to start, just skip testcase
|
|
|
|
* dotsimon/erts/heart_no_kill/OTP-13650:
erts: Fix HEART_NO_KILL logic
|
|
|
|
It has to be possible to send trace messages to a port
from non-schedulers threads (specifically from the
sys_msg_dispatcher).
|
|
|
|
|
|
|