aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2019-02-27beam_validator: Improve 'binary' type trackingJohn Högberg
2019-02-27beam_validator: Infer tuple element typesJohn Högberg
This is possible now that we track types on a per-value basis, and no longer need to care whether the source tuple's register has been clobbered by the time we infer the type.
2019-02-27beam_validator: Tolerate the 'receive' hack in prim_evalJohn Högberg
2019-02-27beam_validator: Track types by value rather than by registerJohn Högberg
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.
2019-02-27beam_validator: Disregard 'none' on joinJohn Högberg
2019-02-27beam_validator: Handle is_number, and join(float,int) -> numberJohn Högberg
I have no idea how this escaped us for so long...
2019-02-27beam_validator: Treat is_nil as is_eq_exact with nilJohn Högberg
2019-02-27beam_validator: Simplify get_element_typeJohn Högberg
2019-02-27beam_validator: Fix literal handling in meet/2John Högberg
2019-02-27beam_validator: Use literals as keys in container (tuple) elementsJohn Högberg
2019-02-27beam_validator: Refactor try/catch handling, againJohn Högberg
2019-02-27beam_validator: Refactor register initializationJohn Högberg
2019-02-27beam_validator: Refactor stack allocationJohn Högberg
2019-02-26beam_validator: Handle argument/return types for more functionsJohn Högberg
2019-02-26beam_validator: Don't forget last element when using put_tupleJohn Högberg
2019-02-26beam_jump: Fail label of select_val is unsafe for move eliminationJohn Högberg
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.
2019-02-25cerl_sets: Use maps:filter/2 in filter/2John Högberg
This should be slightly more efficient than converting to/from lists for large sets.
2019-02-25Merge branch 'siri/rsh-ssh/PR-1787'Hans Bolinder
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
2019-02-25Merge branch 'solvip/stdlib/gen_statem/export-start-types'Raimo Niskanen
* solvip/stdlib/gen_statem/export-start-types: Fix links within gen_statem doc
2019-02-25Fix links within gen_statem docRaimo Niskanen
2019-02-25Merge branch 'bmk/20190225/systools_copyright/OTP-14831'Micael Karlberg
2019-02-25[sasl] Fixed copyright end dateMicael Karlberg
OTP-14831
2019-02-25Merge branch 'solvip/stdlib/gen_statem/export-start-types'Raimo Niskanen
* solvip/stdlib/gen_statem/export-start-types: Create a gen_statem type for enter_loop options gen_statem exports types related to starting & naming
2019-02-25Create a gen_statem type for enter_loop optionsRaimo Niskanen
2019-02-25Merge branch 'maint'Dan Gudmundsson
* maint: mnesia: Avoid raise in overload reports
2019-02-25Merge branch 'dgud/mnesia/overload-raise/ERIERL-310/OTP-15619' into maintDan Gudmundsson
* dgud/mnesia/overload-raise/ERIERL-310/OTP-15619: mnesia: Avoid raise in overload reports
2019-02-25Merge branch 'bmk/20190225/systools/socket_and_net_preloaded/OTP-14831'Micael Karlberg
2019-02-25[sasl|sock|net] Update 'preloaded' functionMicael Karlberg
Add net and socket (modules) to the list of preloaded modules (returned by the systools_make:preloaded/0 function, why?). OTP-14831
2019-02-25Merge branch 'rickard/deprecations-removals'Rickard Green
OTP-15621 OTP-15622 * rickard/deprecations-removals: Document deprecations and removals
2019-02-25Document deprecations and removalsRickard Green
2019-02-25crypto: New experimental apiHans Nilsson
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.
2019-02-25Merge branch 'peterdmv/ssl/dtls_logging'Péter Dimitrov
* peterdmv/ssl/dtls_logging: ssl: Add debug logging for DTLS Change-Id: I83bf117c6c3428c57010e0e581775dd941fc829a
2019-02-25Merge pull request #2156 from cwfoo/filename-quoteHans Bolinder
Fix missing double quote in filename documentation
2019-02-25Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Fix maps as parameter of opaque types dialyzer: Fix key check of lists:key{search,member,find}()
2019-02-25Merge branch 'dialyzer/hasse/fix_bug_erl_bif_types/OTP-15570' into maintHans Bolinder
* 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}()
2019-02-24Fix missing double quote in filename documentationChuan Wei Foo
2019-02-22Merge branch 'bmk/20190204/socket_as_nif/OTP-14831'Micael Karlberg
2019-02-22[net] Updated kernel.app.src (net removed from app)Micael Karlberg
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
2019-02-22Merge pull request #2138 from wojtekmach/wm-socksMicael Karlberg
gen_tcp, gen_udp: Update specs
2019-02-22Merge branch 'maint'Björn Gustavsson
* maint: Clarify the atomic guarantees for ets:update_counter()
2019-02-22Clarify the atomic guarantees for ets:update_counter()Björn Gustavsson
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.
2019-02-22Merge branch 'bjorn/compiler/use-lists-types'Björn Gustavsson
* bjorn/compiler/use-lists-types: beam_ssa_type: Use types from some 'lists' functions
2019-02-22Merge branch 'bjorn/compiler/fix-name-capture'Björn Gustavsson
* 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
2019-02-22Merge branch ↵Lukas Larsson
'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
2019-02-22Merge branch 'maint'Lukas Larsson
2019-02-22erts: Implement fragmentation of distrubution messagesLukas Larsson
2019-02-22Merge pull request #2148 from llelf/sed-otp_buildLukas Larsson
Fix a particular sed invocation in otp_build
2019-02-22Fix some missed comments about rshSiri Hansen
2019-02-22Merge branch 'maint'Ingela Anderton Andin
2019-02-22Merge branch 'ingela/diameter/ssl-dialyzer-types' into maintIngela Anderton Andin
* ingela/diameter/ssl-dialyzer-types: diameter: Update to use exported types