aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
AgeCommit message (Collapse)Author
2010-12-20Refactor timer interfaceBjörn-Egil Dahlberg
2010-12-20Teach timer-wheel to keep min timeBjörn-Egil Dahlberg
Increases the speed of the timer-wheel
2010-12-16Merge branch 'rickard/atomic-type/OTP-8974' into devRickard Green
* rickard/atomic-type/OTP-8974: Use 32-bit atomics for system block Use 32-bit atomics for misc scheduling specific information Use 32-bit atomic for uaflgs in thread specific events Use 32-bit atomics for process lock flags Add 32-bit atomics to emulator APIs Use new atomic types in emulator Use 32-bit atomics for ethr_thr_create Use 32-bit atomics for mutex and rwmutex flags Use 32-bit atomics for events Add support for 32-bit atomics Move atomic API into own files Add support for 64-bit atomics on Windows Remove unused ethread time functionality Introduce ethr_sint_t and use it for atomics
2010-12-16Use 32-bit atomics for system blockRickard Green
2010-12-16Use 32-bit atomics for misc scheduling specific informationRickard Green
2010-12-16Use 32-bit atomic for uaflgs in thread specific eventsRickard Green
2010-12-16Use 32-bit atomics for process lock flagsRickard Green
2010-12-16Add 32-bit atomics to emulator APIsRickard Green
2010-12-15Use new atomic types in emulatorRickard Green
2010-12-14Remove unused ethread time functionalityRickard Green
2010-12-10Fix a couple typos in filename encoding docsTuncer Ayaz
2010-12-03Merge branch 'pan/unicode-filenames/OTP-8887' into devPatrik Nyblom
* pan/unicode-filenames/OTP-8887: (27 commits) Test and correct filelib and filename Add documentation to erlang.xml and slight correction to unicode_usage.xml Add section about Unicode file names to stdlib users guide Correct bug in file_name_SUITE making it fail on Unix instead of Windows7 Add documentation about raw filenames and Unicode file name translation mode Make filelib not crash on re codepoints beyond 255 in re when filename is raw Mend on_load_embedded testcase which did not handle windows links Correct testcase regarding windows versions supporting soft links. Teach filelib to use re in unicode mode when filenames are not raw Treat soft links on Windows correctly in file_name_SUITE Adapt new soft and hard link routines on Windos to Unicode Corrected testcases broken by unicode filenames Update preloaded prim_file Teach prim_file not to accept atoms and not to throw exceptions Adapt inet_drv to Visual Studio 2008 Teach spawn_executable about Unicode Convert filenames read on MacOSX to canonical form Teach file to accept codepoints beyond 255. Add testcases Correct shell utilities to handle unicode and possibly binaries ...
2010-12-01Merge branch 'rickard/load-balance-wrap/OTP-8950' into devRickard Green
* rickard/load-balance-wrap/OTP-8950: Prevent wrapping of values used during load balancing
2010-12-01Prevent wrapping of values used during load balancingRickard Green
Some integer values used during load balancing could under rare circumstances wrap causing a load unbalance between schedulers.
2010-11-30Teach prim_file not to accept atoms and not to throw exceptionsPatrik Nyblom
2010-11-30Teach spawn_executable about UnicodePatrik Nyblom
Also corrected compressed files on Windows
2010-11-30Convert filenames read on MacOSX to canonical formPatrik Nyblom
2010-11-30Make Unicode filenames work on WindowsPatrik Nyblom
2010-11-30Handle binary file names and conversion of unicode stringsPatrik Nyblom
2010-11-29Teach binary:matches not to return 'nomatch' on empty inputPatrik Nyblom
2010-11-29Teach filename to accept raw data and add filename enc option to emuPatrik Nyblom
2010-11-29Add bifs to translate between erlang filenames and native encodingPatrik Nyblom
2010-11-25NIF 64-bit integer get/make bugfix for halfword emulator.Sverker Eriksson
2010-11-25Teach erl_alloc.c not to disable internal allocators for halfwordPatrik Nyblom
2010-11-22ETS 'compressed' option.Sverker Eriksson
The compressed format is using a slighty modified variant of the extern format (term_to_binary). To not worsen key lookup's too much, the top tuple itself and the key element are not compressed. Table objects with only immediate non-key elements will therefor not gain anything (but actually consume one extra word for "alloc_size").
2010-11-18Merge branch 'rickard/cpu-groups/OTP-8861' into devRickard Green
* rickard/cpu-groups/OTP-8861: Generalize reader groups Move cpu topology functionality into erl_cpu_topology.[ch] Do not use more reader groups for schedulers than schedulers Conflicts: erts/emulator/beam/erl_init.c
2010-11-18Generalize reader groupsRickard Green
Reader groups have been generalized to cpu groups which can be used for implementing reader groups, but also for implementing other functionality in the future.
2010-11-18Move cpu topology functionality into erl_cpu_topology.[ch]Rickard Green
2010-11-18Do not use more reader groups for schedulers than schedulersRickard Green
When the runtime system had fewer schedulers than logical processors, the system could get an unnecessarily large amount reader groups.
2010-11-18Merge branch 'rickard/sys_schedule_debug' into devRickard Green
* rickard/sys_schedule_debug: Verify that no outstanding I/O exist when checking for I/O in debug build
2010-11-18Verify that no outstanding I/O exist when checking for I/O in debug buildRickard Green
2010-11-18Merge branch 'pg/fix-system_info-cpu_topology-segfault' into devRickard Green
* pg/fix-system_info-cpu_topology-segfault: Fix crash with erlang:system_info({cpu_topology,junk}) OTP-8914
2010-11-18Merge branch 'rickard/sched-misc/OTP-8932' into devRickard Green
* rickard/sched-misc/OTP-8932: Fix erts_schedule_misc_op() so it can be called from arbitrary threads
2010-11-18Merge branch 'rickard/halfword-fix/OTP-8910' into devRickard Green
* rickard/halfword-fix/OTP-8910: Fix ERL_DRV_INT and ERL_DRV_UINT in halfword emulator
2010-11-18Merge branch 'rickard/dist/OTP-8901' into devRickard Green
* rickard/dist/OTP-8901: Be less eager to set dist entry in busy state
2010-11-18Merge branch 'rickard/tsd-get/OTP-8889' into devRickard Green
* rickard/tsd-get/OTP-8889: Fix erl_drv_tsd_get() and enif_tsd_get()
2010-11-10Fix erts_schedule_misc_op() so it can be called from arbitrary threadsRickard Green
Tracing to port could cause an emulator crash when unloading the trace driver.
2010-11-02Be less eager to set dist entry in busy stateRickard Green
The runtime system is now less eager to suspend processes sending messages over the distribution. The default value of the distribution buffer busy limit has also been increased from 128 KB to 1 MB. This in order to improve throughput.
2010-11-02Add flag-based setting for the distribution buffer busy limitScott Lystig Fritchie
Id: OTP-8912 This patch creates a new family of flags with the "+z" prefix. It further creates a new configuration option called "dbbl" (which is the first letter of the name dist_buf_busy_limit). Example usage of this flag would be "+zdbbl 1048576". This patch creates an adjustable buffer limit for the amount of data that may be buffered by the erlang distribution code (in dist.c specifically). Before this patch, this hard-coded constant was used: #define ERTS_DE_BUSY_LIMIT (128*1024) When large binaries are transmitted between nodes (or simply a lot of medium-sized binaries), it is very easy to hit the old 128KB limit. Processes that use the erlang:system_monitor() BIF to monitor system events can be spammed by {monitor, busy_dist_port, ...} message tuples at rates of tens to even hundreds of messages/second. A larger buffer limit will allow processes to buffer more outgoing messages over the distribution. When the buffer limit has been reached, sending processes will be suspended until the buffer size has shrunk. The buffer limit is per distribution channel. A higher limit will give lower latency and higher throughput at the expense of higher memory usage. A variation of this patch has been in commercial production use in at least two companies that the author is aware of. Larger buffer values can reduce the number of {monitor, busy_dist_port, ...} system messages drastically, lower overall messaging latencies, and prevent false timeouts and 'nodedown' messages in extremely busy Mnesia systems. Test suite: there are two tests: a. In erlexec_SUITE.erl to test basic set & get of the value b. In distribution_SUITE.erl, to verify that setting +zdbbl very low will actually change behavior.
2010-10-27Fix ERL_DRV_INT and ERL_DRV_UINT in halfword emulatorRickard Green
2010-10-12Fix erl_drv_tsd_get() and enif_tsd_get()Rickard Green
A bug in erl_drv_tsd_get() and enif_tsd_get() could cause an emulator crash. These functions are currently not used in OTP. That is, the crash only occur on systems with user implemented NIF libraries or drivers that use one of these functions.
2010-10-08Merge branch 'rickard/halfword-bug' into devRickard Green
* rickard/halfword-bug: Fix newly introduced halfword emulator bugs
2010-10-07Fix newly introduced halfword emulator bugsRickard Green
2010-10-02Fix crash with erlang:system_info({cpu_topology,junk})Paul Guyot
There is a bug in system_info BIF causing a crash if erts_get_cpu_topology_term fails. The fix comes with a non-regression test.
2010-09-30Fix a bug in the ERTS_BIF_PREP_TRAPx() macrosBjörn Gustavsson
It seems to work (at least on a little-endian architecture) by sheer luck.
2010-09-24Remove stray use of _VOID_Björn Gustavsson
In a70159b33f20a26b2674d7cf777617c5f0261a5c, the _VOID_ macro was eliminated, but one use of it inside an "#ifdef DEBUG" was forgotten.
2010-09-13Merge branch 'rickard/timer-wheel/OTP-8835' into devRickard Green
* rickard/timer-wheel/OTP-8835: Use mutex instead of rwlock
2010-09-10Merge branch 'pan/binary-bif-valgrind-leak/OTP-8823' into devPatrik Nyblom
* pan/binary-bif-valgrind-leak/OTP-8823: Teach erl_bif_binary not leak memory by doing malloc(0)
2010-09-10Use mutex instead of rwlockRickard Green
Use mutex instead of rwlock since the read lock is more or less unused and it can be quite contended.
2010-09-08Re-enable spin wait on ethreads rwlocksRickard Green
Spin wait on most ethread rwlocks used by the runtime system was unintentionally disabled during development. Spin wait has now been enabled again. This bug appeared in commit 59ee2a593090e7d53c97ceba63cbd300d1b9657e, i.e., it has not been seen in any released versions.