Age | Commit message (Collapse) | Author |
|
* egil/opt-compile-time/OTP-12774:
stdlib: Relax erl_anno_SUITE:is_anno/1 test
Update primary bootstrap
compiler: Use Maps as type information
compiler: Use Maps instead of dict in beam_jump
compiler: Use cerl_sets instead of gb_sets in beam_type
compiler: Use Maps instead of gb_trees in beam_dead
compiler: Use cerl_sets instead of gb_sets in beam_jump
compiler: Use cerl_sets instead of sets in v3_kernel
compiler: Use cerl_sets instead of gb_sets in sys_core_fold
compiler: Add cerl_sets module
compiler: Scope uses gb_sets not gb_trees
beam_dict: Use Maps to map function name indices
beam_dict: Use Maps to map line indices
beam_dict: Use Maps to map atom indices
v3_codegen: Use Maps to map local functions
v3_life: Refactor variable db
compiler: Use lc instead of map/1 in v3_codegen
stdlib: Optimize erl_anno:is_string/1
Conflicts:
bootstrap/lib/kernel/ebin/inet_dns.beam
bootstrap/lib/stdlib/ebin/erl_anno.beam
bootstrap/lib/stdlib/ebin/erl_lint.beam
|
|
* egil/cuddle-tests:
erts: Relax monitor_SUITE:mixer/1
erts: Refactor monitor_SUITE:mixer/1
stdlib: Minor change of unicode_SUITE
stdlib: Relax iterations in binary_module_SUITE:random_ref_sr_comp/1
Remove ?line macro in binary_module_SUITE:random_ref_sr_comp/1
stdlib: Relax iterations in binary_module_SUITE:random_ref_comp/1
stdlib: Remove ?line macro in binary_module_SUITE:random_ref_comp/1
stdlib: Relax filesize of io_proto_SUITE:unicode_options_gen/1
stdlib: Relax rand_SUITE timeout
debugger: Relax test map_SUITE:t_guard_receive_large/1
tools: Relax lcnt test time
stdlib: ets_SUITE cuddling
|
|
* josevalim/jv-annotate-form:
Only annotate forms when linting in the compiler
OTP-12772
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* egil/fix-hipe_libs:
stdlib: Relax maps test suite for HiPE
|
|
Due to the relaxation of erl_anno:is_string/1, the test
false = erl_anno:is_anno([{location,1},{text,[a,b,c]}]),
is no longer valid.
|
|
* bjorn/stdlib/erl_lint:
Remove final (?) vestiges of support for parameterized modules
|
|
A lot of time spent on linting is due to eval_file_attribute/2
function that recursively traverses all the AST, annotating
the file name on the AST nodes. This traversal happens so
it is easier to add errors and warnings later on by simply
introspecting the node.
This patch changes eval_file_attribute/2 to only annotate
forms (i.e. attributes and functions) and rely on the #lint
record to keep the proper file information (which it already
did before this patch).
To summarize, both pre scan and pos scan will use the annotated
file attribute in forms, however form/2 already maintains the
proper file in #lint, which we pass around when retrieving the
location information.
After this patch, linting of a regular erlang module with 500LOC
became twice faster when measured with eprof.
|
|
* sverk/ets-tab2file-syn/OTP-12737:
stdlib: Add 'sync' option to ets:tab2file/3
|
|
erl_anno:is_string/1 is frequently called from erl_lint
and thus affects compile time.
Using is_list/1 for is_string/1 is sufficient in this case.
|
|
Parameterized modules were removed in cdf8060868575, but a few
vestiges still remained in erl_lint.
|
|
|
|
Time measurement of ets-lookups, too fast for windows.
|
|
|
|
* josevalim/jv-nowarn-bif-clash:
Cache nowarn_bif_clash functions in erl_lint
OTP-12754
|
|
* josevalim/patch-4:
Speed up linting by not traversing filenames in erl_anno
|
|
* richcarl/add-uptime-function:
Add uptime() shell command
OTP-12752
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Compilation on Erlang 18.0-rc2 is about 10% slower than in Erlang 17.
After some debugging, we have noticed that linting is on average 30%
to 50% slower being the main responsible for the performance reduction.
Later profiling revealed is_filename/1 to be the biggest culprit. The change
in this commit brings compilation times to about the same times as Erlang 17.
Note this commit doesn't change the compiler behaviour compared to Erlang
17 because we didn't sanity check the value given to the file annotation in the
past. I would say checking the filename is not worth it if it means compilation
becomes 10% slower on average. After all, there are many places in the
compiler where it will fail if we give it a malformed tree, I wouldn't then special
case file annotation.
|
|
When compiling parser files, because they rely heavily
on inline annotations, retrieving the nowarn_bif_clash
information from the compiler options is expensive.
This patch stores nowarn_bif_clash in the lint record.
By using erlc +'{eprof,lint_module}' when compiling the
erlang parser, we noticed the time spent on
nowarn_function/2 reduced from 30% to 0.01%.
|
|
to improve the chance of some real disk persistence
before tab2file returns.
|
|
This reverts commit e09dd66dc4d89c62ddfd8c19791f9678d5d787c6.
|
|
|
|
This commit adds a new function, ssl:connection_information/[1,2]
to retrive the connection information from a SSLSocket.
And also, this deprecates a function ssl:connection_info/1, and
reimplements connection_info/1 with the new function.
|
|
|
|
* kejv/export-digraph-label:
digraph: export label type
|
|
* egil/fix-maps-copy-shallow:
erts: Make hashmap_get halfword safe
erts: Fix ETS db_has_variable check for large Maps
stdlib: Strengthen ETS Maps tests
erts: Fix copy shallow for large Maps
stdlib: Strengthen ETS Maps tests
erts: ETS ordered_set cannot use it's optimization with Maps
stdlib: Strengthen ETS Maps tests
stdlib: Refactor away ?line macro
|
|
Together with vertex and edge, label is a core type of digraph module
according to documentation and therefore should be exported as well.
|
|
|
|
The code explaining the behaviour of `filtermap/2` had a syntax error and wouldn't compile
|
|
* bjorn/stdlib/fix-filename-split/OTP-12716:
Correct filename:split(<<"">>)
|
|
* dgud/stdlib/rand/OTP-12586:
stdlib: Document and add normal distributed random value function
stdlib: Add new random functionality/module
|
|
Ensure db_has_variable is tested for large Maps as well.
|
|
Strengthen tests of large Maps in ETS.
|
|
The additional tests in match_object focus on ordered sets.
|
|
|
|
filename:split("") returns [], while filename:split(<<"">>) returns
[<<"/">>].
Since the support in the filename module for binary arguments is
much more recent than support for strings, change
filename:split(<<"">>) so that it returns [].
Noticed-by: KOUCHANG
|
|
* peppe/jcl_mode_improvements:
Fix problem with unitialized edlin text buffer
Fix shell crash when in switch command mode
OTP-12673
|
|
It is needed in various tests. It uses the Ziggurat algorithm, which
is the fastest that I know.
|