aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2011-02-24Merge branch 'bjorn/erts/minor-fixes' into devBjörn Gustavsson
* bjorn/erts/minor-fixes: BEAM loader: Add an assertion to check for overflowed code space beam_emu: Eliminate redundant #ifdef beam_emu: Remove unnecessary decrement of I in "case_end r"
2011-02-23emulator tests: Eliminate some compiler warningsBjörn Gustavsson
2011-02-23BEAM loader: Add an assertion to check for overflowed code spaceBjörn Gustavsson
While at it, clean up indentation of CHKBLK() macros.
2011-02-23beam_emu: Eliminate redundant #ifdefBjörn Gustavsson
The halfword emulator used to require special handling, but no longer does.
2011-02-23beam_emu: Remove unnecessary decrement of I in "case_end r"Björn Gustavsson
It is not necessary to decrement I, because an exception is about to be generated. Furthermore, I pointing *before* the instruction that caused the exception may cause problems in the future.
2011-02-18Merge branch 'sverker/ets_halfword_highmem/OTP-8941' into devSverker Eriksson
* sverker/ets_halfword_highmem/OTP-8941: HALFWORD ETS Fix copyright year in some source files Fix vm crash in kernel test case seq_trace_SUITE:call remove NIF compile warning: no previous prototype for ‘nif_init’ Refuse to load NIF library on wrong VM variant (halfword/fullword) HALFWORD ETS match spec heap fragment optimization HALFWORD ETS removed eheap and improved test case t_match_spec_run HALFWORD ETS Further match spec optimization to minimize copying and garbage HALFWORD ETS db_prog_match optimization HALFWORD ETS Fix segv for match spec with several function and guards HALFWORD Make system_info mseg_alloc report both low/high mem HALFWORD Fix segv caused by erlang:halt HALFWORD Make more allocators use high mem (binary, fixed and driver) HALFWORD ETS 32-bit arch fixes and other cleanups HALFWORD ETS nicer update_element HALFWORD ETS Real matching on relative terms HALFWORD first stab at high mem alloc HALFWORD ETS relative terms Conflicts: erts/emulator/test/driver_SUITE.erl
2011-02-18HALFWORD ETS Fix copyright year in some source filesSverker Eriksson
2011-02-18Fix vm crash in kernel test case seq_trace_SUITE:callSverker Eriksson
2011-02-18remove NIF compile warning: no previous prototype for ‘nif_init’Sverker Eriksson
2011-02-18Refuse to load NIF library on wrong VM variant (halfword/fullword)Sverker Eriksson
2011-02-18Merge branch 'jp/dependencies_makefile' into devBjörn Gustavsson
* jp/dependencies_makefile: Add dependencies Makefile generation to erlc(1) and compile(3) Conflicts: lib/compiler/test/compile_SUITE.erl OTP-9065
2011-02-18Add dependencies Makefile generation to erlc(1) and compile(3)Jean-Sébastien Pédron
This is useful when a project is built with Makefiles and erlc(1) instead of EMakefiles. Tracking dependencies by hand is error-prone and it becomes painful when using external application headers like EUnit's one. A dependencies Makefile will look like this: module.beam: module.erl \ /usr/local/lib/erlang/lib/eunit-2.1.4/include/eunit.hrl \ header.hrl When included in the main Makefile, 'module' will be recompiled only when needed. GCC offers the same feature and new erlc(1) options are compatible with it. More informations at: http://wiki.github.com/dumbbell/otp/dependencies-makefile
2011-02-17Rename Suite Callback to Common Test HookLukas Larsson
2011-02-17Update end_per_suite so that it does not crash on non-smp emulatorsLukas Larsson
2011-02-17Update all test specsLukas Larsson
2011-02-17Fix formatting for emulatorLukas Larsson
2011-02-17Fix formatting for epmdLukas Larsson
2011-02-17Fix formatting for systemLukas Larsson
2011-02-17Add init_per_suite and end_per_suiteLukas Larsson
2011-02-17Add ts_install_scb to suite/0Lukas Larsson
2011-02-17Update system tests to conform with common_test standardLukas Larsson
2011-02-17Update epmd tests to conform with common_test standardLukas Larsson
2011-02-17Update emulator tests to conform with common_test standardLukas Larsson
2011-02-17Update tests to work with ts -> ct migrations script.Lukas Larsson
2011-02-15Merge branch 'egil/fix-win32-file-time/OTP-9046' into devBjörn-Egil Dahlberg
* egil/fix-win32-file-time/OTP-9046: Fix win32 file drivers atime/mtime
2011-02-14Eliminate memory leak in code:make_stub/1Björn Gustavsson
2011-02-14Test more error cases for code:make_stub/1Björn Gustavsson
2011-02-09Fix win32 file drivers atime/mtimeBjörn-Egil Dahlberg
When setting file_info it will now correctly set access and modified time. Previously these entities were swapped.
2011-02-03HALFWORD ETS match spec heap fragment optimizationSverker Eriksson
Introduce HAllocX to allocate heap fragments with a larger capacity than requested and by that reduce the number of fragments allocated.
2011-02-03HALFWORD ETS removed eheap and improved test case t_match_spec_runSverker Eriksson
2011-02-03HALFWORD ETS Further match spec optimization to minimize copying and garbageSverker Eriksson
2011-02-03HALFWORD ETS db_prog_match optimizationSverker Eriksson
2011-02-03HALFWORD ETS Fix segv for match spec with several function and guardsSverker Eriksson
Did not properly take care of case when TryMeElse restarted with next match clause.
2011-02-03HALFWORD Make system_info mseg_alloc report both low/high memSverker Eriksson
2011-02-03HALFWORD Fix segv caused by erlang:haltSverker Eriksson
Faulty use of term on C-stack in heap_dump()
2011-02-03HALFWORD Make more allocators use high mem (binary, fixed and driver)Sverker Eriksson
2011-02-03HALFWORD ETS 32-bit arch fixes and other cleanupsSverker Eriksson
2011-02-03HALFWORD ETS nicer update_elementSverker Eriksson
2011-02-03HALFWORD ETS Real matching on relative termsSverker Eriksson
2011-02-03HALFWORD first stab at high mem allocSverker Eriksson
2011-02-03HALFWORD ETS relative termsSverker Eriksson
In halfword emulator, make ETS use a variant of the internal term format that uses relative offsets instead of absolute pointers. This will allow storage in high memory (>4G). Preprocessor macros (like list_val_rel(TERM,BASE)) are used to make normal (fullword) emulator almost completely unchanged while still reusing most of the code.
2011-01-18Lower the maximum arity from 256 to 255Björn Gustavsson
Historically, for no good reason, a function is allowed to have from 0 to 256 arguments. Thus, the number of arguments *almost* fits into a byte. HiPE only supports up to 255 arguments (because it assumes that the function arity fits into a single byte), and fixing that limitation would require ugly special-case handling. In Dialyzer, the arity type is defined to be a byte (i.e. 0..255). Since no-one uses functions with 256 arguments anyway, lower the limit to 255.
2011-01-17Merge branch 'bjorn/beam-loader/OTP-9030' into devBjörn Gustavsson
* bjorn/beam-loader/OTP-9030: (43 commits) c: Reduce memory footprint erl_posix_msg: Reduce memory footprint Introduce a few more variations of the move instructions Combine a move + jump sequence into the move_jump instruction Optimize and clean-up the exact equality/non-equality instructions Optimize addition of a small integer to a variable Introduce a special instruction for select_val with two values Introduce a few more specialized put_list instructions Eliminate the "put_list c n Dst" instructions Eliminate the specific move_sd instruction Eliminate use of GetArg1() in the badmatch and case_end instructions Eliminate use of GetArg2() in the i_element instruction Eliminate use of GetArg1() in the fast_element instruction Eliminate use of GetArg1() in the jump_on_val* instructions Eliminate use of GetArg1() in the select_val instruction beam_emu: Eliminate sloppy use of tmp_arg1 and tmp_arg2 beam_emu: Don't inline helper functions into process_main() beam_emu: Clean up calling of the error_handler module Simplify a select_val instruction that selects only one value Optimize creation of tuples ...
2011-01-17Introduce a few more variations of the move instructionsBjörn Gustavsson
Frequency counts show that move Const x(1) move Const x(2) are very common.
2011-01-17Combine a move + jump sequence into the move_jump instructionBjörn Gustavsson
That will save one word and small amount of time for each occurrence.
2011-01-17Optimize and clean-up the exact equality/non-equality instructionsBjörn Gustavsson
The is_eq_exact/3 and is_ne_exact/3 instructions are commonly used with one immediate or literal operand. Introduce three new specialized instructions: i_is_eq_exact_literal/3 i_is_ne_exact_immed/3 i_is_ne_exact_literal/3 The i_is_ne_exact_literal/3 instruction is not very frequently used, but its existence is justified because we removed in a a previous commit the special instruction for matching bignums and we now use i_is_ne_exact_literal/3 instead. For consistency, rename the existing is_eq_immed/3 instruction to is_eq_exact_immed/3. While at it, remove the optimization of an is_eq/3 instruction with an immediate operand because that optimization is already done by the compiler.
2011-01-17Optimize addition of a small integer to a variableBjörn Gustavsson
Introduce a new i_increment/4 to optimize the addition of a register and a small integer. This instruction saves two instruction words compared to the standard instructions (an i_fetch/2 instruction followed by a i_plus/3 instruction) and will also be slightly faster.
2011-01-17Introduce a special instruction for select_val with two valuesBjörn Gustavsson
The new instruction will save one word (because no size operand is needed), and is slightly faster. Handle select_tuple_arity in the same way.
2011-01-17Introduce a few more specialized put_list instructionsBjörn Gustavsson
2011-01-17Eliminate the "put_list c n Dst" instructionsBjörn Gustavsson
Since the literal (constant) pool was introduced in R12, the BEAM compiler will never generate a "put_list Const [] Dst" instruction (it will instead generate a "move [Const] Dst" instruction).