aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-10-14hipe: TRY fix llvm external calls to own moduleSverker Eriksson
to not be transformed to local calls. code_SUITE:uprade still fails if run with compile option {hipe,to_llvm}
2016-10-14kernel: Fix strange 'ok' return value from code_serverSverker Eriksson
when failing to load native code.
2016-10-14hipe,erts: Remove cached fun 'native_address'Sverker Eriksson
Did not work with purge and made worse by new purge strategy. Did yield terrible performance when fun thing is created *before* fun code is loaded. Like when receiving not yet loaded fun from other node. The cached 'native_address' in ErlFunThing will not be updated leading to mode switch and error_handler being called for every call to the fun from native code.
2016-10-14erts: Fix early hipe patch loadingSverker Eriksson
by introducing hipe_bifs:commit_patch_load/1 that creates the HipeModule.
2016-10-14erts: Move new hipe ref and sdesc lists to loader stateSverker Eriksson
2016-10-14erts: Use hipe_free_moduleSverker Eriksson
2016-10-14erts: Fill freed EXEC memory with illegal instructions on DEBUGSverker Eriksson
to get a nice SIGILL crash. For x86 and x86_64 only.
2016-10-14erts: Check hipe stack in check_process_codeMagnus Lång
This is part of commit 1bd508921dd93086b05e7d0038b816b36c421d86. I did not include the fun-checking as we have a new purge strategy for funs in OTP 20. That remains to be solved some other way for hipe.
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-10erts: Refactor module_start_stagingSverker Eriksson
with a copy_module() function.
2016-10-10erts: Refactor hipe_sdesc.summary into bit fieldsSverker Eriksson
2016-10-10erts: Refactor rename struct hipe_sdescSverker Eriksson
2016-10-10erts: Refactor rename structs hipe_mfa and hipe_refSverker Eriksson
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-07Merge branch 'maint'Hans Bolinder
* maint: Update per review comments. Fix reference to automatic `undefined` field declared types.
2016-10-07Merge branch 'rohrer/doc/undefined_fields/PR-1189' into maintHans Bolinder
* rohrer/doc/undefined_fields/PR-1189: Update per review comments. Fix reference to automatic `undefined` field declared types.
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-06Updated OTP versionOTP-19.1.2Erlang/OTP
2016-10-06Update release notesErlang/OTP
2016-10-06Merge branch 'ingela/ssh/channel_exit_handling/OTP-13932' into maint-19Erlang/OTP
* ingela/ssh/channel_exit_handling/OTP-13932: ssh: Prepare release ssh: Handle gen_server:call/3 exits properly
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-05Update per review comments.Doug Rohrer
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-05Update primary bootstrapBjörn Gustavsson
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