Changeset 228035 in webkit
- Timestamp:
- Feb 2, 2018 4:43:14 PM (6 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r228032 r228035 1 2018-02-02 Saam Barati <sbarati@apple.com> 2 3 Make various DFG_ASSERTs provide more data to WTFCrashWithInfo 4 https://bugs.webkit.org/show_bug.cgi?id=182453 5 <rdar://problem/37174236> 6 7 Reviewed by JF Bastien and Mark Lam. 8 9 * dfg/DFGAbstractInterpreterInlines.h: 10 (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): 11 * dfg/DFGArgumentsEliminationPhase.cpp: 12 * dfg/DFGArgumentsUtilities.cpp: 13 (JSC::DFG::emitCodeToGetArgumentsArrayLength): 14 * dfg/DFGFixupPhase.cpp: 15 (JSC::DFG::FixupPhase::fixupChecksInBlock): 16 * dfg/DFGFlowIndexing.h: 17 (JSC::DFG::FlowIndexing::shadowIndex const): 18 * dfg/DFGLICMPhase.cpp: 19 (JSC::DFG::LICMPhase::run): 20 (JSC::DFG::LICMPhase::attemptHoist): 21 * dfg/DFGLoopPreHeaderCreationPhase.cpp: 22 (JSC::DFG::LoopPreHeaderCreationPhase::run): 23 * dfg/DFGPutStackSinkingPhase.cpp: 24 * dfg/DFGSpeculativeJIT.cpp: 25 (JSC::DFG::SpeculativeJIT::compileArithAbs): 26 (JSC::DFG::SpeculativeJIT::compileArithRounding): 27 (JSC::DFG::SpeculativeJIT::compileToPrimitive): 28 * dfg/DFGSpeculativeJIT64.cpp: 29 (JSC::DFG::SpeculativeJIT::fillJSValue): 30 (JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal): 31 (JSC::DFG::SpeculativeJIT::fillSpeculateInt32Strict): 32 (JSC::DFG::SpeculativeJIT::fillSpeculateInt52): 33 (JSC::DFG::SpeculativeJIT::fillSpeculateDouble): 34 (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean): 35 (JSC::DFG::SpeculativeJIT::compile): 36 * dfg/DFGStoreBarrierClusteringPhase.cpp: 37 * dfg/DFGStoreBarrierInsertionPhase.cpp: 38 * ftl/FTLLowerDFGToB3.cpp: 39 (JSC::FTL::DFG::LowerDFGToB3::compileGetStack): 40 (JSC::FTL::DFG::LowerDFGToB3::compileArithClz32): 41 (JSC::FTL::DFG::LowerDFGToB3::compileArithAbs): 42 (JSC::FTL::DFG::LowerDFGToB3::compileArithRound): 43 (JSC::FTL::DFG::LowerDFGToB3::compileArithFloor): 44 (JSC::FTL::DFG::LowerDFGToB3::compileArithCeil): 45 (JSC::FTL::DFG::LowerDFGToB3::compileArithTrunc): 46 (JSC::FTL::DFG::LowerDFGToB3::compileArithNegate): 47 (JSC::FTL::DFG::LowerDFGToB3::compilePutById): 48 (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage): 49 (JSC::FTL::DFG::LowerDFGToB3::compileGetByVal): 50 (JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode): 51 (JSC::FTL::DFG::LowerDFGToB3::compileMultiPutByOffset): 52 (JSC::FTL::DFG::LowerDFGToB3::compileCompareEq): 53 (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq): 54 (JSC::FTL::DFG::LowerDFGToB3::compileIn): 55 (JSC::FTL::DFG::LowerDFGToB3::compare): 56 (JSC::FTL::DFG::LowerDFGToB3::switchStringRecurse): 57 (JSC::FTL::DFG::LowerDFGToB3::lowInt32): 58 (JSC::FTL::DFG::LowerDFGToB3::lowInt52): 59 (JSC::FTL::DFG::LowerDFGToB3::lowCell): 60 (JSC::FTL::DFG::LowerDFGToB3::lowBoolean): 61 (JSC::FTL::DFG::LowerDFGToB3::lowDouble): 62 (JSC::FTL::DFG::LowerDFGToB3::lowJSValue): 63 1 64 2018-02-02 Don Olmstead <don.olmstead@sony.com> 2 65 -
trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
r227723 r228035 764 764 break; 765 765 default: 766 DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse );766 DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse, node->child1().useKind()); 767 767 clobberWorld(node->origin.semantic, clobberLimit); 768 768 forNode(node).setType(SpecBytecodeNumber); … … 979 979 break; 980 980 default: 981 DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse );981 DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse, node->child1().useKind()); 982 982 clobberWorld(node->origin.semantic, clobberLimit); 983 983 forNode(node).setType(SpecFullNumber); … … 1056 1056 forNode(node).setType(typeOfDoubleRounding(forNode(node->child1()).m_type)); 1057 1057 } else { 1058 DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse );1058 DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse, node->child1().useKind()); 1059 1059 clobberWorld(node->origin.semantic, clobberLimit); 1060 1060 forNode(node).setType(SpecFullNumber); -
trunk/Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp
r227410 r228035 690 690 691 691 DFG_ASSERT( 692 m_graph, node, node->child1()->op() == PhantomDirectArguments );692 m_graph, node, node->child1()->op() == PhantomDirectArguments, node->child1()->op()); 693 693 VirtualRegister reg = 694 694 virtualRegisterForArgument(node->capturedArgumentsOffset().offset() + 1) + … … 883 883 storeArgumentCountIncludingThis(argumentCountIncludingThis); 884 884 885 DFG_ASSERT(m_graph, node, varargsData->limit - 1 >= varargsData->mandatoryMinimum );885 DFG_ASSERT(m_graph, node, varargsData->limit - 1 >= varargsData->mandatoryMinimum, varargsData->limit, varargsData->mandatoryMinimum); 886 886 // Define our limit to exclude "this", since that's a bit easier to reason about. 887 887 unsigned limit = varargsData->limit - 1; … … 972 972 storeArgumentCountIncludingThis(argumentCountIncludingThis); 973 973 974 DFG_ASSERT(m_graph, node, varargsData->limit - 1 >= varargsData->mandatoryMinimum );974 DFG_ASSERT(m_graph, node, varargsData->limit - 1 >= varargsData->mandatoryMinimum, varargsData->limit, varargsData->mandatoryMinimum); 975 975 // Define our limit to exclude "this", since that's a bit easier to reason about. 976 976 unsigned limit = varargsData->limit - 1; -
trunk/Source/JavaScriptCore/dfg/DFGArgumentsUtilities.cpp
r221528 r228035 67 67 arguments->op() == CreateDirectArguments || arguments->op() == CreateScopedArguments 68 68 || arguments->op() == CreateClonedArguments || arguments->op() == CreateRest 69 || arguments->op() == PhantomDirectArguments || arguments->op() == PhantomClonedArguments || arguments->op() == PhantomCreateRest); 69 || arguments->op() == PhantomDirectArguments || arguments->op() == PhantomClonedArguments || arguments->op() == PhantomCreateRest, 70 arguments->op()); 70 71 71 72 InlineCallFrame* inlineCallFrame = arguments->origin.semantic.inlineCallFrame; -
trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp
r227874 r228035 3624 3624 // This can only arise if we have a Check node, and in that case, we can 3625 3625 // just remove the original check. 3626 DFG_ASSERT(m_graph, node, node->op() == Check );3626 DFG_ASSERT(m_graph, node, node->op() == Check, node->op(), edge.useKind()); 3627 3627 knownUseKind = UntypedUse; 3628 3628 break; -
trunk/Source/JavaScriptCore/dfg/DFGFlowIndexing.h
r208373 r228035 58 58 unsigned shadowIndex(Node* node) const 59 59 { 60 DFG_ASSERT(m_graph, node, node->op() == Phi );60 DFG_ASSERT(m_graph, node, node->op() == Phi, node->op()); 61 61 return shadowIndex(node->index()); 62 62 } -
trunk/Source/JavaScriptCore/dfg/DFGLICMPhase.cpp
r226928 r228035 127 127 // loop header must have a predecessor. (Also, we don't allow the root block to be a loop, 128 128 // which cuts out the one other way of having a loop header with only one predecessor.) 129 DFG_ASSERT(m_graph, header->at(0), header->predecessors.size() > 1 );129 DFG_ASSERT(m_graph, header->at(0), header->predecessors.size() > 1, header->predecessors.size()); 130 130 131 131 for (unsigned i = header->predecessors.size(); i--;) { … … 156 156 // broken. Therefore the predecessors must all have one successor, which implies that they 157 157 // must end in a Jump. 158 DFG_ASSERT(m_graph, preHeader->terminal(), preHeader->terminal()->op() == Jump );158 DFG_ASSERT(m_graph, preHeader->terminal(), preHeader->terminal()->op() == Jump, preHeader->terminal()->op()); 159 159 160 160 if (!preHeader->terminal()->origin.exitOK) … … 347 347 // don't have var-arg children. That may change and then we can fix this 348 348 // code. But for now we just assert that's the case. 349 DFG_ASSERT(m_graph, node, !(node->flags() & NodeHasVarArgs) );349 DFG_ASSERT(m_graph, node, !(node->flags() & NodeHasVarArgs), node->op(), node->flags()); 350 350 351 351 nodeRef = m_graph.addNode(Check, originalOrigin, node->children); -
trunk/Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp
r221637 r228035 164 164 // because that is the DFG SSA convention. Therefore, each predecessor of the loop 165 165 // header must have only one successor. 166 DFG_ASSERT(m_graph, nullptr, existingPreHeader->terminal()->op() == Jump );166 DFG_ASSERT(m_graph, nullptr, existingPreHeader->terminal()->op() == Jump, existingPreHeader->terminal()->op()); 167 167 168 168 // A pre-header is most useful if it's possible to exit from its terminal. Hence -
trunk/Source/JavaScriptCore/dfg/DFGPutStackSinkingPhase.cpp
r227410 r228035 454 454 DFG_ASSERT( 455 455 m_graph, node, 456 deferred.operand(data->local) != ConflictingFlush );456 deferred.operand(data->local) != ConflictingFlush, deferred.operand(data->local)); 457 457 458 458 // This means there is no deferral. No deferral means that the most … … 467 467 // format. But more importantly, we can simply use the value that the PutStack would 468 468 // have stored and get rid of the GetStack. 469 DFG_ASSERT(m_graph, node, format == data->format );469 DFG_ASSERT(m_graph, node, format == data->format, format, data->format); 470 470 471 471 Node* incoming = mapping.operand(data->local); … … 535 535 dataLog("Creating Upsilon for ", operand, " at ", pointerDump(block), "->", pointerDump(successorBlock), "\n"); 536 536 FlushFormat format = deferredAtHead[successorBlock].operand(operand); 537 DFG_ASSERT(m_graph, nullptr, isConcrete(format) );537 DFG_ASSERT(m_graph, nullptr, isConcrete(format), format); 538 538 UseKind useKind = uncheckedUseKindFor(format); 539 539 -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
r227874 r228035 4288 4288 4289 4289 default: { 4290 DFG_ASSERT(m_jit.graph(), node, node->child1().useKind() == UntypedUse );4290 DFG_ASSERT(m_jit.graph(), node, node->child1().useKind() == UntypedUse, node->child1().useKind()); 4291 4291 JSValueOperand op1(this, node->child1()); 4292 4292 JSValueRegs op1Regs = op1.jsValueRegs(); … … 5458 5458 } 5459 5459 5460 DFG_ASSERT(m_jit.graph(), node, node->child1().useKind() == UntypedUse );5460 DFG_ASSERT(m_jit.graph(), node, node->child1().useKind() == UntypedUse, node->child1().useKind()); 5461 5461 5462 5462 JSValueOperand argument(this, node->child1()); … … 11537 11537 void SpeculativeJIT::compileToPrimitive(Node* node) 11538 11538 { 11539 DFG_ASSERT(m_jit.graph(), node, node->child1().useKind() == UntypedUse );11539 DFG_ASSERT(m_jit.graph(), node, node->child1().useKind() == UntypedUse, node->child1().useKind()); 11540 11540 JSValueOperand argument(this, node->child1()); 11541 11541 JSValueRegsTemporary result(this, Reuse, argument); -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
r227723 r228035 108 108 default: 109 109 m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr); 110 DFG_ASSERT(m_jit.graph(), m_currentNode, spillFormat & DataFormatJS );110 DFG_ASSERT(m_jit.graph(), m_currentNode, spillFormat & DataFormatJS, spillFormat); 111 111 break; 112 112 } … … 1112 1112 DataFormat spillFormat = info.spillFormat(); 1113 1113 1114 DFG_ASSERT(m_jit.graph(), m_currentNode, (spillFormat & DataFormatJS) || spillFormat == DataFormatInt32 );1114 DFG_ASSERT(m_jit.graph(), m_currentNode, (spillFormat & DataFormatJS) || spillFormat == DataFormatInt32, spillFormat); 1115 1115 1116 1116 m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled); … … 1222 1222 DataFormat mustBeDataFormatInt32; 1223 1223 GPRReg result = fillSpeculateInt32Internal<true>(edge, mustBeDataFormatInt32); 1224 DFG_ASSERT(m_jit.graph(), m_currentNode, mustBeDataFormatInt32 == DataFormatInt32 );1224 DFG_ASSERT(m_jit.graph(), m_currentNode, mustBeDataFormatInt32 == DataFormatInt32, mustBeDataFormatInt32); 1225 1225 return result; 1226 1226 } … … 1258 1258 DataFormat spillFormat = info.spillFormat(); 1259 1259 1260 DFG_ASSERT(m_jit.graph(), m_currentNode, spillFormat == DataFormatInt52 || spillFormat == DataFormatStrictInt52 );1260 DFG_ASSERT(m_jit.graph(), m_currentNode, spillFormat == DataFormatInt52 || spillFormat == DataFormatStrictInt52, spillFormat); 1261 1261 1262 1262 m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled); … … 1351 1351 dataFormatToString(spillFormat)).data()); 1352 1352 } 1353 DFG_ASSERT(m_jit.graph(), m_currentNode, spillFormat == DataFormatDouble );1353 DFG_ASSERT(m_jit.graph(), m_currentNode, spillFormat == DataFormatDouble, spillFormat); 1354 1354 FPRReg fpr = fprAllocate(); 1355 1355 m_jit.loadDouble(JITCompiler::addressFor(virtualRegister), fpr); … … 1359 1359 } 1360 1360 1361 DFG_ASSERT(m_jit.graph(), m_currentNode, info.registerFormat() == DataFormatDouble );1361 DFG_ASSERT(m_jit.graph(), m_currentNode, info.registerFormat() == DataFormatDouble, info.registerFormat()); 1362 1362 FPRReg fpr = info.fpr(); 1363 1363 m_fprs.lock(fpr); … … 1466 1466 return gpr; 1467 1467 } 1468 DFG_ASSERT(m_jit.graph(), m_currentNode, info.spillFormat() & DataFormatJS );1468 DFG_ASSERT(m_jit.graph(), m_currentNode, info.spillFormat() & DataFormatJS, info.spillFormat()); 1469 1469 m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled); 1470 1470 m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr); … … 2964 2964 break; 2965 2965 case Array::Generic: { 2966 DFG_ASSERT(m_jit.graph(), node, node->op() == PutByVal || node->op() == PutByValDirect );2966 DFG_ASSERT(m_jit.graph(), node, node->op() == PutByVal || node->op() == PutByValDirect, node->op()); 2967 2967 2968 2968 if (child1.useKind() == CellUse) { … … 3728 3728 if (!globalObject->isHavingABadTime() && !hasAnyArrayStorage(node->indexingType())) { 3729 3729 RegisteredStructure structure = m_jit.graph().registerStructure(globalObject->arrayStructureForIndexingTypeDuringAllocation(node->indexingType())); 3730 DFG_ASSERT(m_jit.graph(), node, structure->indexingType() == node->indexingType() );3730 DFG_ASSERT(m_jit.graph(), node, structure->indexingType() == node->indexingType(), structure->indexingType(), node->indexingType()); 3731 3731 ASSERT( 3732 3732 hasUndecided(structure->indexingType()) … … 3929 3929 emitAllocateRawObject(resultGPR, m_jit.graph().registerStructure(globalObject->arrayStructureForIndexingTypeDuringAllocation(indexingType)), storageGPR, numElements, vectorLengthHint); 3930 3930 3931 DFG_ASSERT(m_jit.graph(), node, indexingType & IsArray );3931 DFG_ASSERT(m_jit.graph(), node, indexingType & IsArray, indexingType); 3932 3932 3933 3933 for (unsigned index = 0; index < numElements; ++index) { -
trunk/Source/JavaScriptCore/dfg/DFGStoreBarrierClusteringPhase.cpp
r219702 r228035 117 117 118 118 DFG_ASSERT(m_graph, node, !node->origin.wasHoisted); 119 DFG_ASSERT(m_graph, node, node->child1().useKind() == KnownCellUse );119 DFG_ASSERT(m_graph, node, node->child1().useKind() == KnownCellUse, node->op(), node->child1().useKind()); 120 120 121 121 NodeOrigin origin = node->origin; -
trunk/Source/JavaScriptCore/dfg/DFGStoreBarrierInsertionPhase.cpp
r222675 r228035 468 468 // But right now we don't need it. 469 469 470 DFG_ASSERT(m_graph, m_node, isCell(base.useKind()) );470 DFG_ASSERT(m_graph, m_node, isCell(base.useKind()), m_node->op(), base.useKind()); 471 471 472 472 // Barriers are always inserted after the node that they service. Therefore, we always know -
trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp
r227998 r228035 1668 1668 AbstractValue& value = m_state.variables().operand(data->local); 1669 1669 1670 DFG_ASSERT(m_graph, m_node, isConcrete(data->format) );1671 DFG_ASSERT(m_graph, m_node, data->format != FlushedDouble ); // This just happens to not arise for GetStacks, right now. It would be trivial to support.1670 DFG_ASSERT(m_graph, m_node, isConcrete(data->format), data->format); 1671 DFG_ASSERT(m_graph, m_node, data->format != FlushedDouble, data->format); // This just happens to not arise for GetStacks, right now. It would be trivial to support. 1672 1672 1673 1673 if (isInt32Speculation(value.m_type)) … … 2070 2070 return; 2071 2071 } 2072 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse );2072 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse, m_node->child1().useKind()); 2073 2073 LValue argument = lowJSValue(m_node->child1()); 2074 2074 LValue result = vmCall(Int32, m_out.operation(operationArithClz32), m_callFrame, argument); … … 2361 2361 2362 2362 default: { 2363 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse );2363 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse, m_node->child1().useKind()); 2364 2364 LValue argument = lowJSValue(m_node->child1()); 2365 2365 LValue result = vmCall(Double, m_out.operation(operationArithAbs), m_callFrame, argument); … … 2601 2601 } 2602 2602 2603 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse );2603 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse, m_node->child1().useKind()); 2604 2604 LValue argument = lowJSValue(m_node->child1()); 2605 2605 setJSValue(vmCall(Int64, m_out.operation(operationArithRound), m_callFrame, argument)); … … 2617 2617 return; 2618 2618 } 2619 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse );2619 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse, m_node->child1().useKind()); 2620 2620 LValue argument = lowJSValue(m_node->child1()); 2621 2621 setJSValue(vmCall(Int64, m_out.operation(operationArithFloor), m_callFrame, argument)); … … 2633 2633 return; 2634 2634 } 2635 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse );2635 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse, m_node->child1().useKind()); 2636 2636 LValue argument = lowJSValue(m_node->child1()); 2637 2637 setJSValue(vmCall(Int64, m_out.operation(operationArithCeil), m_callFrame, argument)); … … 2649 2649 return; 2650 2650 } 2651 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse );2651 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse, m_node->child1().useKind()); 2652 2652 LValue argument = lowJSValue(m_node->child1()); 2653 2653 setJSValue(vmCall(Int64, m_out.operation(operationArithTrunc), m_callFrame, argument)); … … 2724 2724 2725 2725 default: 2726 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse );2726 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == UntypedUse, m_node->child1().useKind()); 2727 2727 ArithProfile* arithProfile = m_ftlState.graph.baselineCodeBlockFor(m_node->origin.semantic)->arithProfileForBytecodeOffset(m_node->origin.semantic.bytecodeIndex); 2728 2728 auto repatchingFunction = operationArithNegateOptimize; … … 3367 3367 void compilePutById() 3368 3368 { 3369 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == CellUse );3369 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == CellUse, m_node->child1().useKind()); 3370 3370 3371 3371 Node* node = m_node; … … 3473 3473 } 3474 3474 3475 DFG_ASSERT(m_graph, m_node, isTypedView(m_node->arrayMode().typedArrayType()) );3475 DFG_ASSERT(m_graph, m_node, isTypedView(m_node->arrayMode().typedArrayType()), m_node->arrayMode().typedArrayType()); 3476 3476 LValue poisonedVector = m_out.loadPtr(cell, m_heaps.JSArrayBufferView_poisonedVector); 3477 3477 #if ENABLE(POISON) … … 3707 3707 if (m_node->arrayMode().isSaneChain()) { 3708 3708 DFG_ASSERT( 3709 m_graph, m_node, m_node->arrayMode().type() == Array::Contiguous );3709 m_graph, m_node, m_node->arrayMode().type() == Array::Contiguous, m_node->arrayMode().type()); 3710 3710 result = m_out.select( 3711 3711 isHole, m_out.constInt64(JSValue::encode(jsUndefined())), result); … … 6135 6135 } 6136 6136 6137 DFG_ASSERT(m_graph, m_node, childEdge.useKind() == Int32Use );6137 DFG_ASSERT(m_graph, m_node, childEdge.useKind() == Int32Use, childEdge.useKind()); 6138 6138 6139 6139 LValue value = lowInt32(childEdge); … … 6316 6316 storage = m_out.loadPtr(base, m_heaps.JSObject_butterfly); 6317 6317 } else { 6318 DFG_ASSERT(m_graph, m_node, variant.kind() == PutByIdVariant::Transition );6318 DFG_ASSERT(m_graph, m_node, variant.kind() == PutByIdVariant::Transition, variant.kind()); 6319 6319 m_graph.m_plan.transitions.addLazily( 6320 6320 codeBlock(), m_node->origin.semantic.codeOriginOwner(), … … 6511 6511 } 6512 6512 6513 DFG_ASSERT(m_graph, m_node, m_node->isBinaryUseKind(UntypedUse) );6513 DFG_ASSERT(m_graph, m_node, m_node->isBinaryUseKind(UntypedUse), m_node->child1().useKind(), m_node->child2().useKind()); 6514 6514 nonSpeculativeCompare( 6515 6515 [&] (LValue left, LValue right) { … … 6676 6676 } 6677 6677 6678 DFG_ASSERT(m_graph, m_node, m_node->isBinaryUseKind(UntypedUse) );6678 DFG_ASSERT(m_graph, m_node, m_node->isBinaryUseKind(UntypedUse), m_node->child1().useKind(), m_node->child2().useKind()); 6679 6679 nonSpeculativeCompare( 6680 6680 [&] (LValue left, LValue right) { … … 9312 9312 void compileIn() 9313 9313 { 9314 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == CellUse );9314 DFG_ASSERT(m_graph, m_node, m_node->child1().useKind() == CellUse, m_node->child1().useKind()); 9315 9315 9316 9316 Node* node = m_node; … … 11254 11254 } 11255 11255 11256 DFG_ASSERT(m_graph, m_node, m_node->isBinaryUseKind(UntypedUse) );11256 DFG_ASSERT(m_graph, m_node, m_node->isBinaryUseKind(UntypedUse), m_node->child1().useKind(), m_node->child2().useKind()); 11257 11257 nonSpeculativeCompare(intFunctor, fallbackFunction); 11258 11258 } … … 12981 12981 12982 12982 if (checkedExactLength) { 12983 DFG_ASSERT(m_graph, m_node, alreadyCheckedLength == minLength );12983 DFG_ASSERT(m_graph, m_node, alreadyCheckedLength == minLength, alreadyCheckedLength, minLength); 12984 12984 DFG_ASSERT(m_graph, m_node, allLengthsEqual); 12985 12985 } 12986 12986 12987 DFG_ASSERT(m_graph, m_node, minLength >= commonChars );12987 DFG_ASSERT(m_graph, m_node, minLength >= commonChars, minLength, commonChars); 12988 12988 12989 12989 if (!allLengthsEqual && alreadyCheckedLength < minLength) … … 13005 13005 // so we just check length to jump to that case. 13006 13006 13007 DFG_ASSERT(m_graph, m_node, cases[begin].string->length() == commonChars );13007 DFG_ASSERT(m_graph, m_node, cases[begin].string->length() == commonChars, cases[begin].string->length(), commonChars); 13008 13008 for (unsigned i = begin + 1; i < end; ++i) 13009 DFG_ASSERT(m_graph, m_node, cases[i].string->length() > commonChars );13009 DFG_ASSERT(m_graph, m_node, cases[i].string->length() > commonChars, cases[i].string->length(), commonChars); 13010 13010 13011 13011 if (allLengthsEqual) { 13012 DFG_ASSERT(m_graph, m_node, end == begin + 1 );13012 DFG_ASSERT(m_graph, m_node, end == begin + 1, end, begin); 13013 13013 m_out.jump(cases[begin].target); 13014 13014 return; … … 13031 13031 // string[commonChars]. 13032 13032 13033 DFG_ASSERT(m_graph, m_node, end >= begin + 2 );13033 DFG_ASSERT(m_graph, m_node, end >= begin + 2, end, begin); 13034 13034 13035 13035 LValue uncheckedChar = m_out.load8ZeroExt32(buffer, m_heaps.characters8[commonChars]); … … 13734 13734 } 13735 13735 13736 DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecInt32Only) );13736 DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecInt32Only), provenType(edge)); 13737 13737 terminate(Uncountable); 13738 13738 return m_out.int32Zero; … … 13742 13742 LValue lowInt52(Edge edge, Int52Kind kind) 13743 13743 { 13744 DFG_ASSERT(m_graph, m_node, edge.useKind() == Int52RepUse );13744 DFG_ASSERT(m_graph, m_node, edge.useKind() == Int52RepUse, edge.useKind()); 13745 13745 13746 13746 LoweredNodeValue value; … … 13768 13768 } 13769 13769 13770 DFG_ASSERT(m_graph, m_node, !provenType(edge) );13770 DFG_ASSERT(m_graph, m_node, !provenType(edge), provenType(edge)); 13771 13771 terminate(Uncountable); 13772 13772 return m_out.int64Zero; … … 13816 13816 LValue lowCell(Edge edge, OperandSpeculationMode mode = AutomaticOperandSpeculation) 13817 13817 { 13818 DFG_ASSERT(m_graph, m_node, mode == ManualOperandSpeculation || DFG::isCell(edge.useKind()) );13818 DFG_ASSERT(m_graph, m_node, mode == ManualOperandSpeculation || DFG::isCell(edge.useKind()), edge.useKind()); 13819 13819 13820 13820 if (edge->op() == JSConstant) { … … 13837 13837 } 13838 13838 13839 DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecCellCheck) );13839 DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecCellCheck), provenType(edge)); 13840 13840 terminate(Uncountable); 13841 13841 return m_out.intPtrZero; … … 13952 13952 } 13953 13953 13954 DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecBoolean) );13954 DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecBoolean), provenType(edge)); 13955 13955 terminate(Uncountable); 13956 13956 return m_out.booleanFalse; … … 13959 13959 LValue lowDouble(Edge edge) 13960 13960 { 13961 DFG_ASSERT(m_graph, m_node, isDouble(edge.useKind()) );13961 DFG_ASSERT(m_graph, m_node, isDouble(edge.useKind()), edge.useKind()); 13962 13962 13963 13963 LoweredNodeValue value = m_doubleValues.get(edge.node()); 13964 13964 if (isValid(value)) 13965 13965 return value.value(); 13966 DFG_ASSERT(m_graph, m_node, !provenType(edge) );13966 DFG_ASSERT(m_graph, m_node, !provenType(edge), provenType(edge)); 13967 13967 terminate(Uncountable); 13968 13968 return m_out.doubleZero; … … 13971 13971 LValue lowJSValue(Edge edge, OperandSpeculationMode mode = AutomaticOperandSpeculation) 13972 13972 { 13973 DFG_ASSERT(m_graph, m_node, mode == ManualOperandSpeculation || edge.useKind() == UntypedUse );13974 DFG_ASSERT(m_graph, m_node, !isDouble(edge.useKind()) );13975 DFG_ASSERT(m_graph, m_node, edge.useKind() != Int52RepUse );13973 DFG_ASSERT(m_graph, m_node, mode == ManualOperandSpeculation || edge.useKind() == UntypedUse, m_node->op(), edge.useKind()); 13974 DFG_ASSERT(m_graph, m_node, !isDouble(edge.useKind()), m_node->op(), edge.useKind()); 13975 DFG_ASSERT(m_graph, m_node, edge.useKind() != Int52RepUse, m_node->op(), edge.useKind()); 13976 13976 13977 13977 if (edge->hasConstant()) {
Note: See TracChangeset
for help on using the changeset viewer.