Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-02-04 | beam_ssa_type: Infer types based on the result of #b_switch{} | John Högberg | |
2019-02-04 | beam_ssa_opt: Fix function name printing in sub-pass crash dump | John Högberg | |
2019-02-04 | beam_validator: Remove unreachable case clause | John Högberg | |
2019-02-04 | Merge pull request #2126 from bjorng/bjorn/compiler/compilation-speed | Björn Gustavsson | |
Reduce compilation times | |||
2019-02-04 | Merge branch 'bjorn/compiler/cuddle-with-tests' | Björn Gustavsson | |
* bjorn/compiler/cuddle-with-tests: inline_SUITE: Don't start a slave node Correct test_lib:is_cloned_mod/1 sys_core_fold_lists: Propagate annotations in expansion of lists functions Parallelize compile_SUITE:bc_options/1 Remove the optimized_guard/1 test case | |||
2019-02-04 | Merge branch 'hans/crypto/fixes/OTP-14732' | Hans Nilsson | |
* hans/crypto/fixes/OTP-14732: otp_test_engine.c fixes crypto: Fix compilation < 1.0.0 | |||
2019-02-04 | Merge branch 'maint' | Péter Dimitrov | |
* maint: Fix typo in erlang.xml inets: Ignore bracket option in format_address Change-Id: I8a215d3872ae74e08d7a17b70ba53535947c032f | |||
2019-02-04 | otp_test_engine.c fixes | Hans Nilsson | |
2019-02-04 | crypto: Fix compilation < 1.0.0 | Hans Nilsson | |
2019-02-04 | Merge pull request #2095 from hogand/crypto/revamp-files | Hans Nilsson | |
crypto: revamp C code [WIP] OTP-14732 | |||
2019-02-04 | Merge branch 'peterdmv/inets/fix-http-client/ERIERL-289/OTP-15554' into maint | Péter Dimitrov | |
* peterdmv/inets/fix-http-client/ERIERL-289/OTP-15554: inets: Ignore bracket option in format_address Change-Id: If3f19325edb8f8cc1ced717aa125658c00438b70 | |||
2019-02-04 | Merge pull request #2128 from amatalai/fix-typo-in-erlang-xml | Lukas Larsson | |
Fix typo in erlang.xml | |||
2019-02-04 | Fix typo in erlang.xml | Tobiasz | |
2019-02-01 | inline_SUITE: Don't start a slave node | Björn Gustavsson | |
A long time ago there was a good idea to run compiled code in a slave node. Nowadays, not so much. | |||
2019-02-01 | Correct test_lib:is_cloned_mod/1 | Björn Gustavsson | |
test_lib:is_cloned_mod(inline_SUITE) would return true. | |||
2019-02-01 | sys_core_fold_lists: Propagate annotations in expansion of lists functions | Björn Gustavsson | |
There could be a warning with a `no_file` atom instead of filename and line number. | |||
2019-02-01 | Parallelize compile_SUITE:bc_options/1 | Björn Gustavsson | |
2019-02-01 | Remove the optimized_guard/1 test case | Björn Gustavsson | |
With the new SSA code passes, the optimized_guard/1 test case has become really bad at finding unnecessary `and` and `or` instructions. | |||
2019-02-01 | Make helper functions tail-recursive | Björn Gustavsson | |
Two helper functions in beam_ssa_opt and beam_ssa_dead are body-recursive for no good reason. While at it, add some clarifying comments to the functions. | |||
2019-02-01 | Optimize beam_ssa:def_used/2 | Björn Gustavsson | |
beam_ssa:def_used/2 is used by beam_ssa_pre_codegen when reserving Y registers. Do the following optimizations: * Use an ordset instead of a gb_set. When the only operation performed on a set is union/2, an ordset will usually be faster, especially when the result is an ordset. * Use a cerl_set instead of a gb_set for the set of all possible predecessors. cerl_sets is usually faster than gb_sets. | |||
2019-02-01 | Prefer map syntax and guard BIFs over the maps modules | Björn Gustavsson | |
Avoiding calls usually reduces the size of the stack frame and reduces register shuffling. | |||
2019-02-01 | beam_ssa_type: Optimize calculation of variables that are only used once | Björn Gustavsson | |
2019-02-01 | Use gb_sets:delete/2 instead of gb_sets:delete_any/2 | Björn Gustavsson | |
Save a little time by using gb_sets:delete/2 instead of gb_sets:delete_any/2 when the key is known to be in the set. | |||
2019-02-01 | Speed up beam_ssa_dead when there are many sequential blocks | Björn Gustavsson | |
beam_ssa_dead could be very slow if there were many blocks connected with unconditional branches (for example, if a block had contained many `call` instructions and been split by ssa_opt_split_blocks). It turns out that `comb_get_sw/3` does an unnecessary (and perhaps incorrect) recursive call to itself when the terminator for the block is an unconditional branch. Removing the recursive call does not disable any optimizations, but will be much faster if there are many blocks connected with unconditional branches. Reported-by: Michał Muskała | |||
2019-02-01 | Optimize ssa_opt_sink when nothing can be sunk | Björn Gustavsson | |
Compilation will be much faster if there are many blocks, but no get_tuple_element instructions. Reported-by: Michał Muskała | |||
2019-02-01 | Merge pull request #2122 from bjorng/bjorn/compiler/fix-beam_except | Björn Gustavsson | |
Fix internal consistency failure caused by beam_except | |||
2019-02-01 | Merge branch 'maint' | Lukas Larsson | |
2019-02-01 | Merge pull request #2117 from essen/fix-erl_epmd_port_please-spec/OTP-15557 | Lukas Larsson | |
Fix spec for erl_epmd:port_please | |||
2019-02-01 | Merge branch 'maint' | Lukas Larsson | |
2019-02-01 | Merge branch 'lukas/erts/fix_system_info_kernelpoll/OTP-15556' into maint | Lukas Larsson | |
* lukas/erts/fix_system_info_kernelpoll/OTP-15556: erts: Fix erlang:system_info(kernel_poll) to return correct value | |||
2019-02-01 | erts: Fix erlang:system_info(kernel_poll) to return correct value | Lukas Larsson | |
2019-02-01 | Merge branch 'maint' | Lukas Larsson | |
2019-02-01 | fix: erts: Remove dead ERTS_MAGIC_REF_BIF_TIMERS code | Lukas Larsson | |
2019-02-01 | Merge branch 'maint' | Lukas Larsson | |
2019-02-01 | Merge branch 'lukas/OTP-21.3-cleanup' into maint | Lukas Larsson | |
* lukas/OTP-21.3-cleanup: erl_interface: Fix bsd makefile problem erts: Remove dead ERTS_MAGIC_REF_BIF_TIMERS code | |||
2019-02-01 | erl_interface: Fix bsd makefile problem | Lukas Larsson | |
2019-02-01 | erts: Remove dead ERTS_MAGIC_REF_BIF_TIMERS code | Lukas Larsson | |
Using magic refs for big timers caused too large a stress on the off_heap GC implementation to be viable, so it was never enable. The code is now broken because of other changes to we might as well remove it. | |||
2019-02-01 | inets: Ignore bracket option in format_address | Péter Dimitrov | |
Ignore the option 'ipv6_host_with_brackets' when formatting addresses to be used in lower level functions. Change-Id: I3b7b276b37fe129ade9208519bff226e17ae7c57 | |||
2019-01-31 | Merge branch 'maint' | Sverker Eriksson | |
2019-01-31 | Merge branch 'sverker/port-control-badarg/OTP-15555' into maint | Sverker Eriksson | |
* sverker/port-control-badarg/OTP-15555: erts: Add doc warnings for erlang:port_command|call|control erts: Add magic port control numbers | |||
2019-01-31 | Fix internal consistency failure caused by beam_except | Björn Gustavsson | |
Fix a bug where the number of live registers in a `bs_get_tail` instruction was too low. Consider this example: -export([bs_get_tail/2]). bs_get_tail(Bin, Config) -> bs_get_tail_1(Bin, 0, 0, Config). bs_get_tail_1(<<_:32, Rest/binary>>, Z1, Z2, F1) -> {Rest,Z1,Z2,F1}. `beam_validator` would emit the following diagnostics: t: function bs_get_tail_1/4+2: Internal consistency check failed - please report this bug. Instruction: {func_info,{atom,t},{atom,bs_get_tail_1},4} Error: {uninitialized_reg,{x,3}}: Here is the part of the code that generates the `function_clause` exception before the optimization: {test_heap,6,4}. {put_list,{x,3},nil,{x,2}}. {put_list,{integer,0},{x,2},{x,2}}. {put_list,{integer,0},{x,2},{x,2}}. {bs_set_position,{x,1},{x,0}}. {bs_get_tail,{x,1},{x,0},3}. %3 live registers. {test_heap,2,3}. {put_list,{x,0},{x,2},{x,1}}. {move,{atom,function_clause},{x,0}}. {line,[{location,"t.erl",8}]}. {call_ext_only,2,{extfunc,erlang,error,2}}. The `bs_get_tail` instruction expects that 3 registers will be live at this point. `beam_except` rewrites the code like this: {bs_set_position,{x,1},{x,0}}. {bs_get_tail,{x,1},{x,0},3}. %Still 3. Too low. {move,{integer,0},{x,1}}. {move,{integer,0},{x,2}}. {jump,{f,3}}. Now the number of live registers in `bs_get_tail` is too low, because the `{x,3}` register will become undefined. This commit adds code to update the number of live registers in the `bs_get_tail` instruction, producing this code: {bs_set_position,{x,1},{x,0}}. {bs_get_tail,{x,1},{x,0},4}. %Adjusted to 4. {move,{integer,0},{x,1}}. {move,{integer,0},{x,2}}. {jump,{f,3}}. | |||
2019-01-31 | Merge branch 'maint' | Björn Gustavsson | |
* maint: Eliminate bogus warning when using tuple calls | |||
2019-01-31 | Merge pull request #2119 from bjorng/bjorn/compiler/tuple-call/ERL-838/OTP-15552 | Björn Gustavsson | |
Eliminate bogus warning when using tuple calls | |||
2019-01-30 | Eliminate bogus warning when using tuple calls | Björn Gustavsson | |
There would be a bogus warning when compiling the following function with the `tuple_calls` option: dispatch(X) -> (list_to_atom("prefix_" ++ atom_to_list(suffix))):doit(X). The warning would look like this: no_file: this expression will fail with a 'badarg' exception https://bugs.erlang.org/browse/ERL-838 | |||
2019-01-30 | Merge pull request #2115 from bjorng/bjorn/compiler/opt-function_clause | Björn Gustavsson | |
Enhance optimization of function_clause exceptions | |||
2019-01-30 | Merge branch 'peterdmv/ssl/improve-logging' | Péter Dimitrov | |
* peterdmv/ssl/improve-logging: ssl: Improve ssl_logger Change-Id: I3b181ed527ce210af6c4a7576576fa522fb20767 | |||
2019-01-30 | Merge branch 'peterdmv/ssl/server-send-finished' | Péter Dimitrov | |
* peterdmv/ssl/server-send-finished: ssl: Fix dialyzer warnings ssl: Add 'Finished' ssl: Use HKDF hash function in Transcript-Hash ssl: Improve test of 1-RTT handshake ssl: Update certificate_verify ssl: Update function build_content ssl: Fix encoding of the Certificate message ssl: Add EncryptedExtensions ssl: Fix encoding of empty extensions ssl: Fix key schedule and traffic keys ssl: Encode/decode CertificateVerify Change-Id: Ie525de276ca4ebd9f9fb0fbdc9dc3822f91834e0 | |||
2019-01-30 | Merge branch 'peterdmv/crypto/fix-type-specs' | Péter Dimitrov | |
* peterdmv/crypto/fix-type-specs: crypto: Fix type spec rsa_sign_verify_opt() Change-Id: Ib7c46c850f29d583a645e78a7e87f334c784518d | |||
2019-01-30 | Merge pull request #2116 from bjorng/bjorn/compiler/add-smoke-test | Björn Gustavsson | |
Add lib/compiler/scripts/smoke | |||
2019-01-30 | Merge branch 'maint' | Ingela Anderton Andin | |