aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2015-01-09Generalize optimizations using shortcut_rel_op/4Björn Gustavsson
Better optimizations with less code.
2015-01-09beam_dead: Optimize branches from relational conditionalsBjörn Gustavsson
The BEAM compiler translates code such as: is_hex_digit(D) when $0 =< D, D =< $9 -> true; is_hex_digit(D) when $a =< D, D =< $z -> true; is_hex_digit(D) when $A =< D, D =< $Z -> true; is_hex_digit(_) -> false. to something like this: L0: test is_ge L1 {x,0} 48 test is_ge L1 57 {x,0} move true {x,0} return. L1: test is_ge L2 {x,0} 97 test is_ge L2 122 {x,0} move true {x,0} return L2: test is_ge L3 {x,0} 65 test is_ge L3 90 {x,0} move true {x,0} return L3: move false {x,0} return We can see that tests will be repeated even if they cannot possibly succeed. For instance, if we pass in {x,0} equal to 32, the first test that {x,0} is greater than or equal to 48 at L0 will fail. The control will transfer to L1, where it will be tested whether {x,0} is greater than 97. That test will fail and control will pass to L2, where again the test will fail. The compiler can do better by short-circuiting repeating tests: L0: test is_ge L3 {x,0} 48 test is_ge L1 57 {x,0} move true {x,0} return. L1: test is_ge L2 {x,0} 97 test is_ge L3 122 {x,0} move true {x,0} return L2: test is_ge L3 {x,0} 65 test is_ge L3 90 {x,0} move true {x,0} return L3: move false {x,0} return
2014-12-29Merge branch 'lemenkov/use_os_getenv_2'Marcus Arendt
* lemenkov/use_os_getenv_2: fix missing include Start using os:getenv/2 fun Introduce os:getenv/2
2014-12-22Merge branch 'maint'Bruce Yinhe
2014-12-22Merge branch 'mikpe/fix-eacces-spelling' into maintBruce Yinhe
* mikpe/fix-eacces-spelling: fix eacces spelling
2014-12-22Merge branch 'arekinath/aes-evp/OTP-12380'Marcus Arendt
* arekinath/aes-evp/OTP-12380: crypto: use EVP for AES-CBC
2014-12-19fix missing includeMarcus Arendt
2014-12-19Merge branch 'lukas/erts/crashdump_improvements/OTP-12377'Lukas Larsson
* lukas/erts/crashdump_improvements/OTP-12377: erts: Make main thread safe from pipe closed event erts: Improve crash dumps erts: Rename sys_sigset to sys_signal erts: Introduce thread suspend functions erts: Remove usage of QUANTIFY signal erts: Add support for thread names ets: Increase data available in crash dumps and ets:info erts: Start compilation of beam_emu earlier
2014-12-19erts: Make main thread safe from pipe closed eventLukas Larsson
2014-12-19erts: Improve crash dumpsLukas Larsson
This commit improves crash dumps in several ways: * Suspends schedulers to get a current snapshot * Dumps information about scheduler * Dumps stack trace of current running process (including Garbing processes)
2014-12-19erts: Rename sys_sigset to sys_signalLukas Larsson
Also removed old legacy fallback that is no longer used
2014-12-19erts: Introduce thread suspend functionsLukas Larsson
These functions allow any thread to suspend any other thread immediately and then resume all threads. This is useful when doing a crash dump in order to get a more accurate picture of what state the system is in.
2014-12-19erts: Remove usage of QUANTIFY signalLukas Larsson
2014-12-19erts: Add support for thread namesLukas Larsson
2014-12-19ets: Increase data available in crash dumps and ets:infoLukas Larsson
OTP-12376
2014-12-19Merge branch 'maint'Hans Nilsson
2014-12-19Merge branch 'hans/eldap/bad_return_close/OTP-12349' into maintHans Nilsson
* hans/eldap/bad_return_close/OTP-12349: eldap: Remove trailing white space. eldap: Test cases for a few return values (open, close) eldap: updated eldap:close in tests eldap: Makes close/1 return as documented.
2014-12-19eldap: fix merge conflictHans Nilsson
2014-12-19Merge branch 'hans/eldap/test_improvents/OTP-12355' into maintHans Nilsson
* hans/eldap/test_improvents/OTP-12355: eldap: Corrects SSL over IPv6 test. eldap: Removes eldap_misc_SUITE that is now included in eldap_basic_SUITE. eldap: Add encode/decode tests. eldap: Merge eldap_connections_SUITE into eldab_basic_SUITE eldap: Adds ssl to connections test suite eldap: Updates basic test suite - Splits one large testcase into smaller ones. - Makes tests independent - Adds some tests.
2014-12-18Merge branch 'maint'Bruce Yinhe
2014-12-18Merge branch 'haguenau/fix-endianness-speling' into maintBruce Yinhe
* haguenau/fix-endianness-speling: Replaced "Endianess" with "Endianness" everywhere
2014-12-17eldap: Remove trailing white space.Hans Nilsson
2014-12-17eldap: Test cases for a few return values (open, close)Hans Nilsson
2014-12-17eldap: updated eldap:close in testsHans Nilsson
2014-12-17eldap: Makes close/1 return as documented.Hans Nilsson
2014-12-17eldap: Corrects SSL over IPv6 test.Hans Nilsson
2014-12-17eldap: Removes eldap_misc_SUITE that is now included in eldap_basic_SUITE.Hans Nilsson
2014-12-17eldap: Add encode/decode tests.Hans Nilsson
2014-12-17eldap: Merge eldap_connections_SUITE into eldab_basic_SUITEHans Nilsson
2014-12-17 eldap: Adds ssl to connections test suiteHans Nilsson
2014-12-17eldap: Updates basic test suiteHans Nilsson
- Splits one large testcase into smaller ones. - Makes tests independent - Adds some tests.
2014-12-17Merge branch 'maint'Ingela Anderton Andin
2014-12-17Merge branch 'ia/ssh/ssh-connection-protocol-timeout/OTP-12004' into maintIngela Anderton Andin
* ia/ssh/ssh-connection-protocol-timeout/OTP-12004: ssh: Improve errorhandling in ssh_connection.erl
2014-12-17ssh: Improve errorhandling in ssh_connection.erlIngela Anderton Andin
If a channel is closed by the peer while using a function with call semantics in ssh_connection.erl return {error, closed}. Document that the functions can return {error, timeout | closed} and not only ssh_request_status()
2014-12-17Merge branch 'maint'Marcus Arendt
2014-12-17Merge branch 'marcus/revert-ssh-testcase2/OTP-12004' into maintMarcus Arendt
* marcus/revert-ssh-testcase2/OTP-12004: fix failed conflict resolution
2014-12-16Merge branch 'sverk/ets-take-2/OTP-12309'Sverker Eriksson
* sverk/ets-take-2/OTP-12309: erts: Optimize ets:lookup and ets:take for bags Implement ets:take/2
2014-12-16Merge branch 'sverk/ct-assert'Sverker Eriksson
* sverk/ct-assert: erts: Add compile time assert ERTS_CT_ASSERT
2014-12-16Merge branch 'lukas/erts/non-blocking-shell'Lukas Larsson
* lukas/erts/non-blocking-shell: erts: Fix big-endian issue with printf_putc
2014-12-15Start using os:getenv/2 funPeter Lemenkov
See #535 Signed-off-by: Peter Lemenkov <[email protected]>
2014-12-15Introduce os:getenv/2Peter Lemenkov
Signed-off-by: Peter Lemenkov <[email protected]>
2014-12-15erts: Fix big-endian issue with printf_putcLukas Larsson
On little-endian machines, doing &int will give the smallest byte which is what we want to give to write. But on big-endian it will give the highest byte, which will always be \000 here which results in write never doing any writes. So we have to cast c to an unsigned char before passing it to write.
2014-12-12Merge branch 'lukas/erts/cpu_timestamp_linux/OTP-12366'Lukas Larsson
* lukas/erts/cpu_timestamp_linux/OTP-12366: erts: Allow cpu_timestamp tracing for Linux
2014-12-12Merge branch 'lukas/erts/non-blocking-shell'Lukas Larsson
* lukas/erts/non-blocking-shell: erts: Make sure IOV_MAX is enforced for writev erts: Make erts_printf work with non-blocking
2014-12-12erts: Make sure IOV_MAX is enforced for writevLukas Larsson
2014-12-12Merge branch 'maint'Hans Nilsson
2014-12-12Merge branch 'hans/eldap/doc_fixes/OTP-12354' into maintHans Nilsson
2014-12-12Merge branch 'maint'Marcus Arendt
2014-12-12Merge branch 'marcus/fix-eldap-notes' into maintMarcus Arendt
* marcus/fix-eldap-notes: add missing release notes
2014-12-12add missing release notesMarcus Arendt