Changeset 194786 in webkit
- Timestamp:
- Jan 8, 2016, 1:42:23 PM (10 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r194777 r194786 1 2016-01-08 Filip Pizlo <fpizlo@apple.com> 2 3 FTL B3 compile() doesn't clear exception handlers before we add FTL-specific ones 4 https://bugs.webkit.org/show_bug.cgi?id=152922 5 6 Reviewed by Saam Barati. 7 8 FTL B3 was generating a handler table that first contained the old baseline handlers keyed 9 by baseline's bytecode indices and then the FTL handlers keyed by FTL callsite index. That's 10 wrong, since the FTL code block should not contain any baseline handlers. The fix is to 11 clear the handlers before generation, sort of like FTL LLVM does. 12 13 Also added some stuff to make it easier to inspect the handler table. 14 15 This reduces the numbe rof failures from 25 to 13. 16 17 * bytecode/CodeBlock.cpp: 18 (JSC::CodeBlock::dumpBytecode): 19 (JSC::CodeBlock::dumpExceptionHandlers): 20 (JSC::CodeBlock::beginDumpProfiling): 21 * bytecode/CodeBlock.h: 22 * ftl/FTLB3Compile.cpp: 23 (JSC::FTL::compile): 24 1 25 2016-01-08 Filip Pizlo <fpizlo@apple.com> 2 26 -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp
r194613 r194786 640 640 } 641 641 642 if (m_rareData && !m_rareData->m_exceptionHandlers.isEmpty()) { 643 out.printf("\nException Handlers:\n"); 644 unsigned i = 0; 645 do { 646 HandlerInfo& handler = m_rareData->m_exceptionHandlers[i]; 647 out.printf("\t %d: { start: [%4d] end: [%4d] target: [%4d] } %s\n", 648 i + 1, handler.start, handler.end, handler.target, handler.typeName()); 649 ++i; 650 } while (i < m_rareData->m_exceptionHandlers.size()); 651 } 642 dumpExceptionHandlers(out); 652 643 653 644 if (m_rareData && !m_rareData->m_switchJumpTables.isEmpty()) { … … 694 685 695 686 out.printf("\n"); 687 } 688 689 void CodeBlock::dumpExceptionHandlers(PrintStream& out) 690 { 691 if (m_rareData && !m_rareData->m_exceptionHandlers.isEmpty()) { 692 out.printf("\nException Handlers:\n"); 693 unsigned i = 0; 694 do { 695 HandlerInfo& handler = m_rareData->m_exceptionHandlers[i]; 696 out.printf("\t %d: { start: [%4d] end: [%4d] target: [%4d] } %s\n", 697 i + 1, handler.start, handler.end, handler.target, handler.typeName()); 698 ++i; 699 } while (i < m_rareData->m_exceptionHandlers.size()); 700 } 696 701 } 697 702 -
trunk/Source/JavaScriptCore/bytecode/CodeBlock.h
r194613 r194786 193 193 PrintStream&, unsigned bytecodeOffset, 194 194 const StubInfoMap& = StubInfoMap(), const CallLinkInfoMap& = CallLinkInfoMap()); 195 void dumpExceptionHandlers(PrintStream&); 195 196 void printStructures(PrintStream&, const Instruction*); 196 197 void printStructure(PrintStream&, const char* name, const Instruction*, int operand); -
trunk/Source/JavaScriptCore/ftl/FTLB3Compile.cpp
r194716 r194786 110 110 } 111 111 112 // We will add exception handlers while generating. 113 codeBlock->clearExceptionHandlers(); 114 112 115 CCallHelpers jit(&vm, codeBlock); 113 116 B3::generate(*state.proc, jit);
Note:
See TracChangeset
for help on using the changeset viewer.