Age | Commit message (Collapse) | Author |
|
erlang:system_info(allocator) ->
{Allocator, Version, Features, Settings}
Features includes 'literal_mmap' and/or 'exec_mmap'
if they exist.
|
|
from {allocator,mseg_alloc} to {allocator,erts_mmap}
|
|
* mikpe/fp-exceptions-cleanups/PR-1019/OTP-13531:
clean up FP exception code in sys_float.c
|
|
It was recently observed that the LLVM backend for HiPE was broken,
generating code that crashes the VM.
It turns out that this was caused by LLVM hard-coding an offset into the
Erlang PCB, which became incorrect as of commit 3ac08f9b, that
introduced a new member into the PCB before the HiPE-specific state,
changing its offsets.
For now, until a proper fix is implemented, we move this new member to
after the HiPE-specific state, allowing the LLVM backend to work once
more.
|
|
* mikpe/fp-exceptions-neuter-matherr/PR-1018/OTP-13531:
matherr() must not fake an FP exception
|
|
second merge of this branch with some bug fixing
|
|
* egil/maps-api-additions/PR-1025/OTP-13522:
stdlib: Document maps:update_with/3,4
stdlib: Add tests for maps:update_with/3,4
stdlib: Add maps:update_with/3,4
erts: Add tests for maps:take/2
stdlib: Document maps:take/2
erts: Add BIF maps:take/2
|
|
|
|
|
|
|
|
Make sure to cover all of the refc binary cases in tracing
|
|
|
|
|
|
|
|
|
|
Flags that control the heap should all fall under the +h flag
|
|
When FP exceptions are used, matherr() forces a fake FP exception,
which is interpreted as an error by the checking code after a math
routine call. This is wrong for several reasons:
- it's not necessary for error checking: when FP exceptions aren't
used, matherr() is a stub and no information is derived from it
being called
- it's not necessary for FPU maintenance: the FPU only needs to be
reprogrammed after an actual FP exception
- it causes false negatives: matherr() may be called even though
Erlang doesn't consider the case to be an error (exp() and pow()
underflows on Solaris for instance); with FP exceptions enabled
they are incorrectly considered errors
The fix is to remove all FP exception related code from matherr().
|
|
* lukas/erts/non-smp-debug-fixes/OTP-13047:
erts: Fix incorrect non-smp debug assert
erts: std_alloc is not thread safe on non-smp
Conflicts:
erts/emulator/beam/erl_alloc_util.c
|
|
In an SMP emulator, print_garb_info doesn't do anything because the
heap pointers could be invalid.
However, when crashdumping there are no schedulers running so it's ok
to print this additional information which could be useful when
examining a core file.
|
|
|
|
* egil/fix-lock-order-trace-status:
erts: Fix lock-order trace status
|
|
* egil/erts/fix-copy-share-heap:
erts: Fix comments
erts: Fix copy share with onheap messages
|
|
|
|
|
|
|
|
called 'literal_mmap' and 'exec_mmap'.
Also moved existing erts_mmap info from 'mseg_alloc'
to its own system_info({allocator, erts_mmap})
with "allocators" default_mmap, literal_mmap and exec_mmap.
|
|
|
|
on 32-bit, as the granularity of the literal bit vector
is super-alignment.
|
|
|
|
* lukas/erts/tracing/fix-spawned-lc-error/OTP-10267:
erts: Fix lock order bug when only child is procs traced
|
|
|
|
* bjorn/compiler/misc-opt:
v3_kernel: Construct literal lists properly
Use the register map in %live in beam_utils:is_killed_block/2
Teach beam_utils to check liveness for put_map instructions
beam_peep: Help out beam_jump
|
|
* bjorn/erts/beam_load:
Optimize get_tuple_element instructions that target Y registers
Mend beam_SUITE:packed_registers/1
Correct unpacking of 3 operands on 32-bit archictectures
Eliminate misleading #ifdef ARCH_64 in beam_opcodes.h
beam_debug: Correct masking when unpacking packed operands
|
|
This performs a number of cleanups in the FP exception code:
- inline the body of unmask_fpe_conditional() in its only caller,
then delete the duplicated and identical definitions of it
- start the big processor-specific block with a comment describing
the two functions that must be defined, then delete redundant
comments at all the mask_*() functions
- add a comment before fpe_sig_action() explaining exactly what
processor-specific action is required of it
- flatten #ifdef nesting in fpe_sig_action()
- move common code in the x86 unmask_fpe() and erts_restore_fpu()
function into a subroutine
- minor tweaks: drop a redundant L suffix on a 0, add a comment
after an #else, bump the size of a debug buffer,
There should be no change in behaviour from these changes.
|
|
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.
|
|
|
|
|
|
This is needed as otherwise messages from system_profile
will not be guaranteed to arrive before trace delivered.
|
|
|
|
Without off_heap message queue the GC of the tracer could take
very long and thus delay the code:purge which would in turn allow
the trace generator to generate a lot of more messages which would
make the tracer GC for even longer etc etc. The time taken for the
testcase could go up to as large as 10 seconds and use lots of memory.
|
|
Any heap fragment created during a nif call to a tracer nif
should be free'd immediately in order for the GC not to treat
it as live data.
|
|
OTP-13497
This trace event is triggered when a process is created from the
process that is created.
|
|
Rickards said that this was ok
|
|
We have the main lock on rp->p, so why not?
|
|
provoked by nif_SUITE:nif_binary_to_term.
If we fail to decode an immediate (unsafe atom for example) with
a dummy factory then hp and factory->hp will both be uninitialized
and valgrind will complain about comparing them.
|
|
|
|
Tracing to port in non-smp now creates port tasks
instead of calling directly to the port to fake
schedule events don't exist any more.
|