Ignore:
Timestamp:
Aug 21, 2009, 12:48:59 AM (16 years ago)
Author:
[email protected]
Message:

Browser hangs on opening Web Inspector.
https://bugs.webkit.org/show_bug.cgi?id=28438

Reviewed by Maciej Stachowiak.

Code generation needs to be able to walk the entire scopechain in some
cases, however the symbol table used by activations was a member of the
codeblock. Following recompilation this may no longer exist, leading
to a crash or hang on lookup.

We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable,
for the CodeBlocks used by function code. This allows activations to
maintain ownership of a copy of the symbol table even after recompilation so
they can continue to work.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/interpreter/Interpreter.cpp

    r47519 r47627  
    38433843    if (codeBlock->usesArguments()) {
    38443844        ASSERT(codeBlock->codeType() == FunctionCode);
    3845         SymbolTable& symbolTable = codeBlock->symbolTable();
     3845        SymbolTable& symbolTable = *codeBlock->symbolTable();
    38463846        int argumentsIndex = symbolTable.get(functionCallFrame->propertyNames().arguments.ustring().rep()).getIndex();
    38473847        if (!functionCallFrame->r(argumentsIndex).jsValue()) {
Note: See TracChangeset for help on using the changeset viewer.