diff options
author | Benedikt Meurer <bmeurer@chromium.org> | 2019-05-15 08:37:20 +0200 |
---|---|---|
committer | Refael Ackermann <refack@gmail.com> | 2019-06-01 09:59:22 -0400 |
commit | cdd443967298890cf588e548f313d40459172bfa (patch) | |
tree | fa6c4a79f76ddb506366c7321f94ac29542cd246 /deps | |
parent | 0859870bc0fde70c938ea43e79b929f4d540bede (diff) | |
download | node-new-cdd443967298890cf588e548f313d40459172bfa.tar.gz |
deps: V8: cherry-pick cca9ae3c9a
Original commit message:
Remove recursion from NeedsCheckHeapObject.
We use the predicate NeedsCheckHeapObject in the compiler frontend to
determine whether we can skip introducing CheckHeapObject nodes. But
this predicate would also walk up the graph in case of Phis, which can
result in really long compilation times (on the main thread). In the
report in https://github.com/nodejs/node/issues/27667, the compiler
frontend alone took around 4-5mins of main thread time for a single
function. With this patch the time goes down to 4-5ms.
Bug: v8:9250
Refs: nodejs/node#27667
Change-Id: I231eb780ff04f949fa1669714f9af6ebfbcade05
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1612897
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61503}
Fixes: https://github.com/nodejs/node/issues/27667
PR-URL: https://github.com/nodejs/node/pull/27729
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'deps')
-rw-r--r-- | deps/v8/src/compiler/property-access-builder.cc | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/deps/v8/src/compiler/property-access-builder.cc b/deps/v8/src/compiler/property-access-builder.cc index 1c5aa1f2c3..75b3c70f65 100644 --- a/deps/v8/src/compiler/property-access-builder.cc +++ b/deps/v8/src/compiler/property-access-builder.cc @@ -119,14 +119,6 @@ bool NeedsCheckHeapObject(Node* receiver) { case IrOpcode::kJSToString: case IrOpcode::kTypeOf: return false; - case IrOpcode::kPhi: { - Node* control = NodeProperties::GetControlInput(receiver); - if (control->opcode() != IrOpcode::kMerge) return true; - for (int i = 0; i < receiver->InputCount() - 1; ++i) { - if (NeedsCheckHeapObject(receiver->InputAt(i))) return true; - } - return false; - } default: return true; } |