Skip to content
  • oliver@apple.com's avatar
    fourthTier: FTL CompareEq ObjectUse should handle masquerading · 9eff4657
    oliver@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=115920
    
    Reviewed by Mark Hahnenberg.
    
    We don't yet support watchpoints, but this does all the wiring right up to the
    part where we would have emitted watchpoints. I've also written this in a way that
    makes it easy to use the case where you would have anyway speculated non-masquerading
    even if the watchpoint was invalidated.
    
    This is inherently racy, of course: but the only race here is that you might first
    set the watchpoint, and then the watchpoint is invalidated, and then you compile rest
    of the code in a way that doesn't need the watchpoint. That's fine, since the FTL
    will remember that it had set the watchpoint and then cancel the compilation.
    
    * ftl/FTLAbbreviations.h:
    (JSC::FTL::int8Type):
    * ftl/FTLAbstractHeapRepository.h:
    (FTL):
    * ftl/FTLCommonValues.cpp:
    (JSC::FTL::CommonValues::CommonValues):
    * ftl/FTLCommonValues.h:
    (CommonValues):
    * ftl/FTLLowerDFGToLLVM.cpp:
    (JSC::FTL::LowerDFGToLLVM::compileCompareEq):
    (JSC::FTL::LowerDFGToLLVM::lowNonNullObject):
    (LowerDFGToLLVM):
    (JSC::FTL::LowerDFGToLLVM::speculateNonNullObject):
    (JSC::FTL::LowerDFGToLLVM::masqueradesAsUndefinedWatchpointIsStillValid):
    (JSC::FTL::LowerDFGToLLVM::masqueradesAsUndefinedWatchpointIfIsStillValid):
    * ftl/FTLOutput.h:
    (JSC::FTL::Output::constInt8):
    (JSC::FTL::Output::load8):
    (JSC::FTL::Output::isZero8):
    (JSC::FTL::Output::notZero8):
    (JSC::FTL::Output::testIsZero8):
    (JSC::FTL::Output::testNonZero8):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153149 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    9eff4657