aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-07-11hipe: segment tree delete operationMagnus Lång
Profiling showed that hipe_sdi spent most of its time in updateParents, discarding nodes that were already deleted. By introducing a delete operation to the segment trees, we can pay this cost only once, when deleting the node from the graph. Instead of keeping the ranges around, we recompute the range of the node when we delete it, since this can be done in constant time, without any memory allocation. Although segment trees are not designed to be modified once built, implementing a delete operation turned out to be a simple matter of repeating insertion, but deleting the index from, instead of consing it on, the appropriate nodes' values (segment lists). This optimisation drastically sped up hipe_sdi to the point of no longer being the bottleneck in the Assembly stage.
2016-07-11hipe_sdi: Use segment trees to represent PARENTSMagnus Lång
This speeds up parentsOfChild/2 from O(n) to O(lg n + k). A new module misc/hipe_segment_trees.erl is introduced.
2016-07-11hipe_icode_{bincomp,range}: Improve complexityMagnus Lång
hipe_icode_bincomp:find_bs_get_integer/3 was quadratic for no good reason. By observing that NewSuccs and Rest are always disjoint, we can see that the worklist does not need to be a set. Furthermore, by replacing the ordset Visited with a map, we reduce complexity to (a very low) O(n lg n). On cuter_binlib, this change reduced the time for hipe_icode_bincomp from 60s to .25s. Using a gb_set for Visited gives .5s, and a sets:set 1s. We apply the same optimisation to hipe_icode_range.
2016-07-11[reltool] Fix dependency bug for applications not in 'rel' specsSiri Hansen
For applications that are not included in a 'rel' spec in the reltool config, dependencies in the .app file are not followed. This is now corrected.
2016-07-11[reltool] Fix dependency bug for applications in 'rel' specsSiri Hansen
For applications that are included in a 'rel' spec in the reltool config, some dependency chains are not followed. E.g. * Application x has y as included application, and y in turn has z as included application. Then z is not included. * Application x has y in its 'applications' tag in the .app file, and y in turn has z as included application. Then z is not included. This is now corrected - all app-file dependencies are recusively followed for all applications that are included in a 'rel' spec in the reltool config.
2016-07-11[reltool] Add test for ERL-167Siri Hansen
For applications that are explicitly included in the reltool config, but that are not included in a 'rel' spec, dependencies in the .app file are not followed (only xref dependencies are taken care of).
2016-07-11Merge branch 'siri/cuddle-maint' into maintSiri Hansen
* siri/cuddle-maint: [sasl test] Skip tests on slow host [sasl test] Catch erlang:port_close/1 [ct test] Extent node startup timeouts in netconfc_remote_SUITE [ct test] Monitor netconf server during transaction [sasl test] Extend wait time when starting nodes [ct test] Skip system time related tests on TimeWarpingOS
2016-07-11Merge branch 'siri/cuddle-master'Siri Hansen
* siri/cuddle-master: Make crashdump_viewer_SUITE independent of OTP version
2016-07-11Merge branch 'maint'Lukas Larsson
* maint: erts: After a call to a tracer nif, reset htop erts: Check if return_to trace is enabled for bif
2016-07-11Merge branch 'lukas/erts/tracing/bif_return_to_trace_fix/OTP-13734' into maintLukas Larsson
* lukas/erts/tracing/bif_return_to_trace_fix/OTP-13734: erts: After a call to a tracer nif, reset htop erts: Check if return_to trace is enabled for bif
2016-07-11erts: After a call to a tracer nif, reset htopLukas Larsson
This is needed in order for the heap to never contain any pointers to invalid memory. This is good for performance and debugging reasons.
2016-07-11Merge branch 'maint'Lukas Larsson
2016-07-11Merge branch 'lukas/erts/spawn_driver_relative_cd/ERL-175/OTP-13733' into maintLukas Larsson
* lukas/erts/spawn_driver_relative_cd/ERL-175/OTP-13733: erts: Add port_SUITE:cd invalid dir testcase erts: Fix spawn driver with relative cd option erts: Fix HARD_DEBUG printouts in erl_child_setup erts: Improve error printouts in erl_child_setup Conflicts: erts/emulator/test/port_SUITE.erl
2016-07-11erts: Add test ets_SUITE:update_counter_table_growthSverker Eriksson
2016-07-11erts: Fix deadlock in ets:update_counter/4Sverker Eriksson
in 'set' with 'write_concurrency' when inserting default object causes table to grow and the bucket to split is protected by same lock as the key.
2016-07-11erts: Optimize db_finalize_dbterm_hashSverker Eriksson
Always free term after WUNLOCK_HASH
2016-07-09Fix infinite loop in merl_transformPéter Gömöri
This can happen when a syntactically incorrect text is passed to a merl:qquote/2,/3 call. The parse transform optimizes calls to some functions in merl by converting strings into templates at compile time. If this evaluation fails (in eval_call/4 - for example because of a sytanx error in the parsed text) the original function call should be kept unchanged. However in case of qquote/3 the call is converted into a combination of quote/2 and subst/2, but upon failure the original qquote/3 call is substituted into the wrong place. E.g.: this expression merl:qquote(Pos, Text, Env) is first converted to merl:subst(merl:quote(Pos, Text), Env) then if evaluating the quote call fails into merl:subst(merl:qquote(Pos, Text, Env), Env) and the expansion is run again on the internal qquote/3 argument resulting in an infinite loop. This is now fixed so in case of failure the original qquote/3 call is kept.
2016-07-08erts: Fix GC overrun bug in 'bsl' op with small Op1Sverker Eriksson
Symptom: VM abort "Overrun stack and heap" Problem: The temporary bignum created in buffer tmp_big[] will be part of the GC initiated by TestHeapPreserve, but its size is not included which can cause the GC to overflow if very unlucky. Solution: Do not include tmp_big in the GC.
2016-07-08erts: Add test ets_SUITE:update_counter_table_growthSverker Eriksson
2016-07-08erts: Fix deadlock in ets:update_counter/4Sverker Eriksson
in 'set' with 'write_concurrency' when inserting default object causes table to grow and the bucket to split is protected by same lock as the key.
2016-07-08erts: Optimize db_finalize_dbterm_hashSverker Eriksson
Always free term after WUNLOCK_HASH
2016-07-08Merge branch 'maint'Ingela Anderton Andin
2016-07-08Merge branch 'ingela/odbc/ctify' into maintIngela Anderton Andin
* ingela/odbc/ctify: odbc: Convert doc clauses form test_server to ct odbc: Replace test_server with ct eqvivalents odbc: Remove legacy config macros odbc: Remove legacy suite clauses from test suites
2016-07-08Merge branch 'maint'Ingela Anderton Andin
2016-07-08Merge branch 'ingela/ssl/ECC-select-hash-sign/OTP-13711' into maintIngela Anderton Andin
* ingela/ssl/ECC-select-hash-sign/OTP-13711: ssl: Correct handling of signature algorithm selection ssl: Simplify and refactor tests
2016-07-08ssl: Correct handling of signature algorithm selectionIngela Anderton Andin
In TLS-1.2 the selection of the servers algorithms and the the possible selection of algorithms for the client certificate verify message have different requirements.
2016-07-08ssl: Simplify and refactor testsIngela Anderton Andin
Tests in ECC_SUITE did not always use the certs implied by the name. Variable naming also confused the intent. ssl_certificate_verify_SUITE did not clean up properly and tests could fail due to cache problems.
2016-07-08erts: Check if return_to trace is enabled for bifLukas Larsson
We have to do an extra check if the return_to trace is enabled here as it may have been cleared by the bif after the flags where created by the call_trace.
2016-07-08[sasl test] Skip tests on slow hostSiri Hansen
release_handler_SUITE:otp_9395_update_many_mods and otp_9395_rm_many_mods often fail on test host 'nain' due to a very slow sys call. These tests are now skipped on this host.
2016-07-08[sasl test] Catch erlang:port_close/1Siri Hansen
After starting a node with open_port({spawn_executable,...},...), the resulting port is closed both automatically and by the calling rh_test_lib:cmd/3. To avoid 'badarg' in the case when the automatic is faster, the call to erlang:port_close/1 is now catched.
2016-07-08[ct test] Extent node startup timeouts in netconfc_remote_SUITESiri Hansen
2016-07-08[ct test] Monitor netconf server during transactionSiri Hansen
Netconf client tests fail every now and then with 'table_trans_timeout' with no obvious reason. A monitor of the maint netconf server process is now added - in case this process crashes during the transaction.
2016-07-07Merge branch 'maint'Sverker Eriksson
2016-07-07Merge branch 'sverker/child-setup-debugging' into maintSverker Eriksson
2016-07-07Merge branch 'maint'Sverker Eriksson
2016-07-07Merge branch 'sverker/spawn-driver-env-test' into maintSverker Eriksson
2016-07-07Merge branch 'maint'Hans Bolinder
* maint: wx: Prepare for using Erlang types and specs syntax_tools: Improve types syntax_tools: Improve seealso:s referring to types erl_docgen: Allow 'seealso' in 'name' erl_docgen: Generate type links in callback module creating erlref erl_docgen: Correct callback module for creating erlref erl_docgen: Improve callback module for creating erlref edoc: Correct types
2016-07-07Merge branch 'hasse/erl_docgen/generated_type_links/ERL-120/OTP-13720' into ↵Hans Bolinder
maint * hasse/erl_docgen/generated_type_links/ERL-120/OTP-13720: wx: Prepare for using Erlang types and specs syntax_tools: Improve types syntax_tools: Improve seealso:s referring to types erl_docgen: Allow 'seealso' in 'name' erl_docgen: Generate type links in callback module creating erlref erl_docgen: Correct callback module for creating erlref erl_docgen: Improve callback module for creating erlref edoc: Correct types
2016-07-07wx: Prepare for using Erlang types and specsHans Bolinder
Create correct links to datatypes outside of the wx application. The added time for generating the doc/specs/specs_* files is unwelcome (they are currently not used).
2016-07-07syntax_tools: Improve typesHans Bolinder
2016-07-07syntax_tools: Improve seealso:s referring to typesHans Bolinder
Extract specs och types from source files, which ensures that seealso:s referring to, for example, erl_parse:abstract_form(), are assigned working links.
2016-07-07erl_docgen: Allow 'seealso' in 'name'Hans Bolinder
2016-07-07erl_docgen: Generate type links in callback module creating erlrefHans Bolinder
Create links to types, but generate no links to local types.
2016-07-07erl_docgen: Correct callback module for creating erlrefHans Bolinder
Show map fields correctly.
2016-07-07erl_docgen: Improve callback module for creating erlrefHans Bolinder
Create `Module:Type()' instead of `Type() (see module Module)'.
2016-07-07edoc: Correct typesHans Bolinder
2016-07-07Merge branch 'maint'Hans Bolinder
* maint: syntax_tools: Make erl_tidy work on input file with tilde
2016-07-07Merge branch ↵Hans Bolinder
'mbucc/syntax_tools/fix_erl_tidy_tilde/ERL-151/PR-1071/OTP-13725' into maint * mbucc/syntax_tools/fix_erl_tidy_tilde/ERL-151/PR-1071/OTP-13725: syntax_tools: Make erl_tidy work on input file with tilde
2016-07-06check_process_code: Sweep HiPE stack for literalsMagnus Lång
Because check_process_code neglected checking the HiPE stack for references to the literal area, such references would survive the purge and subsequent deletion of a module and its literal area. These dangling references would then cause incorrect behaviour or even hard crashes of the VM. By simply adding a scan of the HiPE stack to check_process_code and erts_garbage_collect_literals, this problem is fixed. In order to support full stack walks without deleting the graylimit trap, a new stack walking interface function, nstack_walk_init_sdesc_ignore_trap() was introduced.
2016-07-06syntax_tools: Make erl_tidy work on input file with tildeMark Bucciarelli
See also http://bugs.erlang.org/browse/ERL-151.