aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2016-10-14Add a loader state for HiPE code loadingMagnus Lång
Just like the BEAM loader state (as returned by erlang:prepare_loading/2), the HiPE loader state is contained in a magic binary. Eventually, we will separate HiPE loading into a prepare and a finalise phase, like the BEAM loader, where the prepare phase will be implemented by hipe_unified_loader and the finalise phase be implemented in C by hipe_load.c and beam_load.c, making prepare side-effect free and finalise atomic. The finalise phase will be exposed through the erlang:finish_loading/1 API, just like the BEAM loader, as this will allow HiPE and BEAM modules to be mixed in the same atomic "commit". The usage of a loader state makes it easier to keep track of all resources allocated during loading, and will not only make it easy to prevent leaks when hipe_unified_loader crashes, but also paves the way for proper, leak-free, unloading of HiPE modules.
2016-10-10erts: Remove unused hipe_bifs:code_sizeSverker Eriksson
and hipe_bifs:update_code_size
2016-10-10erts: Improve hipe load/upgrade/purge machinerySverker Eriksson
A step toward better integration of hipe load and purge Highlights: * code_server no longer needs to call hipe_unified_loader:post_beam_load/1 Instead new internal function hipe_redirect_to_module() is called by loading BIFs to patch native call sites if needed. * hipe_purge_module() is called by erts_internal:purge_module/2 to purge any native code. * struct hipe_mfa_info redesigned and only used for exported functions that are called from or implemented by native code. A list of native call sites (struct hipe_ref) are kept for each hipe_mfa_info. * struct hipe_sdesc used by hipe_find_mfa_from_ra() to build native stack traces.
2016-10-10hipe_unified_loader: Refactor rename all Addresses to FunDefsSverker Eriksson
as they are lists of #fundef records
2016-10-07Merge branch 'maint'Björn Gustavsson
* maint: beam_bsm: Eliminate unsafe optimization
2016-10-07Merge branch 'bjorn/compiler/beam_bsm/ERL-268/OTP-13947' into maintBjörn Gustavsson
* bjorn/compiler/beam_bsm/ERL-268/OTP-13947: beam_bsm: Eliminate unsafe optimization
2016-10-07Merge branch 'maint'Ingela Anderton Andin
2016-10-07Merge branch 'ingela/inets/httpc/ERL-253' into maintIngela Anderton Andin
* ingela/inets/httpc/ERL-253: inets: httpc improve error handling
2016-10-07Merge branch 'maint'Ingela Anderton Andin
2016-10-07Merge branch 'kostis/inets-reference-record-types/PR-1188' into maintIngela Anderton Andin
* kostis/inets-reference-record-types/PR-1188: Replace ref() with reference() in inets files
2016-10-07Merge branch 'maint'Ingela Anderton Andin
2016-10-07Merge branch 'ingela/ssl/cipher-type-spec' into maintIngela Anderton Andin
* ingela/ssl/cipher-type-spec: ssl: Adjust cipher type to conform to implementation
2016-10-07Merge branch 'maint'Dan Gudmundsson
* maint: New file erlang-edoc.el to support EDoc in erlang-mode Allow reusing mnesia select continuations Fix guard test for chardata
2016-10-07Merge branch 'dgud/wx/fix-unicode-chardata/ERL-270/OTP-13934' into maintDan Gudmundsson
* dgud/wx/fix-unicode-chardata/ERL-270/OTP-13934: Fix guard test for chardata
2016-10-07Merge branch 'dgud/mnesia/dirty_select_cont/PR-1184/OTP-13944' into maintDan Gudmundsson
* dgud/mnesia/dirty_select_cont/PR-1184/OTP-13944: Allow reusing mnesia select continuations
2016-10-07Merge branch 'dgud/tools/emacs/edoc-support/PR-1195/OTP-13945' into maintDan Gudmundsson
* dgud/tools/emacs/edoc-support/PR-1195/OTP-13945: New file erlang-edoc.el to support EDoc in erlang-mode
2016-10-06New file erlang-edoc.el to support EDoc in erlang-modeLeo Liu
- EDoc markup font-locking and tag completion - EDoc comment indentation
2016-10-06Merge branch 'maint'Ingela Anderton Andin
Conflicts: OTP_VERSION
2016-10-06Merge branch 'maint-19' into maintIngela Anderton Andin
2016-10-06Update release notesErlang/OTP
2016-10-06Allow reusing mnesia select continuationsDániel Szoboszlay
A continuation returned by mnesia:select/[14] should be reusable in different, non-transactional activities. Aborting with wrong_transaction doesn't make sense in a dirty context.
2016-10-06beam_bsm: Eliminate unsafe optimizationBjörn Gustavsson
The following code causes a compiler failure: first_after(Data, Offset) -> case byte_size(Data) > Offset of false -> {First, Rest} = {ok, ok}, ok; true -> <<_:Offset/binary, Rest/binary>> = Data, %% 'Rest' saved in y(0) before the call. {First, _} = match_first(Data, Rest), %% When beam_bsm sees the code, the following line %% which uses y(0) has been optimized away. {First, Rest} = {First, Rest}, First end. match_first(_, <<First:1/binary, Rest/binary>>) -> {First, Rest}. Here is the error message from beam_validator: t: function first_after/2+15: Internal consistency check failed - please report this bug. Instruction: {call,2,{f,7}} Error: {multiple_match_contexts,[{x,1},0]}: Basically, what happens is that at time of code generation, the variable 'Rest' is needed after the call to match_first/2 and is therefore saved in y(0). When beam_bsm (a late optimization pass) sees the code, the use of y(0) following the call to match_first/2 has been optimized away. beam_bsm therefore assumes that the delayed sub-binary creation is safe. (Actually, it is safe, but beam_validator does not realize it.) The bug was caused by two separate commits: e199e2471a reduced the number of special cases to handle in BEAM optimization passed by breaking apart the tail-recursive call instructions (call_only and call_last) into separate instructions. Unfortunately, the special handling for tail calls was lost, which resulted in worse code (i.e. the delayed sub-binary creation optimization could not be applied). e1aa422290 tried to compensate, but did so in a way that was not always safe. Teaching beam_validator that this kind of code is safe would be expensive. Instead, we will undo the damage caused by the two commits. Re-introduce the special handling of tail-recursive calls in beam_bsm that was lost in the first commit. (Effectively) revert the change in the second commit. ERL-268
2016-10-05Merge branch 'maint'Hans Bolinder
* maint: parsetools: Correct counting of newlines
2016-10-05Fix guard test for chardataDan Gudmundsson
Previously only accepted lists tough a call is made to unicode:characters_to_binary/1, and the functions where specified to handle chardata.
2016-10-05Merge branch 'hasse/parsetools/fix_leex_counting/ERL-263/OTP-13916' into maintHans Bolinder
* hasse/parsetools/fix_leex_counting/ERL-263/OTP-13916: parsetools: Correct counting of newlines
2016-10-05Merge branch 'maint'Dan Gudmundsson
* maint: wx: add wxWindowDragAcceptFiles wx: Add simple dropfiles support
2016-10-05Merge branch 'dgud/wx/drop-files/OTP-13933' into maintDan Gudmundsson
* dgud/wx/drop-files/OTP-13933: wx: add wxWindowDragAcceptFiles wx: Add simple dropfiles support
2016-10-05ssh: Prepare releaseIngela Anderton Andin
2016-10-05ssh: Handle gen_server:call/3 exits properlyIngela Anderton Andin
Handle all possible exit values that should be interpreted as {error, closed}. Failing to do so could lead to unexpected crashes for users of the ssh application.
2016-10-05Merge branch 'maint'Björn Gustavsson
* maint: Update primary bootstrap beam_block: Avoid unsafe inclusion of get_map_elements in blocks
2016-10-05Merge branch 'bjorn/compiler/beam_block/ERL-266/OTP-13931' into maintBjörn Gustavsson
* bjorn/compiler/beam_block/ERL-266/OTP-13931: beam_block: Avoid unsafe inclusion of get_map_elements in blocks
2016-10-05beam_block: Avoid unsafe inclusion of get_map_elements in blocksBjörn Gustavsson
c2035ebb8b restricted the get_map_elements instruction so that it could only occur at the beginning of a block. It turns out that including it anywhere in a block is unsafe. Therefore, never put get_map_elements instruction in blocks. (Also remove the beam_utils:join_even/2 function since it is no longer used.) ERL-266
2016-10-05Merge branch 'maint'Dan Gudmundsson
* maint: erlang-mode: do not configure require-final-newline
2016-10-05Merge branch 'dgud/emacs/do-not-require-final-newline/PR-1130' into maintDan Gudmundsson
* dgud/emacs/do-not-require-final-newline/PR-1130: erlang-mode: do not configure require-final-newline
2016-10-05ssl: Adjust cipher type to conform to implementationIngela Anderton Andin
2016-10-05Merge branch 'maint'Hans Bolinder
* maint: add info for param and returns tags
2016-10-05Merge branch 'cypherfox/edoc/add_doc/PR-1175' into maintHans Bolinder
* cypherfox/edoc/add_doc/PR-1175: add info for param and returns tags
2016-10-04Replace ref() with reference() in inets filesKostis Sagonas
This supersedes PR #1185 (submitted by @KrzysiekJ) that changed all occurrences of ref() with reference() in inets files. However, there is little point in having these types only in comments. So, these types are now exposed as type declarations for the record fields they appear. While at it, uncommented more commented out type declarations and declared types for records defined in the affected modules and header files. Some type-unfriendly and obsolete code related to supporting code ungrades with a really old OTP release was also removed.
2016-10-04Merge branch 'maint'Raimo Niskanen
2016-10-04Merge branch 'RoadRunnr/crypto/no-rc4/PR-1169/OTP-13896' into maintRaimo Niskanen
* RoadRunnr/crypto/no-rc4/PR-1169/OTP-13896: disable RC4 in SSL when crypto doesn't support it Fix compilation when OpenSSL doesn't support RC4 Conflicts: lib/crypto/c_src/crypto.c
2016-10-04Merge branch 'legoscia/crypto/no-rc2/PR-1163/OTP-13895' into maintRaimo Niskanen
* legoscia/crypto/no-rc2/PR-1163/OTP-13895: Fix compilation when OpenSSL doesn't support RC2
2016-10-04Merge branch 'maint'Ingela Anderton Andin
2016-10-04ssl: Correct tests tcp stream handlingIngela Anderton Andin
Data collection function active_once_raw/4 did not handle streamed data correctly (it assumed the stream was "packet oriented"), which could result in that the test case perceived that it did not receive all data even though it did.
2016-10-04add info for param and returns tagsLutz Behnke
2016-10-03Merge branch 'maint'Ingela Anderton Andin
2016-09-30ssl: Correct anonymous suite handlingIngela Anderton Andin
Test suite did not take TLS-version in to account. Also some anonymous suites where included incorrectly in some TLS versions.
2016-09-29Merge branch 'rickard/time-unit/OTP-13831'Rickard Green
* rickard/time-unit/OTP-13831: Replace usage of deprecated time units
2016-09-29Merge branch 'maint'Ingela Anderton Andin
Conflicts: OTP_VERSION
2016-09-29Merge branch 'maint-19' into maintIngela Anderton Andin
2016-09-29Merge branch 'josevalim/compiler/at-var/PR-1081/OTP-13924'Björn Gustavsson
* josevalim/compiler/at-var/PR-1081/OTP-13924: Use @ in variable names generated by core and kernel