Age | Commit message (Collapse) | Author |
|
|
|
This is a rather subtle but important distinction. While tracking
types on a per-register basis is fairly effective, it forces us to
track which registers alias each other, and makes it tricky to infer
types over large blocks of code as instruction arguments may have
been clobbered between definition and inference.
Tracking types on a per-value basis makes us immune to these
problems.
|
|
|
|
I have no idea how this escaped us for so long...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Consider the following code:
bme(Int) ->
TagInt = Int band 2#111,
Tag = case TagInt of
0 -> a; 1 -> b; 2 -> c; 3 -> d;
4 -> e; 5 -> f; 6 -> g; 7 -> h
end,
case Tag of
g -> expects_g(TagInt, Tag);
h -> expects_h(TagInt, Tag);
_ -> Tag = id(Tag), ok
end.
expects_g(6, Atom) -> Atom = id(g), ok.
expects_h(7, Atom) -> Atom = id(h), ok.
The type optimization pass would recognize that TagInt can only be
[0 .. 7], so the first 'case' would select_val over [0 .. 6] and swap
out the fail label with the block for 7.
A later optimization would merge this block with 'expects_h' in the
second case, as the latter is only reachable from the former.
... but this broke down when the move elimination optimization didn't
take the fail label of the first select_val into account. This caused it
believe that the only way to reach 'expects_h' was through the second
case when 'Tag' =:= 'h', which made it remove the move instruction
added in the first case, passing garbage to expects_h/2.
|
|
This should be slightly more efficient than converting to/from
lists for large sets.
|
|
OTP-15633
* siri/rsh-ssh/PR-1787:
Fix some missed comments about rsh
Document the restrictions on the -rsh command
Use ssh as the default remote shell
|
|
|
|
* solvip/stdlib/gen_statem/export-start-types:
Fix links within gen_statem doc
|
|
|
|
Make iolist_size/1 yield
OTP-15631
|
|
|
|
OTP-14831
|
|
* solvip/stdlib/gen_statem/export-start-types:
Create a gen_statem type for enter_loop options
gen_statem exports types related to starting & naming
|
|
|
|
* maint:
mnesia: Avoid raise in overload reports
|
|
* dgud/mnesia/overload-raise/ERIERL-310/OTP-15619:
mnesia: Avoid raise in overload reports
|
|
The iolist_size/1 function did not yield even if the input list was
very long and a call to the function did only consume a single
reduction. This commit fixes these problems.
|
|
|
|
Add net and socket (modules) to the list of preloaded
modules (returned by the systools_make:preloaded/0
function, why?).
OTP-14831
|
|
OTP-15621 OTP-15622
* rickard/deprecations-removals:
Document deprecations and removals
|
|
|
|
* hans/crypto/new_api_rc1/OTP-15451:
crypto: New experimental api
|
|
The new files api_ng.h and api_ng.c implements an api using EVP.
The api is not by any mean new, except for the crypto application
in Erlang/OTP.
The aims at using the block api in a stream manor, that is
1) call crypto_init/4
2..N) call crypto_update/{2,3}
The purpose is to simplify and hopefully optimize the SSL and SSH
applications.
By keeping the crypto state in C in an enif_resource the costful state
copying in SSL and SSH is reduced with 1-2 per message sent or received.
Changes in other files are for adaptation like FIPS etc since many
functions uses the central get_cipher_type() function.
|
|
* peterdmv/ssl/dtls_logging:
ssl: Add debug logging for DTLS
Change-Id: I83bf117c6c3428c57010e0e581775dd941fc829a
|
|
Fix missing double quote in filename documentation
|
|
* maint:
dialyzer: Fix maps as parameter of opaque types
dialyzer: Fix key check of lists:key{search,member,find}()
|
|
* dialyzer/hasse/fix_bug_erl_bif_types/OTP-15570:
dialyzer: Fix maps as parameter of opaque types
dialyzer: Fix key check of lists:key{search,member,find}()
|
|
|
|
* maint:
erts: Fix macro redefinition
|
|
erts: Fix macro redefinition
OTP-15629
|
|
LIST_NEXT and LIST_PREV causes macro redefinitions from other include files.
beam/erl_ao_firstfit_alloc.c:103:9: warning: 'LIST_NEXT' macro redefined [-Wmacro-redefined]
^
/usr/include/sys/queue.h:507:9: note: previous definition is here
^
1 warning generated.
beam/erl_bestfit_alloc.c:125:9: warning: 'LIST_NEXT' macro redefined [-Wmacro-redefined]
^
/usr/include/sys/queue.h:507:9: note: previous definition is here
^
|
|
|
|
Some cleanup (of open, bind, connect) and rewrote the
accept code (moved the code into smaller functions).
OTP-14831
|
|
Better handling of socket close. The 'closeRef' needed
its own environment to make if work in both cases (both
called and scheduled).
Also Introduced the enif select wrapper functions (read,
write, stop and cancel). Also add error handling at every
time one of these functions are called.
OTP-14831
|
|
|
|
Add 'since' tag to the module and func elements.
OTP-14831
|
|
Another broken anchor fixed. The type 'ipv6_pktinfo' was
not exported nor was it part of the doc.
OTP-14831
|
|
Had for some reason forgot to update the (erts)
preloaded app-file.
OTP-14831
|
|
Fixed broken links to types and functions.
OTP-14831
|
|
Fixed a raise condition bug in the socket_stop (callback)
function that could result in the socket actually *not*
beeing closed.
OTP-14831
|