aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2015-05-06Merge branch 'sverk/hipe_match_wbin/OTP-12667'Sverker Eriksson
* sverk/hipe_match_wbin/OTP-12667: erts: Add debug assertions for match state sanity hipe: Add test for matching of writable binary erts,hipe: Optimize away calls to emasculate_binary erts,hipe: Fix bug in binary matching of writable binary Conflicts: erts/emulator/hipe/hipe_bif0.c
2015-05-06Merge branch 'maint'Zandra Hird
Conflicts: OTP_VERSION erts/vsn.mk lib/test_server/src/erl2html2.erl
2015-05-06Prepare releaseErlang/OTP
2015-05-05Merge branch 'egil/fix-tmp-alloc-fd-async/OTP-12710'Björn-Egil Dahlberg
* egil/fix-tmp-alloc-fd-async/OTP-12710: erts: Use a lockable allocator on 'sys_write_buf'
2015-05-05Merge branch 'joudinet/fix-ac-egrep-cpp-usage'Zandra Hird
* joudinet/fix-ac-egrep-cpp-usage: erts: Fix incorrect use of AC_EGREP_CPP OTP-12706
2015-05-04erts: Use a lockable allocator on 'sys_write_buf'Björn-Egil Dahlberg
sys_write_buf allocator type is used from async-threads and needs to be lockable. In the SMP case the temporary allocator is lockable but not in the Non-SMP case. To remedy this the binary-allocator is used for the Non-SMP case, which is lockable.
2015-05-04erts: Add debug assertions for match state sanitySverker Eriksson
2015-05-04Get the VTS mode working with private CT version of webtoolPeter Andersson
OTP-12704
2015-04-30emulator: Use module erl_annoHans Bolinder
2015-04-29erts: Fix incorrect use of AC_EGREP_CPPJohan Oudinet
Using 'AC_EGREP_CPP(yes' without restraining the pattern always return true if it runs from a path containing the string 'yes'.
2015-04-29Merge branch 'JeromeDeBretagne/fix_android_build'Zandra Hird
OTP-12693
2015-04-29Merge branch 'mikpe/hipe-unbreak-arity-4-bifs'Zandra Hird
* mikpe/hipe-unbreak-arity-4-bifs: erts/hipe: unbreak arity 4 BIFs
2015-04-28Merge branch 'egil/opt-instructions/OTP-12690'Björn-Egil Dahlberg
* egil/opt-instructions/OTP-12690: erts: Specialize minus and plus instruction erts: Add move2 specialization for common move patterns erts: Specialize rem instruction for common case erts: Specialize band instruction for common case erts: Batch loads and stores for move_window erts: Fix loader increment from minus instruction erts: Add move window instruction erts: Add instruction move3 for xy and xx erts: Specialize compare instructions kernel: Add instruction_count helper to erts_debug
2015-04-27Fix cross compilation for AndroidJérôme de Bretagne
2015-04-27Merge branch 'sverk/maximmai-pr640-autoconf/OTP-12646'Sverker Eriksson
* sverk/maximmai-pr640-autoconf/OTP-12646: Update config.guess and config.sub to latest versions
2015-04-27Merge branch 'vinoski/dirty-sched-wakeup'Zandra Hird
OTP-12685
2015-04-27erts: Specialize minus and plus instructionBjörn-Egil Dahlberg
Seen on SSL application where substraction with x registers were prevalent: * i_minus specialization on x registers * i_plus specialization on x registers
2015-04-27erts: Add move2 specialization for common move patternsBjörn-Egil Dahlberg
Common pattern seen in SSL: move y x | move r x -> move2 move r x | move y x -> move2 Common pattern seen in SSL and Compiler: move x r | move x x -> move2
2015-04-24Merge branch 'egil/core-on-heart-tmo/OTP-12613'Björn-Egil Dahlberg
* egil/core-on-heart-tmo/OTP-12613: kernel: Document heart environment HEART_KILL_SIGNAL erts: Enable different abort signal from heart
2015-04-24Merge branch 'egil/opt-float-cmp'Björn-Egil Dahlberg
* egil/opt-float-cmp: erts: Brute force float comparisons as well
2015-04-24erts: Specialize rem instruction for common caseBjörn-Egil Dahlberg
* i_rem specialization on x registers
2015-04-24erts: Specialize band instruction for common caseBjörn-Egil Dahlberg
* i_band specialization on x registers and constants
2015-04-23erts: Batch loads and stores for move_windowBjörn-Egil Dahlberg
May lessen load/store latency.
2015-04-23erts: Fix loader increment from minus instructionBjörn-Egil Dahlberg
A type error caused the optimization to never kick in.
2015-04-23erts: Add move window instructionBjörn-Egil Dahlberg
Move an entire region of x registers to the stack. This reduces the dispatch pressure of move instructions. Also introduce a move2 specialization for some common move patterns: move r y | move x y -> move2 : As above, moving regions to the stack move x r | move x y -> move2 : A seemingly common pattern
2015-04-23erts: Add instruction move3 for xy and xxBjörn-Egil Dahlberg
2015-04-23erts: Specialize compare instructionsBjörn-Egil Dahlberg
* i_is_lt for r, x registers and constants * i_is_ge for x registers and constants * i_is_exact_eq for r and x registers
2015-04-22erts/hipe: unbreak arity 4 BIFsMikael Pettersson
This fixes arity 4 BIF support in HiPE, following its introduction on master (OTP 18) via the nox/ets-update_counter-4 merge. - define standard_bif_interface_4, nbif_4_gc_after_bif, and nbif_4_simple_exception on ARM: unbreaks the build on ARM - remove bogus stack re-alignment from standard_bif_interface_4 on AMD64: for 4-arg BIFs the stack is already aligned, and the code would misalign the C stack which violates the ABI and may cause alignment faults in vectorized code - the nbif_4_simple_exception OPD name on PPC64 was incorrectly using the nbif_3_simple_exception OPD name: this would have caused a multiple definition error in the assembler or linker In addition there are a few cleanups: - fix standard_bif_interface_N comment on x86 - fix standard_bif_interface_4 comment on SPARC - separate nbif_N_simple_exception blocks by empty lines on PPC, like on ARM, to clearly show which things belong together - fix standard_bif_interface_N comment on ARM - fix standard_bif_interface_4 on AMD64 to match the indentation and spacing conventions of the rest of that file
2015-04-22Merge branch 'sverk/pr632/prevent-illegal-nif-terms/OTP-12655'Sverker Eriksson
* sverk/pr632/prevent-illegal-nif-terms/OTP-12655: erts: Reject non-finite float terms in erl_drv_output_term erts: Remove old docs about experimental NIF versions. erts: Add enif_has_pending_exception erts: Clearify erl_nif documentation about badarg exception erts: Fix compile warning in enif_make_double erts: Fix divide by zero compile error in nif_SUITE.c erts: Fix isfinite for windows Ensure NIF term creation disallows illegal values
2015-04-22erts: Brute force float comparisons as wellBjörn-Egil Dahlberg
Increases float comparison speed by ~120%
2015-04-21Merge branch 'sverk/etp-map'Sverker Eriksson
* sverk/etp-map: erts: Add map support to gdb etp command erts: Add etp_the_non_value
2015-04-21erts,hipe: Optimize away calls to emasculate_binarySverker Eriksson
Only call emasculate_binary if ProcBin.flags is set, which means it's a writable binary.
2015-04-21Merge branch 'mikpe/configure-linux-spelling'Zandra Hird
* mikpe/configure-linux-spelling: erts/configure.in: handle more 'linux' spellings
2015-04-20erts,hipe: Fix bug in binary matching of writable binarySverker Eriksson
Seen symptom: Hipe compiled code with <<C/utf8, ...>> = Bin does sometimes not match even though Bin contains a valid utf8 character. There might be other possible binary matching symptoms, as the problem is not utf8 specific. Problem: A writable binary was not "emasculated" when the matching started (as it should) by the hipe compiled code. Fix: Add a new primop emasculate_binary(Bin) that is called when a matchstate is created. ToDo: There are probably room for optimization. For example only call emasculate_binary if ProcBin.flags is set.
2015-04-20erts: Enable different abort signal from heartBjörn-Egil Dahlberg
By using environment variable HEART_KILL_SIGNAL, heart can now use a different signal to kill the old running Erlang. By default the signal is SIGKILL but SIGABRT may also be used by setting environment variable: HEART_KILL_SIGNAL=SIGABRT
2015-04-20erts/configure.in: handle more 'linux' spellingsMikael Pettersson
The configuration code which canonicalizes the operating system name into OPSYS requires Linux to be spelled 'linux' or 'Linux'. This is a problem in some build environments, e.g. RPM, which supply --build and --host using the longer 'linux-gnu' spelling. The effect is that OPSYS becomes 'noopsys' and some checks in erts/configure.in do not work as expected, e.g. the auto-enabling of HiPE may not happen. Fixed by matching on 'linux*' not just 'linux'. On ARM there are even longer variants such as 'linux-gnueabi' and 'linux-gnueabihf': these are also correctly mapped to 'linux' now.
2015-04-20erts: Fix halfword compareBjörn-Egil Dahlberg
2015-04-17Merge branch 'egil/cmp-immediate-optimization/OTP-12663'Björn-Egil Dahlberg
* egil/cmp-immediate-optimization/OTP-12663: erts: Optimize comparison operator for frequent immediates
2015-04-16erts: Assume counting opcodes are correctly generatedBjörn-Egil Dahlberg
* Assertion is only removed because we are in icount mode.
2015-04-16erts: Remove instruction_count command optionBjörn-Egil Dahlberg
* We use compile directive icount instead
2015-04-16Merge branch 'egil/maps-refactor'Björn-Egil Dahlberg
* egil/maps-refactor: erts: Use make_small for size terms on flat maps Conflicts: erts/emulator/beam/erl_bif_guard.c
2015-04-16Merge branch 'bjorn/maps'Björn Gustavsson
* bjorn/maps: Document the new {badmap,Term} and {badkey,Key} exceptions Raise more descriptive error messages for failed map operations erl_term.h: Add is_not_map() macro Tigthen code for the i_get_map_elements/3 instruction Pre-compute hash values for the general get_map_elements instruction Teach the loader to pre-compute the hash value for single-key lookups Optimize use of i_get_map_element/4 beam_emu: Slightly optimize update_map_{assoc,exact} v3_codegen: Don't sort map keys in map creation/update beam_validator: No longer require strict literal term order Sort maps keys in the loader De-optimize the has_map_fields instructions erts/map_SUITE.erl: Add a test case that tests has_map_fields Fully evaluate is_map/1 for literals at load-time map_SUITE: Add tests of is_map/1 with literal maps Run a clone of map_SUITE without optimizations Remove the fail label operand of the new_map instruction Correct transformation of put_map_assoc to new_map Remove support for put_map_exact without a source map
2015-04-16Merge branch 'egil/refactor-message-queue-probes'Björn-Egil Dahlberg
* egil/refactor-message-queue-probes: erts: Refactor dtrace call probes erts: Refactor erts_queue_message
2015-04-15Merge branch 'sverk/nlmills-pr653/efile-union-pwritev/OTP-12653'Sverker Eriksson
* sverk/nlmills-pr653/efile-union-pwritev/OTP-12653: erts: Cleanup code in invoke_pwritev Use the correct union member inside efile_drv
2015-04-15erts: Reject non-finite float terms in erl_drv_output_termSverker Eriksson
2015-04-15erts: Remove old docs about experimental NIF versions.Sverker Eriksson
2015-04-15erts: Add enif_has_pending_exceptionSverker Eriksson
2015-04-15erts: Clearify erl_nif documentation about badarg exceptionSverker Eriksson
Also state that maximum atom length is 255 characters.
2015-04-15erts: Fix compile warning in enif_make_doubleSverker Eriksson
2015-04-15erts: Fix divide by zero compile error in nif_SUITE.cSverker Eriksson