aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-05-23beam_bool_SUITE: Cover one more lineBjörn Gustavsson
2016-05-23beam_utils_SUITE: Cover more lines in beam_utilsBjörn Gustavsson
By first adding a call to error/1 to each uncovered line, QuickCheck could find test cases that would cover the lines.
2016-05-23beam_reorder: Don't confuse beam_validatorBjörn Gustavsson
Make sure we don't optimize code such as: is_tuple Fail Src test_arity Fail Src Arity get_tuple_element Src Pos Dst is_map Fail Src If we would reorder the instructions like this: is_tuple Fail Src test_arity Fail Src Arity is_map Fail Src get_tuple_element Src Pos Dst beam_validator would complain that the type for Src is a map instead of a tuple. Since the code has problems to begin with, there is no need to do the optimization.
2016-05-23beam_bool: Reject potentially unsafe optimizationBjörn Gustavsson
When calculating the sets of registers that must be killed or unused, registers set in a {protected,_,_,_} block were not considered. That could result in a crash in the assertion in beam_utils:live_opt_block/4.
2016-05-23v3_core: Don't depend on sys_core_fold for cleaning upBjörn Gustavsson
a3ec2644f5 attempted to teach v3_core not to generate code with unbound variables. The approach taken in that commit is to discard all expressions following a badmatch. That does not work if the badmatch is nested: {[V] = [] = foo,V}, V That would be rewritten to: {error({badmatch,foo})}, V where V is unbound. If we were to follow the same approach, the tuple construction code would have to look out for a badmatch. As would list construction, begin...end, and so on. Therefore, as it is impractical to discard all expressions that follow a badmatch, the only other solution is to ensure that the variables that the pattern binds will somehow be bound. That can be arranged by rewriting the pattern to a pattern that binds the same variables. Thus: error({badmatch,foo}), E = foo, case E of {[V],[]} -> V; Other -> error({badmatch,Other} end
2016-05-23beam_type: Eliminate crashBjörn Gustavsson
The following code: simple() -> case try 0 after [] end of 0 -> college; 1 -> 0 end. would crash the compiler like this: crash reason: {case_clause, {'EXIT', {function_clause, [{beam_type,simplify_select_val_int, [{select,select_val, {x,0}, {f,7}, [{integer,1},{f,9},{integer,0},{f,8}]}, 0], [{file,"beam_type.erl"},{line,169}]}, {beam_type,simplify_basic_1,3, [{file,"beam_type.erl"},{line,155}]}, {beam_type,opt,3,[{file,"beam_type.erl"},{line,57}]}, {beam_type,function,1,[{file,"beam_type.erl"},{line,36}]}, {beam_type,'-module/2-lc$^0/1-0-',1, [{file,"beam_type.erl"},{line,30}]}, {beam_type,module,2,[{file,"beam_type.erl"},{line,30}]}, {compile,'-select_passes/2-anonymous-2-',2, [{file,"compile.erl"},{line,521}]}, {compile,'-internal_comp/4-anonymous-1-',2, [{file,"compile.erl"},{line,306}]}]}}} The root cause is that the type representation is not well-defined. Integers could be represented in three different ways: integer {integer,{1,10}} {integer,0} However, only the first two forms were handled. To avoid similar problems in the future: * Make the type representation stricter. Make sure that integers are only represented as 'integer' or {integer,{Min,Max}}. * Call verify_type/1 whenever a new type is added (not only when merging types) to ensure that only the supported types are added to the type database). (ERL-150)
2016-05-20beam_type: Correct handling of setelement/3Björn Gustavsson
We must be careful how we treat the type info for the result of: setelement(Index, Tuple, NewValue) If Tuple had type information, the result of setelement/3 (in x(0)) would be assigned the same type information. But that is not safe for: setelement(1, Tuple, NewValue) since the type for the first element will be changed. Therefore, we must take care to remove the type information for the first element of the tuple if might have been modified by setelement/3.
2016-05-20beam_validator: Handle cons literals betterBjörn Gustavsson
As a preparation for better optimizations in beam_type, a list literal must be accepted as a 'cons'.
2016-05-20beam_validator: Keep better track of tuple literalsBjörn Gustavsson
As a preparation for upcoming better optimizations in beam_type, we will need to keep better track of tuple literals so that beam_validator will not falsely reject safe code.
2016-05-19Merge branch 'mururu/eunit/debugvalall/PR-1024/OTP-13612'Björn Gustavsson
* mururu/eunit/debugvalall/PR-1024/OTP-13612: eunit: Add ?debugValAll macro
2016-05-19Merge branch 'egil/odbc/fix-unmatched_return/OTP-13595'Björn-Egil Dahlberg
* egil/odbc/fix-unmatched_return/OTP-13595: odbc: Fix unmatched return warnings
2016-05-18Merge branch 'lars/inets-deprecated-now/OTP-12441'Lars Thorsen
* lars/inets-deprecated-now/OTP-12441: [inets] Remove calls to the inets_time_compat module [inets] Remove usage of erlang:now()
2016-05-18[inets] Remove calls to the inets_time_compat moduleLars Thorsen
2016-05-18[inets] Remove usage of erlang:now()Lars Thorsen
2016-05-18odbc: Fix unmatched return warningsBjörn-Egil Dahlberg
2016-05-18Merge branch 'egil/xmerl/fix-unmatched_return/OTP-13595'Björn-Egil Dahlberg
* egil/xmerl/fix-unmatched_return/OTP-13595: xmerl: Fix unmatched return warnings
2016-05-18Merge branch 'egil/percept/fix-unmatched_return/OTP-13595'Björn-Egil Dahlberg
* egil/percept/fix-unmatched_return/OTP-13595: egd: Fix unmatched return warnings egd: Small code style refactoring percept: Fix unmatched return warnings percept: Small code style refactoring
2016-05-18Merge branch 'dgud/tools/emacs/PR-1054/OTP-13610'Dan Gudmundsson
* dgud/tools/emacs/PR-1054/OTP-13610: Fix line-initial commas' indentation in type specs
2016-05-18Fix line-initial commas' indentation in type specsDániel Szoboszlay
Inside type specs, line-initial commas shall align with open curly braces. This also applies to record definitions with type specs for the fields. For example: -type foo() :: { a :: integer() , b :: integer() }. For type specs for functions, the commas shall align with the opening parenthese. So do a closing parenthese when put on a new line. For example: -spec foo( X :: integer() , Y :: integer() ) -> integer(). This does not affect coding styles that don't put commas at the beginning of lines.
2016-05-18Merge branch 'hasse/erl_docgen/datatype_anchors/OTP-13600/ERL-141'Hans Bolinder
* hasse/erl_docgen/datatype_anchors/OTP-13600/ERL-141: kernel: Remove no longer needed anchors in documentation stdlib: Remove no longer needed anchors in documentation erts: Remove no longer needed anchors in documentation erl_docgen: Add anchors to datatypes without name attribute
2016-05-18Merge branch 'bjorn/handle-bad-path/ERL-142'Björn Gustavsson
* bjorn/handle-bad-path/ERL-142: Tolerate bad directories in the code path
2016-05-18Merge branch 'bjorn/erts/raise-doc/OTP-13599'Björn Gustavsson
* bjorn/erts/raise-doc/OTP-13599: Remove the warning about using erlang:raise/3
2016-05-18Merge branch 'bjorn/erts/cuddle-with-tests'Björn Gustavsson
* bjorn/erts/cuddle-with-tests: time_SUITE: Make consistency/1 work in any timezone
2016-05-17Merge branch 'sverker/test-einode-core'Sverker Eriksson
2016-05-17Merge branch 'sverker/hipe-amd64-code-alloc/OTP-13359'Sverker Eriksson
This merge is actually only some left overs. The bulk work for hipe-amd64-code-alloc has already been merge (without ticket number) at 42a1166b47721cd444.
2016-05-17Merge branch 'sverker/runtime_tools/trace_ip_drv/OTP-13576/ERL-119'Sverker Eriksson
2016-05-17Merge branch 'sverker/trace-send-receive-matchspec/OTP-13507'Sverker Eriksson
Second merge of this branch to master with some more docs
2016-05-17Merge branch 'mikpe/otp-19-erts-integer-truncation-bugs/PR-1045/OTP-13606'Lukas Larsson
* mikpe/otp-19-erts-integer-truncation-bugs/PR-1045/OTP-13606: erl_unicode.c: fix integer truncation problems do not limit heap fragments to 4 giga-words erts_new_mso_binary(): do not truncate len Conflicts: erts/emulator/beam/erl_nif.c
2016-05-17xmerl: Fix unmatched return warningsBjörn-Egil Dahlberg
2016-05-17Merge branch 'lukas/erts/max_heap_fix_erllvm/OTP-13174'Lukas Larsson
* lukas/erts/max_heap_fix_erllvm/OTP-13174: erts: Move max_heap_size field so that ErLLVM works again
2016-05-17erts: Move max_heap_size field so that ErLLVM works againLukas Larsson
2016-05-17Merge branch 'lukas/erts/re-openbsd-gcc-bug/OTP-13602'Lukas Larsson
* lukas/erts/re-openbsd-gcc-bug/OTP-13602: erts: Fix OpenBSD gcc compiler bug in re code
2016-05-17erts: Fix OpenBSD gcc compiler bug in re codeLukas Larsson
The OpenBSD 5.8 gcc compiler emits erroneous code which results in the re:run function behaving badly, though strangely enough it does not segfault the vm. This fix moves code around a bit in order to make gcc emit correct code.
2016-05-17Merge branch 'lukas/erts/tracing/fix-non-smp-trace/OTP-13503'Lukas Larsson
* lukas/erts/tracing/fix-non-smp-trace/OTP-13503: erts: Fix erl_tracer xml doc errors erts: Fix bug when tracing in non-smp non-scheduler thread
2016-05-17erts: Fix erl_tracer xml doc errorsLukas Larsson
2016-05-17erts: Fix bug when tracing in non-smp non-scheduler threadLukas Larsson
2016-05-17Merge branch 'dgud/wx/cmd-queue-bug'Dan Gudmundsson
* dgud/wx/cmd-queue-bug: Fix compilation warning wx: Fix generated defines in gl.hrl wx: Fix driver command queue
2016-05-17Merge branch 'jrobhoward/os_mon/fix-freebsd_get_os_wordsize/PR-1039/OTP-13601'Björn-Egil Dahlberg
* jrobhoward/os_mon/fix-freebsd_get_os_wordsize/PR-1039/OTP-13601: Fix memsup:get_os_wordsize() on 64-bit Linux PPC os_mon: Test wordsize of memsup:get_os_wordsize/0 Fix memsup:get_os_wordsize() on 64-bit FreeBSD
2016-05-17egd: Fix unmatched return warningsBjörn-Egil Dahlberg
2016-05-17egd: Small code style refactoringBjörn-Egil Dahlberg
2016-05-17Merge remote-tracking branch 'origin/ingela/public_key/tests'Ingela Anderton Andin
* origin/ingela/public_key/tests: public_key: Remove test_server config macros and unsed hooks
2016-05-17percept: Fix unmatched return warningsBjörn-Egil Dahlberg
2016-05-17percept: Small code style refactoringBjörn-Egil Dahlberg
2016-05-17kernel: Remove no longer needed anchors in documentationHans Bolinder
2016-05-17stdlib: Remove no longer needed anchors in documentationHans Bolinder
2016-05-17erts: Remove no longer needed anchors in documentationHans Bolinder
2016-05-17erl_docgen: Add anchors to datatypes without name attributeHans Bolinder
db_html.xsl generates anchors for data types referred to by strings (instead of 'name' attributes). For example: <datatype> <name>edge()</name> </datatype> generates: <p><a name="type-edge"><span class="bold_code">edge()</span></a><br></p>
2016-05-17Merge branch 'egil/egd/improve-line/OTP-13598'Björn-Egil Dahlberg
* egil/egd/improve-line/OTP-13598: egd: Save images during tests egd: Use anti-aliasing for lines egd: Add more line tests egd: Add line thickness algorithm for lines egd: Use maps to map height to line spans egd: Refactor precompile objects egd: Refactor object_on_line egd: Refactor primitives style egd: Improve span calculation
2016-05-17Merge branch 'ingela/inets/dialyzer'Ingela Anderton Andin
* ingela/inets/dialyzer: inets: httpd_util:split does not return {error, Reason}
2016-05-16Merge branch 'hairyhum/eldap/ignore_tcp_errors_at_close/PR-1048/OTP-13590'Hans Nilsson
* hairyhum/eldap/ignore_tcp_errors_at_close/PR-1048/OTP-13590: indentation Ignore tcp errors during close request to eldap