Age | Commit message (Collapse) | Author |
|
|
|
* maint:
beam_bsm: Eliminate unsafe optimization
|
|
* bjorn/compiler/beam_bsm/ERL-268/OTP-13947:
beam_bsm: Eliminate unsafe optimization
|
|
|
|
* ingela/inets/httpc/ERL-253:
inets: httpc improve error handling
|
|
|
|
* kostis/inets-reference-record-types/PR-1188:
Replace ref() with reference() in inets files
|
|
|
|
* ingela/ssl/cipher-type-spec:
ssl: Adjust cipher type to conform to implementation
|
|
* maint:
New file erlang-edoc.el to support EDoc in erlang-mode
Allow reusing mnesia select continuations
Fix guard test for chardata
|
|
* dgud/wx/fix-unicode-chardata/ERL-270/OTP-13934:
Fix guard test for chardata
|
|
* dgud/mnesia/dirty_select_cont/PR-1184/OTP-13944:
Allow reusing mnesia select continuations
|
|
* dgud/tools/emacs/edoc-support/PR-1195/OTP-13945:
New file erlang-edoc.el to support EDoc in erlang-mode
|
|
- EDoc markup font-locking and tag completion
- EDoc comment indentation
|
|
Conflicts:
OTP_VERSION
|
|
|
|
|
|
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.
|
|
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
|
|
* maint:
parsetools: Correct counting of newlines
|
|
Previously only accepted lists tough a call is made to
unicode:characters_to_binary/1, and the functions where specified to
handle chardata.
|
|
* hasse/parsetools/fix_leex_counting/ERL-263/OTP-13916:
parsetools: Correct counting of newlines
|
|
|
|
* maint:
wx: add wxWindowDragAcceptFiles
wx: Add simple dropfiles support
|
|
* dgud/wx/drop-files/OTP-13933:
wx: add wxWindowDragAcceptFiles
wx: Add simple dropfiles support
|
|
|
|
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.
|
|
Renamed the init function as the return semantics are changed.
|
|
* maint:
Update primary bootstrap
beam_block: Avoid unsafe inclusion of get_map_elements in blocks
|
|
* bjorn/compiler/beam_block/ERL-266/OTP-13931:
beam_block: Avoid unsafe inclusion of get_map_elements in blocks
|
|
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
|
|
* maint:
erlang-mode: do not configure require-final-newline
|
|
* dgud/emacs/do-not-require-final-newline/PR-1130:
erlang-mode: do not configure require-final-newline
|
|
|
|
* maint:
add info for param and returns tags
|
|
* cypherfox/edoc/add_doc/PR-1175:
add info for param and returns tags
|
|
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.
|
|
|
|
* 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
|
|
* legoscia/crypto/no-rc2/PR-1163/OTP-13895:
Fix compilation when OpenSSL doesn't support RC2
|
|
|
|
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.
|
|
|
|
|
|
Test suite did not take TLS-version in to account. Also
some anonymous suites where included incorrectly in some TLS versions.
|
|
* rickard/time-unit/OTP-13831:
Replace usage of deprecated time units
|
|
Conflicts:
OTP_VERSION
|
|
|
|
* josevalim/compiler/at-var/PR-1081/OTP-13924:
Use @ in variable names generated by core and kernel
|
|
* bjorn/compiler/misc:
sys_core_fold: Run optimizations to a fixpoint
sys_core_fold: Improve case optimization
sys_core_fold: Correct scope verification code
core_pp: Correct printing of map updates
Simplify handling of internal BIFs
v3_life: Eliminate special handling of guards
Simplify beam_utils
bs_match_SUITE: Add a test case for beam_utils
bif_SUITE: Cover the remaining uncovered lines
erl_bifs: Remove error_logger:warning_map/0 as a safe BIF
beam_validator: Correct reporting of y register number
beam_jump: Don't try to handle a label at the very end
beam_jump: Simplify eliminate_fallthroughs/2
beam_listing: Remove support for listing sys_pre_expand format
|