Age | Commit message (Collapse) | Author |
|
On my Mac Pro with 8 cores, this change make self_compile/1 more
than twice as fast, and self_compile_old_inliner/1 more than 4 times
faster.
|
|
In the self compilation test cases, the compiler compiles itself
and runs the newly compiled version on a slave node. Having the
cover server starting on the slave node defeats the purpose of
the test, since it will load the SAME cover-compiled code on the
slave node. (It will also be slower, but will not improve coverage
since it compiles the same source files again.)
Use a shielded node to prevent the cover server from getting
started on the slave node.
|
|
We probably don't gain anything by using more processes than available
schedulers. Also, if 'cover' is being run, using more than one process
may make it slower, so we will be very conservative and use only one
process in that case.
|
|
This test suite has been superseded by other test suites (e.g.
guard_SUITE). Removing it does not decrease the coverage.
|
|
|
|
* egil/system_profile-profiler-fix/OTP-9849:
erts: Do not profile system profiler pid
test: system_profile profiler pid is not profiled
Remove line macros in system_profile_SUITE
|
|
|
|
|
|
|
|
|
|
|
|
* bjorn/compiler/match-fail/OTP-9842:
Add the beam_except pass to optimize exceptions
Eliminate the match_fail primop in v3_kernel and later passes
|
|
In order to save space, rewrite suitable calls to erlang:error/{1,2}
to special BEAM instructions.
This code is probably longer than the code taken out of v3_life and
v3_codegen in the previous commit, but it is much easier to
understand and maintain since the BEAM assembler format is better
understood than the v3_life format.
|
|
In the v3_life pass, it is assumed that a 'match_fail' primop
only occur at the top-level and at the end of a function.
But this code:
do_split_cases(A) ->
case A of
x ->
Z = dummy1;
_ ->
Z = dummy2,
a=b
end,
Z.
will be optimized by sys_core_fold to the following code:
'split_cases'/1 =
fun (_cor0) ->
let <_cor7,Z> =
case _cor0 of
<'x'> when 'true' ->
< 'dummy1','dummy1' >
<_cor6> when 'true' ->
%% Here follows a 'match_fail' primop inside
%% multiple return values:
< primop 'match_fail'({'badmatch','b'}),'dummy2' >
end
in
Z
moving the 'match_fail' primop into a "values" construction.
In the future, we would like to get rid of the v3_life pass (it is
there for historical reasons), so in the mean-time we prefer to not
add more code to it by generalizing the handling of 'match_fail'.
Since the 'match_fail' primop can be simulated by erlang:error/{1,2},
the simplest solution is to translate 'match_fail' to a call to
erlang:error/{1,2} in v3_kernel and remove the handling of
'match_fail' in v3_life and v3_codegen.
It is tempting to get rid of 'match_fail' also in the Core Erlang
format, but there are two issues:
- Removing the support for 'match_fail' completely may break tools
that generate Core Erlang code. We should not do that in a minor
release.
- There is no easy way to generate a 'function_clause' exception
that will remain correct if it will be inlined into another
function. (Calling "erlang:error(function_clause, Args)" is
fine only if it is not inlined into another function.) A good
solution probably involves introducing new instructions, which
is better done in a major release.
Noticed-by: Håkan Matsson
Minimized-test-case-by: Erik Søe Sørensen
|
|
* lukas/docfixes/OTP-9850:
Fix some broken links in documentation
|
|
|
|
|
|
Type information was missing from cfg_info record.
* Add any() to 'params'
* Add list() to 'info'
The 'params' field should be constrained to a narrower type.
|
|
* Removes -Wformat-security problems
|
|
|
|
|
|
|
|
* The DRIVER_INIT macro will now produce an prototype for
the driver_init() function in addition to previous
behaviour.
|
|
* Multiple functions had conflicting signedness in
their prototypes for some arguments.
|
|
|
|
|
|
|
|
* Added a goto fail in worker loop if write() fails.
The 'fail' label used to be win32 only but is now
used across platforms.
|
|
|
|
|
|
|
|
When selecting a session, the "state" of the session (specifically if
the server has responded) was not taken into account. Attempting to
fix this, a "state" field (actually available) has been added to the
session record.
OTP-9847
|
|
|
|
|
|
|
|
Conflicts:
erts/vsn.mk
|
|
|
|
* rickard/no-smp-dev-poll-bug/OTP-9844:
Include wakeup pipe in /dev/poll poll-set also on non-SMP
|
|
* rickard/lwsync/OTP-9843:
Fix lwsync instruction feature test
|
|
A feature test for the lwsync instruction performed on PowerPC
hardware at runtime system startup got into an eternal loop if
the instruction was not supported. This bug was introduced in
erts-5.9/OTP-R15B.
|
|
I/O events could potentially be delayed for ever when enabling
kernel-poll on a non-SMP runtime system executing on Solaris. When
also combined with async-threads the runtime system hung before
completing the boot phase. This bug was introduced in
erts-5.9/OTP-R15B.
|
|
* raimo/opu-fixes:
inet_res_SUITE: Go back to old way to kill test name server
|
|
* hb/erl_docgen/fix_links/OTP-9832:
Generate links in C libraries correctly
|
|
|
|
Release notes updated, together with documentation of the
new config option. Also fixed the wrequest create
macros (forgot end parantesis).
OTP-9700
|
|
Check VM wordsize to see if a driver command with data
larger than 32-bit size is supposed to succeed. On
wordsize 4 machines (32-bit) {error,einval} is expected
since the total size passed to a driver can not exceed
sizeof(ErlDrvSizeT).
|
|
Add a verbosity printout for results of the requests sent to it).
Also fixed handling sent_trap and appup.
OTP-9700
|
|
OTP-9700
|
|
It has long been broken, but this fact was hidden by the
faulty expect functions.
OTP-9700
|
|
As a means to prevent DoS, maximum number of varbinds
in a Get-BULK response has been limited.
Also, made some changes to the worker process "API".
OTP-9700.
|