aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2014-03-09inets: Fix incorrect argument orderKirilll Zaborsky
Wrong order of arguments in httpc_handler:update_session/4 error handling code should not result in bad_argument error making stack trace unusable.
2014-03-09Remove a superfluous echo in the emulator MakefileAnthony Ramine
It pollutes the output of silent rules.
2014-03-08Properly detect reused boolean values in beam_boolAnthony Ramine
The following code could crash the compiler: f(X = true) when X or true or X -> ok. Reported-by: Ulf Norell
2014-03-07Support the LLVM backend in HiPEYiannis Tsiouris
Add flags to enable and use the LLVM backend: * to_llvm: use the LLVM pipeline for compilation (default optimization level is O3), * llvm_save_temps: save the intermediate files in current directory in order to be able to debug or optimize the LLVM assembly, * {to_llvm, O}: set the optimization level of LLVM opt and llc tools. Add some debug support to the loader; no semantic change intented.
2014-03-07Implement the LLVM backendYiannis Tsiouris
2014-03-07Extend RTL API to support the LLVM backendYiannis Tsiouris
Extend the 'rtl_var' definition to host liveness information needed for a simple liveness analysis performed by the LLVM backend. Also, uncomment some function definitions (mostly simple accessors) that are already there and are useful for the translation of RTL code to LLVM assembly. Finally, extend the RTL 'call' instruction with the 'normalcontinuation' field which is required for translating calls that are in the scope of an exception handler. This extra field is required in order to point to a new basic block which will hold the 'unwind label' of LLVM's invoke instruction. While the 'unwind label' is semantically equivalent with the 'failcontinuation', in LLVM this block must have a 'landingpad' instruction. The problem arises by the fact that an RTL 'continuation' block can also be accessible by other paths in the RTL CFG, and so cannot be marked as a landing pad. To overcome this issue we create a new block (the 'normalcontinuation') which is used as the 'unwind label' of LLVM's invoke instruction and which will eventually transfer control to the 'continuation' block.
2014-03-07Add support for llvm unique symbols in hipe_gensymYiannis Tsiouris
This is used by the LLVM backend in order to generate unique names for temporary SSA values and functions.
2014-03-07Add a BIF that only returns the atom okYiannis Tsiouris
A call in llvm_fix_pinned_regs/0 is inserted in the beginning of LLVM unwind blocks (i.e. code executed when an LLVM 'invoke' call triggers an exception) in order to get the BP and SP registers right. This is needed because LLVM exception handling doesn't provide the return value (that also contains the values for these registers, as defined in the HiPE Calling Convention for LLVM) on the 'landingpad's.
2014-03-07Move some common code in hipe_pack_constantsYiannis Tsiouris
All backends (e.g. arm, ppc, sparc, x86) share the same code for the following functions: * find_const/2, * mk_data_relocs/2, and * slim_sorted_exportmap/3 This commit moves those definitions (along with some helper functions) in misc/hipe_pack_constants.erl and adds the appropriate specs. This is a structural change; no change in semantics intented.
2014-03-07Add better specs in hipe_pack_constants and cleanupYiannis Tsiouris
2014-03-07Merge branch 'nox/maps-beam_jump-put_map'Björn-Egil Dahlberg
* nox/maps-beam_jump-put_map: Properly collect labels in put_map instructions in beam_jump
2014-03-07Merge branch 'hb/stdlib/linter_errors/OTP-11771'Hans Bolinder
* hb/stdlib/linter_errors/OTP-11771: Emit errors when redefining arity(), bitstring(), iodata(), or boolean()
2014-03-07Emit errors when redefining arity(), bitstring(), iodata(), or boolean()Hans Bolinder
erl_lint has since R13B emitted warnings whenever any of the types arity(), bitstring(), iodata(), or boolean() were re-defined. Now errors are emitted instead.
2014-03-07Merge branch 'hb/stdlib/linter_bugfix/OTP-11772'Hans Bolinder
* hb/stdlib/linter_bugfix/OTP-11772: stdlib: Emit linter warnings for redefined built-in types
2014-03-07stdlib: Emit linter warnings for redefined built-in typesHans Bolinder
Since Erlang/OTP R16B the linter has not emitted warnings when built-in types were re-defined. This bug has been fixed. Thanks to Roberto Aloi for reporting the bug.
2014-03-06erl_interface: test decode/encode of mapsSverker Eriksson
2014-03-06erl_interface: Add ei encode/decode for mapsSverker Eriksson
2014-03-06erl_interface: test decode_encode of tuples and listsSverker Eriksson
2014-03-06erl_interface: refactor ei_decode_encode_test.cSverker Eriksson
to prepare for lists, tuples and ... maps!
2014-03-06Add more info to file open failurePeter Andersson
2014-03-06Merge branch 'egil/maps/doc-module-api'Björn-Egil Dahlberg
* egil/maps/doc-module-api: erl_docgen: Generate map() instead of #{} for maps type stdlib: Document Maps module stdlib: Fix maps:from_list/1 spec.
2014-03-06erl_docgen: Generate map() instead of #{} for maps typeBjörn-Egil Dahlberg
2014-03-06stdlib: Document Maps moduleBjörn-Egil Dahlberg
2014-03-06stdlib: Fix maps:from_list/1 spec.Björn-Egil Dahlberg
2014-03-06Merge branch 'nox/maps-cerl_clauses'Björn-Egil Dahlberg
* nox/maps-cerl_clauses: Support maps in cerl_clauses:match/2
2014-03-06Merge branch 'nox/maps-improve-erl_lint'Björn-Egil Dahlberg
* nox/maps-improve-erl_lint: Improve linting of map expressions
2014-03-06Merge branch 'nox/maps-beam_jump'Björn-Egil Dahlberg
* nox/maps-beam_jump: Properly check label use in get_map_elements in beam_jump
2014-03-06Merge branch 'nox/maps-v3_codegen-sort-nil-keys'Björn-Egil Dahlberg
* nox/maps-v3_codegen-sort-nil-keys: Properly sort map pairs in v3_codegen
2014-03-06Merge branch 'nox/maps-complex-mixed-values'Björn-Egil Dahlberg
* nox/maps-complex-mixed-values: Properly order Kernel code for maps with mixed pairs
2014-03-06Added a condition to ignore empty Set-Cookie header and tests for itKirilll Zaborsky
2014-03-06cover_SUITE:reconnect/1: Let the other side initiate the disconnectBjörn Gustavsson
The reconnect/1 test starts another node and takes down the connection to it for a while. However, it has been in observed in our daily builds that sometimes a "spontaneous" re-connection occurs. I think that it because of the call to rpc:cast/3 which internally will set the group leader for the remote process to a process on the test_server node. It seems that sometimes the group_leader/2 call will re-establish the connection. Unfortunately, I have not been able to force this to happen by inserting delays in the rpc module, so it it still just an hypothesis. However, letting the other node do the disconnection does seem to fix the problem and intuitively that should be safer way to do it because the group_leader/2 call and the disconnection will be executed sequentially on the same node instead of concurrently from two different nodes.
2014-03-06Update primary bootstrapBjörn Gustavsson
2014-03-06Merge branch 'nox/compiler/v3_core-comprehension-no-export'Björn Gustavsson
* nox/compiler/v3_core-comprehension-no-export: Do not export variables from comprehension cases in v3_core OTP-11770
2014-03-06Merge branch 'nox/compiler/beam_bool-not_boolean_expr'Björn Gustavsson
* nox/compiler/beam_bool-not_boolean_expr: Compile BIF calls and operator expressions to Core the same way Do not try to optimize non-boolean guards
2014-03-06Merge branch 'nox/compiler/core_lint-call-guard'Björn Gustavsson
* nox/compiler/core_lint-call-guard: Properly lint calls in Core Erlang guards
2014-03-06Merge branch 'kostis/hipe_bifs-types'Björn Gustavsson
* kostis/hipe_bifs-types: Add types for new HiPE BIFs
2014-03-06Properly collect labels in put_map instructions in beam_jumpAnthony Ramine
Reported-by: Ulf Norell
2014-03-06Do not emit blatantly illformed apply expressions in core_inlineAnthony Ramine
Code such as apply 'f'/1 () should not be emitted by the Core Erlang inliner. Commit 1b8ad68361db59477013bf96e485d5293723ff42 added a test case and correction in v3_core.
2014-03-06Merge branch 'hb/stdlib/fix_dets/OTP-11709'Hans Bolinder
* hb/stdlib/fix_dets/OTP-11709: stdlib: Fix a Dets bug where files were deleted stdlib: Fix a Dets bug with leaking file descriptors
2014-03-05Add flag to abort test run if suites fail to compilePeter Andersson
OTP-11769
2014-03-05Merge branch 'hb/stdlib/spec_fixes/OTP-11399'Hans Bolinder
* hb/stdlib/spec_fixes/OTP-11399: stdlib: Improve the doc of the supervisor's via reference
2014-03-05stdlib: Fix a Dets bug where files were deletedHans Bolinder
Instead of deleting the small file when opening it with dets:open_file/2 an error message is returned, mimicking the behaviour when the file is bigger. open_file/1 has been modified to return the same error message when the file is small as when the file is bigger. Thanks to Hakan Mattson for reporting this bug.
2014-03-05Fix comment that differs from codeCobus Carstens
The comment in the code state that the tree is traversed to the left, when in fact it is traversed to the right.
2014-03-05stdlib: Fix a Dets bug with leaking file descriptorsHans Bolinder
Thanks to Hakan Mattson for reporting this bug.
2014-03-05Update primary bootstrapBjörn Gustavsson
2014-03-05Merge branch 'nox/compiler/beam_bool-bad-protected'Björn Gustavsson
* nox/compiler/beam_bool-bad-protected: Properly detect nonboolean protected expressions in beam_bool
2014-03-05Merge branch 'nox/compiler/live_opt-wait_timeout-nil'Björn Gustavsson
* nox/compiler/live_opt-wait_timeout-nil: Handle nil as a wait_timeout argument in beam_utils:live_opt/4
2014-03-05Merge branch 'nox/compiler/sys_core_fold-erlang-is_function-2'Björn Gustavsson
* nox/compiler/sys_core_fold-erlang-is_function-2: Do not mark all calls to erlang:is_function/2 as safe
2014-03-05Merge branch 'nox/compiler/lint-shortcircuit-ops'Björn Gustavsson
* nox/compiler/lint-shortcircuit-ops: Properly lint shortcircuiting operators
2014-03-05Do not export variables from comprehension cases in v3_coreAnthony Ramine
Code like the following snippet could make the compiler crash: f() -> [X = a || false] ++ [X = a || false]. Reported-by: Ulf Norell