Changeset 228035 in webkit


Ignore:
Timestamp:
Feb 2, 2018 4:43:14 PM (6 years ago)
Author:
sbarati@apple.com
Message:

Make various DFG_ASSERTs provide more data to WTFCrashWithInfo
https://bugs.webkit.org/show_bug.cgi?id=182453
<rdar://problem/37174236>

Reviewed by JF Bastien and Mark Lam.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGArgumentsUtilities.cpp:

(JSC::DFG::emitCodeToGetArgumentsArrayLength):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupChecksInBlock):

  • dfg/DFGFlowIndexing.h:

(JSC::DFG::FlowIndexing::shadowIndex const):

  • dfg/DFGLICMPhase.cpp:

(JSC::DFG::LICMPhase::run):
(JSC::DFG::LICMPhase::attemptHoist):

  • dfg/DFGLoopPreHeaderCreationPhase.cpp:

(JSC::DFG::LoopPreHeaderCreationPhase::run):

  • dfg/DFGPutStackSinkingPhase.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithAbs):
(JSC::DFG::SpeculativeJIT::compileArithRounding):
(JSC::DFG::SpeculativeJIT::compileToPrimitive):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::fillJSValue):
(JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):
(JSC::DFG::SpeculativeJIT::fillSpeculateInt32Strict):
(JSC::DFG::SpeculativeJIT::fillSpeculateInt52):
(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGStoreBarrierClusteringPhase.cpp:
  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileGetStack):
(JSC::FTL::DFG::LowerDFGToB3::compileArithClz32):
(JSC::FTL::DFG::LowerDFGToB3::compileArithAbs):
(JSC::FTL::DFG::LowerDFGToB3::compileArithRound):
(JSC::FTL::DFG::LowerDFGToB3::compileArithFloor):
(JSC::FTL::DFG::LowerDFGToB3::compileArithCeil):
(JSC::FTL::DFG::LowerDFGToB3::compileArithTrunc):
(JSC::FTL::DFG::LowerDFGToB3::compileArithNegate):
(JSC::FTL::DFG::LowerDFGToB3::compilePutById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiPutByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareEq):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):
(JSC::FTL::DFG::LowerDFGToB3::compare):
(JSC::FTL::DFG::LowerDFGToB3::switchStringRecurse):
(JSC::FTL::DFG::LowerDFGToB3::lowInt32):
(JSC::FTL::DFG::LowerDFGToB3::lowInt52):
(JSC::FTL::DFG::LowerDFGToB3::lowCell):
(JSC::FTL::DFG::LowerDFGToB3::lowBoolean):
(JSC::FTL::DFG::LowerDFGToB3::lowDouble):
(JSC::FTL::DFG::LowerDFGToB3::lowJSValue):

Location:
trunk/Source/JavaScriptCore
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r228032 r228035  
     12018-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
    1642018-02-02  Don Olmstead  <don.olmstead@sony.com>
    265
  • trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h

    r227723 r228035  
    764764            break;
    765765        default:
    766             DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse);
     766            DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse, node->child1().useKind());
    767767            clobberWorld(node->origin.semantic, clobberLimit);
    768768            forNode(node).setType(SpecBytecodeNumber);
     
    979979            break;
    980980        default:
    981             DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse);
     981            DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse, node->child1().useKind());
    982982            clobberWorld(node->origin.semantic, clobberLimit);
    983983            forNode(node).setType(SpecFullNumber);
     
    10561056                forNode(node).setType(typeOfDoubleRounding(forNode(node->child1()).m_type));
    10571057        } else {
    1058             DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse);
     1058            DFG_ASSERT(m_graph, node, node->child1().useKind() == UntypedUse, node->child1().useKind());
    10591059            clobberWorld(node->origin.semantic, clobberLimit);
    10601060            forNode(node).setType(SpecFullNumber);
  • trunk/Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp

    r227410 r228035  
    690690                   
    691691                    DFG_ASSERT(
    692                         m_graph, node, node->child1()->op() == PhantomDirectArguments);
     692                        m_graph, node, node->child1()->op() == PhantomDirectArguments, node->child1()->op());
    693693                    VirtualRegister reg =
    694694                        virtualRegisterForArgument(node->capturedArgumentsOffset().offset() + 1) +
     
    883883                                storeArgumentCountIncludingThis(argumentCountIncludingThis);
    884884
    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);
    886886                                // Define our limit to exclude "this", since that's a bit easier to reason about.
    887887                                unsigned limit = varargsData->limit - 1;
     
    972972                                storeArgumentCountIncludingThis(argumentCountIncludingThis);
    973973
    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);
    975975                                // Define our limit to exclude "this", since that's a bit easier to reason about.
    976976                                unsigned limit = varargsData->limit - 1;
  • trunk/Source/JavaScriptCore/dfg/DFGArgumentsUtilities.cpp

    r221528 r228035  
    6767        arguments->op() == CreateDirectArguments || arguments->op() == CreateScopedArguments
    6868        || 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());
    7071   
    7172    InlineCallFrame* inlineCallFrame = arguments->origin.semantic.inlineCallFrame;
  • trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp

    r227874 r228035  
    36243624                            // This can only arise if we have a Check node, and in that case, we can
    36253625                            // 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());
    36273627                            knownUseKind = UntypedUse;
    36283628                            break;
  • trunk/Source/JavaScriptCore/dfg/DFGFlowIndexing.h

    r208373 r228035  
    5858    unsigned shadowIndex(Node* node) const
    5959    {
    60         DFG_ASSERT(m_graph, node, node->op() == Phi);
     60        DFG_ASSERT(m_graph, node, node->op() == Phi, node->op());
    6161        return shadowIndex(node->index());
    6262    }
  • trunk/Source/JavaScriptCore/dfg/DFGLICMPhase.cpp

    r226928 r228035  
    127127            // loop header must have a predecessor. (Also, we don't allow the root block to be a loop,
    128128            // 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());
    130130           
    131131            for (unsigned i = header->predecessors.size(); i--;) {
     
    156156            // broken. Therefore the predecessors must all have one successor, which implies that they
    157157            // 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());
    159159
    160160            if (!preHeader->terminal()->origin.exitOK)
     
    347347        // don't have var-arg children. That may change and then we can fix this
    348348        // 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());
    350350       
    351351        nodeRef = m_graph.addNode(Check, originalOrigin, node->children);
  • trunk/Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp

    r221637 r228035  
    164164            // because that is the DFG SSA convention. Therefore, each predecessor of the loop
    165165            // 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());
    167167
    168168            // A pre-header is most useful if it's possible to exit from its terminal. Hence
  • trunk/Source/JavaScriptCore/dfg/DFGPutStackSinkingPhase.cpp

    r227410 r228035  
    454454                        DFG_ASSERT(
    455455                            m_graph, node,
    456                             deferred.operand(data->local) != ConflictingFlush);
     456                            deferred.operand(data->local) != ConflictingFlush, deferred.operand(data->local));
    457457                       
    458458                        // This means there is no deferral. No deferral means that the most
     
    467467                    // format. But more importantly, we can simply use the value that the PutStack would
    468468                    // 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);
    470470                   
    471471                    Node* incoming = mapping.operand(data->local);
     
    535535                        dataLog("Creating Upsilon for ", operand, " at ", pointerDump(block), "->", pointerDump(successorBlock), "\n");
    536536                    FlushFormat format = deferredAtHead[successorBlock].operand(operand);
    537                     DFG_ASSERT(m_graph, nullptr, isConcrete(format));
     537                    DFG_ASSERT(m_graph, nullptr, isConcrete(format), format);
    538538                    UseKind useKind = uncheckedUseKindFor(format);
    539539                   
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r227874 r228035  
    42884288
    42894289    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());
    42914291        JSValueOperand op1(this, node->child1());
    42924292        JSValueRegs op1Regs = op1.jsValueRegs();
     
    54585458    }
    54595459
    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());
    54615461
    54625462    JSValueOperand argument(this, node->child1());
     
    1153711537void SpeculativeJIT::compileToPrimitive(Node* node)
    1153811538{
    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());
    1154011540    JSValueOperand argument(this, node->child1());
    1154111541    JSValueRegsTemporary result(this, Reuse, argument);
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

    r227723 r228035  
    108108            default:
    109109                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);
    111111                break;
    112112            }
     
    11121112        DataFormat spillFormat = info.spillFormat();
    11131113       
    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);
    11151115       
    11161116        m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled);
     
    12221222    DataFormat mustBeDataFormatInt32;
    12231223    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);
    12251225    return result;
    12261226}
     
    12581258        DataFormat spillFormat = info.spillFormat();
    12591259       
    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);
    12611261       
    12621262        m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled);
     
    13511351                    dataFormatToString(spillFormat)).data());
    13521352        }
    1353         DFG_ASSERT(m_jit.graph(), m_currentNode, spillFormat == DataFormatDouble);
     1353        DFG_ASSERT(m_jit.graph(), m_currentNode, spillFormat == DataFormatDouble, spillFormat);
    13541354        FPRReg fpr = fprAllocate();
    13551355        m_jit.loadDouble(JITCompiler::addressFor(virtualRegister), fpr);
     
    13591359    }
    13601360
    1361     DFG_ASSERT(m_jit.graph(), m_currentNode, info.registerFormat() == DataFormatDouble);
     1361    DFG_ASSERT(m_jit.graph(), m_currentNode, info.registerFormat() == DataFormatDouble, info.registerFormat());
    13621362    FPRReg fpr = info.fpr();
    13631363    m_fprs.lock(fpr);
     
    14661466            return gpr;
    14671467        }
    1468         DFG_ASSERT(m_jit.graph(), m_currentNode, info.spillFormat() & DataFormatJS);
     1468        DFG_ASSERT(m_jit.graph(), m_currentNode, info.spillFormat() & DataFormatJS, info.spillFormat());
    14691469        m_gprs.retain(gpr, virtualRegister, SpillOrderSpilled);
    14701470        m_jit.load64(JITCompiler::addressFor(virtualRegister), gpr);
     
    29642964            break;
    29652965        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());
    29672967
    29682968            if (child1.useKind() == CellUse) {
     
    37283728        if (!globalObject->isHavingABadTime() && !hasAnyArrayStorage(node->indexingType())) {
    37293729            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());
    37313731            ASSERT(
    37323732                hasUndecided(structure->indexingType())
     
    39293929            emitAllocateRawObject(resultGPR, m_jit.graph().registerStructure(globalObject->arrayStructureForIndexingTypeDuringAllocation(indexingType)), storageGPR, numElements, vectorLengthHint);
    39303930           
    3931             DFG_ASSERT(m_jit.graph(), node, indexingType & IsArray);
     3931            DFG_ASSERT(m_jit.graph(), node, indexingType & IsArray, indexingType);
    39323932
    39333933            for (unsigned index = 0; index < numElements; ++index) {
  • trunk/Source/JavaScriptCore/dfg/DFGStoreBarrierClusteringPhase.cpp

    r219702 r228035  
    117117           
    118118            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());
    120120           
    121121            NodeOrigin origin = node->origin;
  • trunk/Source/JavaScriptCore/dfg/DFGStoreBarrierInsertionPhase.cpp

    r222675 r228035  
    468468        // But right now we don't need it.
    469469
    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());
    471471       
    472472        // Barriers are always inserted after the node that they service. Therefore, we always know
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

    r227998 r228035  
    16681668        AbstractValue& value = m_state.variables().operand(data->local);
    16691669       
    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.
    16721672       
    16731673        if (isInt32Speculation(value.m_type))
     
    20702070            return;
    20712071        }
    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());
    20732073        LValue argument = lowJSValue(m_node->child1());
    20742074        LValue result = vmCall(Int32, m_out.operation(operationArithClz32), m_callFrame, argument);
     
    23612361           
    23622362        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());
    23642364            LValue argument = lowJSValue(m_node->child1());
    23652365            LValue result = vmCall(Double, m_out.operation(operationArithAbs), m_callFrame, argument);
     
    26012601        }
    26022602
    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());
    26042604        LValue argument = lowJSValue(m_node->child1());
    26052605        setJSValue(vmCall(Int64, m_out.operation(operationArithRound), m_callFrame, argument));
     
    26172617            return;
    26182618        }
    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());
    26202620        LValue argument = lowJSValue(m_node->child1());
    26212621        setJSValue(vmCall(Int64, m_out.operation(operationArithFloor), m_callFrame, argument));
     
    26332633            return;
    26342634        }
    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());
    26362636        LValue argument = lowJSValue(m_node->child1());
    26372637        setJSValue(vmCall(Int64, m_out.operation(operationArithCeil), m_callFrame, argument));
     
    26492649            return;
    26502650        }
    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());
    26522652        LValue argument = lowJSValue(m_node->child1());
    26532653        setJSValue(vmCall(Int64, m_out.operation(operationArithTrunc), m_callFrame, argument));
     
    27242724           
    27252725        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());
    27272727            ArithProfile* arithProfile = m_ftlState.graph.baselineCodeBlockFor(m_node->origin.semantic)->arithProfileForBytecodeOffset(m_node->origin.semantic.bytecodeIndex);
    27282728            auto repatchingFunction = operationArithNegateOptimize;
     
    33673367    void compilePutById()
    33683368    {
    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());
    33703370
    33713371        Node* node = m_node;
     
    34733473        }
    34743474
    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());
    34763476        LValue poisonedVector = m_out.loadPtr(cell, m_heaps.JSArrayBufferView_poisonedVector);
    34773477#if ENABLE(POISON)
     
    37073707                if (m_node->arrayMode().isSaneChain()) {
    37083708                    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());
    37103710                    result = m_out.select(
    37113711                        isHole, m_out.constInt64(JSValue::encode(jsUndefined())), result);
     
    61356135        }
    61366136
    6137         DFG_ASSERT(m_graph, m_node, childEdge.useKind() == Int32Use);
     6137        DFG_ASSERT(m_graph, m_node, childEdge.useKind() == Int32Use, childEdge.useKind());
    61386138
    61396139        LValue value = lowInt32(childEdge);
     
    63166316                    storage = m_out.loadPtr(base, m_heaps.JSObject_butterfly);
    63176317            } 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());
    63196319                m_graph.m_plan.transitions.addLazily(
    63206320                    codeBlock(), m_node->origin.semantic.codeOriginOwner(),
     
    65116511        }
    65126512
    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());
    65146514        nonSpeculativeCompare(
    65156515            [&] (LValue left, LValue right) {
     
    66766676        }
    66776677
    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());
    66796679        nonSpeculativeCompare(
    66806680            [&] (LValue left, LValue right) {
     
    93129312    void compileIn()
    93139313    {
    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());
    93159315
    93169316        Node* node = m_node;
     
    1125411254        }
    1125511255
    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());
    1125711257        nonSpeculativeCompare(intFunctor, fallbackFunction);
    1125811258    }
     
    1298112981       
    1298212982        if (checkedExactLength) {
    12983             DFG_ASSERT(m_graph, m_node, alreadyCheckedLength == minLength);
     12983            DFG_ASSERT(m_graph, m_node, alreadyCheckedLength == minLength, alreadyCheckedLength, minLength);
    1298412984            DFG_ASSERT(m_graph, m_node, allLengthsEqual);
    1298512985        }
    1298612986       
    12987         DFG_ASSERT(m_graph, m_node, minLength >= commonChars);
     12987        DFG_ASSERT(m_graph, m_node, minLength >= commonChars, minLength, commonChars);
    1298812988       
    1298912989        if (!allLengthsEqual && alreadyCheckedLength < minLength)
     
    1300513005            // so we just check length to jump to that case.
    1300613006           
    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);
    1300813008            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);
    1301013010           
    1301113011            if (allLengthsEqual) {
    13012                 DFG_ASSERT(m_graph, m_node, end == begin + 1);
     13012                DFG_ASSERT(m_graph, m_node, end == begin + 1, end, begin);
    1301313013                m_out.jump(cases[begin].target);
    1301413014                return;
     
    1303113031        // string[commonChars].
    1303213032       
    13033         DFG_ASSERT(m_graph, m_node, end >= begin + 2);
     13033        DFG_ASSERT(m_graph, m_node, end >= begin + 2, end, begin);
    1303413034       
    1303513035        LValue uncheckedChar = m_out.load8ZeroExt32(buffer, m_heaps.characters8[commonChars]);
     
    1373413734        }
    1373513735
    13736         DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecInt32Only));
     13736        DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecInt32Only), provenType(edge));
    1373713737        terminate(Uncountable);
    1373813738        return m_out.int32Zero;
     
    1374213742    LValue lowInt52(Edge edge, Int52Kind kind)
    1374313743    {
    13744         DFG_ASSERT(m_graph, m_node, edge.useKind() == Int52RepUse);
     13744        DFG_ASSERT(m_graph, m_node, edge.useKind() == Int52RepUse, edge.useKind());
    1374513745       
    1374613746        LoweredNodeValue value;
     
    1376813768        }
    1376913769
    13770         DFG_ASSERT(m_graph, m_node, !provenType(edge));
     13770        DFG_ASSERT(m_graph, m_node, !provenType(edge), provenType(edge));
    1377113771        terminate(Uncountable);
    1377213772        return m_out.int64Zero;
     
    1381613816    LValue lowCell(Edge edge, OperandSpeculationMode mode = AutomaticOperandSpeculation)
    1381713817    {
    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());
    1381913819       
    1382013820        if (edge->op() == JSConstant) {
     
    1383713837        }
    1383813838       
    13839         DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecCellCheck));
     13839        DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecCellCheck), provenType(edge));
    1384013840        terminate(Uncountable);
    1384113841        return m_out.intPtrZero;
     
    1395213952        }
    1395313953       
    13954         DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecBoolean));
     13954        DFG_ASSERT(m_graph, m_node, !(provenType(edge) & SpecBoolean), provenType(edge));
    1395513955        terminate(Uncountable);
    1395613956        return m_out.booleanFalse;
     
    1395913959    LValue lowDouble(Edge edge)
    1396013960    {
    13961         DFG_ASSERT(m_graph, m_node, isDouble(edge.useKind()));
     13961        DFG_ASSERT(m_graph, m_node, isDouble(edge.useKind()), edge.useKind());
    1396213962       
    1396313963        LoweredNodeValue value = m_doubleValues.get(edge.node());
    1396413964        if (isValid(value))
    1396513965            return value.value();
    13966         DFG_ASSERT(m_graph, m_node, !provenType(edge));
     13966        DFG_ASSERT(m_graph, m_node, !provenType(edge), provenType(edge));
    1396713967        terminate(Uncountable);
    1396813968        return m_out.doubleZero;
     
    1397113971    LValue lowJSValue(Edge edge, OperandSpeculationMode mode = AutomaticOperandSpeculation)
    1397213972    {
    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());
    1397613976       
    1397713977        if (edge->hasConstant()) {
Note: See TracChangeset for help on using the changeset viewer.