Permalink
Commits on Apr 23, 2015
  1. @zhird

    Merge branch 'maint'

    Conflicts:
    	OTP_VERSION
    zhird committed Apr 23, 2015
Commits on Apr 22, 2015
  1. @sverker

    Merge branch 'sverk/pr632/prevent-illegal-nif-terms/OTP-12655'

    * sverk/pr632/prevent-illegal-nif-terms/OTP-12655:
      erts: Reject non-finite float terms in erl_drv_output_term
      erts: Remove old docs about experimental NIF versions.
      erts: Add enif_has_pending_exception
      erts: Clearify erl_nif documentation about badarg exception
      erts: Fix compile warning in enif_make_double
      erts: Fix divide by zero compile error in nif_SUITE.c
      erts: Fix isfinite for windows
      Ensure NIF term creation disallows illegal values
    sverker committed Apr 22, 2015
  2. Updated OTP version

    Erlang/OTP committed Apr 22, 2015
  3. Update release notes

    Erlang/OTP committed Apr 22, 2015
  4. Merge branch 'hans/ssh/banner_grabbing/OTP-12659' into maint-17

    * hans/ssh/banner_grabbing/OTP-12659:
      ssh: added id_string option for server and client
    Erlang/OTP committed Apr 22, 2015
  5. Merge branch 'hans/inets/banner_grabbing/OTP-12661' into maint-17

    * hans/inets/banner_grabbing/OTP-12661:
      inets: Add value 'none' in server_tokens config
    Erlang/OTP committed Apr 22, 2015
  6. @bjorng

    Update primary bootstrap

    bjorng committed Apr 22, 2015
  7. @bjorng

    Merge branch 'bjorn/compiler/eprof'

    * bjorn/compiler/eprof:
      v3_life: Optimize updating of the variable data base
      beam_jump: Replace use of lists:dropwhile/2 with a custom function
      beam_asm: Eliminate unnecessary use of iolist_to_binary/1
      beam_bsm: Optimize btb_index()
      beam_type: Eliminate redundant calls to checkerror_1/2
      erl_expand_records: Simplify handling of call_ext instructions
      beam_utils: Optimize index_labels_1/2
      beam_block: Optimize matching of binary literals
      Move rewriting of bs_match from beam_clean to beam_z
      v3_codegen: Reduce cost for fixing up bs_match_string instructions
      v3_codegen: Optimize "turning" of y registers
      v3_kernel: Optimize subst_vsub/3
      orddict: Eliminate unnecessary consing in store/3 and others
      compile: Add the {eprof,Pass} option for easy eprof running
      compile: Eliminate unnecessary wrappers for compiler passes
      Add z_SUITE to validate loaded code
      test suite: Always place .core files in data directories
      test suites: Unload modules compiled from .core or .S
      compilation_SUITE: Unload tested modules using the code server
    bjorng committed Apr 22, 2015
  8. @bjorng

    v3_life: Optimize updating of the variable data base

    Updating of the variable data base takes most of the time.
    bjorng committed Apr 19, 2015
  9. @bjorng

    beam_jump: Replace use of lists:dropwhile/2 with a custom function

    The use of lists:dropwhile/2 is noticeable in the eprof results.
    bjorng committed Apr 18, 2015
  10. @bjorng
  11. @bjorng

    beam_bsm: Optimize btb_index()

    lists:dropwhile/2 and the fun in btb_index_1/2 shows up in the
    top 10 list of eprof. Replace dropwhile with a special-purpose
    function for a tiny increase in speed.
    bjorng committed Apr 18, 2015
  12. @bjorng

    beam_type: Eliminate redundant calls to checkerror_1/2

    Profiling shows that the excution time for checkerror_1/2 could
    be be near the top even for modules without any floating point
    operations.
    
    It turns out that the complexity of simplify_float_1/4 is quadratic.
    checkerror/1 is called with the growing accumulator for each
    iteration. checkerror/1 will traverse the entire accumulated list
    *unless* some floating point operations are used.
    
    We can avoid this situation if we only call checkerror/1 when there
    are live floating point registers. We can also avoid calling flush/3
    if there are no live floating point registers.
    bjorng committed Apr 16, 2015
  13. @bjorng

    erl_expand_records: Simplify handling of call_ext instructions

    The erl_expand_records module have inherited code from sys_pre_expand.
    We can simplify the code for handling the call_ext instruction to
    make the code clearer and a smidge faster.
    bjorng committed Apr 16, 2015
  14. @bjorng

    beam_utils: Optimize index_labels_1/2

    The execution time for beam_utils:index_labels_1/2 is among
    the longest in the beam_bool, beam_bsm, beam_receive, and
    beam_trim compiler passes. Therefore it is worthwhile to do
    the minor optimization of replacing a call to lists:dropwhile/2
    with a special-purpose drop_labels function.
    bjorng committed Apr 17, 2015
  15. @bjorng

    beam_block: Optimize matching of binary literals

    When matching a binary literal as in:
    
      <<"abc">> = Bin
    
    the compiler will produce a sequence of three instructions
    (some details in the instructions removed for simplicity):
    
      bs_start_match2 Fail BinReg CtxtReg
      bs_match_string Fail CtxtReg "abc"
      bs_test_tail2 Fail CtxtReg 0
    
    The sequence can be replaced with:
    
      is_eq_exact Fail BinReg "abc"
    bjorng committed Apr 15, 2015
  16. @bjorng

    Move rewriting of bs_match from beam_clean to beam_z

    The actual bs_match_string instruction has four operands:
    
       bs_match_string {f,Lbl} Ctxt NumBits {string,ListOfBytes}
    
    However, v3_codegen emits a more compact representation where
    the bits to match are packaged in a bitstring:
    
       bs_match_string {f,Lbl} Ctxt Bitstring
    
    Currently, beam_clean:clean_labels/1 will rewrite the compact
    representation to the final representation. That is unfortunate
    since clean_labels/1 is called by beam_dead, which means that
    the less compact representation will be introduced long before
    it is actually needed by beam_asm. It will also complicate any
    optimizations that we might want to do.
    
    Move the rewriting of bs_match_string from beam_clean:clean_labels/1
    to the beam_z pass, which is the last pass executed before
    beam_validator and beam_asm.
    bjorng committed Apr 18, 2015
  17. @bjorng

    v3_codegen: Reduce cost for fixing up bs_match_string instructions

    Commit b76588f introduced an optimization of the compile time of
    huge functions with many bs_match_string instructions. The
    optimization is done in two passes. The first pass coalesces adjacent
    bs_match_string instructions. To avoid copying bitstrings multiple
    times, the bitstrings in the instructions are combined in to a (deep)
    list. The second pass goes through all instructions in the function
    and combines the list of bitstrings to a single bitstring in all
    bs_match_string instructions.
    
    The second pass (fix_bs_match_string) is run on all instructions in
    each function, even if there are no bs_match_instructions in the
    function. While fix_bs_match_string is not a bottleneck (it is a
    linear pass), its execution time is noticeable when profiling some
    modules.
    
    Move the execution of the second pass to the select_binary()
    function so that it will only be executed for instructions that
    do binary matching. Also take the opportunity to optimize away
    uses of bs_restore2 that occour directly after a bs_save2. That
    optimimization is currently done in beam_block, but it can be
    done essentially for free in the same pass that fixes up
    bs_match_string instructions.
    bjorng committed Apr 14, 2015
  18. @bjorng

    v3_codegen: Optimize "turning" of y registers

    Profiling shows that the execution time for "turning" y registers
    is noticeable for some modules (e.g. S1AP-PDU-Contents from the
    asn1 test suite). We can reduce the impact on running time by
    special-casing important instructions. In particular, there is
    no need to look for y registers in the list argument for a
    select_val instruction.
    bjorng committed Apr 14, 2015
  19. @bjorng

    v3_kernel: Optimize subst_vsub/3

    Profiling shows that subst_vsub/3 dominates the running time. It
    is therefore worthwhile optimizing it.
    bjorng committed Apr 13, 2015
  20. @bjorng

    orddict: Eliminate unnecessary consing in store/3 and others

    As a minor optimization, eliminate unnecessary cons operations
    in store/3, append/3, append_list/3, update/4, and update_counter/3.
    bjorng committed Apr 14, 2015
  21. @bjorng

    compile: Add the {eprof,Pass} option for easy eprof running

    To run eprof for a compiler pass:
    
      erlc +'{eprof,beam_asm}' file.erl
    
    The name of the compiler pass is the name as printed when
    'time' option is used. It is usually, but not always, the module
    name for the compiler pass.
    bjorng committed Apr 16, 2015
  22. @bjorng

    compile: Eliminate unnecessary wrappers for compiler passes

    Several compiler passes have unnecessary wrapper functions that
    can be easily eliminated.
    bjorng committed Apr 16, 2015
  23. @bjorng

    Add z_SUITE to validate loaded code

    If we want to have test cases that run eprof, we must make sure that
    there are no modules loaded that don't have a working module_info/1
    function, since eprof calls module_info(functions) to retrieve the
    list of functions in the module. Some test cases load modules compiled
    from Core Erlang that don't have any module_info/1 functions, so
    we will need make sure that all such modules have been unloaded.
    
    Add z_SUITE:loaded/1 to run after all other test cases to verify that
    all modules that the code server consider loaded are indeed loaded and
    all have working module_info/0,1 functions.
    bjorng committed Apr 20, 2015
  24. @bjorng

    test suite: Always place .core files in data directories

    For tidiness, always place .core files in data directories.
    bjorng committed Apr 20, 2015
  25. @bjorng

    test suites: Unload modules compiled from .core or .S

    The .core or .S files that are compiled in the test cases
    may lack module_info/0,1 functions, which will cause problems if
    we (for example) try to run eprof later. To avoid that problem,
    unload each module directly after testing it.
    bjorng committed Apr 20, 2015
  26. Merge branch 'hb/hipe/opaque_bugfix/OTP-12666'

    * hb/hipe/opaque_bugfix/OTP-12666:
      hipe: Fix a bug in the handling of opaque types
    Hans Bolinder committed Apr 22, 2015
  27. @IngelaAndin

    Merge branch 'ia/pr/678/OTP-1267'

    * ia/pr/678/OTP-1267:
      Revert "Add workaround for problems with s_client defaults"
      ssl: Add unit test case
      ssl: Ignore signature_algorithm (TLS 1.2 extension) sent to TLS 1.0/1 server
    IngelaAndin committed Apr 22, 2015
  28. @IngelaAndin

    Revert "Add workaround for problems with s_client defaults"

    This reverts commit a3cf4eb.
    
    This workaround is no longer needed as the, TLS-1.2 extension,
    signature_algorithm is now correctly ignored by previous TLS versions.
    IngelaAndin committed Apr 20, 2015
Commits on Apr 21, 2015
  1. @sverker

    Merge branch 'sverk/etp-map'

    * sverk/etp-map:
      erts: Add map support to gdb etp command
      erts: Add etp_the_non_value
    sverker committed Apr 21, 2015
  2. hipe: Fix a bug in the handling of opaque types

    An opaque type ?opaque(_) was put in a list where #opaque{} was
    expected.
    Hans Bolinder committed Apr 21, 2015
  3. @zhird

    Merge branch 'mikpe/configure-linux-spelling'

    * mikpe/configure-linux-spelling:
      erts/configure.in: handle more 'linux' spellings
    zhird committed Apr 21, 2015
  4. @zhird

    Merge branch 'vinoski/minor-erlang-el-fixes'

    * vinoski/minor-erlang-el-fixes:
      Minor fixes to emacs erlang-mode
    zhird committed Apr 21, 2015
  5. @zhird

    Merge branch 'zandra/fix-ssl-obsolete-arity'

    * zandra/fix-ssl-obsolete-arity:
      add arity to obsolete_1(ssl, negotiated_next_protocol, 1)
    zhird committed Apr 21, 2015
  6. @psyeugenic

    Merge branch 'egil/fix-halfword-cmp'

    * egil/fix-halfword-cmp:
      erts: Fix halfword compare
    psyeugenic committed Apr 21, 2015