aboutsummaryrefslogtreecommitdiffstats
path: root/erts/etc
AgeCommit message (Collapse)Author
2019-08-22Optimize continuation pointer managementBjörn Gustavsson
The BEAM instructions for calling a function don't save the continuation pointer (return address) on the stack, but to a special BEAM register called CP. It is the responsibility of the called function to save CP to the stack frame before calling other functions. In the earlier implementations of BEAM on Sparc, CP was located in a CPU register. That meant that the continuation pointer was never written to memory when calling simple functions that didn't call other functions at all or ended in a tail-call to another function. The modern BEAM no longer keeps CP in CPU register. Instead, it is kept in the `process` struct (in `p->cp`). That means the continuation pointer must be written to the memory on every call, and if the called function will call other functions, it will must read the continuation pointer from `p->cp` and store it on the stack. This commit eliminates the concept of the CP register and modifies the call instructions to directly store the continuation pointer on the stack. That makes allocation and trimming of stack frames slightly faster. A more important benefit is simplification of code that handles continuation pointers. Because all continuation pointers are now stored on the stack, the special case of handling `p->cp` disappears. Co-authored-by: John Högberg <[email protected]>
2019-07-22Merge branch 'maint'Rickard Green
* maint: Fix etp-ets-tables Fix node refc test for free processes hanging around Enhanced node refc bookkeeping Fix node container refc tests of ETS Fix node refc test of external data Node container refc test for persistent terms Include persistent term storage in node/dist refc check Fix node refc test for system message queue
2019-07-22Merge branch 'rickard/node-refc-tests-22' into maintRickard Green
* rickard/node-refc-tests-22: Fix etp-ets-tables Fix node refc test for free processes hanging around Enhanced node refc bookkeeping Fix node container refc tests of ETS Fix node refc test of external data Node container refc test for persistent terms Include persistent term storage in node/dist refc check Fix node refc test for system message queue
2019-07-22Fix etp-ets-tablesRickard Green
2019-06-28Merge branch 'maint'Lukas Larsson
2019-06-28erts: Update etp-stackump, stackmap and disasmLukas Larsson
2019-06-28Merge branch 'maint'Lukas Larsson
2019-06-27erts: Randomize valgrind taskset CPULukas Larsson
When running multiple valgrinds on the same machine we want to attempt to make sure that they do not end up on the same core.
2019-06-27Merge branch 'maint'Lukas Larsson
2019-06-27erlexec: Fix argument separation when mixing env flagsLukas Larsson
Example: export ERL_AFLAGS=-test erl dummy_param In the above example, the dummy_param would be interpreted as an argument to -test, and not as a separate argument as it should.
2019-06-24Merge branch 'maint'Sverker Eriksson
2019-06-24Fix VALGRIND_MISC_FLAGS defaults to use ERL_TOPSverker Eriksson
for suppression file.
2019-06-20Merge branch 'maint'Sverker Eriksson
2019-06-20Add default VALGRIND_MISC_FLAGS if not setSverker Eriksson
2019-06-19Merge branch 'maint'Sverker Eriksson
2019-06-19Merge branch 'sverker/erts/several-config-opt-windows/ERL-912/OTP-15918' ↵Sverker Eriksson
into maint
2019-06-19Merge branch 'maint'Sverker Eriksson
2019-06-19Merge branch 'sverker/gcov-docker' into maintSverker Eriksson
2019-06-19erts: Add gcov-gen-html scriptSverker Eriksson
to generate nice html from logs of gcov compiled emulator.
2019-06-19Merge pull request #2110 from NattyNarwhal/aix-fixes/OTP-15866Lukas Larsson
Wake AIX up from coma
2019-06-17cc.sh: Optimize dependency generationBjörn Gustavsson
2019-05-29vsyslog replacement if not presentCalvin Buckley
2019-05-28erts: Allow several -config options on WindowsSverker Eriksson
2019-05-27erts: Mend etp-search-heapsSverker Eriksson
2019-05-27erts: Fix etp-commands print of 64-bit pointersSverker Eriksson
Use %p instead of %x to print full pointer value.
2019-05-02erts: Remove dead cpu info code in erlexecLukas Larsson
This was previously used when erlexec needed to decide whether to run the smp or non-smp emulator.
2019-05-02erts: Remove -instr from erlexec flagsLukas Larsson
2019-04-24erts: Fix etp-block2mbcSverker Eriksson
2019-04-24erts: Fix etp-commands to work on older gdbSverker Eriksson
where $argc does not exists "if $undefined_variable" evaluates as true !?
2019-04-18Merge branch 'lukas/tools/overhead_benchmark'Lukas Larsson
* lukas/tools/overhead_benchmark: etp: Fix free de processes check tools: Add overhead benchmark
2019-04-18etp: Fix free de processes checkLukas Larsson
2019-04-18erts: Fix cerl -rr to use correct etp fileLukas Larsson
2019-04-18erts: Fix etp-process-info to print exiting and free processesLukas Larsson
2019-04-10erts: Fix gcc warning in to_erlLukas Larsson
2019-03-25etp: Don't crash etp-stack* when c_p->i is nullLukas Larsson
2019-03-04Merge branch 'maint'Sverker Eriksson
2019-03-04Merge PR-2161 sverker/to_erl-utf8/ERL-854 OTP-15650 into maintSverker Eriksson
* sverker/to_erl-utf8/ERL-854: erts: Remove 7-bit ASCII limitation in to_erl
2019-02-26erts: Remove 7-bit ASCII limitation in to_erlSverker Eriksson
Symptom: to_erl garbles anything beyond 7-bit ASCII received on STDIN Solution: Remove setting of ISTRIP flag on input terminal. "man tcsetattr" says: ISTRIP Strip off eighth bit.
2019-02-22Merge branch ↵Lukas Larsson
'lukas/erts/fragment-dist-messages/OTP-13397/OTP-15610/OTP-15611/OTP-15612/OTP-15613' * lukas/erts/fragment-dist-messages/OTP-13397/OTP-15610/OTP-15611/OTP-15612/OTP-15613: erts: Add debug dist obuf memory leak check win32: Fix ./otp_build debuginfo_win32 Make ld.sh on windows print better error reason erts: Fix so that externals with creation 0 compare equal to all erts: Expand etp to look for free processes erts: Implement trapping while sending distr exit/down erts: Add ERL_NODE_BOOKKEEP to node tables refc erts: Refactor ErtsSendContext to be ErtsDSigSendContext erts: Add distr testcases for fragmentation erts: Make remote send of exit/2 trap erts: Implement fragmentation of distrubution messages erts: Expand distribution protocol documentation erts: Move reason in dist messages to payload erts: Remove a copy of distribution data payload erts: Yield later during process exit and allow free procs to run erts: Refactor rbt _yielding to use reductions erts: Limit binary printout for %.XT in erts_print
2019-02-22Make ld.sh on windows print better error reasonLukas Larsson
2019-02-22erts: Expand etp to look for free processesLukas Larsson
2019-02-21erts: Yield later during process exit and allow free procs to runLukas Larsson
OTP-15610
2019-02-19Merge branch 'maint'Sverker Eriksson
2019-02-19Merge branch 'sverker/heart-nice-exit/OTP-15599' into maintSverker Eriksson
* sverker/heart-nice-exit/OTP-15599: erts: Avoid heart killing a nicely exiting emulator
2019-02-18Merge branch 'maint'Lukas Larsson
2019-02-18erts: Remove etp macro offsetofLukas Larsson
The macro command was added quite recently and far from all of our testmachines have this command
2019-02-14erts: Avoid heart killing a nicely exiting emulatorSverker Eriksson
Symptom: Heart kills exiting emulator before is has flushed all ports and with HEART_KILL_SIGNAL=SIGABRT it may also produce unnecessary core dumps from doing init:reboot() for example. Problem: Heart port is closed together with all the others in handle_reap_ports() which is detected by heart OS process. Solution 1: Leave the heart port alone in handle_reap_ports() and let it be closed by OS when emulator exists. It doesn't need to be flushed anyway. Solution 2: When heart OS process gets EOF on connection let it wait max 5 seconds for emulator process to self terminate before trying to kill it.
2019-02-14Revert "Add -ztma option for enabling tuple calls"Björn Gustavsson
This reverts commit ea0e763e953f9c7d1fa9c142f24cb95f56119c56.
2019-02-14Merge branch 'maint'Björn Gustavsson
* maint: Add -ztma option for enabling tuple calls Reinstate tuple calls support in the beam emulator
2019-02-14Merge pull request #2113 from richcarl/optional-tuple-callsBjörn Gustavsson
Optional tuple calls OTP-15580