Age | Commit message (Collapse) | Author |
|
105c5b0071 was reverted in dd1162846e because clauses that were
supposed to match would not match. (See 8b83bc0b.)
Reintroduce the optimization, but make sure that we only shortcut
bs_context_to_binary instructions and not bs_start_match2 instructions.
|
|
Don't only test the case that failed; test it exhaustively.
|
|
* maint:
wx: Add missing specs
|
|
* dgud/wx/broken-links:
wx: Add missing specs
|
|
* maint:
Request a larger stacksize for wx thread
|
|
* dgud/wx/increase_wx_stacksize:
Request a larger stacksize for wx thread
|
|
* maint:
Updated OTP version
Prepare release
erts: Make sure to flush potential exit message
|
|
* maint-19:
Updated OTP version
Prepare release
erts: Make sure to flush potential exit message
|
|
|
|
|
|
|
|
* maint:
asn1_test_lib: Compile ASN.1 modules in parallel
Support 'make -j' when compiling ASN.1 modules
[ERL-209] Fix ambiguous_catch_try_state inconsistency error
|
|
into maint
* bjorn/compiler/ambiguous_catch_try_state/ERL-209/OTP-13804:
[ERL-209] Fix ambiguous_catch_try_state inconsistency error
|
|
* bjorn/asn1/support-parallel-build/OTP-13624:
asn1_test_lib: Compile ASN.1 modules in parallel
Support 'make -j' when compiling ASN.1 modules
|
|
Test that the changes in the previous commit allows us to
compile ASN.1 modules in parallel.
|
|
When attempting to build multiple ASN.1 modules in parallel (e.g. by
running 'make -j'), the ASN.1 compiler could crash because the names
of the .asn1db files clashed. For example, if A.asn1 and B.asn1 both
import from C.asn1, the compiler would write a C.asn1db file when
compiling A.asn1 and when compiling B.asn1.
We can avoid this problem if the compiler only writes the
module's own .asn1db file. That is, when compiling A.asn1,
the compiler would only write A.asn1db, not C.asn1db. Also,
make sure that we make the write atomic by first writing to
a temporary file that is then renamed.
|
|
|
|
* lukas/erts/fix_init_stop_code_load_race/OTP-13802:
erts/kernel: Fix code loading deadlock during init:stop
|
|
When init:stop is called it walks the application hierarchy
and terminates each process. Some of these processes may do
something while terminating and sometimes that something
needs to load some new code in order to work. When this happens
the code_server could just be in the process of terminating
or the erl_prim_loader could be active. In both these cases
the request to load the new code would cause a deadlock in the
termination of the system.
This commit fixes this by init rejecting attempts to load new code
when init:stop has been called and fixing a termination race in
the code_server.
This however means that the process that tried to do something
when told to terminate (for instance logging that it is terminating)
will crash instead of loading the code.
|
|
Conflicts:
lib/gs/doc/src/Makefile
|
|
* binarin/even-more-absolute-paths/PR-1103/OTP-13800:
Use perl discovered by configure
Don't make assumptions about build tools paths
|
|
It is not safe to share code between 'catch' blocks.
|
|
|
|
* josevalim/large-binary-strings/PR-1131/OTP-13794:
Move expansion of strings in binaries to v3_core
|
|
|
|
Conflicts:
OTP_VERSION
|
|
Conflicts:
lib/ssl/src/ssl.appup.src
|
|
|
|
* lukas/kernel/fix_os_cmd_background_compat/OTP-13741:
kernel: Use ^D as eot for os:cmd on unix platforms
|
|
* raimo/ssl/version-selection/maint-19/OTP-13753:
Improve version selection
|
|
This is needed as doing only an 'exit' will only exit the
program, but any children started in the program that have
stdout/stderr still open will keep the port open until they
terminate. i.e.
os:cmd("while true; do echo sleep 1; sleep 1; done&").
would block os:cmd forever because the while loop keeps its copies
of stdout/stderr open forever.
It could be argued that this is correct behaviour, and it is
the way it works on windows, but changing this breaks backwards
compatability for os:cmd which is not acceptable.
|
|
|
|
|
|
|
|
Change it to { Input :: string() | undefined, Body :: string() }
|
|
|
|
|
|
into maint
* duncaen/crypto/fix-algo_cipher-array-size/PR-1140/OTP-13789:
Fix segfault in crypto by increasing algo_cipher array
|
|
* maint:
Update primary bootstrap
beam_block: Fix potentially unsafe optimization in move_allocates/1
|
|
* bjorn/compiler/not_live/ERL-202/OTP-13780:
beam_block: Fix potentially unsafe optimization in move_allocates/1
|
|
beam_block has an optimization that only is safe when it is applied
immediately after code generation. That is pointed out in a comment:
NOTE: Moving allocation instructions is only safe because it is done
immediately after code generation so that we KNOW that if {x,X} is
initialized, all x registers with lower numbers are also initialized.
That assumption may not be true after other optimizations, such as
the beam_utils:live_opt/1 optimization.
The new beam_reorder pass added in OTP 19 runs before beam_block.
Therefore, the optimization is potentially unsafe. The optimization
is also unsafe if compilation is started from assembly code in a
.S file.
Rewrite the optimization to make it safe. See the newly added comment
for details.
ERL-202
|
|
* maint:
Improve format_warning/1 spec
|
|
* elbrujohalcon/dialyzer/fix-spec/PR-1134/OTP-13786:
Improve format_warning/1 spec
|
|
|
|
maint
* ellbee/odbc/configure-OS-X-El-Capitan/PR-1137/OTP-13781:
Make ODBC configure handle OS X El Capitan
|
|
This speeds up the compilation of binary literals
with string values in them. For example, compiling
a file with a ~340kB binary would yield the following
times by the compiler:
Compiling "foo"
parse_module : 0.130 s 5327.6 kB
transform_module : 0.000 s 5327.6 kB
lint_module : 0.011 s 5327.8 kB
expand_module : 0.508 s 71881.2 kB
v3_core : 0.463 s 11.5 kB
Notice the increase in memory and processing time
in expand_module and v3_core. This happened because
expand_module would expand the string in binaries
into chars. For example, the binary <<"foo">>, which
is represented as
{bin, 1, [
{bin_element, 1, {string, 1, "foo"}, default, default}
]}
would be converted to
{bin, 1, [
{bin_element, 1, {char, 1, $f}, default, default},
{bin_element, 1, {char, 1, $o}, default, default},
{bin_element, 1, {char, 1, $o}, default, default}
]}
However, v3_core would then traverse all of those
characters and convert it into an actual binary, as it
is a literal value.
This patch addresses this issue by moving the expansion
of string into chars to v3_core and only if a literal
value cannot not be built. This reduces the compilation
time of the file mentioned above to the values below:
Compiling "bar"
parse_module : 0.134 s 5327.6 kB
transform_module : 0.000 s 5327.6 kB
lint_module : 0.005 s 5327.8 kB
expand_module : 0.000 s 5328.7 kB
v3_core : 0.013 s 11.2 kB
|
|
|
|
|
|
maint
* efine/inets/validate-inet6fb4/ERL-200/PR-1132/OTP-13776:
Test inet6fb4 in basic suite
Actually verify result of testcase
Fix inets_sup_SUITE for local tests
Add test for inet6fb4 validation
Fix httpd_conf:validate_properties/1 for ipfamily
|
|
|