aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-10-04Merge branch 'bjorn/compiler/misc-fixes'Björn Gustavsson
* bjorn/compiler/misc-fixes: beam_ssa: Remove unnecessary beam_ssa: prefixes beam_ssa_bsm: Fix replacement of variables in a remote call
2018-10-04beam_ssa: Remove unnecessary beam_ssa: prefixesBjörn Gustavsson
2018-10-04beam_ssa_bsm: Fix replacement of variables in a remote callBjörn Gustavsson
Co-authored-by: John Högberg <[email protected]>
2018-10-04Merge pull request #1973 from ↵John Högberg
jhogberg/john/compiler/improve-named-funs/OTP-15273/ERL-639 Optimize named funs and fun-wrapped macros
2018-10-03erts: Refactor out DbRouteKey structSverker Eriksson
to not abuse DbTerm.
2018-10-03erts: Remove dead code in erl_db_catreeSverker Eriksson
'parent' is route node and 'neighbor' is base node, they can never be equal. 'neighbor_parent' has already been set correctly for all cases.
2018-10-03erts: Fix bug in erl_db_catreeSverker Eriksson
Search stack must be cleared before retry.
2018-10-03erts: Remove "dynamic" lock order supportSverker Eriksson
2018-10-03erts: Add lock order check for route nodesSverker Eriksson
Lock order is reverse tree depth, from leafs toward root. This solution may eventually fail if running too long as route nodes do not increase their 'lc_order' in a join operation when they move up in the tree. But who runs a VM with lock-checker for such a long time?
2018-10-03erts: Add lock order check of erl_db_catree base nodesSverker Eriksson
Lock order is key term order, so each base node needs its own key if lock check is enabled.
2018-10-03erts: Add Erlang term order to lock checkerSverker Eriksson
2018-10-03erts: Add some ERTS_RESTRICT pointersSverker Eriksson
2018-10-03erts: Do some refactoring in erl_db_catree.cSverker Eriksson
Fewer variables with shorter names and prefer DbTableCATree over DbTableCommon.
2018-10-03erts: Improve deallocation of CATree nodesSverker Eriksson
Update table memory stats before scheduling free to not be dependent on deallocation order with main table struct.
2018-10-03erts: Refactor rename union in DbTableCATreeNodeSverker Eriksson
u as in union
2018-10-03erts: Fix compiler warning in erl_bif_binary.cSverker Eriksson
2018-10-03Merge branch 'sverker/ets-test-cuddle'Sverker Eriksson
* sverker/ets-test-cuddle: ets_SUITE: Remove more redundant option combos ets_SUITE: Try avoid redundant option combos ets_SUITE: Reduce table type combos by removing "void" ets_SUITE: Optimize throughput_benchmark
2018-10-03Merge branch 'maint'Raimo Niskanen
2018-10-03Merge branch 'raimo/test-cuddling' into maintRaimo Niskanen
* raimo/test-cuddling: Decrease probability for failed histogram
2018-10-03Merge pull request #1972 from josevalim/jv-nospawn_processBjörn Gustavsson
Introduce the no_spawn_compiler_process option
2018-10-03Optimize named funs and fun-wrapped macrosJohn Högberg
If a fun is defined locally and only used for calls, it can be replaced with direct calls to the relevant function. This greatly speeds up "named functions" (which rely on make_fun to recreate themselves) and macros that wrap their body in a fun.
2018-10-03Merge branch 'maint'Björn Gustavsson
* maint: Fix rare bug in binary matching (again) Conflicts: lib/compiler/src/beam_bsm.erl lib/compiler/src/sys_core_bsm.erl
2018-10-03Merge branch 'bjorn/compiler/fix-binary-matching/ERL-689/OTP-15335' into maintBjörn Gustavsson
* bjorn/compiler/fix-binary-matching/ERL-689/OTP-15335: Fix rare bug in binary matching (again)
2018-10-02inets: Fix handling of 'Content-Type' (httpc)Péter Dimitrov
'Content-Type' is sent when it is explicitly set as a header or there is a non-empty body in the request. Former implementation dropped the explicit 'Content-Type' when the request had an empty body. Change-Id: I00a9e4a5011f9d28c04c0dfc5fe1561b1ab7eb09
2018-10-02inets: Fix handling of 'Content-Length' (httpc)Péter Dimitrov
RFC7230 3.3.2 A sender MUST NOT send a 'Content-Length' header field in any message that contains a 'Transfer-Encoding' header field. Change-Id: I568fc65cafe3ab30baad56c002459ff74e4dbb28
2018-10-01.gitignore: Exclude *_r21_SUITE.erlJohn Högberg
We forgot to do this in the BSM optimization branch, and this is as good a time as any to get it fixed.
2018-10-01Merge branch 'maint'Lukas Larsson
2018-10-01Fix spelling of intended in erl_nif docsLukas Larsson
2018-10-01Introduce the no_spawn_compiler_process optionJosé Valim
By default, all code is compiled in a separate process which is terminated at the end of compilation. However, some tools, like Dialyzer or compilers for other BEAM languages, may already manage their own worker processes and spawning an extra process may slow the compilation down. In such scenarios, you can pass this option to stop the compiler from spawning an additional process. This generalizes commit 657760e18087b0cdbaecc5e96e46f6f66bc9497a.
2018-10-01Merge branch 'richcarl/erts/erl_init-cleanup/OTP-15336'Lukas Larsson
* richcarl/erts/erl_init-cleanup/OTP-15336: sasl: Order systools_make:preloaded modules alphabetically Update preloaded modules Move calling on_load for preloaded modules to erl_init Make erl_init.c pass the boot module to erl_init.beam Remove obsolete comment text Remove undocumented and unused -# display_items emulator option Remove broken and undocumented boot function emulator option Replace remaining references to otp_ring0 with erl_init Drop otp_ring0, using erl_init instead Update preloaded modules Add erl_init module Conflicts: erts/emulator/beam/erl_init.c erts/preloaded/ebin/erl_prim_loader.beam erts/preloaded/ebin/erl_tracer.beam erts/preloaded/ebin/erlang.beam erts/preloaded/ebin/erts_code_purger.beam erts/preloaded/ebin/erts_dirty_process_signal_handler.beam erts/preloaded/ebin/erts_internal.beam erts/preloaded/ebin/erts_literal_area_collector.beam erts/preloaded/ebin/init.beam erts/preloaded/ebin/otp_ring0.beam erts/preloaded/ebin/prim_buffer.beam erts/preloaded/ebin/prim_eval.beam erts/preloaded/ebin/prim_file.beam erts/preloaded/ebin/prim_inet.beam erts/preloaded/ebin/prim_zip.beam erts/preloaded/ebin/zlib.beam
2018-10-01Update primary bootstrapBjörn Gustavsson
2018-10-01Merge branch 'bjorn/compiler/fix-r21-option'Björn Gustavsson
* bjorn/compiler/fix-r21-option: Fix code generation of binary instructions with the r21 option
2018-10-01Merge pull request #1965 from bjorng/bjorn/compiler/misc-cleanupsBjörn Gustavsson
Minor cleanups and bug fixes of the compiler
2018-10-01Merge branch 'ingela/ssl/extensions-and-TLS-1.3-handshaking'Ingela Anderton Andin
* ingela/ssl/extensions-and-TLS-1.3-handshaking: ssl: Correct extension decoding and dialyzer spec ssl: Generalize extensions handling
2018-10-01ssl: Correct extension decoding and dialyzer specIngela Anderton Andin
2018-10-01Merge branch 'maint'Siri Hansen
2018-10-01Merge branch 'siri/appups-21.2' into maintSiri Hansen
* siri/appups-21.2: Update kernel, stdlib and sasl appups for OTP-21.2
2018-09-28Merge branch 'sverker/erts/cleanup-efile-argc-checks'Sverker Eriksson
* sverker/erts/cleanup-efile-argc-checks: erts: Remove unnecessary NIF argc tests
2018-09-28ets_SUITE: Remove more redundant option combosSverker Eriksson
meta_wb smp_insert smp_fixed_delete smp_select_delete
2018-09-28Fix code generation of binary instructions with the r21 optionBjörn Gustavsson
OTP 22 extends the binary instructions to support a Y register destination. When giving an option to compile for an earlier release, make sure that binary instructions don't use a Y register destination, by rewriting the binary instructions to use an X register destination and adding a `move` instruction to move the value to the Y register.
2018-09-28Merge pull request #1958 from jhogberg/john/compiler/ssa-bsm-optJohn Högberg
Rewrite BSM optimizations in the new SSA-based intermediate format
2018-09-28hipe: Document new limitations and disable known failing testsJohn Högberg
2018-09-28Remove unused instruction bs_context_to_binary from the compilerJohn Högberg
This has been superseded by bs_get_tail/3. Note that it is NOT removed from the emulator or beam_disasm, as old modules are still legal.
2018-09-28beam_ssa_pre_codegen: Remove unused variable aliasing supportBjörn Gustavsson
Remove the variable aliasing support that was needed for the old beam_bsm pass.
2018-09-28Improve coverage of 21 compatibilityBjörn Gustavsson
2018-09-28beam_ssa_opt: Eliminate redundant match alignment testsJohn Högberg
The beam_ssa_bsm pass welds chained matches together, but the match expressions themselves are unchanged and if there's a tail alignment check it will be done each time. This subpass figures out the checks we've already done and deletes the redundant ones.
2018-09-28Rewrite BSM optimizations in the new SSA-based intermediate formatJohn Högberg
This commit improves the bit-syntax match optimization pass, leveraging the new SSA intermediate format to perform much more aggressive optimizations. Some highlights: * Watch contexts can be reused even after being passed to a function or being used in a try block. * Sub-binaries are no longer eagerly extracted, making it far easier to keep "happy paths" free from binary creation. * Trivial wrapper functions no longer disable context reuse.
2018-09-28Decrease probability for failed histogramRaimo Niskanen
2018-09-28Fix rare bug in binary matching (again)Björn Gustavsson
2e40d8d1c51a attempted fix a bug in binary matching, but it only fixed the bug for the minimized test case. This commit removes the previous fix and fixes the bug in a more effective way. See the comments in the new code in `sys_core_bsm` for an explanation. This commit restores the optimizations in string.erl and dets_v9.erl that the previous fix disabled. I have not found any code where this commit will disable optimizations when they are actually safe. There are some changes to the code in ssl_cipher.erl in that some bs_start_match2 instruction did not reuse the binary register for the match context, but the delayed sub binary optimizations was never applied to the code in the first place. https://bugs.erlang.org/browse/ERL-689
2018-09-27ssl: Generalize extensions handlingIngela Anderton Andin
As TLS 1.3 introduces more extensions in other places than in hello messages we like to have generalize extension handling encode/decode with some hello wrappers. Also extend property tests of handshake encod/decode