Age | Commit message (Collapse) | Author |
|
This does not avoid allocating a ProcBin since we still need to
release the binary somehow (and using the tmp obj list is slightly
slower since it's an unavoidable off-heap allocation), but it does give
us a hard limit on how long said ProcBin will live, which is a lot
better than before.
OTP-14845
|
|
When fixing OTP-14931/14932 we had to settle for a solution that
decreased performance in a few corner cases like multiple calls to
enif_make_binary, as the other options on the table required extra
fields which would have broken ABI compatibility.
This is ABI-compatible since the fields are unused and at the end.
|
|
This fixes two corner-cases:
1) We will no longer return an invalid term when a binary inspected
on environment A is used in enif_make_binary on environment B
2) A double-free in this sequence of events:
* enif_alloc_binary(size, &bin);
* enif_ioq_enq_binary(ioq, &bin, skip);
* enif_make_binary(env, &bin);
* enif_make_binary(env, &bin);
OTP-14931
OTP-14932
|
|
|
|
Attaching to a ProcBin is the fastest way to delay the release of an
already allocated Binary, but alloc_tmp_obj is a lot faster when
starting from scratch since it usually uses temp_alloc.
|
|
|
|
* maint:
inets: Prepare for release
inets: Fix httpc crash on keep-alive connections
Change-Id: If066f788c3fcb8b5c5a943892d3c03c201590e40
|
|
* peterdmv/inets/httpc_manager_crash/ERL-559/OTP-14908:
inets: Prepare for release
inets: Fix httpc crash on keep-alive connections
Change-Id: I5900a425ed2b9034b1a1bf6040ee45e068438a83
|
|
|
|
|
|
|
|
|
|
|
|
stdlib: Correct documentation typo
|
|
|
|
Combine blocks when running beam_block the second time
|
|
When supplied without an enclosing list, bitstrings were returned
as-is instead of badarging.
|
|
|
|
A binary is a binary as long as its size in bits is evenly divisible
by 8, regardless of whether it has a bit offset or not.
|
|
When supplied without an enclosing list, bitstrings were silently
truncated to [] instead of badarging.
|
|
* maint:
dialyzer: Fix a crash
|
|
* hasse/dialyzer/fix_record_match/OTP-14911:
dialyzer: Fix a crash
|
|
This has always worked but we lacked test coverage for it.
|
|
|
|
1a029efd1ad47f started to run the beam_block pass a second time,
but it did not attempt to combine adjacent blocks.
Combining adjacent blocks leads to many more opportunities for
optimizations.
After doing some diffing in generated code, it turns out that
there is no benefit for beam_split to split out line instructions
from blocks. It seems that the only reason it was done was to
slightly simplify the implementation of the no_line_info option
in beam_clean.
|
|
As a preparation for combining blocks before running beam_block
for the second time, disable CSE for floating point operations
because it will generate invalid code.
|
|
|
|
* maint:
Update primary bootstrap
Conflicts:
bootstrap/bin/start.boot
bootstrap/bin/start_clean.boot
bootstrap/lib/compiler/ebin/beam_asm.beam
bootstrap/lib/compiler/ebin/beam_jump.beam
bootstrap/lib/compiler/ebin/beam_listing.beam
bootstrap/lib/compiler/ebin/beam_type.beam
bootstrap/lib/compiler/ebin/beam_validator.beam
bootstrap/lib/compiler/ebin/compile.beam
bootstrap/lib/compiler/ebin/core_pp.beam
bootstrap/lib/compiler/ebin/v3_codegen.beam
bootstrap/lib/compiler/ebin/v3_kernel_pp.beam
bootstrap/lib/kernel/ebin/dist_util.beam
bootstrap/lib/kernel/ebin/error_logger.beam
bootstrap/lib/kernel/ebin/erts_debug.beam
bootstrap/lib/kernel/ebin/group_history.beam
bootstrap/lib/kernel/ebin/hipe_unified_loader.beam
bootstrap/lib/kernel/ebin/kernel.app
bootstrap/lib/kernel/ebin/os.beam
bootstrap/lib/kernel/ebin/user.beam
bootstrap/lib/stdlib/ebin/array.beam
bootstrap/lib/stdlib/ebin/dets.beam
bootstrap/lib/stdlib/ebin/edlin.beam
bootstrap/lib/stdlib/ebin/erl_lint.beam
bootstrap/lib/stdlib/ebin/ets.beam
bootstrap/lib/stdlib/ebin/filelib.beam
bootstrap/lib/stdlib/ebin/filename.beam
bootstrap/lib/stdlib/ebin/gen_statem.beam
bootstrap/lib/stdlib/ebin/lib.beam
bootstrap/lib/stdlib/ebin/otp_internal.beam
bootstrap/lib/stdlib/ebin/qlc.beam
bootstrap/lib/stdlib/ebin/shell.beam
bootstrap/lib/stdlib/ebin/stdlib.appup
bootstrap/lib/stdlib/ebin/string.beam
bootstrap/lib/stdlib/ebin/unicode_util.beam
|
|
|
|
* maint:
Check that the stack is initialized when an exception may occur
|
|
Check that the stack is initialized when an exception may occur
|
|
Fix unsafe use of 'allocate' where 'allocate_zero' should be used
|
|
Huge inputs weren't particularly useful and took forever to run, so
this commit winds it down to a more sane level that still causes
lots of yielding.
|
|
* maint:
Updated OTP version
Update release notes
Update version numbers
kernel: Add os:cmd/2 with max_size option
# Conflicts:
# OTP_VERSION
# lib/kernel/doc/src/os.xml
# lib/kernel/src/os.erl
|
|
|
|
* maint-20:
Updated OTP version
Update release notes
Update version numbers
erts: Add system_flags(erts_alloc,"+M?sbct *")
erts: Add age order first fit allocator strategies
erts: Refactor erl_ao_firstfit_alloc
erts: Add migration options "acnl" and "acfml"
kernel: Add os:cmd/2 with max_size option
erts: Add more stats for mbcs_pool
erts: Fix alloc_SUITE:migration
stdlib: Make ets_SUITE memory check try again
erts: Improve carrier pool search
erts: Improve alloc_SUITE:migration
erts: Refactor carrier dealloc migration
|
|
|
|
|
|
fmt_double() may write up to 8 characters into its format_str[]
buffer, which however only has room for 7 characters.
This case could be triggered by a call to erts_printf_format() with
any floating-point format that also includes #, and + or a space,
which may be uncommon, but a nif or driver could issue it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* sverker/maint-20/alloc-n-migration/ERIERL-88:
erts: Add system_flags(erts_alloc,"+M?sbct *")
erts: Add age order first fit allocator strategies
erts: Refactor erl_ao_firstfit_alloc
erts: Add migration options "acnl" and "acfml"
erts: Add more stats for mbcs_pool
erts: Fix alloc_SUITE:migration
stdlib: Make ets_SUITE memory check try again
erts: Improve carrier pool search
erts: Improve alloc_SUITE:migration
erts: Refactor carrier dealloc migration
|
|
* lukas/kernel/os_cmd_max_size/maint-20/OTP-14823:
kernel: Add os:cmd/2 with max_size option
|
|
into 'sverker/master/alloc-n-migration/ERIERL-88'
|
|
into 'sverker/maint-20/alloc-n-migration/ERIERL-88'
OTP-14915
OTP-14916
OTP-14917
OTP-14918
|