Changeset 169758 in webkit
- Timestamp:
- Jun 10, 2014, 1:29:29 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r169756 r169758 1 2014-06-10 Mark Lam <mark.lam@apple.com> 2 3 Assertion failure at JSC::Structure::checkOffsetConsistency() const + 234. 4 <https://webkit.org/b/133356> 5 6 Reviewed by Mark Hahnenberg. 7 8 * TestExpectations: 9 - Undoing expectation for js/primitive-property-access-edge-cases.html now 10 that the bug is fixed. 11 1 12 2014-06-10 Alexey Proskuryakov <ap@apple.com> 2 13 -
trunk/LayoutTests/TestExpectations
r169671 r169758 128 128 webkit.org/b/132791 svg/as-object/sizing/svg-in-object-placeholder-height-auto.html [ Skip ] 129 129 130 webkit.org/b/133356 js/primitive-property-access-edge-cases.html [ Pass Crash ]131 132 130 webkit.org/b/133057 fast/table/border-collapsing/collapsed-borders-adjoining-sections.html [ ImageOnlyFailure ] -
trunk/Source/JavaScriptCore/ChangeLog
r169751 r169758 1 2014-06-10 Mark Lam <mark.lam@apple.com> 2 3 Assertion failure at JSC::Structure::checkOffsetConsistency() const + 234. 4 <https://webkit.org/b/133356> 5 6 Reviewed by Mark Hahnenberg. 7 8 The root cause of this issue is that a nonPropertyTransition can transition 9 a pinned dictionary structure to an unpinned dictionary structure. The new 10 structure will get a copy of the property table from the original structure. 11 However, when a GC occurs, the property table in the new structure will be 12 cleared because it is unpinned. This leads to complications in subsequent 13 derivative structures when flattening occurs, which eventually leads to the 14 assertion failure in this bug. 15 16 The fix is to ensure that the new dictionary structure generated by the 17 nonPropertyTransition will have a copy of its predecessor's property table 18 and is pinned. 19 20 * runtime/Structure.cpp: 21 (JSC::Structure::nonPropertyTransition): 22 1 23 2014-06-10 Michael Saboff <msaboff@apple.com> 2 24 -
trunk/Source/JavaScriptCore/runtime/Structure.cpp
r169703 r169758 655 655 } 656 656 657 if (Structure* existingTransition = structure->m_transitionTable.get(0, attributes)) { 657 Structure* existingTransition; 658 if (!structure->isDictionary() && (existingTransition = structure->m_transitionTable.get(0, attributes))) { 658 659 ASSERT(existingTransition->m_attributesInPrevious == attributes); 659 660 ASSERT(existingTransition->indexingTypeIncludingHistory() == indexingType); … … 668 669 checkOffset(transition->m_offset, transition->inlineCapacity()); 669 670 670 { 671 if (structure->isDictionary()) 672 transition->pin(); 673 else { 671 674 ConcurrentJITLocker locker(structure->m_lock); 672 675 structure->m_transitionTable.add(vm, transition);
Note:
See TracChangeset
for help on using the changeset viewer.