Ignore:
Timestamp:
Nov 28, 2007, 5:12:03 AM (18 years ago)
Author:
[email protected]
Message:

Roll out r28106 and r28108. These introduced a frequent assertion failure on page load and broke all non-Mac builds.

File:
1 edited

Legend:

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

    r28106 r28110  
    6262}
    6363
    64 void FunctionImp::markChildren(MarkStack& stack)
    65 {
    66     InternalFunctionImp::markChildren(stack);
    67     _scope.markChildren(stack);
     64void FunctionImp::mark()
     65{
     66    InternalFunctionImp::mark();
     67    _scope.mark();
    6868}
    6969
     
    332332// ECMA 10.1.8
    333333Arguments::Arguments(ExecState* exec, FunctionImp* func, const List& args, ActivationImp* act)
    334   : JSObject(exec->lexicalInterpreter()->builtinObjectPrototype())
    335   , _activationObject(act)
    336   , indexToNameMap(func, args)
     334: JSObject(exec->lexicalInterpreter()->builtinObjectPrototype()),
     335_activationObject(act),
     336indexToNameMap(func, args)
    337337{
    338338  putDirect(exec->propertyNames().callee, func, DontEnum);
     
    348348}
    349349
    350 void Arguments::markChildren(MarkStack& stack)
    351 {
    352   JSObject::markChildren(stack);
    353   stack.push(_activationObject);
     350void Arguments::mark()
     351{
     352  JSObject::mark();
     353  if (_activationObject && !_activationObject->marked())
     354    _activationObject->mark();
    354355}
    355356
     
    484485}
    485486
    486 void ActivationImp::markChildren(MarkStack& stack)
    487 {
    488     JSObject::markChildren(stack);
     487void ActivationImp::mark()
     488{
     489    JSObject::mark();
    489490
    490491    size_t size = d->localStorage.size();
    491     for (size_t i = 0; i < size; ++i)
    492         stack.push(d->localStorage[i].value);
     492    for (size_t i = 0; i < size; ++i) {
     493        JSValue* value = d->localStorage[i].value;
     494        if (!value->marked())
     495            value->mark();
     496    }
    493497   
    494     stack.push(d->function);
    495     if (d->argumentsObject)
    496       stack.push(d->argumentsObject);
     498    ASSERT(d->function);
     499    if (!d->function->marked())
     500        d->function->mark();
     501
     502    if (d->argumentsObject && !d->argumentsObject->marked())
     503        d->argumentsObject->mark();
    497504}
    498505
Note: See TracChangeset for help on using the changeset viewer.