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
|
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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}()
|
|
|
|
|
|
The net module has been moved from the kernel app
into the erts app (preloaded), but was still in the
(kernel) app file.
OTP-14831
|
|
gen_tcp, gen_udp: Update specs
|
|
* maint:
Clarify the atomic guarantees for ets:update_counter()
|
|
The phrasing "no process can access the ETS table in the middle of the
operation" implies that the entire table is looked during
the operation, which is not true if `write_concurrency`
is enabled.
|
|
* bjorn/compiler/use-lists-types:
beam_ssa_type: Use types from some 'lists' functions
|
|
* bjorn/compiler/fix-name-capture:
sys_core_fold: Remove an unsafe optimization
beam_ssa_type: Optimize setelement with partially constant arguments
beam_ssa_opt: Do local CSE of get_tuple_element instructions
|
|
'lukas/erts/fragment-dist-messages/OTP-13397/OTP-15610/OTP-15611/OTP-15612/OTP-15613'
* lukas/erts/fragment-dist-messages/OTP-13397/OTP-15610/OTP-15611/OTP-15612/OTP-15613:
erts: Add debug dist obuf memory leak check
win32: Fix ./otp_build debuginfo_win32
Make ld.sh on windows print better error reason
erts: Fix so that externals with creation 0 compare equal to all
erts: Expand etp to look for free processes
erts: Implement trapping while sending distr exit/down
erts: Add ERL_NODE_BOOKKEEP to node tables refc
erts: Refactor ErtsSendContext to be ErtsDSigSendContext
erts: Add distr testcases for fragmentation
erts: Make remote send of exit/2 trap
erts: Implement fragmentation of distrubution messages
erts: Expand distribution protocol documentation
erts: Move reason in dist messages to payload
erts: Remove a copy of distribution data payload
erts: Yield later during process exit and allow free procs to run
erts: Refactor rbt _yielding to use reductions
erts: Limit binary printout for %.XT in erts_print
|
|
|
|
|
|
Fix a particular sed invocation in otp_build
|
|
|
|
|
|
* ingela/diameter/ssl-dialyzer-types:
diameter: Update to use exported types
|
|
|
|
Conflicts:
lib/ssl/doc/src/ssl.xml
lib/ssl/src/ssl.erl
|