Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-01-07 | Merge branch 'bjorn/compiler/beam_bool/OTP-13208' into maint | Björn Gustavsson | |
* bjorn/compiler/beam_bool/OTP-13208: beam_bool: Fix unsafe optimization | |||
2016-01-07 | beam_bool: Fix unsafe optimization | Bjö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-28 | Merge branch 'legoscia/tls_dist_error_reporting' into maint | Zandra | |
* 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-28 | Merge branch 'josevalim/jv-map-fun-eval-maint' into maint | Zandra | |
* josevalim/jv-map-fun-eval-maint: Use full list of bindings when matching on map keys OTP-13218 | |||
2015-12-28 | Merge branch 'lucafavatella/dialyzer-fun-call' into maint | Zandra | |
* lucafavatella/dialyzer-fun-call: Teach Dialyzer call to funs `M:F/A` (literal M, F, A) OTP-13217 | |||
2015-12-22 | Merge branch 'maint-17' into maint | Anders Svensson | |
2015-12-22 | ssh: clean test specs | Hans Nilsson | |
2015-12-22 | Merge branch 'hans/ssh/cuddle_tests' into maint | Hans 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-22 | ssh: fix error (wrong suite) in test/ssh.spec | Hans Nilsson | |
2015-12-21 | ssh: benchmark all common kex and cipher algorithms | Hans Nilsson | |
2015-12-21 | New structure of the report | Hans Nilsson | |
2015-12-21 | ssh: ssh_benchmark_SUITE re-organized | Hans Nilsson | |
2015-12-21 | ssh: Add first version of ssh_benchmark_SUITE | Hans Nilsson | |
2015-12-20 | Update release notes | Erlang/OTP | |
2015-12-20 | Merge branch 'anders/diameter/17.5.6.7/OTP-13211' into maint-17 | Erlang/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-20 | Merge branch 'anders/diameter/request_leak/OTP-13137' into maint-17 | Erlang/OTP | |
* anders/diameter/request_leak/OTP-13137: Fix request table leak at retransmission Fix request table leak at exit signal | |||
2015-12-20 | Merge branch 'anders/diameter/17/watchdog/OTP-12969' into maint-17 | Erlang/OTP | |
* anders/diameter/17/watchdog/OTP-12969: Fix watchdog function_clause | |||
2015-12-20 | Merge branch 'anders/diameter/M-bit/OTP-12947' into maint-17 | Erlang/OTP | |
* anders/diameter/M-bit/OTP-12947: Add service_opt() strict_mbit | |||
2015-12-20 | vsn -> 1.9.2.2 | Anders Svensson | |
2015-12-20 | Update/fix appup for 17.5.6.7 | Anders 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-20 | Be resilient to diameter_service state upgrades | Anders Svensson | |
By not failing in code that looks up state: pick_peer and service_info. | |||
2015-12-18 | ssh: add econnaborted to disconnect msgs in test suite | Hans Nilsson | |
2015-12-18 | ssh: fix the check that open-ssh supports certain pubkeys in a test suite | Hans Nilsson | |
2015-12-16 | Merge tag 'OTP-18.2' into maint | 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 | |||
2015-12-15 | Merge branch 'ia/libressl' into maint | Ingela Anderton Andin | |
* ia/libressl: ssl: Print openssl version string ssl: Do not use environment variables in openSSL config file | |||
2015-12-15 | ssl: Convert all test to use "ssl_test_lib:portable_open_port" | Ingela Anderton Andin | |
2015-12-15 | Update release notes | Erlang/OTP | |
2015-12-15 | Update version numbers | Erlang/OTP | |
2015-12-15 | Merge branch 'ia/libressl' into maint | Erlang/OTP | |
* ia/libressl: ssl: Print openssl version string ssl: Do not use environment variables in openSSL config file | |||
2015-12-15 | Merge branch 'siri/appups-18.2' into maint | Erlang/OTP | |
* siri/appups-18.2: Update appups in kernel, stdlib and sasl for OTP-18.2 | |||
2015-12-15 | Merge branch 'ia/inets/dialyzer-custom' into maint | Ingela Anderton Andin | |
* ia/inets/dialyzer-custom: inets: Include behaviour modules in install target inets: Fix dialyzer warning | |||
2015-12-15 | inets: Include behaviour modules in install target | Ingela Anderton Andin | |
2015-12-15 | inets: Fix dialyzer warning | Ingela Anderton Andin | |
2015-12-14 | ssl: Print openssl version string | Ingela Anderton Andin | |
2015-12-14 | Merge branch 'zandra/fix-snmp-appup' into maint | Zandra | |
* zandra/fix-snmp-appup: correct the snmp app up file | |||
2015-12-14 | ssl: Do not use environment variables in openSSL config file | Ingela Anderton Andin | |
LibreSSL does not allow it. | |||
2015-12-14 | Merge branch 'dgud/wx/fix-observer-display' into maint | Dan Gudmundsson | |
* dgud/wx/fix-observer-display: wx: Revert part of 617387025b698c | |||
2015-12-14 | Merge branch 'ia/pr/919/OTP-13189' into maint | Ingela Anderton Andin | |
* ia/pr/919/OTP-13189: ssl: fix hibernate_after with instant or near instant timeouts | |||
2015-12-12 | wx: Revert part of 617387025b698c | Dan Gudmundsson | |
Causes issues on mac and observer | |||
2015-12-11 | ssl: fix hibernate_after with instant or near instant timeouts | Andrey Mayorov | |
2015-12-11 | Merge branch 'siri/sasl/doc-editors/OTP-13000' into maint | Siri Hansen | |
* siri/sasl/doc-editors/OTP-13000: sasl: Editorial changes | |||
2015-12-11 | Update appups in kernel, stdlib and sasl for OTP-18.2 | Siri Hansen | |
2015-12-11 | correct the snmp app up file | Zandra | |
2015-12-11 | ssl: Fix typos | Ingela Anderton Andin | |
2015-12-11 | Merge branch 'ia/ssl/windows-tests' into maint | Ingela Anderton Andin | |
* ia/ssl/windows-tests: ssl: Use test case time out instead ssl: Use spawn_executable | |||
2015-12-11 | Merge branch 'ia/ssl/renegotiate-tests' into maint | Ingela Anderton Andin | |
* ia/ssl/renegotiate-tests: ssl: Add renegotiation exception | |||
2015-12-11 | [inets] Correct broken links | Lars Thorsen | |
2015-12-11 | [orber] Align documentation to DTD | Lars Thorsen | |
2015-12-11 | [inets] Align documentation to DTD | Lars Thorsen | |
2015-12-11 | [ssl] Moved description details to man(6) page | Lars Thorsen | |