Changeset 95233 in webkit


Ignore:
Timestamp:
Sep 15, 2011 2:53:48 PM (13 years ago)
Author:
fpizlo@apple.com
Message:

DFG speculative JIT sometimes asserts that a value is not a number
even when it doesn't know anything about the number
https://bugs.webkit.org/show_bug.cgi?id=68189

Reviewed by Oliver Hunt.

  • dfg/DFGGenerationInfo.h:

(JSC::DFG::GenerationInfo::isUnknownJS):

  • dfg/DFGJITCodeGenerator.cpp:

(JSC::DFG::JITCodeGenerator::isKnownNotNumber):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r95230 r95233  
     12011-09-15  Filip Pizlo  <fpizlo@apple.com>
     2
     3        DFG speculative JIT sometimes asserts that a value is not a number
     4        even when it doesn't know anything about the number
     5        https://bugs.webkit.org/show_bug.cgi?id=68189
     6
     7        Reviewed by Oliver Hunt.
     8
     9        * dfg/DFGGenerationInfo.h:
     10        (JSC::DFG::GenerationInfo::isUnknownJS):
     11        * dfg/DFGJITCodeGenerator.cpp:
     12        (JSC::DFG::JITCodeGenerator::isKnownNotNumber):
     13
    1142011-09-15  Filip Pizlo  <fpizlo@apple.com>
    215
  • trunk/Source/JavaScriptCore/dfg/DFGGenerationInfo.h

    r95060 r95233  
    260260        return isJSFormat(DataFormatJSBoolean);
    261261    }
     262   
     263    bool isUnknownJS()
     264    {
     265        return registerFormat() == DataFormatNone || registerFormat() == DataFormatJS
     266            || spillFormat() == DataFormatNone || spillFormat() == DataFormatJS;
     267    }
    262268
    263269    // Get the machine resister currently holding the value.
  • trunk/Source/JavaScriptCore/dfg/DFGJITCodeGenerator.cpp

    r95230 r95233  
    415415    GenerationInfo& info = m_generationInfo[virtualRegister];
    416416   
    417     return (!info.isJSDouble() && !info.isJSInteger())
     417    return (!info.isJSDouble() && !info.isJSInteger() && !info.isUnknownJS())
    418418        || (node.isConstant() && !isNumberConstant(nodeIndex));
    419419}
Note: See TracChangeset for help on using the changeset viewer.