Ignore:
Timestamp:
Jan 16, 2008, 3:16:53 PM (17 years ago)
Author:
[email protected]
Message:

JavaScriptCore:

Reviewed by Maciej & Darin.

Fixes Bug 16868: Gmail crash

and Bug 16871: Crash when loading apple.com/startpage

<http://bugs.webkit.org/show_bug.cgi?id=16868>
<rdar://problem/5686108>

<http://bugs.webkit.org/show_bug.cgi?id=16871>
<rdar://problem/5686670>

Adds ActivationImp tear-off for cross-window eval() and fixes an
existing garbage collection issue exposed by the ActivationImp tear-off
patch (r29425) that can occur when an ExecState's m_callingExec is
different than its m_savedExec.

  • kjs/ExecState.cpp: (KJS::ExecState::mark):
  • kjs/function.cpp: (KJS::GlobalFuncImp::callAsFunction):

LayoutTests:

Reviewed by Maciej.

Added a test that checks whether ActivationImp tear-off occurs before
a cross-window eval(). Relevant to

Bug 16868: Gmail crash

<http://bugs.webkit.org/show_bug.cgi?id=16868>
<rdar://problem/5686108>

  • fast/js/window-eval-tearoff-expected.txt: Added.
  • fast/js/window-eval-tearoff.html: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/ExecState.cpp

    r29474 r29542  
    126126void ExecState::mark()
    127127{
    128     for (ExecState* exec = this; exec; exec = exec->m_callingExec)
     128    for (ExecState* exec = this; exec; exec = exec->m_callingExec) {
    129129        exec->m_scopeChain.mark();
    130130
    131     // FIXME: It is surprising that this code is necessary, since at first
    132     // glance it seems that all ActivationImps should be in a ScopeChain.
    133     // However, <http://bugs.webkit.org/show_bug.cgi?id=16871> proves that is
    134     // not the case.
    135     if (m_activation && m_activation->isOnStack())
    136         m_activation->markChildren();
     131        if (exec->m_savedExec != exec->m_callingExec && exec->m_savedExec)
     132            exec->m_savedExec->mark();
     133    }
    137134}
    138135
Note: See TracChangeset for help on using the changeset viewer.