[webkit-changes] [180317] trunk/Source/JavaScriptCore
Michael Saboff
msaboff at apple.com
Wed Feb 18 16:17:04 PST 2015
Let me add more to the first paragraph.
> On Feb 18, 2015, at 4:12 PM, Michael Saboff <msaboff at apple.com> wrote:
>
> Phil is adamant that we should eliminate this from trunk. He believes it is the best solution for avoiding the crash in <rdar://problem/17198412 <rdar://problem/17198412>> CrashTracer: DFG_CRASH beneath JSC::FTL::LowerDFGToLLVM::compileNode, and thinks it is less risky than the fix for <rdar://problem/19187718 <rdar://problem/19187718>> Crash in JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq (139398).
He believe that the change for rdar://problem/17198412 <rdar://problem/17198412> is the lowest risk for the branch, but rdar://problem/19187718 <rdar://problem/19187718> is the best for trunk.
>
> He believes that we lose information by not crashing in internal release builds during our testing. He prefers that we have a comprehensive fail-the-compile-but continue solution for both the DFG and FTL.
>
> We haven’t committed it to the branch, but I suggested that we only commit this change and not the capabilities check landed for <rdar://problem/19187718 <rdar://problem/19187718>> to the branch. I updated rdar://problem/17198412 <rdar://problem/17198412> and its clone rdar://problem/19877186 <rdar://problem/19877186> accordingly. It doesn’t look like rdar://problem/19187718 <rdar://problem/19187718> had been cloned for the branch.
>
> - Michael
>
>> On Feb 18, 2015, at 3:54 PM, Geoffrey Garen <ggaren at apple.com <mailto:ggaren at apple.com>> wrote:
>>
>> If there’s something incorrect or incomplete about this change, and/or if it’s gone from TOT, I don’t agree that we should commit it to the branch.
>>
>> Have we committed the change to the branch?
>>
>> Is there still a Radar proposing committing the change to the branch?
>>
>> Geoff
>>
>>> On Feb 18, 2015, at 3:52 PM, msaboff at apple.com <mailto:msaboff at apple.com> wrote:
>>>
>>> Revision
>>> 180317 <http://trac.webkit.org/projects/webkit/changeset/180317>Author
>>> msaboff at apple.com <mailto:msaboff at apple.com>Date
>>> 2015-02-18 15:52:16 -0800 (Wed, 18 Feb 2015)
>>> Log Message
>>>
>>> Rollout r180247 <http://trac.webkit.org/projects/webkit/changeset/180247> & r180249 <http://trac.webkit.org/projects/webkit/changeset/180249> from trunk
>>> https://bugs.webkit.org/show_bug.cgi?id=141773 <https://bugs.webkit.org/show_bug.cgi?id=141773>
>>>
>>> Reviewed by Filip Pizlo.
>>>
>>> Theses changes makes sense to fix the crash reported in https://bugs.webkit.org/show_bug.cgi?id=141730 <https://bugs.webkit.org/show_bug.cgi?id=141730>
>>> only for branches. The change to fail the FTL compile but continue running is not comprehensive
>>> enough for general use on trunk.
>>>
>>> * dfg/DFGPlan.cpp:
>>> (JSC::DFG::Plan::compileInThreadImpl):
>>> * ftl/FTLLowerDFGToLLVM.cpp:
>>> (JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
>>> (JSC::FTL::LowerDFGToLLVM::lower):
>>> (JSC::FTL::LowerDFGToLLVM::createPhiVariables):
>>> (JSC::FTL::LowerDFGToLLVM::compileNode):
>>> (JSC::FTL::LowerDFGToLLVM::compileUpsilon):
>>> (JSC::FTL::LowerDFGToLLVM::compilePhi):
>>> (JSC::FTL::LowerDFGToLLVM::compileDoubleRep):
>>> (JSC::FTL::LowerDFGToLLVM::compileValueRep):
>>> (JSC::FTL::LowerDFGToLLVM::compileValueToInt32):
>>> (JSC::FTL::LowerDFGToLLVM::compilePutLocal):
>>> (JSC::FTL::LowerDFGToLLVM::compileArithAddOrSub):
>>> (JSC::FTL::LowerDFGToLLVM::compileArithMul):
>>> (JSC::FTL::LowerDFGToLLVM::compileArithDiv):
>>> (JSC::FTL::LowerDFGToLLVM::compileArithMod):
>>> (JSC::FTL::LowerDFGToLLVM::compileArithMinOrMax):
>>> (JSC::FTL::LowerDFGToLLVM::compileArithAbs):
>>> (JSC::FTL::LowerDFGToLLVM::compileArithNegate):
>>> (JSC::FTL::LowerDFGToLLVM::compileArrayifyToStructure):
>>> (JSC::FTL::LowerDFGToLLVM::compileGetById):
>>> (JSC::FTL::LowerDFGToLLVM::compileGetMyArgumentByVal):
>>> (JSC::FTL::LowerDFGToLLVM::compileGetArrayLength):
>>> (JSC::FTL::LowerDFGToLLVM::compileGetByVal):
>>> (JSC::FTL::LowerDFGToLLVM::compilePutByVal):
>>> (JSC::FTL::LowerDFGToLLVM::compileArrayPush):
>>> (JSC::FTL::LowerDFGToLLVM::compileArrayPop):
>>> (JSC::FTL::LowerDFGToLLVM::compileNewArray):
>>> (JSC::FTL::LowerDFGToLLVM::compileToString):
>>> (JSC::FTL::LowerDFGToLLVM::compileMakeRope):
>>> (JSC::FTL::LowerDFGToLLVM::compileCompareEq):
>>> (JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq):
>>> (JSC::FTL::LowerDFGToLLVM::compileSwitch):
>>> (JSC::FTL::LowerDFGToLLVM::compare):
>>> (JSC::FTL::LowerDFGToLLVM::boolify):
>>> (JSC::FTL::LowerDFGToLLVM::opposite):
>>> (JSC::FTL::LowerDFGToLLVM::lowJSValue):
>>> (JSC::FTL::LowerDFGToLLVM::speculate):
>>> (JSC::FTL::LowerDFGToLLVM::isArrayType):
>>> (JSC::FTL::LowerDFGToLLVM::exitValueForAvailability):
>>> (JSC::FTL::LowerDFGToLLVM::exitValueForNode):
>>> (JSC::FTL::LowerDFGToLLVM::setInt52):
>>> (JSC::FTL::lowerDFGToLLVM):
>>> (JSC::FTL::LowerDFGToLLVM::loweringFailed): Deleted.
>>> * ftl/FTLLowerDFGToLLVM.h:
>>> Modified Paths
>>>
>>> trunk/Source/JavaScriptCore/ChangeLog <x-msg://9/#trunkSourceJavaScriptCoreChangeLog>
>>> trunk/Source/JavaScriptCore/dfg/DFGPlan.cpp <x-msg://9/#trunkSourceJavaScriptCoredfgDFGPlancpp>
>>> trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp <x-msg://9/#trunkSourceJavaScriptCoreftlFTLLowerDFGToLLVMcpp>
>>> trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.h <x-msg://9/#trunkSourceJavaScriptCoreftlFTLLowerDFGToLLVMh>
>>> Diff
>>>
>>> <>Modified: trunk/Source/JavaScriptCore/ChangeLog (180316 => 180317)
>>>
>>> --- trunk/Source/JavaScriptCore/ChangeLog 2015-02-18 23:50:12 UTC (rev 180316)
>>> +++ trunk/Source/JavaScriptCore/ChangeLog 2015-02-18 23:52:16 UTC (rev 180317)
>>> @@ -1,3 +1,61 @@
>>> +2015-02-18 Michael Saboff <msaboff at apple.com <mailto:msaboff at apple.com>>
>>> +
>>> + Rollout r180247 & r180249 from trunk
>>> + https://bugs.webkit.org/show_bug.cgi?id=141773 <https://bugs.webkit.org/show_bug.cgi?id=141773>
>>> +
>>> + Reviewed by Filip Pizlo.
>>> +
>>> + Theses changes makes sense to fix the crash reported in https://bugs.webkit.org/show_bug.cgi?id=141730 <https://bugs.webkit.org/show_bug.cgi?id=141730>
>>> + only for branches. The change to fail the FTL compile but continue running is not comprehensive
>>> + enough for general use on trunk.
>>> +
>>> + * dfg/DFGPlan.cpp:
>>> + (JSC::DFG::Plan::compileInThreadImpl):
>>> + * ftl/FTLLowerDFGToLLVM.cpp:
>>> + (JSC::FTL::LowerDFGToLLVM::LowerDFGToLLVM):
>>> + (JSC::FTL::LowerDFGToLLVM::lower):
>>> + (JSC::FTL::LowerDFGToLLVM::createPhiVariables):
>>> + (JSC::FTL::LowerDFGToLLVM::compileNode):
>>> + (JSC::FTL::LowerDFGToLLVM::compileUpsilon):
>>> + (JSC::FTL::LowerDFGToLLVM::compilePhi):
>>> + (JSC::FTL::LowerDFGToLLVM::compileDoubleRep):
>>> + (JSC::FTL::LowerDFGToLLVM::compileValueRep):
>>> + (JSC::FTL::LowerDFGToLLVM::compileValueToInt32):
>>> + (JSC::FTL::LowerDFGToLLVM::compilePutLocal):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArithAddOrSub):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArithMul):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArithDiv):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArithMod):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArithMinOrMax):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArithAbs):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArithNegate):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArrayifyToStructure):
>>> + (JSC::FTL::LowerDFGToLLVM::compileGetById):
>>> + (JSC::FTL::LowerDFGToLLVM::compileGetMyArgumentByVal):
>>> + (JSC::FTL::LowerDFGToLLVM::compileGetArrayLength):
>>> + (JSC::FTL::LowerDFGToLLVM::compileGetByVal):
>>> + (JSC::FTL::LowerDFGToLLVM::compilePutByVal):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArrayPush):
>>> + (JSC::FTL::LowerDFGToLLVM::compileArrayPop):
>>> + (JSC::FTL::LowerDFGToLLVM::compileNewArray):
>>> + (JSC::FTL::LowerDFGToLLVM::compileToString):
>>> + (JSC::FTL::LowerDFGToLLVM::compileMakeRope):
>>> + (JSC::FTL::LowerDFGToLLVM::compileCompareEq):
>>> + (JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq):
>>> + (JSC::FTL::LowerDFGToLLVM::compileSwitch):
>>> + (JSC::FTL::LowerDFGToLLVM::compare):
>>> + (JSC::FTL::LowerDFGToLLVM::boolify):
>>> + (JSC::FTL::LowerDFGToLLVM::opposite):
>>> + (JSC::FTL::LowerDFGToLLVM::lowJSValue):
>>> + (JSC::FTL::LowerDFGToLLVM::speculate):
>>> + (JSC::FTL::LowerDFGToLLVM::isArrayType):
>>> + (JSC::FTL::LowerDFGToLLVM::exitValueForAvailability):
>>> + (JSC::FTL::LowerDFGToLLVM::exitValueForNode):
>>> + (JSC::FTL::LowerDFGToLLVM::setInt52):
>>> + (JSC::FTL::lowerDFGToLLVM):
>>> + (JSC::FTL::LowerDFGToLLVM::loweringFailed): Deleted.
>>> + * ftl/FTLLowerDFGToLLVM.h:
>>> +
>>> 2015-02-18 Filip Pizlo <fpizlo at apple.com <mailto:fpizlo at apple.com>>
>>>
>>> DFG should really support varargs
>>> <>Modified: trunk/Source/JavaScriptCore/dfg/DFGPlan.cpp (180316 => 180317)
>>>
>>> --- trunk/Source/JavaScriptCore/dfg/DFGPlan.cpp 2015-02-18 23:50:12 UTC (rev 180316)
>>> +++ trunk/Source/JavaScriptCore/dfg/DFGPlan.cpp 2015-02-18 23:52:16 UTC (rev 180317)
>>> @@ -386,10 +386,7 @@
>>> }
>>>
>>> FTL::State state(dfg);
>>> - if (!FTL::lowerDFGToLLVM(state)) {
>>> - FTL::fail(state);
>>> - return FTLPath;
>>> - }
>>> + FTL::lowerDFGToLLVM(state);
>>>
>>> if (reportCompileTimes())
>>> m_timeBeforeFTL = monotonicallyIncreasingTime();
>>> <>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp (180316 => 180317)
>>>
>>> --- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp 2015-02-18 23:50:12 UTC (rev 180316)
>>> +++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp 2015-02-18 23:52:16 UTC (rev 180317)
>>> @@ -93,7 +93,6 @@
>>> LowerDFGToLLVM(State& state)
>>> : m_graph(state.graph)
>>> , m_ftlState(state)
>>> - , m_loweringSucceeded(true)
>>> , m_heaps(state.context)
>>> , m_out(state.context)
>>> , m_state(state.graph)
>>> @@ -103,12 +102,8 @@
>>> , m_tbaaStructKind(mdKindID(state.context, "tbaa.struct"))
>>> {
>>> }
>>> -
>>> -
>>> -#define LOWERING_FAILED(node, reason) \
>>> - loweringFailed((node), __FILE__, __LINE__, WTF_PRETTY_FUNCTION, (reason));
>>> -
>>> - bool lower()
>>> +
>>> + void lower()
>>> {
>>> CString name;
>>> if (verboseCompilationEnabled()) {
>>> @@ -280,22 +275,14 @@
>>> case FlushedJSValue:
>>> break;
>>> default:
>>> - LOWERING_FAILED(node, "Bad flush format for argument");
>>> + DFG_CRASH(m_graph, node, "Bad flush format for argument");
>>> break;
>>> }
>>> }
>>> -
>>> - if (!m_loweringSucceeded)
>>> - return m_loweringSucceeded;
>>> -
>>> m_out.jump(lowBlock(m_graph.block(0)));
>>>
>>> - for (BasicBlock* block : preOrder) {
>>> + for (BasicBlock* block : preOrder)
>>> compileBlock(block);
>>> -
>>> - if (!m_loweringSucceeded)
>>> - return m_loweringSucceeded;
>>> - }
>>>
>>> if (Options::dumpLLVMIR())
>>> dumpModule(m_ftlState.module);
>>> @@ -304,8 +291,6 @@
>>> m_ftlState.dumpState("after lowering");
>>> if (validationEnabled())
>>> verifyModule(m_ftlState.module);
>>> -
>>> - return m_loweringSucceeded;
>>> }
>>>
>>> private:
>>> @@ -338,8 +323,8 @@
>>> type = m_out.int64;
>>> break;
>>> default:
>>> - LOWERING_FAILED(node, "Bad Phi node result type");
>>> - return;
>>> + DFG_CRASH(m_graph, node, "Bad Phi node result type");
>>> + break;
>>> }
>>> m_phis.add(node, buildAlloca(m_out.m_builder, type));
>>> }
>>> @@ -843,13 +828,10 @@
>>> case KillLocal:
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Unrecognized node in FTL backend");
>>> + DFG_CRASH(m_graph, m_node, "Unrecognized node in FTL backend");
>>> break;
>>> }
>>>
>>> - if (!m_loweringSucceeded)
>>> - return false;
>>> -
>>> if (!m_state.isValid()) {
>>> safelyInvalidateAfterTermination();
>>> return false;
>>> @@ -885,7 +867,7 @@
>>> m_out.set(lowJSValue(m_node->child1()), destination);
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -911,7 +893,7 @@
>>> setJSValue(m_out.get(source));
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -949,7 +931,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> }
>>> }
>>>
>>> @@ -974,7 +956,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> }
>>> }
>>>
>>> @@ -1037,7 +1019,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -1144,7 +1126,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad flush format");
>>> + DFG_CRASH(m_graph, m_node, "Bad flush format");
>>> break;
>>> }
>>> }
>>> @@ -1304,7 +1286,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -1378,7 +1360,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -1481,7 +1463,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -1579,7 +1561,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -1630,7 +1612,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -1656,7 +1638,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -1781,7 +1763,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> break;
>>> }
>>> }
>>> @@ -1919,8 +1901,8 @@
>>> vmCall(m_out.operation(operationEnsureArrayStorage), m_callFrame, cell);
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad array type");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad array type");
>>> + break;
>>> }
>>>
>>> structureID = m_out.load32(cell, m_heaps.JSCell_structureID);
>>> @@ -1988,7 +1970,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> return;
>>> }
>>> }
>>> @@ -2160,8 +2142,7 @@
>>> // FIXME: FTL should support activations.
>>> // https://bugs.webkit.org/show_bug.cgi?id=129576 <https://bugs.webkit.org/show_bug.cgi?id=129576>
>>>
>>> - LOWERING_FAILED(m_node, "Unimplemented");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Unimplemented");
>>> }
>>>
>>> TypedPointer base;
>>> @@ -2207,7 +2188,7 @@
>>> return;
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Bad array type");
>>> + DFG_CRASH(m_graph, m_node, "Bad array type");
>>> return;
>>> }
>>> }
>>> @@ -2357,8 +2338,7 @@
>>> result = m_out.load32(pointer);
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad element size");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad element size");
>>> }
>>>
>>> if (elementSize(type) < 4) {
>>> @@ -2402,15 +2382,14 @@
>>> result = m_out.loadDouble(pointer);
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad typed array type");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad typed array type");
>>> }
>>>
>>> setDouble(result);
>>> return;
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Bad array type");
>>> + DFG_CRASH(m_graph, m_node, "Bad array type");
>>> return;
>>> } }
>>> }
>>> @@ -2514,10 +2493,9 @@
>>> m_out.storeDouble(value, elementPointer);
>>> break;
>>> }
>>> -
>>> +
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad array type");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad array type");
>>> }
>>>
>>> m_out.jump(continuation);
>>> @@ -2610,8 +2588,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> }
>>>
>>> switch (elementSize(type)) {
>>> @@ -2628,8 +2605,7 @@
>>> refType = m_out.ref32;
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad element size");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad element size");
>>> }
>>> } else /* !isInt(type) */ {
>>> LValue value = lowDouble(child3);
>>> @@ -2643,8 +2619,7 @@
>>> refType = m_out.refDouble;
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad typed array type");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad typed array type");
>>> }
>>> }
>>>
>>> @@ -2668,8 +2643,8 @@
>>> return;
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Bad array type");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad array type");
>>> + break;
>>> }
>>> }
>>>
>>> @@ -2740,7 +2715,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad array type");
>>> + DFG_CRASH(m_graph, m_node, "Bad array type");
>>> return;
>>> }
>>> }
>>> @@ -2798,7 +2773,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad array type");
>>> + DFG_CRASH(m_graph, m_node, "Bad array type");
>>> return;
>>> }
>>> }
>>> @@ -2835,8 +2810,8 @@
>>> switch (m_node->indexingType()) {
>>> case ALL_BLANK_INDEXING_TYPES:
>>> case ALL_UNDECIDED_INDEXING_TYPES:
>>> - LOWERING_FAILED(m_node, "Bad indexing type");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad indexing type");
>>> + break;
>>>
>>> case ALL_DOUBLE_INDEXING_TYPES:
>>> m_out.storeDouble(
>>> @@ -2853,8 +2828,8 @@
>>> break;
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Corrupt indexing type");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Corrupt indexing type");
>>> + break;
>>> }
>>> }
>>>
>>> @@ -3135,8 +3110,8 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> + break;
>>> }
>>> }
>>>
>>> @@ -3227,8 +3202,8 @@
>>> m_out.operation(operationMakeRope3), m_callFrame, kids[0], kids[1], kids[2]));
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad number of children");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad number of children");
>>> + break;
>>> }
>>> m_out.jump(continuation);
>>>
>>> @@ -3648,8 +3623,8 @@
>>> nonSpeculativeCompare(LLVMIntEQ, operationCompareEq);
>>> return;
>>> }
>>> -
>>> - LOWERING_FAILED(m_node, "Bad use kinds");
>>> +
>>> + DFG_CRASH(m_graph, m_node, "Bad use kinds");
>>> }
>>>
>>> void compileCompareEqConstant()
>>> @@ -3742,7 +3717,7 @@
>>> return;
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Bad use kinds");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kinds");
>>> }
>>>
>>> void compileCompareStrictEqConstant()
>>> @@ -4009,8 +3984,8 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> + break;
>>> }
>>>
>>> m_out.appendTo(switchOnInts, lastNext);
>>> @@ -4055,8 +4030,8 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> + break;
>>> }
>>>
>>> LBasicBlock lengthIs1 = FTL_NEW_BLOCK(m_out, ("Switch/SwitchChar length is 1"));
>>> @@ -4108,7 +4083,7 @@
>>> }
>>>
>>> case SwitchString: {
>>> - LOWERING_FAILED(m_node, "Unimplemented");
>>> + DFG_CRASH(m_graph, m_node, "Unimplemented");
>>> return;
>>> }
>>>
>>> @@ -4131,7 +4106,7 @@
>>> }
>>>
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> return;
>>> }
>>>
>>> @@ -4139,7 +4114,7 @@
>>> return;
>>> } }
>>>
>>> - LOWERING_FAILED(m_node, "Bad switch kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad switch kind");
>>> }
>>>
>>> void compileReturn()
>>> @@ -5109,7 +5084,7 @@
>>> return;
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Bad use kinds");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kinds");
>>> }
>>>
>>> void compareEqObjectOrOtherToObject(Edge leftChild, Edge rightChild)
>>> @@ -5422,7 +5397,7 @@
>>> return m_out.phi(m_out.boolean, fastResult, slowResult);
>>> }
>>> default:
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> return 0;
>>> }
>>> }
>>> @@ -5801,7 +5776,7 @@
>>> case StrictInt52:
>>> return Int52;
>>> }
>>> - LOWERING_FAILED(m_node, "Bad use kind");
>>> + DFG_CRASH(m_graph, m_node, "Bad use kind");
>>> return Int52;
>>> }
>>>
>>> @@ -5945,7 +5920,7 @@
>>> return result;
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Value not defined");
>>> + DFG_CRASH(m_graph, m_node, "Value not defined");
>>> return 0;
>>> }
>>>
>>> @@ -6260,8 +6235,7 @@
>>> speculateMisc(edge);
>>> break;
>>> default:
>>> - LOWERING_FAILED(m_node, "Unsupported speculation use kind");
>>> - return;
>>> + DFG_CRASH(m_graph, m_node, "Unsupported speculation use kind");
>>> }
>>> }
>>>
>>> @@ -6322,7 +6296,7 @@
>>>
>>> switch (arrayMode.arrayClass()) {
>>> case Array::OriginalArray:
>>> - LOWERING_FAILED(m_node, "Unexpected original array");
>>> + DFG_CRASH(m_graph, m_node, "Unexpected original array");
>>> return 0;
>>>
>>> case Array::Array:
>>> @@ -6342,8 +6316,7 @@
>>> m_out.constInt8(arrayMode.shapeMask()));
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Corrupt array class");
>>> - return 0;
>>> + DFG_CRASH(m_graph, m_node, "Corrupt array class");
>>> }
>>>
>>> default:
>>> @@ -6853,7 +6826,7 @@
>>> return ExitValue::argumentsObjectThatWasNotCreated();
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Invalid flush format");
>>> + DFG_CRASH(m_graph, m_node, "Invalid flush format");
>>> return ExitValue::dead();
>>> }
>>>
>>> @@ -6926,7 +6899,7 @@
>>> if (isValid(value))
>>> return exitArgument(arguments, ValueFormatDouble, value.value());
>>>
>>> - LOWERING_FAILED(m_node, toCString("Cannot find value for node: ", node).data());
>>> + DFG_CRASH(m_graph, m_node, toCString("Cannot find value for node: ", node).data());
>>> return ExitValue::dead();
>>> }
>>>
>>> @@ -6984,7 +6957,7 @@
>>> return;
>>> }
>>>
>>> - LOWERING_FAILED(m_node, "Corrupt int52 kind");
>>> + DFG_CRASH(m_graph, m_node, "Corrupt int52 kind");
>>> }
>>> void setJSValue(Node* node, LValue value)
>>> {
>>> @@ -7139,20 +7112,6 @@
>>> m_out.unreachable();
>>> }
>>>
>>> - NO_RETURN_DUE_TO_ASSERT void loweringFailed(Node* node, const char* file, int line, const char* function, const char* assertion)
>>> - {
>>> -#ifndef NDEBUG
>>> - m_graph.handleAssertionFailure(node, file, line, function, (assertion));
>>> -#else
>>> - UNUSED_PARAM(node);
>>> - UNUSED_PARAM(file);
>>> - UNUSED_PARAM(line);
>>> - UNUSED_PARAM(function);
>>> - UNUSED_PARAM(assertion);
>>> -#endif
>>> - m_loweringSucceeded = false;
>>> - }
>>> -
>>> AvailabilityMap& availabilityMap() { return m_availabilityCalculator.m_availability; }
>>>
>>> VM& vm() { return m_graph.m_vm; }
>>> @@ -7160,7 +7119,6 @@
>>>
>>> Graph& m_graph;
>>> State& m_ftlState;
>>> - bool m_loweringSucceeded;
>>> AbstractHeapRepository m_heaps;
>>> Output m_out;
>>>
>>> @@ -7208,14 +7166,12 @@
>>> uint32_t m_stackmapIDs;
>>> unsigned m_tbaaKind;
>>> unsigned m_tbaaStructKind;
>>> -
>>> -#undef LOWERING_FAILED
>>> };
>>>
>>> -bool lowerDFGToLLVM(State& state)
>>> +void lowerDFGToLLVM(State& state)
>>> {
>>> LowerDFGToLLVM lowering(state);
>>> - return lowering.lower();
>>> + lowering.lower();
>>> }
>>>
>>> } } // namespace JSC::FTL
>>> <>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.h (180316 => 180317)
>>>
>>> --- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.h 2015-02-18 23:50:12 UTC (rev 180316)
>>> +++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.h 2015-02-18 23:52:16 UTC (rev 180317)
>>> @@ -33,7 +33,7 @@
>>>
>>> namespace JSC { namespace FTL {
>>>
>>> -bool lowerDFGToLLVM(State&);
>>> +void lowerDFGToLLVM(State&);
>>>
>>> } } // namespace JSC::FTL
>>>
>>> _______________________________________________
>>> webkit-changes mailing list
>>> webkit-changes at lists.webkit.org <mailto:webkit-changes at lists.webkit.org>
>>> https://lists.webkit.org/mailman/listinfo/webkit-changes <https://lists.webkit.org/mailman/listinfo/webkit-changes>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-changes/attachments/20150218/f72a7831/attachment-0001.html>
More information about the webkit-changes
mailing list