aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
AgeCommit message (Collapse)Author
2015-06-17Save IO bytes in scheduler specific dataRickard Green
2015-06-15Unbreak global inliningRickard Green
2015-06-15Merge branch 'rickard/+zebwt/OTP-12830'Rickard Green
* rickard/+zebwt/OTP-12830: ETS busy wait option
2015-06-15ETS busy wait optionRickard Green
Conflicts: erts/emulator/beam/erl_init.c erts/etc/common/erlexec.c
2015-06-15Merge branch 'hamt_bin2term'Sverker Eriksson
* hamt_bin2term: erts: Add erts_factory_trim_and_close erts: Optimize driver_deliver_term erts: Remove hashmap probabilistic heap overestimation Conflicts: erts/emulator/beam/beam_load.c
2015-06-15erts: Add erts_factory_trim_and_closeSverker Eriksson
2015-06-15erts: Optimize driver_deliver_termSverker Eriksson
Try write directly to process heap (as before) if the term is guaranteed not to contain any big maps that may break the initial size estimation.
2015-06-15Merge branch 'rc/robustify-module_info/OTP-12820'Björn-Egil Dahlberg
* rc/robustify-module_info/OTP-12820: erts: Add test for module_info on purged modules erts: Remove ?line macros from module_info_SUITE Fix segfault in module_info for deleted modules
2015-06-15erts: Remove hashmap probabilistic heap overestimationSverker Eriksson
by adding a dynamic heap factory. "binary_to_term" is now a hybrid solution with both a call to decoded_size() to calculate needed heap space AND possible dynamic allocation of more heap space if needed for big maps. The heap size returned from decoded_size() is guaranteed to be sufficient for all term heap data except for hashmap nodes. All hashmap nodes are created at the end of dec_term() by invoking the heap factory interface that may allocate more heap space on process heap or in fragments. With this commit it is no longer guaranteed that a message is confined to only one heap fragment.
2015-06-15Merge branch 'sverk/map-merge-trap'Sverker Eriksson
* sverk/map-merge-trap: erts: Optimize maps:merge erts: Yield in maps:merge erts: Refactor arg swapping for maps:merge erts: Add save/restore for PSTACK erts: Fix magic binary alignment on 32-bit erts: Add maps to send_term_SUITE erts: Fix calculation of reclaimed data during full gc erts: Fix warning about const pointer to make_boxed and make_list erts: Fix typo in etp-carrier-blocks
2015-06-15erts: Optimize maps:mergeSverker Eriksson
to be better at reusing entire hashmap sub-trees. Sub-tree reuse is detected in three cases: 1. The sub-tree top node does not exist at all in the other map. Already implemented before this commit. 2. The exact same sub-tree exist in both maps. Must calculate nr of keys in tree to get total size right. 3. We detect that a sub-tree only contains stuff from one of the maps. There is still one case we don't detect. If A and B leafs have equal keys we could also compare the values. If values are equal, further node reuse could propagate up toward the root (by 'mix'==0). The downside would be potentially expensive value comparisons.
2015-06-15erts: Yield in maps:mergeSverker Eriksson
2015-06-10Merge branch 'rickard/delayed-delete-node/OTP-12802'Rickard Green
* rickard/delayed-delete-node/OTP-12802: Fix error checking for +zdntgc flag
2015-06-10Fix error checking for +zdntgc flagRickard Green
2015-06-10Merge branch 'rickard/delayed-delete-node/OTP-12802'Rickard Green
* rickard/delayed-delete-node/OTP-12802: Delayed node table GC
2015-06-10Merge branch 'rickard/node-table-read-lock/OTP-12777'Rickard Green
* rickard/node-table-read-lock/OTP-12777: Only read lock node table when reading info
2015-06-10Merge branch 'rickard/timer-improvement/OTP-12650'Rickard Green
* rickard/timer-improvement/OTP-12650: Callback timer Disable accessor timer option Aux work flag descriptions Fix test cases
2015-06-10Merge branch 'rickard/lost-multi-aux-work/OTP-12812'Rickard Green
* rickard/lost-multi-aux-work/OTP-12812: Fix lost aux work flags when setting multiple flags
2015-06-10Delayed node table GCRickard Green
2015-06-10Merge branch 'egil/fix-purge-literals/OTP-12821'Björn-Egil Dahlberg
* egil/fix-purge-literals/OTP-12821: erts: Fix garbage collect literals in code purge
2015-06-10Fix segfault in module_info for deleted modulesRichard Carlsson
Add a check to protect from segfault when erlang:get_module_info/1/2 is called on a deleted module (i.e. with no current code). Also refactor erts_module_info_0/1 to avoid repeated calls to erts_active_code_ix() and remove some obsolete comments. Add test for module_info on deleted modules.
2015-06-09Only read lock node table when reading infoRickard Green
2015-06-09Callback timerRickard Green
2015-06-09Disable accessor timer optionRickard Green
2015-06-09Aux work flag descriptionsRickard Green
2015-06-09Fix test casesRickard Green
2015-06-08Fix lost aux work flags when setting multiple flagsRickard Green
All flags was not always set when setting multiple aux work flags at once. This scenario is fortunately quite uncommon and only caused further delay in memory deallocations.
2015-06-08erts: Refactor arg swapping for maps:mergeSverker Eriksson
2015-06-08Merge branch 'egil/fix-internal_hash-list-opt'Björn-Egil Dahlberg
* egil/fix-internal_hash-list-opt: erts: Fix faulty list optimization in make_internal_hash
2015-06-08erts: Fix faulty list optimization in make_internal_hashBjörn-Egil Dahlberg
Reported-by: Rory Byrne
2015-06-05Reorder scheduler information in crashdumpsDan Gudmundsson
To make it easier to parse stack trace information from tools
2015-06-02erts: Add save/restore for PSTACKSverker Eriksson
2015-06-01erts: Fix magic binary alignment on 32-bitSverker Eriksson
Caused bus error on 32-bit sparc from unaligned 64-bit word in binary_to_term trap context. Also add _UNALIGNED_ magic macros to avoid double alignment padding in NIF resources.
2015-06-01Merge branch 'vinoski/enif-raise-exception/OTP-12770'Sverker Eriksson
* vinoski/enif-raise-exception/OTP-12770: Add enif_raise_exception Enhance enif_has_pending_exception Fix for enif_schedule_nif and exceptions Conflicts: erts/doc/src/erl_nif.xml
2015-06-01Merge branch 'sverk/nif-map-docs'Sverker Eriksson
* sverk/nif-map-docs: erts: Cleanup fsummary lines in erl_nif docs erts: Fix alphabetic order in erl_nif doc erts: Add docs for map functions in nif API erts: Rename ErlNifMapIteratorEntry enums
2015-05-28Merge branch 'richcarl/warnings-by-default/OTP-12781'Björn-Egil Dahlberg
* richcarl/warnings-by-default/OTP-12781: stdlib: Use warning channel in test qlc_SUITE:otp_6964/1 stdlib: Fix testcase for qlc_SUITE kernel: Fix code_SUITE with respect to new logger default Map error logger warnings to warning messages by default
2015-05-27erts: Rename ErlNifMapIteratorEntry enumsSverker Eriksson
To differentiate between first/last map entry and head/tail which is before/after first/last map entry.
2015-05-26Add enif_raise_exceptionSteve Vinoski
Add enif_raise_exception function to allow NIFs to raise error exceptions holding any Erlang terms. This does not replace or deprecate the enif_make_badarg function, though, because raising badarg errors is so idiomatic in NIFs. Reimplement enif_make_badarg on top of enif_raise_exception. Add new tests for enif_raise_exception for both normal and dirty NIFs. Add documentation for enif_raise_exception.
2015-05-26Enhance enif_has_pending_exceptionSteve Vinoski
Sverker Eriksson came up with the following idea: to handle a future ability for NIFs to raise more than just badarg exceptions, modify the recently-added enif_has_pending_exception function to take a second argument: a pointer to ERL_NIF_TERM. If this argument is a null pointer, ignore it. Otherwise, if the first argument, an ErlNifEnv*, has an associated exception, set the pointed-to ERL_NIF_TERM of the second argument to the value of the exception term. Add new tests and documentation for this modification.
2015-05-26Fix for enif_schedule_nif and exceptionsSteve Vinoski
Fix a place where part of the implementation of enif_schedule_nif was not using the ErlNifEnv exception_thrown field when it should have been. Also make the result of enif_schedule_nif return false when passed to enif_is_exception, and add an assertion for this to the nif_SUITE.c tests.
2015-05-26Merge branch 'jlouis/cocci-noderef-fixes'Henrik Nord
* jlouis/cocci-noderef-fixes: Correct usage of sizeof() for pointer types OTP-12771
2015-05-25erts: Fix garbage collect literals in code purgeBjörn-Egil Dahlberg
During code purging and check_process_code, the checking of the binary reference embedded in the match binary state was omitted for the tracing tests. This would cause the binary match state to reference deallocated memory.
2015-05-25Merge branch 'vinoski/ds-timer-wheel-fix'Rickard Green
* vinoski/ds-timer-wheel-fix: Avoid timer wheel work in dirty schedulers
2015-05-25Fix bug causing timeout to overwrite exit instructionRickard Green
2015-05-25Fix statistics reported about fix alloc typesRickard Green
2015-05-22Map error logger warnings to warning messages by defaultRichard Carlsson
Also fix and document the broken +We option.
2015-05-18erts: Fix calculation of reclaimed data during full gcSverker Eriksson
The old code did not take take the old-heap into acount.
2015-05-18erts: Fix warning about const pointer to make_boxed and make_listSverker Eriksson
2015-05-18Avoid timer wheel work in dirty schedulersSteve Vinoski
Dirty schedulers are limited in the type of work they can perform. Make sure they do not participate in any work or make any function calls related to timer wheels.
2015-05-12Correct usage of sizeof() for pointer typesJesper Louis Andersen
Given some pointer *x, calling sizeof(x) will give us the size of the pointer (4/8 bytes) not the size fo the underlying dereferenced structure. Use coccinelle to search for these occurrences in the source code, and correct them one by one. In the case of erl_node_tables.c, the erts_snprintf() calls used a much too small buffer. - run_erl.c: Use the size of the signal type, not its pointer. - erl_node_tables.c: Use the size of the _BUFFER in erts_snprintf() to make sure we can use the full space.