aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2014-03-04Merge branch 'nox/maps-fix-beam_bool-put_map'Björn-Egil Dahlberg
* nox/maps-fix-beam_bool-put_map: Properly collect labels in put_map instructions in beam_bool
2014-03-04Merge branch 'nox/maps-expand-update'Björn-Egil Dahlberg
* nox/maps-expand-update: Fix expansion of map update arguments
2014-03-04Merge branch 'nox/compiler/v3_core-mismatched-apply'Björn Gustavsson
* nox/compiler/v3_core-mismatched-apply: Do not emit blatantly illformed Core Erlang apply expressions
2014-03-04Merge branch 'nox/compiler/sys_core_fold-erlang-is_record-3'Björn Gustavsson
* nox/compiler/sys_core_fold-erlang-is_record-3: Do not mark all calls to erlang:is_record/3 as safe
2014-03-04Merge branch 'bjorn/hipe/fix-race-condition'Björn Gustavsson
* bjorn/hipe/fix-race-condition: Delay patching of closures to eliminate a race condition hipe: Break apart hipe_bif:make_fe/3 into two BIFs
2014-03-04Merge branch 'hb/stdlib/qlc_fix/OTP-11758'Hans Bolinder
* hb/stdlib/qlc_fix/OTP-11758: Fix a qlc bug where filters were erroneously optimized away
2014-03-04Introduce compiler option 'nowarn_deprecated_type'Hans Bolinder
The deprecation of the built-in types dict/0 and so on had as side-effect that it was impossible to switch to dict:dict/2 and so on without getting warnings either in the the previous release (R16B) or the current one (17.0). By including the attribute -compile(nowarn_deprecated_type). in an Erlang source file warnings about deprecated types can be avoided in 17.0. The option can also be given as a compiler flag: erlc +nowarn_deprecated_type file.erl
2014-03-04Improve message about deprecated built-in typesHans Bolinder
2014-03-04Merge branch 'ia/ssl/proplist-input-check/OTP-11760'Ingela Anderton Andin
* ia/ssl/proplist-input-check/OTP-11760: ssl: Add input sanity check
2014-03-04ssl: Add input sanity checkIngela Anderton Andin
Avoid puzzling behavior due to options being disregarded if they are not key value tuples.
2014-03-04Handle nil as a wait_timeout argument in beam_utils:live_opt/4Anthony Ramine
Reported-by: Ulf Norell
2014-03-04Properly detect nonboolean protected expressions in beam_boolAnthony Ramine
Silly code such as the following could make the compiler crash: f() when erlang:float(self()); true -> ok. Reported-by: Ulf Norell
2014-03-04Improve linting of map expressionsAnthony Ramine
Map fields are put in their own function instead of being clauses of expr/3. Also, invalid map construction expressions now emit one error per ':=' field, at the location of said field instead of one for the whole expression, furthermore, such warnings do not stop linting of their key and value expressions anymore. Ill-formed maps constructions are now also properly detected in guard expressions.
2014-03-03Properly collect labels in put_map instructions in beam_boolAnthony Ramine
Reported-by: Ulf Norell
2014-03-03Merge branch 'ia/ssl/doc-imp/OTP-11759'Ingela Anderton Andin
* ia/ssl/doc-imp/OTP-11759: ssl: Improved documentation of the cacertfile option
2014-03-03ssl: Improved documentation of the cacertfile optionIngela Anderton Andin
2014-03-03Merge branch 'egil/fix-maps-eq'Björn-Egil Dahlberg
* egil/fix-maps-eq: erts: Fix Map cmp exact equal of an empty map
2014-03-03Merge branch 'egil/fix-compiler-error-msg'Björn-Egil Dahlberg
* egil/fix-compiler-error-msg: compiler: Fix error message printout on compile error
2014-03-03Fix a qlc bug where filters were erroneously optimized awayHans Bolinder
Thanks to Sam Bobroff for reporting the bug.
2014-03-03Do not mark all calls to erlang:is_function/2 as safeAnthony Ramine
Calls to erlang:is_function/2 where the second is not a literal nonnegative integer can crash at runtime and thus can't be marked as safe.
2014-03-02Do not mark all calls to erlang:is_record/3 as safeAnthony Ramine
Calls to erlang:is_record/3 where the second and third arguments are not respectively a literal atom and a literal integer can't be transformed to guards and thus are not safe. Reported-by: Ulf Norell
2014-03-01Do not emit blatantly illformed Core Erlang apply expressionsAnthony Ramine
(fun f/1)() should be compiled to let X = 'f'/1 in apply X () to let the compiler properly generate code that will fail with badarity at runtime. Reported-by: Ulf Norell
2014-03-01Properly lint shortcircuiting operatorsAnthony Ramine
Shortcircuiting operators are not real functions and can't be used as such with erlang:'andalso'(...) and erlang:'orelse'(...). Reported-by: Ulf Norell
2014-03-01Fix expansion of map update argumentsAnthony Ramine
Reported-by: José Valim
2014-02-28compiler: Fix error message printout on compile errorBjörn-Egil Dahlberg
Use correct stack in printout.
2014-02-28Delay patching of closures to eliminate a race conditionBjörn Gustavsson
The loader of native code tries to avoid race condition by bringing down the system to a single scheduler. Unfortunately, that will not completely avoid race conditions beacuse other processes may still run while the code is being loaded. Therefore, we must still make sure that native code has been fully fixed up before it can be executed. Under unlucky circumstances, it was possible for the global name register process to call a fun in native code before the native code for the fun had been fully fixed up. The run-time system would crash when running the not-fully-fixed-up code. Here is a way to make the bug 100% reproducible. First add this function to the 'global' module: silly_looper(List) -> lists:foreach(fun(E) -> put(any_atom, E) end, List), silly_looper(List). Then insert the following code at the beginning of the init/1 function in the 'global' module: spawn_link(fun() -> silly_looper(lists:seq(1, 100)) end), The run-time system will crash during start up when the native code for the 'global' module is being loaded. What will happen is that lists:foreach/2 (which runs in native code) will call the native code for the fun in silly_looper/1 before the reference to 'any_atom' has been changed from a 0 to the proper tagged atom value. The put/2 BIF will exit when attempting to calculate the hash value for the illegal value 0 (it is not properly tagged). To eliminate this race condition, we must delay patching the native code addresses for a fun into the fun entry until the native code has been fully fixed up. We will use the new BIFs introduced in the previous commit. While we are at it, we will also make sure that we erase any temporary variables in the process dictionary used by the hipe_unified_loader module.
2014-02-28hipe: Break apart hipe_bif:make_fe/3 into two BIFsBjörn Gustavsson
This commit is a preparation for eliminating a race condition loading the native code for modules whose BEAM code has already been loaded. Here we introduce two new BIFs so that looking up a fun entry is separate from setting the native address in the fun entry.
2014-02-27erts: Fix Map cmp exact equal of an empty mapBjörn-Egil Dahlberg
The expression, #{} =:= M where M was any Map, would always result in 'true'. This commit fixes this issue by first comparing sizes for both terms and then checking for size zero.
2014-02-26Merge branch 'rickard/xcomp-readme'OTP_17.0-rc2Rickard Green
* rickard/xcomp-readme: Let xcomp/README.md refer to HOWTO/INSTALL-CROSS.md
2014-02-26Merge branch 'bjorn/erts/fp-exceptions-on-osx'Björn Gustavsson
* bjorn/erts/fp-exceptions-on-osx: Disable accidentally enabled floating point exceptions on MacOS X
2014-02-26Update preloaded and primary bootstrapRickard Green
2014-02-26Let xcomp/README.md refer to HOWTO/INSTALL-CROSS.mdRickard Green
2014-02-26Disable accidentally enabled floating point exceptions on MacOS XBjörn Gustavsson
In c7ddafbe, which disabled floating point exceptions on Linux, floating point exceptions were accidentally enabled on MacOS X.
2014-02-26Merge branch 'rel-fixes'Hans Nilsson
2014-02-26ssh: Add appup file correctionsHans Nilsson
2014-02-25Merge branch 'ia/ssl/fix-warnings'Ingela Anderton Andin
* ia/ssl/fix-warnings: ssl: Fix compiler warnings ssl: Fix appup regexps and instructions
2014-02-25ssl: Fix compiler warningsIngela Anderton Andin
2014-02-25ssl: Fix appup regexps and instructionsIngela Anderton Andin
2014-02-25Merge branch 'rel-fixes'Hans Nilsson
2014-02-25eldap: Prepare for releaseHans Nilsson
2014-02-25Merge branch 'rel-fixes'Hans Nilsson
2014-02-25ssh: Prepare for releaseHans Nilsson
2014-02-25inets: Prepare for releaseHans Nilsson
2014-02-25eldap: Prepare for releaseHans Nilsson
2014-02-25Merge branch 'sverk/hipe-disable-gc-bug'Sverker Eriksson
* sverk/hipe-disable-gc-bug: erts: Fix heap overwrite by hipe "trap frames" when GC is disabled ASSERT that GC is not tried with "need" when GC is disabled
2014-02-25erts: Fix heap overwrite by hipe "trap frames" when GC is disabledSverker Eriksson
by trapping BIFs like term_to_binary and binary_to_term.
2014-02-25Merge branch 'ia/ssl/prepare-for-release'Ingela Anderton Andin
* ia/ssl/prepare-for-release: ssl: Prepare for release
2014-02-25ssl: Prepare for releaseIngela Anderton Andin
2014-02-25Merge branch 'kostis/hipe-tests-bs/OTP-11748'Henrik Nord
* kostis/hipe-tests-bs/OTP-11748: Up the time limit (globally) for some slow machines Add check so that tests are skipped if HiPE is not available Add a Makefile for the HiPE tests Add tests for the HiPE compiler (Part 1: binaries and bitstrings)
2014-02-25Merge branch 'hb/syntax_tools/correct_igor_contract'Hans Bolinder
* hb/syntax_tools/correct_igor_contract: Correct a contract in the igor module