Changeset 31499 in webkit
- Timestamp:
- Mar 31, 2008, 8:55:32 PM (17 years ago)
- Location:
- branches/squirrelfish/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/squirrelfish/JavaScriptCore/ChangeLog
r31497 r31499 1 2008-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 1 14 2008-03-31 Geoffrey Garen <ggaren@apple.com> 2 15 -
branches/squirrelfish/JavaScriptCore/kjs/JSActivation.cpp
r31484 r31499 37 37 38 38 JSActivation::JSActivation(PassRefPtr<FunctionBodyNode> functionBody, Vector<Register>* registers, int rOffset) 39 : m_data(new JSActivationData(functionBody, registers, rOffset))39 : JSVariableObject(new JSActivationData(functionBody, registers, rOffset)) 40 40 { 41 41 } … … 113 113 return false; 114 114 115 if (symbolTable().contains(propertyName.ustring().rep()))116 return false;117 118 115 return Base::deleteProperty(exec, propertyName); 119 116 } … … 130 127 Vector<Register>::iterator end = d()->registers->end(); 131 128 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(); 134 132 } 135 133 } 136 134 135 bool JSActivation::isActivationObject() const 136 { 137 return true; 138 } 139 140 bool JSActivation::isDynamicScope() const 141 { 142 return d()->functionBody->usesEval(); 143 } 144 137 145 } // namespace KJS -
branches/squirrelfish/JavaScriptCore/kjs/JSActivation.h
r31329 r31499 30 30 #define JSActivation_h 31 31 32 #include "object.h" 32 #include "JSVariableObject.h" 33 #include "SymbolTable.h" 33 34 #include "nodes.h" 34 #include "SymbolTable.h"35 35 36 36 namespace KJS { … … 42 42 // through d(). 43 43 44 class JSActivation : public JS Object {45 typedef JS Object Base;44 class JSActivation : public JSVariableObject { 45 typedef JSVariableObject Base; 46 46 public: 47 47 JSActivation(PassRefPtr<FunctionBodyNode>, Vector<Register>*, int rOffset); 48 48 virtual ~JSActivation(); 49 49 50 virtual bool isActivationObject() const { return true; } 50 virtual bool isActivationObject() const; 51 virtual bool isDynamicScope() const; 51 52 52 53 virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&); … … 64 65 65 66 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) 69 71 , functionBody(functionBody_) 70 , registers(registers_)71 , rOffset(rOffset_)72 , symbolTable(&functionBody->symbolTable())73 72 { 74 73 } 75 74 76 75 bool didCopyRegisters; 77 78 76 RefPtr<FunctionBodyNode> functionBody; // Owns the symbol table 79 80 // Will be inherited from JSVariableObjectData81 Vector<Register>* registers;82 int rOffset;83 SymbolTable* symbolTable; // Maps name -> index in register file.84 77 }; 85 78 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); } 91 80 }; 92 81
Note:
See TracChangeset
for help on using the changeset viewer.