Age | Commit message (Collapse) | Author |
|
|
|
* bjorn/beam-max-args/OTP-9049:
Refuse to compile functions with too many arguments
Lower the maximum arity from 256 to 255
|
|
* bjorn/compiler/eliminate-warnings:
compiler Makefile: Turn warnings into errors
v3_kernel_pp: Add support for pretty-printing #k_literal{} records
v3_kernel_pp: Eliminate warning
|
|
By accident a previous instance of St is used, which is
harmless in this case, but leads to worse quality of
the generated code.
|
|
* ks/bs_add-fail-labels:
Fix translation of bs_add's fail labels
OTP-9044
|
|
|
|
We want to ensure that the compiler applications is kept
free of warnings.
|
|
|
|
|
|
* uw/xmerl-expand-simple/OTP-9034:
Track parents when expanding #xmlElement records
|
|
|
|
* ia/ssl-and-public_key/skip-tests-when-no-crypto-fix:
Changed crypto start test so that it works as intended
|
|
|
|
The function xmerl_lib:expand_content/1 is mainly for expanding
Simple XML, but can also handle xmerl records. This patch fixes
an omission that caused expand_content/1 to not maintain the
'parents' list when expanding #xmlElement{} records.
No test cases written, since the xmerl test suites have not yet been
released.
|
|
* nick/orber/inet6_test_cases/OTP-9035:
OTP-9035 - More tests added so that Orber does not try to run IPv6 tests on a machine than cannot handle that. This only affect test code and not the application.
|
|
* nick/ssh/sign-verify-binary:
Updated appup file.
Updated notes file.
Changed year in copyright header.
Added updated modules to the appup file.
Improved error handling for ssh:connect/3/4.
Release note contained wrong ticker number.
OTP-8987 In some cases SSH returned {error, normal} when a channel was terminated unexpectedly. This has now been changed to {error, channel_closed}.
|
|
* nick/ensure_ssh_dir_exists/OTP-9010:
Updated appup file.
Updated notes file.
Updated year in license.
OTP-9010:
ssh: ensure ~/.ssh exists
|
|
* nick/ssh/inet6_enetunreach/OTP-9031:
Updated notes file.
Added updated modules to the appup file.
OTP-9031 - SSH did not handle the error reason enetunreach when trying to open a IPv6 connection.
|
|
* ia/ssl-and-public_key/skip-test-if-no-crypto:
Skip ssl and public key tests if crypto fails to start
|
|
|
|
on a machine than cannot handle that. This only affect test code
and not the application.
|
|
|
|
* ks/bs_start_match-fails:
Fix erroneous fail info of a hipe_bs_primop
OTP-9036
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Historically, for no good reason, a function is allowed to have
from 0 to 256 arguments. Thus, the number of arguments *almost*
fits into a byte.
HiPE only supports up to 255 arguments (because it assumes that
the function arity fits into a single byte), and fixing that limitation
would require ugly special-case handling. In Dialyzer, the arity
type is defined to be a byte (i.e. 0..255).
Since no-one uses functions with 256 arguments anyway, lower the
limit to 255.
|
|
open a IPv6 connection.
|
|
* bjorn/beam-loader/OTP-9030: (43 commits)
c: Reduce memory footprint
erl_posix_msg: Reduce memory footprint
Introduce a few more variations of the move instructions
Combine a move + jump sequence into the move_jump instruction
Optimize and clean-up the exact equality/non-equality instructions
Optimize addition of a small integer to a variable
Introduce a special instruction for select_val with two values
Introduce a few more specialized put_list instructions
Eliminate the "put_list c n Dst" instructions
Eliminate the specific move_sd instruction
Eliminate use of GetArg1() in the badmatch and case_end instructions
Eliminate use of GetArg2() in the i_element instruction
Eliminate use of GetArg1() in the fast_element instruction
Eliminate use of GetArg1() in the jump_on_val* instructions
Eliminate use of GetArg1() in the select_val instruction
beam_emu: Eliminate sloppy use of tmp_arg1 and tmp_arg2
beam_emu: Don't inline helper functions into process_main()
beam_emu: Clean up calling of the error_handler module
Simplify a select_val instruction that selects only one value
Optimize creation of tuples
...
|
|
Use a binary instead of a string for the help text.
|
|
Since the error messages in the erl_posix_msg module are
presumably used very seldom, save memory by using binaries
instead of strings.
|
|
Frequency counts show that
move Const x(1)
move Const x(2)
are very common.
|
|
That will save one word and small amount of time for
each occurrence.
|
|
The is_eq_exact/3 and is_ne_exact/3 instructions are commonly used
with one immediate or literal operand.
Introduce three new specialized instructions:
i_is_eq_exact_literal/3
i_is_ne_exact_immed/3
i_is_ne_exact_literal/3
The i_is_ne_exact_literal/3 instruction is not very frequently
used, but its existence is justified because we removed in a
a previous commit the special instruction for matching bignums
and we now use i_is_ne_exact_literal/3 instead.
For consistency, rename the existing is_eq_immed/3 instruction to
is_eq_exact_immed/3.
While at it, remove the optimization of an is_eq/3 instruction
with an immediate operand because that optimization is already
done by the compiler.
|
|
Introduce a new i_increment/4 to optimize the addition of
a register and a small integer. This instruction saves two
instruction words compared to the standard instructions
(an i_fetch/2 instruction followed by a i_plus/3 instruction)
and will also be slightly faster.
|
|
The new instruction will save one word (because no size operand
is needed), and is slightly faster.
Handle select_tuple_arity in the same way.
|
|
|
|
Since the literal (constant) pool was introduced in R12, the
BEAM compiler will never generate a "put_list Const [] Dst"
instruction (it will instead generate a "move [Const] Dst"
instruction).
|
|
The move_sd specific instruction is no longer used since there
are specific move instructions covering all possible permutations
of operands. Also eliminate the move_cy instruction because it
is almost never generated by the compiler.
|
|
Create separate instructions for each register type. The "badmatch x(0)"
and "case_end x(0)" (which are very common) will only require a single
word each, compared to two words when GetArg1() is used.
|
|
Use separate instructions for each register type.
|
|
Use separate instructions for each register type.
|