diff options
Diffstat (limited to 'Source/JavaScriptCore/runtime/JSGlobalObject.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/JSGlobalObject.h | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.h b/Source/JavaScriptCore/runtime/JSGlobalObject.h index 248004bd5..406a65b51 100644 --- a/Source/JavaScriptCore/runtime/JSGlobalObject.h +++ b/Source/JavaScriptCore/runtime/JSGlobalObject.h @@ -77,6 +77,7 @@ namespace JSC { class JSGlobalObject : public JSSegmentedVariableObject { private: + typedef JSSegmentedVariableObject Base; typedef HashSet<RefPtr<OpaqueJSWeakObjectMap> > WeakMapSet; struct JSGlobalObjectRareData { @@ -93,7 +94,7 @@ namespace JSC { Register m_globalCallFrame[RegisterFile::CallFrameHeaderSize]; - WriteBarrier<ScopeChainNode> m_globalScopeChain; + WriteBarrier<JSObject> m_globalThis; WriteBarrier<JSObject> m_methodCallDummy; WriteBarrier<RegExpConstructor> m_regExpConstructor; @@ -120,6 +121,10 @@ namespace JSC { WriteBarrier<RegExpPrototype> m_regExpPrototype; WriteBarrier<ErrorPrototype> m_errorPrototype; + WriteBarrier<Structure> m_withScopeStructure; + WriteBarrier<Structure> m_strictEvalActivationStructure; + WriteBarrier<Structure> m_activationStructure; + WriteBarrier<Structure> m_nameScopeStructure; WriteBarrier<Structure> m_argumentsStructure; WriteBarrier<Structure> m_arrayStructure; WriteBarrier<Structure> m_booleanObjectStructure; @@ -149,8 +154,6 @@ namespace JSC { WeakRandom m_weakRandom; - SymbolTable m_symbolTable; - bool m_evalEnabled; bool m_experimentsEnabled; @@ -166,8 +169,6 @@ namespace JSC { } public: - typedef JSSegmentedVariableObject Base; - static JSGlobalObject* create(JSGlobalData& globalData, Structure* structure) { JSGlobalObject* globalObject = new (NotNull, allocateCell<JSGlobalObject>(globalData.heap)) JSGlobalObject(globalData, structure); @@ -252,6 +253,10 @@ namespace JSC { JSObject* methodCallDummy() const { return m_methodCallDummy.get(); } + Structure* withScopeStructure() const { return m_withScopeStructure.get(); } + Structure* strictEvalActivationStructure() const { return m_strictEvalActivationStructure.get(); } + Structure* activationStructure() const { return m_activationStructure.get(); } + Structure* nameScopeStructure() const { return m_nameScopeStructure.get(); } Structure* argumentsStructure() const { return m_argumentsStructure.get(); } Structure* arrayStructure() const { return m_arrayStructure.get(); } Structure* booleanObjectStructure() const { return m_booleanObjectStructure.get(); } @@ -292,8 +297,6 @@ namespace JSC { static bool supportsProfiling(const JSGlobalObject*) { return false; } static bool supportsRichSourceInfo(const JSGlobalObject*) { return true; } - ScopeChainNode* globalScopeChain() { return m_globalScopeChain.get(); } - JS_EXPORT_PRIVATE ExecState* globalExec(); static bool shouldInterruptScript(const JSGlobalObject*) { return true; } @@ -307,6 +310,7 @@ namespace JSC { void resetPrototype(JSGlobalData&, JSValue prototype); JSGlobalData& globalData() const { return *Heap::heap(this)->globalData(); } + JSObject* globalThis() const; static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) { @@ -329,7 +333,7 @@ namespace JSC { unsigned weakRandomInteger() { return m_weakRandom.getUint32(); } protected: - static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames | JSSegmentedVariableObject::StructureFlags; + static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames | Base::StructureFlags; struct GlobalPropertyInfo { GlobalPropertyInfo(const Identifier& i, JSValue v, unsigned a) @@ -351,6 +355,7 @@ namespace JSC { // FIXME: Fold reset into init. JS_EXPORT_PRIVATE void init(JSObject* thisValue); void reset(JSValue prototype); + void setGlobalThis(JSGlobalData&, JSObject* globalThis); void createThrowTypeError(ExecState*); @@ -368,7 +373,7 @@ namespace JSC { inline bool JSGlobalObject::hasOwnPropertyForWrite(ExecState* exec, PropertyName propertyName) { PropertySlot slot; - if (JSSegmentedVariableObject::getOwnPropertySlot(this, exec, propertyName, slot)) + if (Base::getOwnPropertySlot(this, exec, propertyName, slot)) return true; bool slotIsWriteable; return symbolTableGet(this, propertyName, slot, slotIsWriteable); @@ -376,7 +381,7 @@ namespace JSC { inline bool JSGlobalObject::symbolTableHasProperty(PropertyName propertyName) { - SymbolTableEntry entry = symbolTable().inlineGet(propertyName.publicName()); + SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.publicName()); return !entry.isNull(); } @@ -491,6 +496,16 @@ namespace JSC { return true; } + inline JSObject* JSScope::globalThis() + { + return globalObject()->globalThis(); + } + + inline JSObject* JSGlobalObject::globalThis() const + { + return m_globalThis.get(); + } + } // namespace JSC #endif // JSGlobalObject_h |