delve/pkg/proc/native
Alessandro Arzilli 200994bc8f
proc/*: only load floating point registers when needed (#1981)
Changes implementations of proc.Registers interface and the
op.DwarfRegisters struct so that floating point registers can be loaded
only when they are needed.
Removes the floatingPoint parameter from proc.Thread.Registers.
This accomplishes three things:

1. it simplifies the proc.Thread.Registers interface
2. it makes it impossible to accidentally create a broken set of saved
   registers or of op.DwarfRegisters by accidentally calling
   Registers(false)
3. it improves general performance of Delve by avoiding to load
   floating point registers as much as possible

Floating point registers are loaded under two circumstances:

1. When the Slice method is called with floatingPoint == true
2. When the Copy method is called

Benchmark before:

BenchmarkConditionalBreakpoints-4   	       1	4327350142 ns/op

Benchmark after:

BenchmarkConditionalBreakpoints-4   	       1	3852642917 ns/op

Updates #1549
2020-05-13 11:56:50 -07:00
..
exc_user_darwin.c proc/native,Makefile: allow compiling on macOS without native backend 2018-10-02 10:46:09 -07:00
exc.h proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
exec_darwin.c proc/native,Makefile: allow compiling on macOS without native backend 2018-10-02 10:46:09 -07:00
exec_darwin.h proc/native,Makefile: allow compiling on macOS without native backend 2018-10-02 10:46:09 -07:00
mach_exc_user_darwin.c proc/native,Makefile: allow compiling on macOS without native backend 2018-10-02 10:46:09 -07:00
mach_exc.h proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00
nonative_darwin.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
proc_darwin.c proc/native,Makefile: allow compiling on macOS without native backend 2018-10-02 10:46:09 -07:00
proc_darwin.go *: Add --tty flag for debug / exec 2020-04-10 09:53:13 -07:00
proc_darwin.h proc/native,Makefile: allow compiling on macOS without native backend 2018-10-02 10:46:09 -07:00
proc_freebsd.c *: FreeBSD initial support (#1480) 2019-07-12 18:28:04 -07:00
proc_freebsd.go proc/native: disable async preemption on freebsd 2020-04-10 11:03:21 -07:00
proc_freebsd.h *: FreeBSD initial support (#1480) 2019-07-12 18:28:04 -07:00
proc_linux.go proc: Find executable should follow symbol links. 2020-04-27 09:14:58 -07:00
proc_unix.go *: Add --tty flag for debug / exec 2020-04-10 09:53:13 -07:00
proc_windows.go *: Add --tty flag for debug / exec 2020-04-10 09:53:13 -07:00
proc.go proc/native: disable async preemption on freebsd 2020-04-10 11:03:21 -07:00
ptrace_darwin.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
ptrace_freebsd_amd64.c *: FreeBSD initial support (#1480) 2019-07-12 18:28:04 -07:00
ptrace_freebsd_amd64.h *: FreeBSD initial support (#1480) 2019-07-12 18:28:04 -07:00
ptrace_freebsd.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
ptrace_linux_64bit.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
ptrace_linux_386.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
ptrace_linux_amd64.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
ptrace_linux.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
register_linux_386.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
registers_darwin_amd64.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
registers_freebsd_amd64.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
registers_linux_amd64.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
registers_linux_arm64.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
registers_windows_amd64.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
support_sentinel.go pkg/proc,service: support linux/386 (#1884) 2020-03-10 09:34:40 -07:00
syscall_windows_amd64.go proc: move windows register handling code to winutil package 2018-11-21 12:17:16 -08:00
syscall_windows.go *: Update import name to github.com/go-delve/delve 2019-01-04 19:43:13 +01:00
threads_darwin.c proc/native,Makefile: allow compiling on macOS without native backend 2018-10-02 10:46:09 -07:00
threads_darwin.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
threads_darwin.h proc/native,Makefile: allow compiling on macOS without native backend 2018-10-02 10:46:09 -07:00
threads_freebsd.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
threads_linux_386.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
threads_linux_amd64.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
threads_linux_arm64.go *: un-export unnecessarily public symbols 2020-03-31 14:47:29 -07:00
threads_linux.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
threads_windows.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
threads.go proc/*: only load floating point registers when needed (#1981) 2020-05-13 11:56:50 -07:00
zsyscall_windows.go proc: refactoring: split backends to separate packages 2017-04-21 14:00:04 -07:00