Age | Commit message (Collapse) | Author |
|
Consider this code:
%% Start of block
get_tuple_element Tuple 0 Element
get_map_elements Fail Map [Key => Dest]
.
.
.
move Element UltimateDest
%% End of block
Fail:
%% Code that uses Element.
beam_block (more precisely, otp_tuple_element/1) would
incorrectly transform the code to this:
%% Start of block
get_map_elements Fail Map [Key => Dest]
.
.
.
get_tuple_element Tuple 0 UltimateDest
%% End of block
Fail:
%% Code that uses Element.
That is, the code at label Fail would use register Element,
which is either uninitalized or contains the wrong value.
We could fix this problem by always keeping label information
at hand when optimizing blocks so that we could check the code
at the failure label for get_map_elements. That would require
changes to beam_block and beam_utils. We might consider doing
that in the future if it turns out be worth it.
For now, I have decided that I want to keep the simplicity of blocks
(allowing them to be optimized without keeping label information).
That could be achieved by not including get_map_elements in
blocks. Another way, which I have chosen, is to only allow
get_map_elements as the first instruction in the block.
For background on the bug: c288ab8 introduced the beam_reorder pass
and 5f431276 introduced opt_tuple_element() in beam_block.
|
|
* bjorn/multiple-load/OTP-13111:
erl_prim_loader_SUITE: Add debug printout
Skip erl_prim_loader_SUITE:get_modules/1 when cover-compiled
multi_load_SUITE: Clarify failure reasons
multi_load_SUITE: Don't fail on non-HiPE systems
|
|
* bjorn/stdlib/modernize-tests:
Eliminate use of ?config() macro
Remove ?line macros
Replace "%" with "%%" at the beginning of a line
Eliminate 'suite' and 'doc' clauses
gen_server_SUITE: Eliminate use of test_server:timecall/3
Use 'test_server' instead of ?t macro
Eliminate use of test_server:messages_get/0
sys_SUITE: Replace test_server:capture*/0 with ct:capture*/0
sys_SUITE: Mend test cases that didn't test what they should
Replace calls to test_server:sleep/1 with ct:sleep/1 or timer:sleep/1
Eliminate use of test_server:do_times()
Replace use of test_server:format/2 with io:format/2
Eliminate use of test_server:fail/0,1
Modernize use of timetraps
|
|
|
|
No point in checking tmp_alloc instance 0
as any non-scheduler thread could race us.
|
|
|
|
While we are it, also re-ident the files.
|
|
We want to re-ident the source files after having taken out
all ?line macros. When re-indenting using Emacs, it's important
that comments that should be at the beginning of a line (or
follow the indentation of statements around it) must start with
"%%".
|
|
|
|
|
|
|
|
|
|
|
|
The return values for lists:prefix/2 and lists:member/2 were
ignored.
|
|
Note that the sleeping time in ct:sleep/1 will be scaled if
the test is run with (for example) cover. When it is important
that the sleep time is not adjusted, use timer:sleep/1.
|
|
|
|
There is no practial difference.
|
|
|
|
Either rely on the default 30 minutes timetrap, or set the timeout
using the supported methods in common_test.
|
|
Conflicts:
lib/common_test/test/Makefile
|
|
* siri/test-ct_release_test/OTP-13390:
Remove upgrade tests from stdlib_SUITE
Add test of ct_release_test
|
|
The test cases minor_upgrade and major_upgrade used
ct_release_test. The point of the tests in stdlib was mainly to test
ct_release_test. ct_release_test produces a 'from-release' based on an
old version of the application under test (in this case stdlib) and
new versions of all other applications. But since it is not always a
good idea to load an old version of stdlib into a new emulator
(e.g. in the OTP-19.0 emulator), these tests are removed.
Instead new tests are added for ct_release_test in common_test.
|
|
The ct_release_test module provides support for testing
upgrade/code_change of one or more applications within the Erlang/OTP
product. This commit adds tests to the common_test/test directory.
|
|
|
|
* peppe/common_test/html_improvements:
Fix problems with formatted test_server printouts
Make sure special characters are escaped in e.g. pal and log printouts
Conflicts:
lib/test_server/src/test_server.erl
|
|
* maint:
io_SUITE: Don't fail on fast computers with rough timers
Fix code_SUITE after test_server change
Set default value for crash_dump_dir
|
|
* bjorn/cuddle-with-tests:
io_SUITE: Don't fail on fast computers with rough timers
|
|
* siri/crashdump-dir/OTP-13388:
Fix code_SUITE after test_server change
Set default value for crash_dump_dir
|
|
|
|
* anders/diameter/18/dialyzer/OTP-13400:
Fix dialyzer warnings
|
|
* sverk/literal-alloc-polish:
erts: Add emulator flag +MIscs for literal super carrier size
erts: Refactor init of erts_literal_mmapper
erts: Make literal_alloc documented and configurable
|
|
* sverk/Werror-implicit:
otp: Add gcc option -Werror=implicit
|
|
|
|
One little (unsigned long) left behind.
|
|
|
|
* anders/diameter/18.3/OTP-13322:
vsn -> 1.11.2
Update appup for 18.3
|
|
|
|
* peppe/common_test/cth_improvements:
Add missing internal hook functions
Fix remaining issues
Update ct_hooks test suites
Introduce new CT hook functions
OTP-13242
|
|
* peppe/common_test/rm_unwanted_tests:
Fix remaining issues
Enable execution of multiple test cases or groups from a test spec term
OTP-13241
|
|
|
|
* henrik/doc-fixes:
Fix typo in INSTALL.md
Update README.md
Fix typo in 'app' documentation
s/is/are
|
|
|
|
* sverk/bad_printable_range:
stdlib: Fix io_SUITE:bad_printable_range for windows
|
|
|
|
|
|
* origin/dgud/wx/bugs:
wx: Use wrapper classes where possible
wx: Wait before throwing away early callbacks to wx_objects
wx: Add wxWindow:SetTransparent and CanSetTransperant
wx: Add wxWindow SetDoubleBuffered and IsDoubleBuffered from wxWidgets 3.0
wx: Remove http_util usage
wx: Tiny optimization
wx: Fix a crash with sending two binaries to command queue
|
|
* dgud/test-cuddle:
Test windows registry in places we are allowed to write
test: do not divide by zero
|
|
Since Windows 8 we are not allowed (in non elevated mode) to
write to hklm.
|
|
|
|
Whether making record declarations unreadable to compensate for
dialyzer's ignorance of match specs is worth it is truly debatable.
|