diff options
| author | Keith Randall <khr@golang.org> | 2023-01-09 09:49:32 -0800 |
|---|---|---|
| committer | Keith Randall <khr@google.com> | 2023-01-09 22:50:08 +0000 |
| commit | 0202ad0b3a2bfddf9f3eafb94e19d5a0fa3d1f31 (patch) | |
| tree | 3160c752e8533518d6cfa360c388f779ba5e048b /src/os/exec | |
| parent | 64519baf3802f96a813f3f35e87aefa30a5f5f73 (diff) | |
| download | go-0202ad0b3a2bfddf9f3eafb94e19d5a0fa3d1f31.tar.xz | |
cmd/compile: prevent IsNewObject from taking quadratic time
As part of IsNewObject, we need to go from the SelectN[0] use of
a call to the SelectN[1] use of a call. The current code does this
by just looking through the block. If the block is very large,
this ends up taking quadratic time.
Instead, prepopulate a map from call -> SelectN[1] user of that call.
That lets us find the SelectN[1] user in constant time.
Fixes #57657
Change-Id: Ie2e0b660af5c080314f4f17ba2838510a1147f9e
Reviewed-on: https://go-review.googlesource.com/c/go/+/461080
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Diffstat (limited to 'src/os/exec')
0 files changed, 0 insertions, 0 deletions
