Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 1164f54

Browse filesBrowse files
ofrobotsMyles Borins
authored andcommitted
deps: fix segfault during gc
This is part 2/2 of the fixes needed for v8:4871. This fix never landed upstream because the bug is not present in active V8 version. The patch is available from the upstream v8 bug however. The segfault occurs at the intersection of the following three conditions that are dependent on the allocation pattern of an application: A pretenured (1) allocation site has to be optimized into a merged allocation by the allocation folding optimization (2) and there needs to be overflow of the store buffer (3). This patch disables the allocation folding optimization for pretenured allocations. This may have some, hopefully negligible, performance impact on real world applications. Fixes: #5900 PR-URL: #7303 Reviewed-By: Michaël Zasso <mic.besace@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com>
1 parent d9e9d9f commit 1164f54
Copy full SHA for 1164f54

File tree

Expand file treeCollapse file tree

1 file changed

+5
-0
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+5
-0
lines changed
Open diff view settings
Collapse file

‎deps/v8/src/hydrogen-instructions.cc‎

Copy file name to clipboardExpand all lines: deps/v8/src/hydrogen-instructions.cc
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3693,6 +3693,11 @@ Representation HUnaryMathOperation::RepresentationFromInputs() {
36933693

36943694
bool HAllocate::HandleSideEffectDominator(GVNFlag side_effect,
36953695
HValue* dominator) {
3696+
if (IsOldSpaceAllocation()) {
3697+
// Do not fold old space allocations because the store buffer might need
3698+
// to iterate old space pages during scavenges on overflow.
3699+
return false;
3700+
}
36963701
DCHECK(side_effect == kNewSpacePromotion);
36973702
Zone* zone = block()->zone();
36983703
Isolate* isolate = block()->isolate();

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.