Changeset 163151 in webkit


Ignore:
Timestamp:
Jan 30, 2014 7:38:06 PM (10 years ago)
Author:
akling@apple.com
Message:

CodeBlock's cloned SymbolTables only need the captured names.
<https://webkit.org/b/127978>

Renamed SymbolTable::clone() to SymbolTable::cloneCapturedNames()
and make it skip over any symbols that aren't captured, since those
won't be needed after codegen.

This is a first step towards getting rid of redundant symbol tables.

Reviewed by Geoffrey Garen.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):

  • runtime/SymbolTable.cpp:

(JSC::SymbolTable::cloneCapturedNames):

  • runtime/SymbolTable.h:
Location:
trunk/Source/JavaScriptCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r163140 r163151  
     12014-01-30  Andreas Kling  <akling@apple.com>
     2
     3        CodeBlock's cloned SymbolTables only need the captured names.
     4        <https://webkit.org/b/127978>
     5
     6        Renamed SymbolTable::clone() to SymbolTable::cloneCapturedNames()
     7        and make it skip over any symbols that aren't captured, since those
     8        won't be needed after codegen.
     9
     10        This is a first step towards getting rid of redundant symbol tables.
     11
     12        Reviewed by Geoffrey Garen.
     13
     14        * bytecode/CodeBlock.cpp:
     15        (JSC::CodeBlock::CodeBlock):
     16        * runtime/SymbolTable.cpp:
     17        (JSC::SymbolTable::cloneCapturedNames):
     18        * runtime/SymbolTable.h:
     19
    1202014-01-28  Timothy Hatcher  <timothy@apple.com>
    221
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r163027 r163151  
    15591559    if (SymbolTable* symbolTable = unlinkedCodeBlock->symbolTable()) {
    15601560        if (codeType() == FunctionCode && symbolTable->captureCount()) {
    1561             m_symbolTable.set(*m_vm, m_ownerExecutable.get(), symbolTable->clone(*m_vm));
     1561            m_symbolTable.set(*m_vm, m_ownerExecutable.get(), symbolTable->cloneCapturedNames(*m_vm));
    15621562            didCloneSymbolTable = true;
    15631563        } else
  • trunk/Source/JavaScriptCore/runtime/SymbolTable.cpp

    r160109 r163151  
    135135}
    136136
    137 SymbolTable* SymbolTable::clone(VM& vm)
     137SymbolTable* SymbolTable::cloneCapturedNames(VM& vm)
    138138{
    139139    SymbolTable* result = SymbolTable::create(vm);
     
    143143    result->m_captureStart = m_captureStart;
    144144    result->m_captureEnd = m_captureEnd;
    145    
    146     Map::iterator iter = m_map.begin();
    147     Map::iterator end = m_map.end();
    148     for (; iter != end; ++iter) {
     145
     146    for (auto iter = m_map.begin(), end = m_map.end(); iter != end; ++iter) {
     147        if (!isCaptured(iter->value.getIndex()))
     148            continue;
    149149        result->m_map.add(
    150150            iter->key,
  • trunk/Source/JavaScriptCore/runtime/SymbolTable.h

    r162139 r163151  
    468468    void setSlowArguments(std::unique_ptr<SlowArgument[]> slowArguments) { m_slowArguments = std::move(slowArguments); }
    469469   
    470     SymbolTable* clone(VM&);
     470    SymbolTable* cloneCapturedNames(VM&);
    471471
    472472    static void visitChildren(JSCell*, SlotVisitor&);
Note: See TracChangeset for help on using the changeset viewer.