Age | Commit message (Collapse) | Author |
|
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]>
|
|
* maint:
erts: Create heap binaries in binary:split/2-3
erts: Create heap binaries in binary_part/2-3
erts: Create heap binaries in split_binary/2
erts: Create heap binaries in bs_get_binary2
erts: Remove size check in bs_start_match
erts: Disallow binaries whose size in bits exceeds UWORD_MAX
|
|
* john/erts/bs_get_binary2-heap-binaries/OTP-15977:
erts: Create heap binaries in binary:split/2-3
erts: Create heap binaries in binary_part/2-3
erts: Create heap binaries in split_binary/2
erts: Create heap binaries in bs_get_binary2
erts: Remove size check in bs_start_match
erts: Disallow binaries whose size in bits exceeds UWORD_MAX
|
|
|
|
* maint:
erts: Escape atoms in erlang:fun_to_list/1
|
|
|
|
The test case alters the return value of a function that the
compiler expects will never return, resulting in undefined
behavior.
Note that the debugger (which may change variables/return values)
is unaffected since the affected module is purged and "replaced"
with an interpreted variant.
|
|
|
|
|
|
|
|
|
|
|
|
Add a sleep to reduce the chance that process exit
has not been "processed" by the nif code.
Also increased the test case timetrap for the
sc_ctrl_proc_exit group of test cases.
OTP-15904
|
|
OTP-15904
|
|
OTP-15904
|
|
If we are not allowe to change ('eopnotsupp') the socket
option 'dontroute' then we skip the test case.
OTP-15904
|
|
The socket acceptconn test case has been split into two,
one for UDP and one for TCP.
OTP-15904
|
|
* 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
|
|
* 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
|
|
* rickard/node-refc-tests-21:
Node container refc test for persistent terms
Include persistent term storage in node/dist refc check
Fix node refc test for system message queue
|
|
|
|
Added two place holder test cases for the socket options error
and linger.
OTP-15904
|
|
Handle the eperm error reason that can be returned when
attempting to use 'bindtodevice'.
OTP-15904
|
|
OTP-15904
|
|
Some platforms (for example darwin and OpenBSD) does not accept
this option for UDP. Will result in 'enoprotoopt'. So, skip
that part of the test case (UDP) if this error occurs.
OTP-15904
|
|
into bmk/erts/esock/20190717/socket_options/OTP-15904
|
|
into bmk/erts/esock/20190717/socket_options/OTP-15904
|
|
OTP-15904
|
|
OTP-15905
|
|
OTP-15904
|
|
After a successful set of debug, also attempt to read it back
to check that it actually took.
OTP-15904
|
|
The test case must either be run with a user that has
CAP_NET_ADMIN capability or by root. Otherwise the test
case will be skipped (eacces).
OTP-15904
|
|
On FreeBSD (for instance) the address "broadcast"
(limited broadcast address = INADDR_BROADCAST)
is not available (=> eaddrnotavail), so that part
of the test is skipped.
OTP-15904
|
|
Its now possible to bind a socket to the (limited) broadcast
address by specifying 'broadcast' as address:
socket:bind(Socket, broadcast)
This is *only* valid for family 'inet'.
Add testing of sending (broadcasting) to both "limited" broadcast address
and "subnet-directed" broadcast address.
OTP-15904
|
|
OTP-15904
|
|
Add test case for the socket option bindtodevice. Also make
correction in the nif code. Used the wrong option (broadcast).
Also added more info to doc.
Note sure if this test case actually works. Set and get "works",
but the value returned by get is always "". So either we should
extend the test to made sure the bind actually has the expected
effect or... Something for a rainy day maybe...
OTP-15904
|
|
OTP-15904
|
|
Add test case for the socket option acceptconn. Also make
minor correction (error when trying to set this option
was incorrect). Doc was also incorrect (spelled wrong).
OTP-15904
|
|
|
|
|
|
|
|
|
|
Extend the "checks" for faulty gcc (found another platform
with the same problem (Old SLES 11).
Also tweaked the multicast test a bit.
|
|
Needed to do some tweaking to make the tool work with IPv6 sockets.
Also found and corrected some unrelated bugs in the tool.
OTP-15897
|
|
"Due to" cut-and-paste, a number of IPv6 test cases was missing
the condition fun for validating IPv6 support (which caused
a couple of IPv6 test cases to fail on platforms not supporting IPv6).
OTP-15897
|
|
OTP-15897
|
|
OTP-15897
|
|
OTP-15897
|
|
OTP-15897
|
|
* rickard/test-fixes-21:
Fix unstable test dump_SUITE:signal_abort
Fix unstable node_container_SUITE:magic_ref test
Fix unstable node_container_SUITE:node_controller_refc test
Fix unstable tests process_SUITE:no_priority_inversion{,2}
|