Age | Commit message (Collapse) | Author |
|
|
|
* ingela/ssl/test-cuddle:
ssl: Make sure test starts in a "good" state
ssl: Cuddle timeout
|
|
|
|
|
|
Optimize continuation pointer management
|
|
The `move_call` instructions are combinations of a `move` instruction
and a `call` instruction. As currently implemented, the `move` part of
the instruction is executed in its entirety before the `call` part is
even started. The reason is that the C compiler cannot see that it
would be safe to read the target address of the call before writing to
the move destination.
Rewrite the instructions to explicitly read both the source for the
move and the target address for the call before writing the
destination of the move.
Micro-benchmarks show a small but consistent speed-up after this
change.
|
|
Eliminating the CP register and putting continuation
pointers directly on the stack made the deallocate_return
instruction slower.
Try to mitigate this slow down by specializing deallocate_return
for small stack. For the move_deallocate_return instruction,
reorder instructions to make it possible to execute the read
instructions in parallel.
|
|
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]>
|
|
* josevalim/edoc/no-more-inets/OTP-15999/PR-2317:
system: Remove special handling of EDoc in otp_SUITE.
Remove inets dependency from edoc
|
|
|
|
Add helping verb
|
|
|
|
* ingela/ssl/test-cuddle:
public_key: Use another time in test certificates
ssl: Robustify test case
|
|
Some OpenSSL versions has problems handling the current selected time
causing interop tests to fail.
|
|
|
|
* hasse/remove_old_IO_requests/OTP-15695:
stdlib: Remove old I/O-requests from test suites
stdlib (doc): Do not mention old requests
snmp: Update old format I/O-request
sasl: Use encoding when reading terms
parsetools (doc): Update old format I/O-requests
mnesia: Update old format I/O-request
kernel: Update old format I/O-requests
stdlib: Remove no longer used function
kernel: Remove commented out code
stdlib: Remove commented out code
|
|
* maint:
eunit: Handle get_until requests with explicit encoding
|
|
* hasse/eunit/io_protocol_fix/OTP-16000:
eunit: Handle get_until requests with explicit encoding
|
|
|
|
|
|
|
|
* kpy3/fix-fd-leak-in-logger/OTP-15997:
Close log files in case of inode change properly
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ampleyfly/eunit/surefire_controlchars/OTP-15950/ERL-991/PR-2316:
ERL-991 Strip control codes from eunit_surefire output
|
|
* maint:
fun2ms: accept ++ in function head when called from shell
|
|
* legoscia/stdlib/fun2ms-plusplus/OTP-15992/PR-2322:
fun2ms: accept ++ in function head when called from shell
|
|
Needed a helping verb, added a helping verb.
|
|
|
|
* sverker/erl_interface/ei_decode_fun-fix/OTP-15996:
erl_interface: Fix bug in ei_decode_fun for very old encoding
|
|
|
|
* ingela/ssl/test-cuddle:
ssl: Add OpenSSL renegotiate sanity check
ssl: Fix missing OpenSSL conf
|
|
|
|
|
|
* maint:
ssh: Use new ssh_connection:event() type in channel defs
ssh: change type names
ssh: The ssh_connection documentation is now generated
ssh: Update ssh_sftp:start_channel documentation and code
ssh: The ssh_sftp documentation is now generated
ssh: The ssh_sftpd documentation is now generated
|
|
* hans/ssh/gendoc/OTP-15395:
ssh: Use new ssh_connection:event() type in channel defs
ssh: change type names
ssh: The ssh_connection documentation is now generated
ssh: Update ssh_sftp:start_channel documentation and code
ssh: The ssh_sftp documentation is now generated
ssh: The ssh_sftpd documentation is now generated
|
|
* maint:
ssh: Remove unused address,port from #connection{}
ssh: Remove unused port_bindings from #connection{}
|
|
* hans/ssh/remove_unused_rec_fields/OTP-15984:
ssh: Remove unused address,port from #connection{}
ssh: Remove unused port_bindings from #connection{}
|
|
* maint:
ssh: Don't assume Reason to be a string()
|
|
* hans/ssh/early_crash_fail_logging/ERL-990/OTP-15962:
ssh: Don't assume Reason to be a string()
|
|
* maint:
kernel: Correct a test case in global_SUITE
|
|
* hasse/kernel/global_tests:
kernel: Correct a test case in global_SUITE
|