Ignore:
Timestamp:
Jul 24, 2013, 9:02:09 PM (12 years ago)
Author:
[email protected]
Message:

fourthTier: 32-bit CallFrame::Location should use Instruction* for BytecodeLocation, not bytecodeOffset.
https://bugs.webkit.org/show_bug.cgi?id=117327.

Reviewed by Michael Saboff.

  • Renamed CallFrame::Location's Type to TypeTag.
  • Made the CallFrame::Location::TypeTag private, and provided type specific encoder functions. This reduces verbosity in client code.
  • Fixed the DFG's reifyInlinedCallFrames() on 32-bit ports to store a bytecode Instruction* in the CallFrame location instead of a bytecode offset.
  • Fixed places in JIT and FTL code which populate the CallFrame location (i.e. ArgumentCount tag) to use a Location encoder instead of storing the bytecodeOffset directly. This doesn't make any semantic difference, but it does assert that the stored value does not have bits where we would expect Location TypeTags to be.
  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::beginCall):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::setLocationAsBytecodeOffset):

  • interpreter/CallFrame.h:

(Location):

  • interpreter/CallFrameInlines.h:

(JSC::CallFrame::Location::encodeAsBytecodeOffset):
(JSC::CallFrame::Location::encodeAsBytecodeInstruction):
(JSC::CallFrame::Location::encodeAsCodeOriginIndex):
(JSC::CallFrame::Location::encodeAsInlinedCode):
(JSC::CallFrame::Location::isBytecodeLocation):
(JSC::CallFrame::setIsInlinedFrame):
(JSC::CallFrame::hasLocationAsBytecodeOffset):
(JSC::CallFrame::setLocationAsBytecodeOffset):

  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITInlines.h:

(JSC::JIT::updateTopCallFrame):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp

    r153211 r153212  
    5353{
    5454    ASSERT(codeBlock());
    55     ASSERT(Location::isBytecodeOffset(offset));
     55    ASSERT(Location::isBytecodeLocation(offset));
    5656    setCurrentVPC(codeBlock()->instructions().begin() + offset);
    5757    ASSERT(hasLocationAsBytecodeOffset());
Note: See TracChangeset for help on using the changeset viewer.