Ignore:
Timestamp:
Jul 6, 2011, 8:42:02 PM (14 years ago)
Author:
[email protected]
Message:

2011-07-06 Filip Pizlo <[email protected]>

DFG JIT does not support method_check
https://bugs.webkit.org/show_bug.cgi?id=63972

Reviewed by Gavin Barraclough.

  • assembler/CodeLocation.h: (JSC::CodeLocationPossiblyNearCall::CodeLocationPossiblyNearCall):
  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::visitAggregate):
  • bytecode/CodeBlock.h: (JSC::MethodCallLinkInfo::MethodCallLinkInfo): (JSC::MethodCallLinkInfo::seenOnce): (JSC::MethodCallLinkInfo::setSeen):
  • dfg/DFGAliasTracker.h: (JSC::DFG::AliasTracker::recordGetMethod):
  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseBlock):
  • dfg/DFGJITCodeGenerator.cpp: (JSC::DFG::JITCodeGenerator::cachedGetById): (JSC::DFG::JITCodeGenerator::cachedGetMethod):
  • dfg/DFGJITCodeGenerator.h:
  • dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::compileFunction):
  • dfg/DFGJITCompiler.h: (JSC::DFG::JITCompiler::addMethodGet): (JSC::DFG::JITCompiler::MethodGetRecord::MethodGetRecord):
  • dfg/DFGNode.h: (JSC::DFG::Node::hasIdentifier):
  • dfg/DFGNonSpeculativeJIT.cpp: (JSC::DFG::NonSpeculativeJIT::compile):
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGRepatch.cpp: (JSC::DFG::dfgRepatchGetMethodFast): (JSC::DFG::tryCacheGetMethod): (JSC::DFG::dfgRepatchGetMethod):
  • dfg/DFGRepatch.h:
  • dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compile):
  • jit/JITWriteBarrier.h: (JSC::JITWriteBarrier::set):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.h

    r90423 r90529  
    130130    struct MethodCallLinkInfo {
    131131        MethodCallLinkInfo()
     132            : seen(false)
    132133        {
    133134        }
     
    135136        bool seenOnce()
    136137        {
    137             ASSERT(!cachedStructure);
    138             return cachedPrototypeStructure.isFlagged();
     138            return seen;
    139139        }
    140140
    141141        void setSeen()
    142142        {
    143             ASSERT(!cachedStructure && !cachedPrototypeStructure);
    144             // We use the values of cachedStructure & cachedPrototypeStructure to indicate the
    145             // current state.
    146             //     - In the initial state, both are null.
    147             //     - Once this transition has been taken once, cachedStructure is
    148             //       null and cachedPrototypeStructure is set to a nun-null value.
    149             //     - Once the call is linked both structures are set to non-null values.
    150             cachedPrototypeStructure.setFlagOnBarrier();
     143            seen = true;
    151144        }
    152145
     
    156149        JITWriteBarrier<JSFunction> cachedFunction;
    157150        JITWriteBarrier<JSObject> cachedPrototype;
     151        bool seen;
    158152    };
    159153
Note: See TracChangeset for help on using the changeset viewer.