Ignore:
Timestamp:
Jul 23, 2012, 7:13:19 PM (13 years ago)
Author:
[email protected]
Message:

Property storage should grow in reverse address direction, to support butterflies
https://bugs.webkit.org/show_bug.cgi?id=91788

Reviewed by Geoffrey Garen.

Changes property storage to grow to the left, and changes the property storage pointer to point
one 8-byte word (i.e. JSValue) to the right of the first value in the storage.

Also improved debug support somewhat, by adding a describe() function to the jsc command-line,
and a slow mode of object access in LLInt.

  • assembler/ARMv7Assembler.h:

(JSC::ARMv7Assembler::repatchCompact):

  • assembler/MacroAssemblerARMv7.h:

(MacroAssemblerARMv7):
(JSC::MacroAssemblerARMv7::isCompactPtrAlignedAddressOffset):
(JSC::MacroAssemblerARMv7::load32WithCompactAddressOffsetPatch):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::isCompactPtrAlignedAddressOffset):
(JSC::MacroAssemblerX86Common::repatchCompact):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::repatchCompact):

  • bytecode/CodeBlock.cpp:

(JSC::dumpStructure):

  • bytecode/GetByIdStatus.h:

(JSC::GetByIdStatus::GetByIdStatus):

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGRepatch.cpp:

(JSC::DFG::tryCacheGetByID):
(JSC::DFG::emitPutTransitionStub):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage):
(JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • heap/ConservativeRoots.cpp:

(JSC::ConservativeRoots::genericAddPointer):

  • heap/CopiedSpace.h:

(CopiedSpace):

  • heap/CopiedSpaceInlineMethods.h:

(JSC::CopiedSpace::pinIfNecessary):
(JSC):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::compileGetDirectOffset):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::compileGetDirectOffset):

  • jit/JITStubs.cpp:

(JSC::JITThunks::tryCacheGetByID):

  • jsc.cpp:

(GlobalObject::finishCreation):
(functionDescribe):

  • llint/LLIntCommon.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSObject.cpp:

(JSC::JSObject::visitChildren):
(JSC::JSFinalObject::visitChildren):
(JSC::JSObject::growOutOfLineStorage):

  • runtime/JSObject.h:

(JSC::JSObject::getDirectLocation):
(JSC::JSObject::offsetForLocation):

  • runtime/JSValue.h:

(JSValue):

  • runtime/PropertyOffset.h:

(JSC::offsetInOutOfLineStorage):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/jsc.cpp

    r123042 r123417  
    8585static EncodedJSValue JSC_HOST_CALL functionPrint(ExecState*);
    8686static EncodedJSValue JSC_HOST_CALL functionDebug(ExecState*);
     87static EncodedJSValue JSC_HOST_CALL functionDescribe(ExecState*);
    8788static EncodedJSValue JSC_HOST_CALL functionJSCStack(ExecState*);
    8889static EncodedJSValue JSC_HOST_CALL functionGC(ExecState*);
     
    192193       
    193194        addFunction(globalData, "debug", functionDebug, 1);
     195        addFunction(globalData, "describe", functionDescribe, 1);
    194196        addFunction(globalData, "print", functionPrint, 1);
    195197        addFunction(globalData, "quit", functionQuit, 0);
     
    296298{
    297299    fprintf(stderr, "--> %s\n", exec->argument(0).toString(exec)->value(exec).utf8().data());
     300    return JSValue::encode(jsUndefined());
     301}
     302
     303EncodedJSValue JSC_HOST_CALL functionDescribe(ExecState* exec)
     304{
     305    fprintf(stderr, "--> %s\n", exec->argument(0).description());
    298306    return JSValue::encode(jsUndefined());
    299307}
Note: See TracChangeset for help on using the changeset viewer.