Age | Commit message (Collapse) | Author |
|
Don't match exact BEAM instructions when trying to recognize
function_clause exceptions that should be replaced with a jump to the
func_info instruction. Instead, do a symbolic evaluation of the list
building code and see if the result is a list of the argument
registers.
While at it, also teach fix_block_1/2 to completely remove a test_heap
instruction before an exception generation instruction.
|
|
Smarter code generation means that beam_validator must
be smarter too. In the following example, beam_validator
must be able to infer that y0 refers to a map:
move x0 y0
test is_map L1 x0
%% Here the type for y0 must be 'map'.
|
|
|
|
The func_info instruction does not expect a stack frame. There will
be an assertion failure in the debug-compiled runtime system.
|
|
|
|
If we transfer state appropriately to labels that can't be reached,
the state could taint other labels.
|
|
Since the compiler will start optimizing more aggressively, beam_validator
must keep up and improve the recognization of tuples and maps.
|
|
The new code generator will more aggressively reuse registers,
so we must be more careful about updating the state for try/catch.
In particular, an "empty" try/catch that can't throw an
exception must not update the try/catch state.
|
|
|
|
Nicer to read and less confusion.
|
|
The new code generator will use Y registers as a destination for
binary construction and matching instructions. v3_codegen would
always first store terms in an X register and it would be the
responsibility of the optimization passes to optimize the extra
moves.
|
|
* maint:
crypto: Fail tests if crypto cannot start
|
|
* hans/crypto/cuddle_tests:
crypto: Fail tests if crypto cannot start
|
|
* maint:
ssh: prolong the timeout in ssh_dbg gen_server calls
|
|
|
|
* upstream/maint:
Require align
Add Erlang alignment regexps
|
|
OTP-15239
|
|
Optimize binary match from 10% up to 70x
|
|
|
|
fix double parenthesis and badly formatter <v> tags
|
|
marianoguerra/fix-emd2exml-encoding-value-gen-maint
fix generated encoding for xml files generated with emd2exml
|
|
(cherry picked from commit 1b36c8ff81e896f9aa172603962f838d980668a0)
|
|
DTRACE.xml and SYSTEMTRAP.xml set encoding to utf8 instead of utf-8
and make xmerl_scan:file/1,2 fail parsing them
(cherry picked from commit faded6e1cdceb049d2d9bc995b6c981d58709315)
|
|
|
|
|
|
* maint:
Fix compiler crash when compiling double receives
erts: Delete fd from poll-set when closing fd_driver port
|
|
bjorng/bjorn/compiler/double-receives/ERL-703/OTP-15235
Fix compiler crash when compiling double receives
|
|
into maint
erts: Delete fd from poll-set when closing fd_driver port
|
|
|
|
* maint-20:
inets: Remove 21 test case
Updated OTP version
Update release notes
Conflicts:
OTP_VERSION
lib/inets/doc/src/notes.xml
lib/inets/test/httpd_SUITE.erl
lib/inets/vsn.mk
otp_versions.table
|
|
A test case unrelated to the patch was accidentally added
when backporting the solution.
|
|
|
|
* lukas/travis/deploy:
travis: Make bundle version select regexp stricter
|
|
|
|
|
|
* ingela/inets/status-501/ERIERL-218/OTP-15215:
inets: Use status code 501 when no mod_* handles the request
|
|
|
|
* lukas/travis/deploy:
travis: Filter out release candidates from bundle tags
|
|
|
|
Add logger:set_application_level/2
|
|
remove_message does not store any pointer to x0
|
|
|
|
|
|
maint-20
* ingela/inets/maint-20/status-501/ERIERL-218/OTP-15215:
inets: Prepare for release
inets: Use status code 501 when no mod_* handles the request
# Conflicts:
# lib/inets/test/httpd_SUITE.erl
# lib/inets/vsn.mk
|
|
|
|
|
|
remove_message just remove messages without writing to any register.
Compiler is already generating code like:
{get_tuple_element,{x,0},1,{x,0}}.
remove_message.
{jump,{f,6}}
That clearly uses x0 for other purposes.
|
|
|
|
The compiler would crash when compiling a function with two
receive statements.
https://bugs.erlang.org/browse/ERL-703
|
|
Conflicts:
lib/inets/test/httpd_SUITE.erl
|