aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2015-02-25Update primary bootstrapBjörn Gustavsson
2015-02-25Merge branch 'nox/stdlib/erl_lint-maps/OTP-12515'Björn Gustavsson
* nox/stdlib/erl_lint-maps/OTP-12515: Properly lint map expressions in erl_lint
2015-02-25Merge branch 'nox/stdlib/erl_lint-expr_list'Björn Gustavsson
* nox/stdlib/erl_lint-expr_list: Remove a few superfluous vt operations in erl_lint
2015-02-24Merge branch 'maint'Zandra Hird
2015-02-24Merge branch 'zandra/xcomp-power-pc-dso-linux-fix' into maintZandra Hird
* zandra/xcomp-power-pc-dso-linux-fix: update ppc xcomp file
2015-02-24Merge branch 'maint'Zandra Hird
2015-02-24Merge branch 'nifoc/inet_doc_fixes' into maintZandra Hird
* nifoc/inet_doc_fixes: Fix typos ("received to the socket")
2015-02-23Merge branch 'richcarl/syntax_tools-remove-mnemosyne'Zandra Hird
* richcarl/syntax_tools-remove-mnemosyne: Remove Mnemosyne rules support from EDoc Remove support for Mnemosyne rules Remove support for mnemosyne-style record field access OTP-12511
2015-02-23update ppc xcomp fileZandra Hird
2015-02-23Merge branch 'mikpe/remove-perfctr-support'Zandra Hird
* mikpe/remove-perfctr-support: remove perfctr support OTP-12508
2015-02-23Merge branch 'maint'Peter Andersson
2015-02-23Merge remote-tracking branch ↵Peter Andersson
'origin/peppe/common_test/include_file_problems' into maint * origin/peppe/common_test/include_file_problems: Fix failing test case Add valid include path to epp in erl2html2 and fix crashing code OTP-12419
2015-02-23Update primary bootstrapBjörn Gustavsson
2015-02-23Merge branch 'bjorn/compiler/beam_jump-share'Björn Gustavsson
* bjorn/compiler/beam_jump-share: beam_jump: Don't jump into the middle of a 'try'
2015-02-23Merge branch 'bjorn/compiler/sys_core_fold'Björn Gustavsson
* bjorn/compiler/sys_core_fold: sys_core_fold: Fix non-tail-recursive list comprehensions
2015-02-23Merge branch 'josevalim/stdlib/dict'Björn Gustavsson
* josevalim/stdlib/dict: Short-circuit common dict operations
2015-02-22Remove a few superfluous vt operations in erl_lintAnthony Ramine
Given any Vt1 and Vt2 values, vtmerge(vtnew(Vt1, Vt2), vtold(Vt1, Vt2)) is always equal to Vt1.
2015-02-20Merge branch 'siri/cover-perf/OTP-12330'Siri Hansen
* siri/cover-perf/OTP-12330: [test_server] Use new, more efficient functions in cover [cover] Improve performance
2015-02-20[test_server] Use new, more efficient functions in coverSiri Hansen
2015-02-20[cover] Improve performanceSiri Hansen
Add functions for cover compilation and analysis on multiple files. This allows for more parallelisation. All functions for cover compilation can now take a list of modules/files. cover:analyse/analyze and cover:analyse_to_file/analyze_to_file can be called without the Modules arguement in order to analyse all cover compiled and imported modules, or with a list of modules. Also, the number of lookups in ets tables is reduced, which has also improved the performance when analysing and resetting cover data.
2015-02-20Merge branch 'raimo/infinite-loop-gethostbyname/OTP-12133' into maintRaimo Niskanen
* raimo/infinite-loop-gethostbyname/OTP-12133: Remove infinite loop in inet:gethostbyname_tm/4
2015-02-20Update primary bootstrapBjörn Gustavsson
2015-02-20Merge branch 'bjorn/compiler/beam_jump'Björn Gustavsson
* bjorn/compiler/beam_jump: beam_jump: Eliminate pathologically slow compilation
2015-02-20Merge branch 'bjorn/compiler/beam_validator'Björn Gustavsson
* bjorn/compiler/beam_validator: beam_validator: Exit immediately on crashes beam_validator: Remove the file/1 and files/1 functions beam_validator: Remove support for all other unsupported instructions beam_validator: Remove support for unsupported bit syntax instructions
2015-02-20Merge branch 'bjorn/compiler/maps'Björn Gustavsson
* bjorn/compiler/maps: beam_validator: Tighten and simplify map validation code beam_utils: Correct test for has_map_fields in is_pure_test/1 map_SUITE: Cover comparisons of 'nil' in v3_codegen
2015-02-20sys_core_fold: Fix non-tail-recursive list comprehensionsBjörn Gustavsson
649d6e73 simplified opt_simple_let_2/6 a little bit too much, so that some list comprehensions in effect context were not properly tail-recursive.
2015-02-20beam_jump: Eliminate pathologically slow compilationBjörn Gustavsson
José Valim noticed that code such as: match(1) -> 1; match(2) -> 2; match(3) -> 3; ... match(1000) -> 1000. would compile very slowly. The culprit is opt/3 in beam_jump. What happens is that opt/3 will rewrite this code: select_val ... label 1 jump 1000 label 2 jump 1000 ... label 999 jump 1000 label 1000 return very slowly to this code: select_val ... label 1 label 2 ... label 999 label 1000 return The reason for the slowness is that when opt/3 sees this sequence: label 1 jump 1000 ... it will remove the label (storing it in a dictionary), and pick up the previously processed instruction from the accumulator: select_val ... jump 1000 label 2 jump 1000 ... That is done in order to process all labels before the jump and also to get rid of the jump instruction if the previous instruction is an "unreachable after". In this case, re-processing the sequence will remove the now unreachable jump instruction: select_val ... label 2 jump 1000 ... The problem is that re-processing the select_val instruction is expensive. The instruction has a list of 1000 labels, all of which will be added (again) to the set of referenced labels. The select_val instruction will be re-processed again and again until all labels and jumps have been gobbled up. In the original version of beam_jump, opt/3 was not called repeatedly until a fixpoint was found, but was expected to do all its optimizations in one pass. The fixpoint iteration was added later. Since we now have the fixpoint iteration, there is no need to do everything in a single pass. When we encounter a jump, we will collect all previously seen labels and put them into the dictionary, and then we will move on. As a further optimization, we will look for sequences like this: jump X label ... jump X and replace them with: label ... jump X In the example above, that will avoid 1000 updates of the dictionary. After applying this optimization, compilation of the pattern went from roughly 55 s to 0.1 s for the example above but with 10000 clauses. Reported-by: José Valim
2015-02-20Merge branch 'maint'Zandra Hird
2015-02-20Merge branch 'ethercrow/export_gen_udp_socket' into maintZandra Hird
* ethercrow/export_gen_udp_socket: Export type gen_udp:socket/0
2015-02-20beam_jump: Don't jump into the middle of a 'try'Björn Gustavsson
The code sharing optimization could produce a jump into the middle of a 'try' block. beam_validator would reject the code. Reported-by: Ulf Norell
2015-02-19Fix typos ("received to the socket")Daniel Kempkens
2015-02-19Merge branch 'dgud/erlang/pr/116'Dan Gudmundsson
* dgud/erlang/pr/116: observer: Add SASL log view for processes
2015-02-19observer: Add SASL log view for processescrownedgrouse
Add a new menu to toggle log view. Disabled by default. Disabled if rb_server already started on observed node, in order not to interfere with somebody else. If enabled, add a tab in process view where log entries related to pid process are shown. Need an observed node with at least a version R16B2, due to the use of newly capability to rb to write into a file descriptor (on the observing node).
2015-02-19Short-circuit common dict operationsJosé Valim
Stop traversing all segments and buckets of empty dictionaries by adding a clause that checks the dictionary size. This improved compilation of an erlang project from 7.5s to 5.5s seconds when trying out a sample implementation of erl_lint that uses dicts.
2015-02-19Merge branch 'maint'Erland Schönbeck
2015-02-19Merge branch 'erland/diameter/time/OTP-12439' into maintErland Schönbeck
* erland/diameter/time/OTP-12439: otp_SUITE: Ignore diameter undefined function errors
2015-02-19Merge branch 'maint'Ingela Anderton Andin
2015-02-19Merge branch 'ia/ssl/delete-vs-remove' into maintIngela Anderton Andin
* ia/ssl/delete-vs-remove: ssl: remove -> delete
2015-02-19remove perfctr supportMikael Pettersson
Perfctr is a Linux kernel extension that allows programmatic access to the performance monitoring counters found in most current CPUs. However, development of perfctr ceased after 2010, and it cannot be used with Linux kernels newer than 2.6.32. Therefore the perfctr support code in the Erlang VM is effectively dead code, so this patch removes it.
2015-02-18beam_validator: Exit immediately on crashesBjörn Gustavsson
The beam_validator catches all exceptions and collect them. It makes more sense to don't catch 'error' and 'exit' exceptions, but to just print out the name of the current function and pass on the exception just as all other compilation passes do. Those kind of exceptions are the symptoms of the kind of severe but easily catched bugs that occur during development.
2015-02-18beam_validator: Remove the file/1 and files/1 functionsBjörn Gustavsson
Before the beam_validator was added as compiler pass, it was a standalone module that could analyse existing .beam files and .S files. Even though beam_validator has been part of the compiler for many releases, it still supports the analysis of .beam and .S files. To reduce the code bloat and to improve coverage of beam_validator, remove the file/1 and files/1 functions and all associated help functions. We'll need to update the test suite, since some of the checked in .S files have errors that beam_validator ignores, but that will not be accepted when running them throught the compiler using the 'from_asm' option. In particular, we will need to export all functions that should be validated (since the beam_clean pass will remove any function that is not possible to call).
2015-02-18beam_validator: Remove support for all other unsupported instructionsBjörn Gustavsson
2015-02-18beam_validator: Remove support for unsupported bit syntax instructionsBjörn Gustavsson
2015-02-18beam_validator: Tighten and simplify map validation codeBjörn Gustavsson
The assert_strict_literal_termorder/1 function is used to validate the get_map_elements and has_map_fields instructions. In neither case is it useful to allow an empty lists of fields, so we should no longer allow an empty list. The mmap/2 function is cute, but it is used in only one place, so it is much simpler to write a special-purpose function to extract the keys from the list of map pairs.
2015-02-18beam_utils: Correct test for has_map_fields in is_pure_test/1Björn Gustavsson
The has_map_fields test was not recognized in is_pure_test/1, because beam_a has rewritten the {list,_} part of instruction.
2015-02-18map_SUITE: Cover comparisons of 'nil' in v3_codegenBjörn Gustavsson
2015-02-18Merge branch 'bjorn/stdlib/string-tokens/OTP-12422'Björn Gustavsson
* bjorn/stdlib/string-tokens/OTP-12422: Optimize string:tokens/2 Modernize and strengthen the test case for string:tokens/2
2015-02-18Optimize string:tokens/2Björn Gustavsson
We can save some time by reversing the original string before starting the tokenization. When there is only one separator, we can save even more time by treating that case specially so that we don't have to call lists:member/2 for each character.
2015-02-18otp_SUITE: Ignore diameter undefined function errorsErland Schönbeck
2015-02-18Merge branch 'maint'Zandra Hird