Changeset 258381 in webkit
- Timestamp:
- Mar 12, 2020, 9:16:36 PM (6 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 2 edited
-
ChangeLog (modified) (1 diff)
-
ftl/FTLLowerDFGToB3.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r258344 r258381 1 2020-03-12 Keith Miller <keith_miller@apple.com> 2 3 DFG nodes that take a TypedArray's storage need to keepAlive the TypedArray 4 https://bugs.webkit.org/show_bug.cgi?id=209035 5 6 Reviewed by Saam Barati. 7 8 It might be possible to produce a graph where the last reference to a TypedArray 9 is via a GetByVal or PutByVal. Since those nodes don't create any reference to the 10 TypedArray in B3 we may end up not keeping the TypedArray alive until after the 11 storage access. 12 13 * ftl/FTLLowerDFGToB3.cpp: 14 (JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite): 15 (JSC::FTL::DFG::LowerDFGToB3::compileGetByVal): 16 (JSC::FTL::DFG::LowerDFGToB3::compilePutByVal): 17 1 18 2020-03-12 Yusuke Suzuki <ysuzuki@apple.com> 2 19 -
trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
r258078 r258381 3839 3839 // array buffer storage. 3840 3840 m_heaps.decorateFencedAccess(&m_heaps.typedArrayProperties, atomicValue); 3841 3841 3842 // We have to keep base alive since that keeps storage alive. 3843 keepAlive(lowCell(baseEdge)); 3842 3844 setIntTypedArrayLoadResult(result, type); 3843 3845 } … … 4694 4696 case Array::Float32Array: 4695 4697 case Array::Float64Array: { 4698 LValue base = lowCell(m_graph.varArgChild(m_node, 0)); 4696 4699 LValue index = lowInt32(m_graph.varArgChild(m_node, 1)); 4697 4700 LValue storage = lowStorage(m_graph.varArgChild(m_node, 2)); … … 4723 4726 } 4724 4727 4728 // We have to keep base alive since that keeps storage alive. 4729 keepAlive(base); 4725 4730 setDouble(result); 4726 4731 return; … … 5089 5094 } 5090 5095 5096 // We have to keep base alive since that keeps storage alive. 5097 keepAlive(base); 5091 5098 return; 5092 5099 }
Note:
See TracChangeset
for help on using the changeset viewer.