Age | Commit message (Collapse) | Author |
|
|
|
by simply disable "delayed deselect".
|
|
to negative int as error and positive as success.
|
|
|
|
indentation and comments only
|
|
|
|
|
|
as it's not part of the API
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to not inline cold reallocation code.
|
|
Make the code simpler.
May change the behavior as we may call both iready and oready
when getting an error. But doesn't that seem more correct.
|
|
|
|
|
|
Instead of passing around a file descriptor
use a function pointer to facilitate more advanced
backend write logic such as size limitation or compression.
|
|
Only x86_64 needs to reserve low virtual memory for its
amd64 small code model.
|
|
For non-amd64 it's a "normal" allocator with a
wrapper around mseg_alloc to call mprotect(PROT_EXEC).
|
|
Improve accuracy of timeouts using a premature timeout then
return to sleep with a shorter timeout just before requested
timeout. This approach is only used on certain platforms where
we know it improves the accuracy of the timeouts, e.g. MacOS X.
|
|
A fix for running 19.0-rc2 on FreeBSD with HiPE enabled.
* erl_mmap.h: disregard MAP_NORESERVE for FreeBSD
MAP_NORESERVE is undefined in FreeBSD 10.x and later.
This is to enable 64bit HiPE experimentally on FreeBSD.
Note that on FreeBSD MAP_NORESERVE was "never implemented"
even before 11.x (and the flag does not exist in /usr/src/sys/vm/mmap.c
of 10.3-STABLE r301478 either), and HiPE was working on OTP 18.3.3,
so mandating MAP_NORESERVE on FreeBSD might not be needed.
See the following message on how MAP_NORESERVE was treated on FreeBSD:
<http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20150202/122958.html>
* erl_mmap.c: disable MAP_NORESERVE for FreeBSD
* See also <https://github.com/erlang/otp/pull/925/commits/b02ce940c8738785ad018c9f758ca0d05d256bbb>
|
|
and make erts_mmap unavailable at compile time
if not supported.
|
|
by (only) moving around stuff in the file.
in order to make it easier to ifdef away
all erts_mmap_* if not supported.
|
|
will now return
[{instance,0,[{segments_size,9961472,9961472,11010048}]},
{instance,1,[{segments_size,6291456,6291456,6815744}]},
{instance,2,[{segments_size,524288,524288,786432}]},
{instance,3,[{segments_size,1048576,1048576,1835008}]},
{instance,4,[{segments_size,0,0,262144}]}]
and not just empty lists.
|
|
from {allocator,mseg_alloc} to {allocator,erts_mmap}
|
|
|
|
that uses its own super carrier (erts_exec_mmapper)
to guarantee low addressed and executable memory (PROT_EXEC).
Currently only used on x86_64 that needs low memory
for HiPE/AMD64's small code model.
By initializing erts_exec_mapper early we secure
its low memory area before erts_literal_mmapper might
steal it.
|
|
to prepare for hipe native code allocation.
|
|
Make the callbacks more general to be usable for any allocator
that that uses its own ErtsMemMapper.
|
|
Reduce main carrier size
and number of free descriptors.
|
|
* henrik/update-copyrightyear:
update copyright-year
|
|
* driver_event
* driver_flush
* driver_finish
* driver_init
* driver_output
* driver_outputv
* driver_process_exit
* driver_ready_async
* driver_ready_input
* driver_ready_output
* driver_start
* driver_stop
* driver_stop_select
* driver_timeout
|
|
|
|
* sverk/literal-alloc-polish:
erts: Add emulator flag +MIscs for literal super carrier size
erts: Refactor init of erts_literal_mmapper
erts: Make literal_alloc documented and configurable
|
|
|
|
This is mostly a pure refactoring.
Except for the buggy cases when calling erlang:halt() with a positive
integer in the range -(INT_MIN+2) to -INT_MIN that got confused with
ERTS_ABORT_EXIT, ERTS_DUMP_EXIT and ERTS_INTR_EXIT.
Outcome OLD erl_exit(n, ) NEW erts_exit(n, )
------- ------------------- -------------------------------------------
exit(Status) n = -Status <= 0 n = Status >= 0
crashdump+abort n > 0, ignore n n = ERTS_ERROR_EXIT < 0
The outcome of the old ERTS_ABORT_EXIT, ERTS_INTR_EXIT and
ERTS_DUMP_EXIT are the same as before (even though their values have
changed).
|
|
|
|
Except it cannot be disabled and cannot be multi-threaded.
The bit-vector 'erts_literal_vspace_map' on 32-bit is currently only
protected by the literal allocator mutex. We could allow multiple
instances on 64-bit (I think), but what would be the point?
|
|
Microstate accounting is a way to track which state the
different threads within ERTS are in. The main usage area
is to pin point performance bottlenecks by checking which
states the threads are in and then from there figuring out
why and where to optimize.
Since checking whether microstate accounting is on or off is
relatively expensive if done in a short loop only a few of the
states are enabled by default and more states can be enabled
through configure.
I've done some benchmarking and the overhead with it turned off
is not noticible and with it on it is a fraction of a percent.
If you enable the extra states, depending on the benchmark,
the ovehead when turned off is about 1% and when turned on
somewhere inbetween 5-15%.
OTP-12345
|
|
|
|
|
|
|
|
The presence of this symbol is libc-specific. In particular, it is
absent from musl. The correct solution is to use uint32_t.
|
|
And remove old case of using only page alignment (12 bits).
|
|
|
|
The OSE port is no longer supported and this commit removed it
and any changes related to it. The things that were general
improvements have been left in the code.
|
|
* egil/remove-halfword/OTP-12883: (21 commits)
erts: Remove halfword etp-commands
erts: Remove halfword MemKind mseg
erts: Remove halfword bases in ETS
erts: Remove halfword CHECK_POINTER_MASK
erts: Remove halfword relative printf
erts: Remove halfword valgrind suppress file
erts: Remove halfword specific tests
erts: Remove halfword specific allocator types
erts: Remove halfword BINARY RELs
erts: Remove halfword is_same bases macro
erts: Reinstate copy_object over-allocation optimization
erts: Remove halfword copy_object_rel
erts: Remove halfword object manipulation
erts: Remove halfword heap relative comparisions
erts: Remove halfword pointer compression
erts: Remove halfword basic relative heap operations
erts: Remove halfword from configure
erts: Remove halfword in lib_src
erts: Remove halfword in erl_nif.h
erts: Remove halfword in erl_driver.h
...
|
|
Conflicts:
OTP_VERSION
erts/doc/src/notes.xml
erts/vsn.mk
otp_versions.table
|