aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2017-09-14Add compile_info option to compileJosé Valim
This allows compilers built on top of the compile module to attach external compilation metadata to the compile_info chunk. For example, Erlang uses this chunk to store the compiler version. Elixir and LFE may augment this by also adding their own compiler versions, which can be useful when debugging. The deterministic option does not affect the user supplied compile_info. It is therefore the responsibility of external compilers to guarantee any added information does not violate the determinsitic option, if such option is supported. Finally, this code moves the building of the compile_info options to the compile module instead of beam_asm, moving all of the option mangling code to a single place.
2017-09-01Merge pull request #1554 from bjorng/bjorn/compiler/opt-bsm/ERL-444Björn Gustavsson
Eliminate unnecessary 'move' instructions OTP-14594
2017-08-31Merge branch 'maint'Sverker Eriksson
2017-08-31Merge PR-1543 from gootik/gootik-ets-docSverker Eriksson
Changes confusing example of a bad guard in ets:fun2ms
2017-08-31Merge branch 'maint'Rickard Green
* maint: Upgrade to PCRE 8.41 from PCRE 8.40
2017-08-31Merge branch 'rickard/pcre-8.41' into maintRickard Green
OTP-14574 * rickard/pcre-8.41: Upgrade to PCRE 8.41 from PCRE 8.40
2017-08-31Eliminate unnecessary 'move' instructionsBjörn Gustavsson
The compiler could sometimes emit unnecessary 'move' instructions in the code for binary matching, for example for this function: escape(<<Byte, Rest/bits>>, Pos) when Byte >= 127 -> escape(Rest, Pos + 1); escape(<<Byte, Rest/bits>>, Pos) -> escape(Rest, Pos + Byte); escape(<<_Rest/bits>>, Pos) -> Pos. The generated code would look like this: {function, escape, 2, 2}. {label,1}. {line,[{location,"t.erl",17}]}. {func_info,{atom,t},{atom,escape},2}. {label,2}. {test,bs_start_match2,{f,1},2,[{x,0},0],{x,0}}. {test,bs_get_integer2, {f,4}, 2, [{x,0}, {integer,8}, 1, {field_flags,[{anno,[17,{file,"t.erl"}]},unsigned,big]}], {x,2}}. {'%',{bin_opt,[17,{file,"t.erl"}]}}. {move,{x,0},{x,3}}. %% UNECESSARY! {test,is_ge,{f,3},[{x,2},{integer,127}]}. {line,[{location,"t.erl",18}]}. {gc_bif,'+',{f,0},4,[{x,1},{integer,1}],{x,1}}. {move,{x,3},{x,0}}. %% UNECESSARY! {call_only,2,{f,2}}. {label,3}. {line,[{location,"t.erl",20}]}. {gc_bif,'+',{f,0},4,[{x,1},{x,2}],{x,1}}. {move,{x,3},{x,0}}. %% UNECESSARY! {call_only,2,{f,2}}. {label,4}. {move,{x,1},{x,0}}. return. The redundant 'move' instructions have been marked. To avoid the 'move' instructions, we can extend the existing function is_context_unused/1 in v3_codegen. If v3_codegen can know that the match context will not be used again, it can reuse the register for the match context and avoid the extra 'move' instructions. https://bugs.erlang.org/browse/ERL-444
2017-08-31Merge branch 'maint'Björn Gustavsson
* maint: Make handling of match contexts stricter
2017-08-31Merge pull request #1553 from bjorng/bjorn/compiler/fix-beam_validatorBjörn Gustavsson
Make handling of match contexts stricter OTP-14591
2017-08-30Merge branch 'maint'Dan Gudmundsson
* maint: Always reply to sync requests
2017-08-30Merge branch 'dgud/kernel/fix-hanging-io/OTP-14571' into maintDan Gudmundsson
* dgud/kernel/fix-hanging-io/OTP-14571: Always reply to sync requests
2017-08-30Merge pull request #1530 from michalmuskala/beam-peep-optBjörn Gustavsson
Enhance optimisations in beam_peep
2017-08-30Make handling of match contexts stricterBjörn Gustavsson
beam_validator could fail issue a diagnostic when a register that was supposed to be a match context was not guaranteed to be a match context. The bug was in merging of types. Merging of a match context with another term would result in a match context. That is wrong. Merging should produce a more general type, not a narrower type. Also, the valid slots in two match contexts should be combined with 'band', not 'bor'.
2017-08-29Upgrade to PCRE 8.41 from PCRE 8.40Rickard Green
2017-08-29Merge branch 'maint'Anders Svensson
2017-08-29Merge branch 'anders/diameter/config_consistency/OTP-14555' into maintAnders Svensson
* anders/diameter/config_consistency/OTP-14555: Let strict_mbit and incoming_maxlen be configured per transport Let a service configure default transport options Rename type evaluable -> eval
2017-08-29Merge branch 'anders/diameter/upgrade/OTP-14552' into maintAnders Svensson
* anders/diameter/upgrade/OTP-14552: Fix compatibility of remote send
2017-08-29Merge branch 'anders/diameter/strict_capx/OTP-14546' into maintAnders Svensson
* anders/diameter/strict_capx/OTP-14546: Document transport_opt() strict_capx Rename transport_opt() capx_strictness to strict_capx
2017-08-29Merge branch 'anders/diameter/performance/OTP-14521' into maintAnders Svensson
* anders/diameter/performance/OTP-14521: Fix influence of decode_format on service events Work around more common_test woe
2017-08-29Merge branch 'anders/diameter/loopback_any/OTP-14544' into maintAnders Svensson
* anders/diameter/loopback_any/OTP-14544: Use loopback/any config in examples suite Handle loopback/any as local address in diameter_tcp/sctp
2017-08-29Merge branch 'anders/diameter/codec/OTP-14511' into maintAnders Svensson
* anders/diameter/codec/OTP-14511: Use map decoding in example client
2017-08-29Merge branch 'anders/diameter/caseless/OTP-14535' into maintAnders Svensson
* anders/diameter/caseless/OTP-14535: Replace calls to inet_parse(3) Fix regexp match of accept tuple in diameter_tcp/sctp
2017-08-29Merge pull request #1525 from bitnitdit/remove-query-keyword-residuesHans Bolinder
Remove query keyword residues
2017-08-28Always reply to sync requestsDan Gudmundsson
Otherwise processes doing io could get stuck. See ERL-472.
2017-08-28Fix influence of decode_format on service eventsAnders Svensson
Decoded CER/CEA messages are passed in events messages that can be subscribed to using diameter:subscribe/1. A configured decode_format was not reflected in these, messages always being passed as records. Clarify that strict_arities only applies to message callbacks.
2017-08-28Merge branch 'rickard/dist/OTP-14459' into rickard/dist/master/OTP-14459Rickard Green
Conflicts: erts/emulator/beam/bif.c erts/emulator/beam/dist.c erts/emulator/beam/dist.h erts/emulator/beam/erl_bif_info.c erts/emulator/beam/erl_node_tables.c erts/emulator/beam/erl_node_tables.h erts/emulator/beam/external.c
2017-08-28Introduce sender in distributed signals and dflag configurationRickard Green
2017-08-28Support for running test suites with gen_tcp_distRickard Green
2017-08-28Example of using distribution controller processesRickard Green
2017-08-28Support for distribution controller processesRickard Green
2017-08-26Enhance optimisations in beam_peepMichał Muskała
When cleaning selects, it might happen we're left with only one pair. In such case convert to a regular test + jump.
2017-08-25Changes confusing example of a bad guard in ets:fun2msSasan Hezarkhani
2017-08-25Switch query back to be normal atombitnitdit
query was no longer a keyword since the commit 0dc3a29744bed0b7f483ad72e19773dc0982ea50 2012-11-19. So the quotes around query, when it used as atom, no needed.
2017-08-25Merge branch 'maint'Henrik Nord
2017-08-25Merge branch 'maint-20' into maintHenrik Nord
* maint-20: Updated OTP version Prepare release dialyzer: Fix a bug where merging PLT:s could lose info
2017-08-25Let strict_mbit and incoming_maxlen be configured per transportAnders Svensson
Since these can make sense per peer. The remaining service-only options either belong there or make little sense being configured per transport.
2017-08-25Let a service configure default transport optionsAnders Svensson
Only a default spawn_opt has been possible to configure, but there's no reason why most others should need to be configured per transport. Those options that still only make sense on a transport are transport_module/config (because of the semantics of multiple values), applications/capabilities (since these override service options), and private (since it's only to allow user-specific options in a backwards compatible way).
2017-08-25Merge branch 'maint'Björn Gustavsson
* maint: Fix disksup:get_disksup_data() for High Sierra
2017-08-25Merge pull request #1538 from bjorng/bjorn/os_mon/high-sierra/ERL-461Björn Gustavsson
Fix disksup:get_disksup_data() for High Sierra OTP-14560
2017-08-25Prepare releaseErlang/OTP
2017-08-24fprof: Sum callers and calleesJohan Claesson
When sampling multiple processes and analyzing with totals true sum together all caller and callee entries which concerns the same function. Previous behaviour was to report each contributing entry.
2017-08-24Rename type evaluable -> evalAnders Svensson
Export the old type as a synonym for backwards compatability. The name evaluable is a bit too awkward.
2017-08-24Document transport_opt() strict_capxAnders Svensson
2017-08-24Rename transport_opt() capx_strictness to strict_capxAnders Svensson
To follow the naming of options like strict_mbit and more. Still accept capx_strictness since this is known to be used. Introduced in commit e4f28f3b.
2017-08-24Merge branch 'maint'Dan Gudmundsson
* maint: Emacs: Fix default target for xref-find-references
2017-08-24Merge pull request #1539 from johanclaesson/xrefrefDan Gudmundsson
Emacs: Fix default target for xref-find-references
2017-08-24Merge branch 'maint'Ingela Anderton Andin
2017-08-24Merge branch 'ingela/ssl/dtls-alert-handling/OTP-14078' into maintIngela Anderton Andin
* ingela/ssl/dtls-alert-handling/OTP-14078: dtls: Customize alert handling for DTLS over UDP
2017-08-24dialyzer: Fix a bug where merging PLT:s could lose infoHans Bolinder
A missing call to ets:safe_fixtable/2 meant that information was sometimes lost when merging PLT:s.
2017-08-24Merge branch 'maint'Ingela Anderton Andin