Ignore:
Timestamp:
Jan 21, 2015, 1:43:55 PM (10 years ago)
Author:
[email protected]
Message:

Eliminate Scope slot from JavaScript CallFrame
https://bugs.webkit.org/show_bug.cgi?id=136724

Reviewed by Geoffrey Garen.

This finishes the removal of the scope chain slot from the call frame header.

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):

  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLJSCall.cpp:

(JSC::FTL::JSCall::emit):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileNativeCallOrConstruct):
(JSC::FTL::LowerDFGToLLVM::compileCallOrConstruct):

  • interpreter/JSStack.h:
  • interpreter/VMInspector.cpp:

(JSC::VMInspector::dumpFrame):

  • jit/JITCall.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::privateCompileCTINativeCall):

  • jit/Repatch.cpp:

(JSC::generateByIdStub):
(JSC::linkClosureCall):

  • jit/ThunkGenerators.cpp:

(JSC::virtualForThunkGenerator):
(JSC::nativeForGenerator):
Deleted ScopeChain slot from JSStack. Removed all code where ScopeChain was being
read or set. In most cases this was where we make JS calls.

  • interpreter/CallFrameClosure.h:

(JSC::CallFrameClosure::setArgument):
(JSC::CallFrameClosure::resetCallFrame): Deleted.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::prepareForRepeatCall):

  • interpreter/ProtoCallFrame.cpp:

(JSC::ProtoCallFrame::init):

  • interpreter/ProtoCallFrame.h:

(JSC::ProtoCallFrame::scope): Deleted.
(JSC::ProtoCallFrame::setScope): Deleted.

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:

Removed the related scopeChainValue member from ProtoCallFrame. Reduced the number of
registers that needed to be copied from the ProtoCallFrame to a callee's frame
from 5 to 4.

  • llint/LowLevelInterpreter32_64.asm:

In addition to the prior changes, also deleted the unused macro getDeBruijnScope.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/interpreter/ProtoCallFrame.h

    r173178 r178856  
    3333struct ProtoCallFrame {
    3434    Register codeBlockValue;
    35     Register scopeChainValue;
    3635    Register calleeValue;
    3736    Register argCountAndCodeOriginValue;
     
    4140    JSValue *args;
    4241
    43     void init(CodeBlock*, JSScope*, JSObject*, JSValue, int, JSValue* otherArgs = 0);
     42    void init(CodeBlock*, JSObject*, JSValue, int, JSValue* otherArgs = 0);
    4443
    4544    CodeBlock* codeBlock() const { return codeBlockValue.Register::codeBlock(); }
    4645    void setCodeBlock(CodeBlock* codeBlock) { codeBlockValue = codeBlock; }
    47 
    48     JSScope* scope() const { return scopeChainValue.Register::scope(); }
    49     void setScope(JSScope* scope) { scopeChainValue = scope; }
    5046
    5147    JSObject* callee() const { return calleeValue.Register::function(); }
Note: See TracChangeset for help on using the changeset viewer.