Changeset 24534 in webkit


Ignore:
Timestamp:
Jul 23, 2007 3:26:02 AM (17 years ago)
Author:
mjs
Message:

Reviewed by Oliver.


  • fix remaining problems with Window shadowing
  • kjs/nodes.cpp: (VarDeclNode::evaluate): Tweak the special case a little.
Location:
trunk/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r24533 r24534  
     12007-07-23  Maciej Stachowiak  <mjs@apple.com>
     2
     3        Reviewed by Oliver.
     4       
     5        - fix remaining problems with Window shadowing
     6
     7        * kjs/nodes.cpp:
     8        (VarDeclNode::evaluate): Tweak the special case a little.
     9
    1102007-07-23  Maciej Stachowiak  <mjs@apple.com>
    211
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r24533 r24534  
    16241624    ASSERT(!chain.isEmpty());
    16251625
    1626     if (init) {
     1626    bool inGlobalScope = ++chain.begin() == chain.end();
     1627
     1628    if (inGlobalScope && (init || !variableObject->getDirect(ident))) {
     1629        JSValue* val = init ? init->evaluate(exec) : jsUndefined();
     1630        int flags = Internal;
     1631        if (exec->context()->codeType() != EvalCode)
     1632            flags |= DontDelete;
     1633        if (varType == VarDeclNode::Constant)
     1634            flags |= ReadOnly;
     1635        variableObject->putDirect(ident, val, flags);
     1636    } else if (init) {
    16271637        JSValue* val = init->evaluate(exec);
    16281638        KJS_CHECKEXCEPTIONVALUE
     
    16391649            flags |= ReadOnly;
    16401650       
    1641         if (++chain.begin() == chain.end()) {
    1642             int flags = Internal;
    1643             if (exec->context()->codeType() != EvalCode)
    1644                 flags |= DontDelete;
    1645             if (varType == VarDeclNode::Constant)
    1646                 flags |= ReadOnly;
    1647             variableObject->putDirect(ident, val, flags);
    1648         } else {
    1649             ASSERT(variableObject->getDirect(ident) || ident == exec->propertyNames().arguments);
    1650             variableObject->put(exec, ident, val, flags);
    1651         }
    1652     } else {
    1653         if (++chain.begin() == chain.end()) {
    1654             int flags = Internal;
    1655             if (exec->context()->codeType() != EvalCode)
    1656                 flags |= DontDelete;
    1657             if (varType == VarDeclNode::Constant)
    1658                 flags |= ReadOnly;
    1659             variableObject->putDirect(ident, jsUndefined(), flags);
    1660         } else {
    1661 
    1662         }
     1651        ASSERT(variableObject->getDirect(ident) || ident == exec->propertyNames().arguments);
     1652        variableObject->put(exec, ident, val, flags);
    16631653    }
    16641654
Note: See TracChangeset for help on using the changeset viewer.