aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2014-01-20asn1ct_imm: Add the intermediate instruction {list,List,Dst}Björn Gustavsson
The {list,List,Dst} instruction gives us as general way to capture the building of something into a variable. That will make inlining of intermediate code much easier. It also allows us to eliminate the versions of the apply, call_gen, and cond instructions that takes a target variable. Also remove the optimization in the alignment optimization pass that attempts to replace calls to complete/1 with calls to iolist_to_binary/1. That optimization will not work anymore without rewriting, so we will remove it in this commit and introcude a more powerful optimization in a future commit.
2014-01-20Generate intermediate code that is easier to optimizeBjörn Gustavsson
Instead of generating: {assign,Dst,"element(2, Val)"} generate: {call,erlang,element,[2,{var,"Val"}],Dst} The latter expression is easier to understand since there is no need to parse a string which may contain an arbitrary expression. While at it, also discontinue the practice to treat "naked" atoms as variables. A variable must always be given as {var,String}.
2014-01-20asn1ct_imm: Add the {set,{var,Src},{var,Dst}} instructionBjörn Gustavsson
The {assign,Dst,Src} instruction is difficult to cope with when doing advanced optimizations, since its source argument is a string which may contain any expression. Instead of changing how {assign,_,_} works, we will introduce new instructions that can be used instead of {assign,_}, and remove {assign,_,_} in a later commit when it is no longer used. The first new instruction we will introduce is: {set,{var,Src},{var,Dst}} It is useful for common sub-expression elemination among other things. For the moment, we will only allow a variable as a source argument, but we could extend it in the future to allow constants as well.
2014-01-20Keep type information in the apply intermediate instructionBjörn Gustavsson
To facilitate inlining of apply calls in the intermediate format.
2014-01-20asn1ct_imm: Add a field for intermediate code for call_genBjörn Gustavsson
It will greatly facilitate further optimizations if we include the intermediate code (if available) in the call_gen tuple.
2014-01-20Introduce asn1ct_gen:open_output_file/1Björn Gustavsson
2014-01-20Factor out printing of verbose messagesBjörn Gustavsson
2014-01-20Improve optimization of alignment for encodingBjörn Gustavsson
2014-01-20Improve construction of {cons,H,T} instructionsBjörn Gustavsson
Make sure that we don't construct: {cons,{integer,I},{cons,{binary,B},T}} - OR - {cons,{binary,B},{cons,{integer,I},T}} but: {cons,{binary,[{put_bits,I,8,[1]}|B]},T} - OR - {cons,{binary,B++[{put_bits,I,8,[1]}]},T}
2014-01-20Teach asn1ct_func:call_gen/4 to quote the generated function nameBjörn Gustavsson
The function name could contain hyphens or other characters not allowed in non-quoted function names.
2014-01-20Test open types that may need more than 128 bytesBjörn Gustavsson
2014-01-20Update primary bootstrapBjörn Gustavsson
2014-01-20Merge branch 'bjorn/compiler/optimizations/OTP-11584'Björn Gustavsson
* bjorn/compiler/optimizations/OTP-11584: Generalize optimizations of case statements Ignore warnings when running sys_core_fold after inlining
2014-01-20Merge branch 'bjorn/fix-line-number-in-bs-exception/OTP-11572'Björn Gustavsson
* bjorn/fix-line-number-in-bs-exception/OTP-11572: compiler: Correct line number in exception from binary construction
2014-01-20Merge branch 'bjorn/compiler/fix-lift-after/OTP-11580'Björn Gustavsson
* bjorn/compiler/fix-lift-after/OTP-11580: compiler: Silence false warning for unmatched return in 'after' clause
2014-01-20Merge branch 'egil/etp-commands/OTP-11582'Björn-Egil Dahlberg
* egil/etp-commands/OTP-11582: erts: Update etp-commands with heap-dump
2014-01-20Merge branch 'egil/fix-bs_get_integer/OTP-11581'Björn-Egil Dahlberg
* egil/fix-bs_get_integer/OTP-11581: erts: Fix bs_get_integer instruction
2014-01-17compiler: Silence false warning for unmatched return in 'after' clauseBjörn Gustavsson
Because 26940a8c0c lifted code in the 'after' clause of 'try' to a new function, Dialyzer could produce false warnings for code such as: try ... after file:close(F) end. Mark the the call to the generated function as 'compiler_generated' to silence the warning.
2014-01-17Merge branch 'fenollp/escript-doc-chmod'Henrik Nord
* fenollp/escript-doc-chmod: Add a chmod call in the CLI example OTP-11577
2014-01-17Merge branch 'RoadRunnr/ecdh_crypto'Henrik Nord
* RoadRunnr/ecdh_crypto: crypto: selective support for GF2m curves ssl: add brainpool elliptic curves to TLS (RFC-7027) public_key: add brainpool elliptic curves (RFC-5639) crypto: document ec_curves/0 and ec_curve/1 crypto: add brainpool (RFC 5639) curves crypto: move elitic curve definitions from OpenSSL built-ins to Erlang crypto: add ECDH test vectors for more curves OTP-11578
2014-01-16Merge branch 'rickard/ts_install_mXX_build'Rickard Green
* rickard/ts_install_mXX_build: Teach ts_install --enable-mXX-build flag
2014-01-16Teach ts_install --enable-mXX-build flagRickard Green
Pick up --enable-m32-build and --enable-m64-build configure flags from the CONFIG_FLAGS environment variable and pass along to the ts configure script.
2014-01-16Merge branch 'maint'Björn-Egil Dahlberg
2014-01-16Generalize optimizations of case statementsBjörn Gustavsson
Case expressions such as: case {Expr1,Expr} of {V1,V2} -> ... end are already optimized to not actually build the tuple. Generalize the optimization to avoid building any kind of composite term, such as: case {ok,[A,B]} of {ok,[X,Y]} -> ... end We don't expect programmers to write such code directly, but inlining can produce such code. We need to be careful about the warnings we produce. If the case expression is a literal, it is expected that no warnings should be produced for clauses that don't match. We must make sure that we continue to suppress those warnings.
2014-01-16compiler: Correct line number in exception from binary constructionBjörn Gustavsson
Reported-by: Stanislav Seletskiy
2014-01-14Merge branch 'nox/odbcserver-tolower'Henrik Nord
* nox/odbcserver-tolower: Include ctype.h in odbcserver.c for tolower() OTP-11569
2014-01-14Merge branch 'puzza007/remove-query-reserved-word-from-emacs-mode'Henrik Nord
* puzza007/remove-query-reserved-word-from-emacs-mode: remove support for query keyword from emacs mode OTP-11568
2014-01-14Update system versionBjörn-Egil Dahlberg
2014-01-14Merge branch 'ad/ssh_expand_test'Henrik Nord
* ad/ssh_expand_test: fix calculation of variable thanks to Alexander Demidenko OTP-11566
2014-01-14Merge branch 'weisslj/fix-epmd-names-win32'Henrik Nord
* weisslj/fix-epmd-names-win32: epmd: Fix -names option on Windows OTP-11565
2014-01-14epmd: Fix -names option on WindowsJohannes Weißl
Since 3aa60cc `epmd -names` does not produce any output on Windows anymore. This patch uses fwrite() instead of write() which adds the necessary carriage returns to the output so that it is suitable for the Windows cmd.exe. A test case is added (fails on Windows without the patch).
2014-01-14Merge branch 'weisslj/fix-hipe-no-remove-comments'Henrik Nord
* weisslj/fix-hipe-no-remove-comments: hipe: Fix compilation with 'no_remove_comments' OTP-11564
2014-01-13Merge branch 'rickard/otp-17-vsn-fix'Rickard Green
* rickard/otp-17-vsn-fix: Fix issues with new versioning
2014-01-13crypto: selective support for GF2m curvesAndreas Schultz
Newer OpenSSL versions allow to selectively disable GF2m elliptic curves. Selectively enable GF2m curves is support for them is available.
2014-01-13ssl: add brainpool elliptic curves to TLS (RFC-7027)Andreas Schultz
2014-01-13public_key: add brainpool elliptic curves (RFC-5639)Andreas Schultz
2014-01-13crypto: document ec_curves/0 and ec_curve/1Andreas Schultz
2014-01-13crypto: add brainpool (RFC 5639) curvesAndreas Schultz
RFC-5649, Section 1, documents the advantages that these curves might have over others (ANSI, SEC1/2)
2014-01-13crypto: move elitic curve definitions from OpenSSL built-ins to ErlangAndreas Schultz
Decouple eliptic curve definition from OpenSSL and define them in Erlang.
2014-01-13crypto: add ECDH test vectors for more curvesAndreas Schultz
Vectors have been taken from NIST's CRYPTOGRAPHIC ALGORITHM VALIDATION PROGRAM (CAVP) (http://csrc.nist.gov/groups/STM/cavp/)
2014-01-13Merge branch 'lukas/erts/win-icon/OTP-11560'Lukas Larsson
* lukas/erts/win-icon/OTP-11560: erts: Update windows erlang icon
2014-01-13Merge branch 'lukas/erts/fix_sp_usage_printout/OTP-11559'Lukas Larsson
* lukas/erts/fix_sp_usage_printout/OTP-11559: erts: Replace tab with space for proper alignment
2014-01-10Merge branch 'lukas/erts/fd0_pipe_bug/OTP-11558'Lukas Larsson
* lukas/erts/fd0_pipe_bug/OTP-11558: erts: Make sure fds 0,1 and 2 are open
2014-01-10erts: Make sure fds 0,1 and 2 are openLukas Larsson
If they are not open a really nasty race where the io pipe in erl_poll got fd 0 and the fd_driver setting fd 0 to blocking could occur. This caused the emulator to hang during shutdown.
2014-01-10erts: Replace tab with space for proper alignmentLukas Larsson
2014-01-10Include ctype.h in odbcserver.c for tolower()Anthony Ramine
odbcserver.c:2772:12: warning: implicit declaration of function 'tolower' is invalid in C99 [-Wimplicit-function-declaration] str[i] = tolower(str[i]); ^
2014-01-10Remove support for query keyword from emacs modePaul Oliver
2014-01-10fix calculation of variableHenrik Nord
thanks to Alexander Demidenko
2014-01-10hipe: Fix compilation with 'no_remove_comments'Johannes Weißl
To reproduce the error: $ echo '-module(hello).' > hello.erl $ erl 1> c(hello, [native,{hipe,[no_remove_comments]}]). [...] <HiPE (v 3.10.2.1)> Error: [hipe:834]: ERROR: {{case_clause, {icode_comment,call_ext_only}}, [{hipe_icode,successors,1, [{file,"hipe_icode.erl"}, {line,1444}]}, [...]
2014-01-09erts: Update etp-commands with heap-dumpBjörn-Egil Dahlberg