aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2016-02-02Better list_to_integerDmytro Lytovchenko
Now tries to use whole width of signed long (Sint) and this halves amount of multiplications needed to parse long integers. New code is 2-3 times faster than the old code for large inputs (tens and hundreds of digits), behavior should not change for small inputs. Test ran 10k times with GC forced between attempts. Was (R17): 720 el base 10: 0.14682 sec; base 16: 0.192722 sec; base 36: 0.337118 sec. 2800 el base 10: 1.794133 sec; base 16: 2.735106 sec; base 36: 4.761108 sec. 6500 el base 10: 9.316434 sec; base 16: 14.109469 sec; base 36: 25.319263 sec. Now (R19 Dev) 720 el base 10: 0.10265 sec; base 16: 0.10851 sec; base 36: 0.160478 sec. 2800 el base 10: 1.002793 sec; base 16: 1.360649 sec; base 36: 2.174309 sec. 6500 el base 10: 4.722197 sec; base 16: 6.60522 sec; base 36: 10.552795 sec. Added test for corner cases and sign bit corruption. Replaced macros with inline and hid it inside C file to not pollute global namespace Old bug in #define LG2_LOOKUP: Replaced with inline function and table recalculated for all bases 2 to 36 (was 2 to 64)
2016-01-25Moved do_list_to_integer from bif.c to big.cDmytro Lytovchenko
2016-01-22Merge branch 'maint'Siri Hansen
2016-01-22Merge branch 'siri/document-path-flag/OTP-13060' into maintSiri Hansen
* siri/document-path-flag/OTP-13060: Add documentation of '-path' flag to 'erl'
2016-01-22Merge branch 'maint'Rickard Green
* maint: Fix HL timer hard debug implementation Fix stack alignment problem in ethread test on arm Skip time_SUITE:timestamp on timewarp test
2016-01-22Merge branch 'rickard/test-fix' into maintRickard Green
* rickard/test-fix: Fix HL timer hard debug implementation Fix stack alignment problem in ethread test on arm Skip time_SUITE:timestamp on timewarp test
2016-01-21Merge branch 'bjorn/erts/clean-up-preloaded/OTP-13112'Björn Gustavsson
* bjorn/erts/clean-up-preloaded/OTP-13112: Update preloaded modules erl_prim_loader: Rename release_archives/0 erl_prim_loader: Correct timeout handling for efile erl_prim_loader: Correct purging of the archive cache erl_prim_loader: Remove unused 'cache' field
2016-01-21Update preloaded modulesBjörn Gustavsson
2016-01-20Merge branch 'sverk/safe-purging/OTP-13122'Sverker Eriksson
2016-01-20erts: Update docs for erlang:purge_module/1Sverker Eriksson
2016-01-20erl_prim_loader: Rename release_archives/0Björn Gustavsson
Rename release_archives/0 to purge_archive_cache/0 to make it clearer what it does and what it doesn't do. Also add a comment about its intended purpose. Note that release_archives/0 is not documented and is part of the experimental archive feature. Furthermore, the only uses I could find were in the test suite. I did not find any uses in the external applications relx and rebar3 applications that are known to use archives. Therefore, I think that the increased clarity is worth the small risk of breaking code.
2016-01-20erl_prim_loader: Correct timeout handling for efileBjörn Gustavsson
The timeout routine for efile was never called. While at it, eliminate the n_timeouts field and simplify the logic.
2016-01-20erl_prim_loader: Correct purging of the archive cacheBjörn Gustavsson
prim_do_release_archives/3 can't make up its mind whether the primary archive should be released or not. The key in the process dictionary is kept, while #prim_state.primary_archive is cleared. It seems that intent was the primary archive should be preserved, because the function was intended to be called by a timeout routine every sixth minute (it is not because of a bug in setting up the timeout). Therefore, rewrite the code to preserve the primary archive and simplify it while at it. Also, rename prim_release_archives/1 to prim_purge_cache/0 to make it clearer what it is doing.
2016-01-20erl_prim_loader: Remove unused 'cache' fieldBjörn Gustavsson
The #prim_state.cache' field is unused. The actual cache is kept in the process dictionary.
2016-01-20Merge branch 'hb/stdlib/refine_abstr_types/OTP-10292'Hans Bolinder
* hb/stdlib/refine_abstr_types/OTP-10292: erts: Improve readability of The Abstract Format erts: Improve the documentation of the abstract format stdlib: Update erl_parse(3) stdlib: Refine the types of the abstract format compiler: Improve type and specs hipe: Improve types dialyzer: Improve a type doc: Update a refman example syntax_tools: Correct a type stdlib: Correct a type
2016-01-20Merge branch 'maint'Rickard Green
* maint: Fix dirty scheduler check in handle_aux_work
2016-01-20Merge branch 'vinoski/check-awdp-esdp' into maintRickard Green
* vinoski/check-awdp-esdp: Fix dirty scheduler check in handle_aux_work
2016-01-20erts: Improve readability of The Abstract FormatHans Bolinder
More verbose, but hopefully more readable than before.
2016-01-20erts: Improve the documentation of the abstract formatHans Bolinder
2016-01-19Merge branch 'maint'Sverker Eriksson
2016-01-19Merge branch 'sverk/armata-memset-bug' into maintSverker Eriksson
* sverk/armata-memset-bug: erts: Workaround memset bug in test case
2016-01-19Merge branch 'sverk/safe-purging/OTP-13122'Sverker Eriksson
* sverk/safe-purging/OTP-13122: erts: Ignore unexpected messages to erts_code_purger erts: Optimize erlang:check_process_code erts: Refactor check_process_code/3 erts: Make copy_literals more fail safe erts: Move copy_literals/2 from erlang to erts_internal erts: Make erlang:purge_module/1 safe erts: Refactor code:purge/1 and code:soft_purge/1 erts: Introduce erts_code_purger
2016-01-19erts: Ignore unexpected messages to erts_code_purgerSverker Eriksson
2016-01-18Fix dirty scheduler check in handle_aux_workSteve Vinoski
2016-01-14Merge branch 'maint'Sverker Eriksson
2016-01-14Merge branch 'sverk/trace-doc-typo' into maintSverker Eriksson
* sverk/trace-doc-typo: erts: Correct faulty doc for erlang:trace/3
2016-01-14erts: Correct faulty doc for erlang:trace/3Sverker Eriksson
The entire MFA tuple is replaced with 0, not just Arity.
2016-01-14Add documentation of '-path' flag to 'erl'Siri Hansen
This flag replaces the path specified in the boot script. It has always existed, but was earlier only documented in SASL (script).
2016-01-14Merge branch 'maint'Rickard Green
* maint: Do not allow aux work on dirty schedulers
2016-01-14Merge branch 'vinoski/dirty-sched-no-aux-work/OTP-13236' into maintRickard Green
* vinoski/dirty-sched-no-aux-work/OTP-13236: Do not allow aux work on dirty schedulers
2016-01-13erts: Optimize erlang:check_process_codeSverker Eriksson
by ignoring literals. erts_internal:check_process_code will be called again anyway (with option {copy_literals, true}) before the module is actually purged. No need to check literals twice.
2016-01-13erts: Refactor check_process_code/3Sverker Eriksson
Move impl from erlang to erts_internal. Cut and paste.
2016-01-13erts: Make copy_literals more fail safeSverker Eriksson
* Same process must do enable-disable. * System process will force it and never get 'aborted'
2016-01-13erts: Move copy_literals/2 from erlang to erts_internalSverker Eriksson
as it's not a public interface.
2016-01-13erts: Make erlang:purge_module/1 safeSverker Eriksson
Problem: erlang:purge_module/1 is not safe in the sense that very bad things may happen if the code to be purged is still referred to by live processes. Introduce erts_internal:purge_module which is the same as the old erlang:purge_module BIF (except it returns false if no such old module). Implement erlang:purge_module in Erlang and let it invoke erts_code_purger for safe purging where all clogging processes first are killed.
2016-01-13Merge branch 'sverk/fvisibility-hidden/OTP-13227'Sverker Eriksson
* sverk/fvisibility-hidden/OTP-13227: erts: Allow -fvisibility=hidden for NIFs and drivers erts: Cleanup erl_driver.h for windows erts: Refactor ERL_NIF_INIT macro
2016-01-13erts: Refactor code:purge/1 and code:soft_purge/1Sverker Eriksson
by moving code from code_server to erts_code_purger. This is more or less a copy-paste from code_server.erl to erts_code_purger.erl. All the inner mechanics of code:purge/1 and code:soft_purge/1 are unchanged.
2016-01-13erts: Introduce erts_code_purgerSverker Eriksson
as a system process with preloaded code.
2016-01-11erts: Workaround memset bug in test caseSverker Eriksson
memset seen to fail with values larger than 255 on (armata) 32-bit ARM Debian with EGLIBC 2.13-38+rpi2+deb7u8 and gcc 4.6.3-14+rpi1.
2016-01-08erts: Allow -fvisibility=hidden for NIFs and driversSverker Eriksson
as is strongly recommended by gcc man page. We use __attribute__ ((visibility("default"))) to make sure the init functions are properly exported.
2016-01-08erts: Cleanup erl_driver.h for windowsSverker Eriksson
The comment is misleading and no need to "export" static windows drivers. DRIVER_INIT for dynamic windows drivers is defined in erl_win_dyn_driver.h
2016-01-08erts: Refactor ERL_NIF_INIT macroSverker Eriksson
2016-01-07Merge branch 'sverk/proc-dict-opt'Sverker Eriksson
OTP-13167 * sverk/proc-dict-opt: erts: Add new test case pdict_SUITE:mixed erts: Add 'fill_heap' to erts_debug:state_internal_state erts: Rename proc dict size to arraySize erts: Refactor proc dict with 'usedSlots' erts: Add sizeMask for faster proc dict indexing erts: Remove ProcDict.used erts: Add proc dict macros ERTS_PD_START/SIZE erts: Optimize away function "array_put" in proc dict erts: Optimize hashing in process dictionary
2016-01-07Merge branch 'sverk/hipe-mmap-config'Sverker Eriksson
* sverk/hipe-mmap-config: erts: Add config test for MAP_NORESERVE for hipe on 64-bit
2016-01-07erts: Add config test for MAP_NORESERVE for hipe on 64-bitSverker Eriksson
to get a nicer error on FreeBSD and others that does not support MAP_NORESERVE for mmap. Q: How to support this? A: Implement the "literal tag" in hipe or another way to reserve virtual address space in erl_mmap.c
2016-01-07Merge branch 'sverk/float_SUITE-arith'Sverker Eriksson
* sverk/float_SUITE-arith: erts: Add new test cases to float_SUITE
2016-01-07Merge branch 'sverk/check_process_code-fix'Sverker Eriksson
* sverk/check_process_code-fix: erts: Fix bug in check_process_code for literals
2015-12-30Merge branch 'maint'Rickard Green
* maint: Light weight statistics of run queue lengths Conflicts: erts/preloaded/ebin/erlang.beam
2015-12-30Merge branch 'rickard/rq-len/OTP-13201' into maintRickard Green
* rickard/rq-len/OTP-13201: Light weight statistics of run queue lengths
2015-12-30Light weight statistics of run queue lengthsRickard Green
- statistics(total_run_queue_lengths) - statistics(run_queue_lengths) - statistics(total_active_tasks) - statistics(active_tasks) Conflicts: erts/emulator/beam/erl_process.c