aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2016-01-08Merge branch 'maint'Björn Gustavsson
* maint: beam_bool: Fix unsafe optimization
2016-01-07Merge branch 'sverk/proc-dict-opt'Sverker Eriksson
OTP-13167 * sverk/proc-dict-opt: erts: Add new test case pdict_SUITE:mixed erts: Add 'fill_heap' to erts_debug:state_internal_state erts: Rename proc dict size to arraySize erts: Refactor proc dict with 'usedSlots' erts: Add sizeMask for faster proc dict indexing erts: Remove ProcDict.used erts: Add proc dict macros ERTS_PD_START/SIZE erts: Optimize away function "array_put" in proc dict erts: Optimize hashing in process dictionary
2016-01-07Merge branch 'bjorn/compiler/beam_bool/OTP-13208' into maintBjörn Gustavsson
* bjorn/compiler/beam_bool/OTP-13208: beam_bool: Fix unsafe optimization
2016-01-07beam_bool: Fix unsafe optimizationBjörn Gustavsson
beam_bool would make the following code unsafe (which would be reported by beam_validator): scotland(Echo) -> found(case Echo of Echo when true; Echo, Echo, Echo -> Echo; echo -> [] end, Echo = placed). found(_, _) -> million. Basically, beam_bool would see that the 'case' would always return the value of Echo. Thus: scotland(Echo) -> found(Echo, Echo = placed). The only problem is that beam_bool would also remove a 'move' instruction that would save Echo to the stack. Here is the assembly code for part of the function: {allocate_zero,1,1}. {move,{x,0},{y,0}}. %% Save Echo on stack. {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,1}}. {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,2}}. {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,3}}. {bif,'and',{f,7},[{x,2},{x,3}],{x,2}}. {bif,'and',{f,7},[{x,1},{x,2}],{x,1}}. {jump,{f,8}}. {label,7}. {move,{atom,false},{x,1}}. {label,8}. {bif,'or',{f,6},[{atom,true},{x,1}],{x,1}}. {test,is_eq_exact,{f,6},[{x,1},{atom,true}]}. %% Jump never taken. {jump,{f,5}}. {label,6}. {test,is_eq_exact,{f,9},[{x,0},{atom,echo}]}. {move,nil,{x,0}}. {jump,{f,5}}. {label,9}. {test_heap,3,0}. {put_tuple,2,{x,0}}. {put,{atom,case_clause}}. {put,{y,0}}. {line,[{location,"t.erl",5}]}. {call_ext,1,{extfunc,erlang,error,1}}. {jump,{f,5}}. {label,5}. {test,is_eq_exact,{f,12},[{atom,placed},{y,0}]}. beam_bool would see that the is_eq_exact test at label 8 would always succeed. It could therefore remove most of the code before the jump to label 5. Unfortunately it also removed the essential move of Echo to the stack: {allocate_zero,1,1}. %% Instruction incorrectly removed: {move,{x,0},{y,0}}. {jump,{f,5}}. {label,5}. {test,is_eq_exact,{f,12},[{atom,placed},{y,0}]}. The root cause of the problem is that the 'move' instruction is included in the block of 'bif' instructions before label 8. Normally the 'move' instruction would not have been discarded, but because the left operand to the 'or' BIF is 'true', the entire block with 'bif' instructions are dropped. As far as I can see, there is no gain by including 'move' instructions in the first place. There is no way that better code will be produced. In fact, the entire optimization can be given up if 'move' instructions are found in the block. Thus we can fix this bug by never including any 'move' instructions in the block of 'bif' instructions. We can also remove all the code that deals with 'move' instructions within blocks. Reported-by: Thomas Arts
2015-12-28Merge branch 'maint'Zandra
2015-12-28Merge branch 'legoscia/tls_dist_error_reporting' into maintZandra
* legoscia/tls_dist_error_reporting: Report bad options for outgoing TLS distribution Save error reasons for TLS distribution connections Report bad options for TLS distribution connections OTP-13219
2015-12-28Merge branch 'maint'Zandra
2015-12-28Merge branch 'josevalim/jv-map-fun-eval-maint' into maintZandra
* josevalim/jv-map-fun-eval-maint: Use full list of bindings when matching on map keys OTP-13218
2015-12-28Merge branch 'maint'Zandra
2015-12-28Merge branch 'lucafavatella/dialyzer-fun-call' into maintZandra
* lucafavatella/dialyzer-fun-call: Teach Dialyzer call to funs `M:F/A` (literal M, F, A) OTP-13217
2015-12-22Merge branch 'maint'Anders Svensson
2015-12-22Merge branch 'maint-17' into maintAnders Svensson
2015-12-22Merge branch 'maint'Hans Nilsson
* maint: ssh: clean test specs
2015-12-22ssh: clean test specsHans Nilsson
2015-12-22Merge branch 'maint'Hans Nilsson
* maint: ssh: add econnaborted to disconnect msgs in test suite ssh: fix the check that open-ssh supports certain pubkeys in a test suite
2015-12-22Merge branch 'hans/ssh/cuddle_tests' into maintHans Nilsson
* hans/ssh/cuddle_tests: ssh: add econnaborted to disconnect msgs in test suite ssh: fix the check that open-ssh supports certain pubkeys in a test suite
2015-12-22Merge branch 'maint'Hans Nilsson
* maint: ssh: fix error (wrong suite) in test/ssh.spec
2015-12-22ssh: fix error (wrong suite) in test/ssh.specHans Nilsson
2015-12-21Merge branch 'maint'Hans Nilsson
* maint: ssh: benchmark all common kex and cipher algorithms New structure of the report ssh: ssh_benchmark_SUITE re-organized ssh: Add first version of ssh_benchmark_SUITE
2015-12-21ssh: benchmark all common kex and cipher algorithmsHans Nilsson
2015-12-21New structure of the reportHans Nilsson
2015-12-21ssh: ssh_benchmark_SUITE re-organizedHans Nilsson
2015-12-21ssh: Add first version of ssh_benchmark_SUITEHans Nilsson
2015-12-20Update release notesErlang/OTP
2015-12-20Merge branch 'anders/diameter/17.5.6.7/OTP-13211' into maint-17Erlang/OTP
* anders/diameter/17.5.6.7/OTP-13211: vsn -> 1.9.2.2 Update/fix appup for 17.5.6.7 Be resilient to diameter_service state upgrades
2015-12-20Merge branch 'anders/diameter/request_leak/OTP-13137' into maint-17Erlang/OTP
* anders/diameter/request_leak/OTP-13137: Fix request table leak at retransmission Fix request table leak at exit signal
2015-12-20Merge branch 'anders/diameter/17/watchdog/OTP-12969' into maint-17Erlang/OTP
* anders/diameter/17/watchdog/OTP-12969: Fix watchdog function_clause
2015-12-20Merge branch 'anders/diameter/M-bit/OTP-12947' into maint-17Erlang/OTP
* anders/diameter/M-bit/OTP-12947: Add service_opt() strict_mbit
2015-12-20vsn -> 1.9.2.2Anders Svensson
2015-12-20Update/fix appup for 17.5.6.7Anders Svensson
OTP-12947 strict_mbit OTP-12969 watchdog function_clause OTP-13137 request leak diameter_config (that allows the new option) should be loaded after the others. Anchor was missing from one regexp. Patches did not accumulate through older versions.
2015-12-20Be resilient to diameter_service state upgradesAnders Svensson
By not failing in code that looks up state: pick_peer and service_info.
2015-12-18ssh: add econnaborted to disconnect msgs in test suiteHans Nilsson
2015-12-18ssh: fix the check that open-ssh supports certain pubkeys in a test suiteHans Nilsson
2015-12-18Merge branch 'bjorn/deprecate-random/OTP-12502'Björn Gustavsson
* bjorn/deprecate-random/OTP-12502: test_server tests: Update test cases to cope with use of 'rand'
2015-12-17Merge branch 'sverk/crypto/aes-ecb-192-bit'Sverker Eriksson
OTP-13207 * sverk/crypto/aes-ecb-192-bit: crypto: Support 192-bit keys for AES ECB
2015-12-17crypto: Support 192-bit keys for AES ECBAndrew Bennett
2015-12-17Merge branch 'sverk/crypto/aes-cbc-192-bit'Sverker Eriksson
OTP-13206 * sverk/crypto/aes-cbc-192-bit: crypto: Support 192-bit keys for AES CBC
2015-12-17Merge branch 'sverk/crypto/evp-aes-gcm'Sverker Eriksson
OTP-13205 * sverk/crypto/evp-aes-gcm: crypto: Fix potential memory leak in error case for block cipher crypto: Optimize AES-GCM cipher to not use dynamic allocation Use EVP for AES-GCM
2015-12-17test_server tests: Update test cases to cope with use of 'rand'Björn Gustavsson
In 80757f9, test_server was updated use the new 'rand' module instead of 'random', but the the shuffle test cases were not updated.
2015-12-17Merge branch 'bjorn/erts/clean-up-preloaded/OTP-13112'Björn Gustavsson
* bjorn/erts/clean-up-preloaded/OTP-13112: Update preloaded modules erl_prim_loader doc: Remove mention of user supplied loader erl_prim_loader: Clean up string_match() erl_prim_loader: Avoid making absolute paths erl_prim_loader: Clean up splitting of filenames init: Eliminate the concat/1 function Clean up start of erl_prim_loader Remove erl_prim_loader:get_files/2 erl_prim_loader: Remove code for handling OSE erl_prim_loader: Break loop/3 into two functions for readability prim_file: Suppress a dialyzer warning Reduce the ludicrous number of arguments for eval_script() Clean up handling of boot_vars init_SUITE: Correct the test for a "real system" Remove useless 'catch' in start_it/1 Simplify get_flag() and get_flag_list() Clean up parsing and lookup of flags
2015-12-17Merge branch 'bjorn/kernel/remove-code-path-cache/OTP-13191'Björn Gustavsson
* bjorn/kernel/remove-code-path-cache/OTP-13191: Remove the code path cache in the code server
2015-12-16init_SUITE: Correct the test for a "real system"Björn Gustavsson
2015-12-16Merge tag 'OTP-18.2'Henrik Nord
=== OTP-18.2 === Changed Applications: - asn1-4.0.1 - common_test-1.11.1 - compiler-6.0.2 - crypto-3.6.2 - dialyzer-2.8.2 - diameter-1.11.1 - erl_docgen-0.4.1 - erl_interface-3.8.1 - erts-7.2 - eunit-2.2.12 - hipe-3.14 - inets-6.1 - jinterface-1.6.1 - kernel-4.1.1 - observer-2.1.1 - parsetools-2.1.1 - public_key-1.1 - runtime_tools-1.9.2 - sasl-2.6.1 - snmp-5.2.1 - ssh-4.2 - ssl-7.2 - stdlib-2.7 - test_server-3.9.1 - tools-2.8.2 - typer-0.9.10 - wx-1.6 - xmerl-1.3.9 Unchanged Applications: - cosEvent-2.2 - cosEventDomain-1.2 - cosFileTransfer-1.2 - cosNotification-1.2 - cosProperty-1.2 - cosTime-1.2 - cosTransactions-1.3 - debugger-4.1.1 - edoc-0.7.17 - eldap-1.2 - et-1.5.1 - gs-1.6 - ic-4.4 - megaco-3.18 - mnesia-4.13.2 - odbc-2.11.1 - orber-3.8 - os_mon-2.4 - ose-1.1 - otp_mibs-1.1 - percept-0.8.11 - reltool-0.7 - syntax_tools-1.7 - webtool-0.9 Conflicts: OTP_VERSION erts/vsn.mk
2015-12-16Merge tag 'OTP-18.2' into maintHenrik Nord
=== OTP-18.2 === Changed Applications: - asn1-4.0.1 - common_test-1.11.1 - compiler-6.0.2 - crypto-3.6.2 - dialyzer-2.8.2 - diameter-1.11.1 - erl_docgen-0.4.1 - erl_interface-3.8.1 - erts-7.2 - eunit-2.2.12 - hipe-3.14 - inets-6.1 - jinterface-1.6.1 - kernel-4.1.1 - observer-2.1.1 - parsetools-2.1.1 - public_key-1.1 - runtime_tools-1.9.2 - sasl-2.6.1 - snmp-5.2.1 - ssh-4.2 - ssl-7.2 - stdlib-2.7 - test_server-3.9.1 - tools-2.8.2 - typer-0.9.10 - wx-1.6 - xmerl-1.3.9 Unchanged Applications: - cosEvent-2.2 - cosEventDomain-1.2 - cosFileTransfer-1.2 - cosNotification-1.2 - cosProperty-1.2 - cosTime-1.2 - cosTransactions-1.3 - debugger-4.1.1 - edoc-0.7.17 - eldap-1.2 - et-1.5.1 - gs-1.6 - ic-4.4 - megaco-3.18 - mnesia-4.13.2 - odbc-2.11.1 - orber-3.8 - os_mon-2.4 - ose-1.1 - otp_mibs-1.1 - percept-0.8.11 - reltool-0.7 - syntax_tools-1.7 - webtool-0.9
2015-12-15Merge branch 'maint'Ingela Anderton Andin
2015-12-15Merge branch 'ia/libressl' into maintIngela Anderton Andin
* ia/libressl: ssl: Print openssl version string ssl: Do not use environment variables in openSSL config file
2015-12-15Merge branch 'maint'Ingela Anderton Andin
2015-12-15ssl: Convert all test to use "ssl_test_lib:portable_open_port"Ingela Anderton Andin
2015-12-15erts: Add new test case pdict_SUITE:mixedSverker Eriksson
2015-12-15Merge branch 'lukas/erts/forker'Lukas Larsson
* lukas/erts/forker: (28 commits) erts: Never abort in the forked child erts: Mend ASSERT makro for erl_child_setup erts: Allow enomem failures in port_SUITE erts: iter_port sleep longer on freebsd erts: Allow one dangling fd if there is a gethost port erts: Only use forker StackAck on freebsd erts: It is not possible to exit the forker driver erts: Add forker StartAck for port start flowcontrol erts: Fix large open_port arg segfault for win32 erts: Fix memory leak at async open port kernel: Remove cmd server for unix os:cmd erts: Add testcase for huge port environment erts: Move os_pid to port hash to child setup erts: Handle all EINTR and EAGAIN cases in child setup erts: Make child_setup work with large environments erts: Fix forker driver ifdefs for win32 erts: Fix uds socket handling for os x erts: Fix dereferencing of unaligned integer for sparc erts: Flatten too long io vectors in uds write erts: Add fd count test for spawn_driver ... Conflicts: erts/emulator/beam/erl_node_tables.c erts/preloaded/src/erts_internal.erl