Changeset 31499 in webkit


Ignore:
Timestamp:
Mar 31, 2008, 8:55:32 PM (17 years ago)
Author:
ggaren@apple.com
Message:

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Beth Dakin.

Next step toward global code: subclass JSActivation + JSActivationData
from JSVariableObject + JSVariableObjectData.


JSActivation now relies on JSVariableObject for access to registers and
symbol table, and for some delete functionality, but not for anything
else yet.

(KJS::JSActivation::mark): Cleaned up the style here a little bit.

Location:
branches/squirrelfish/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/squirrelfish/JavaScriptCore/ChangeLog

    r31497 r31499  
     12008-03-31  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Reviewed by Beth Dakin.
     4
     5        Next step toward global code: subclass JSActivation + JSActivationData
     6        from JSVariableObject + JSVariableObjectData.
     7       
     8        JSActivation now relies on JSVariableObject for access to registers and
     9        symbol table, and for some delete functionality, but not for anything
     10        else yet.
     11
     12        (KJS::JSActivation::mark): Cleaned up the style here a little bit.
     13
    1142008-03-31  Geoffrey Garen  <ggaren@apple.com>
    215
  • branches/squirrelfish/JavaScriptCore/kjs/JSActivation.cpp

    r31484 r31499  
    3737
    3838JSActivation::JSActivation(PassRefPtr<FunctionBodyNode> functionBody, Vector<Register>* registers, int rOffset)
    39     : m_data(new JSActivationData(functionBody, registers, rOffset))
     39    : JSVariableObject(new JSActivationData(functionBody, registers, rOffset))
    4040{
    4141}
     
    113113        return false;
    114114
    115     if (symbolTable().contains(propertyName.ustring().rep()))
    116         return false;
    117 
    118115    return Base::deleteProperty(exec, propertyName);
    119116}
     
    130127    Vector<Register>::iterator end = d()->registers->end();
    131128    for (Vector<Register>::iterator it = d()->registers->begin(); it != end; ++it) {
    132         if (!(*it).u.jsValue->marked())
    133             (*it).u.jsValue->mark();
     129        JSValue* v = it->u.jsValue;
     130        if (!v->marked())
     131            v->mark();
    134132    }
    135133}
    136134
     135bool JSActivation::isActivationObject() const
     136{
     137    return true;
     138}
     139
     140bool JSActivation::isDynamicScope() const
     141{
     142    return d()->functionBody->usesEval();
     143}
     144
    137145} // namespace KJS
  • branches/squirrelfish/JavaScriptCore/kjs/JSActivation.h

    r31329 r31499  
    3030#define JSActivation_h
    3131
    32 #include "object.h"
     32#include "JSVariableObject.h"
     33#include "SymbolTable.h"
    3334#include "nodes.h"
    34 #include "SymbolTable.h"
    3535
    3636namespace KJS {
     
    4242    // through d().
    4343
    44     class JSActivation : public JSObject {
    45     typedef JSObject Base;
     44    class JSActivation : public JSVariableObject {
     45    typedef JSVariableObject Base;
    4646    public:
    4747        JSActivation(PassRefPtr<FunctionBodyNode>, Vector<Register>*, int rOffset);
    4848        virtual ~JSActivation();
    4949       
    50         virtual bool isActivationObject() const { return true; }
     50        virtual bool isActivationObject() const;
     51        virtual bool isDynamicScope() const;
    5152
    5253        virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
     
    6465       
    6566    private:
    66         struct JSActivationData {
    67             JSActivationData(PassRefPtr<FunctionBodyNode> functionBody_, Vector<Register>* registers_, int rOffset_)
    68                 : didCopyRegisters(false)
     67        struct JSActivationData : public JSVariableObjectData {
     68            JSActivationData(PassRefPtr<FunctionBodyNode> functionBody_, Vector<Register>* registers, int rOffset)
     69                : JSVariableObjectData(&functionBody_->symbolTable(), registers, rOffset)
     70                , didCopyRegisters(false)
    6971                , functionBody(functionBody_)
    70                 , registers(registers_)
    71                 , rOffset(rOffset_)
    72                 , symbolTable(&functionBody->symbolTable())
    7372            {
    7473            }
    7574
    7675            bool didCopyRegisters;
    77 
    7876            RefPtr<FunctionBodyNode> functionBody; // Owns the symbol table
    79 
    80             // Will be inherited from JSVariableObjectData
    81             Vector<Register>* registers;
    82             int rOffset;
    83             SymbolTable* symbolTable; // Maps name -> index in register file.
    8477        };
    8578       
    86         SymbolTable& symbolTable() { return *d()->symbolTable; }
    87         Vector<Register>& registers() { return *d()->registers; }
    88         JSActivationData* d() const { return static_cast<JSActivationData*>(m_data); }
    89 
    90         JSActivationData* m_data;
     79        JSActivationData* d() const { return static_cast<JSActivationData*>(JSVariableObject::d); }
    9180    };
    9281   
Note: See TracChangeset for help on using the changeset viewer.