Ignore:
Timestamp:
Feb 28, 2013, 11:45:17 AM (12 years ago)
Author:
[email protected]
Message:

DFG CFA should leave behind information in Edge that says if the Edge's type check is proven to succeed
https://bugs.webkit.org/show_bug.cgi?id=110840

Reviewed by Mark Hahnenberg.

This doesn't add any observable functionality to the compiler, yet. But it does give
every phase that runs after CFA the ability to know, in O(1) time, whether an edge
will need to execute a type check.

  • dfg/DFGAbstractState.h:

(JSC::DFG::AbstractState::filterEdgeByUse):
(JSC::DFG::AbstractState::filterByType):

  • dfg/DFGCommon.cpp:

(WTF):
(WTF::printInternal):

  • dfg/DFGCommon.h:

(JSC::DFG::isProved):
(DFG):
(JSC::DFG::proofStatusForIsProved):
(WTF):

  • dfg/DFGEdge.cpp:

(JSC::DFG::Edge::dump):

  • dfg/DFGEdge.h:

(JSC::DFG::Edge::Edge):
(JSC::DFG::Edge::setNode):
(JSC::DFG::Edge::useKindUnchecked):
(JSC::DFG::Edge::setUseKind):
(Edge):
(JSC::DFG::Edge::proofStatusUnchecked):
(JSC::DFG::Edge::proofStatus):
(JSC::DFG::Edge::setProofStatus):
(JSC::DFG::Edge::isProved):
(JSC::DFG::Edge::needsCheck):
(JSC::DFG::Edge::shift):
(JSC::DFG::Edge::makeWord):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGEdge.cpp

    r143654 r144340  
    3535void Edge::dump(PrintStream& out) const
    3636{
    37     if (useKind() != UntypedUse)
     37    if (useKind() != UntypedUse) {
     38        if (needsCheck())
     39            out.print("Check:");
    3840        out.print(useKind(), ":");
     41    }
    3942    out.print(node());
    4043}
Note: See TracChangeset for help on using the changeset viewer.