Title: [127345] trunk/Source/_javascript_Core
Revision
127345
Author
[email protected]
Date
2012-08-31 17:46:58 -0700 (Fri, 31 Aug 2012)

Log Message

Rolled back in a piece of <http://trac.webkit.org/changeset/127293>.

    Shrink activation objects by half
    https://bugs.webkit.org/show_bug.cgi?id=95591

    Reviewed by Sam Weinig.

* dfg/DFGAbstractState.cpp:
(JSC::DFG::AbstractState::execute):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_resolve_global_dynamic):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/JSActivation.cpp:
(JSC::JSActivation::JSActivation):
* runtime/JSGlobalData.cpp:
(JSC::JSGlobalData::JSGlobalData):
* runtime/JSGlobalData.h:
(JSGlobalData):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::reset):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSGlobalObject):
(JSC::JSGlobalObject::withScopeStructure):
(JSC::JSGlobalObject::strictEvalActivationStructure):
(JSC::JSGlobalObject::activationStructure):
(JSC::JSGlobalObject::nameScopeStructure):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (127344 => 127345)


--- trunk/Source/_javascript_Core/ChangeLog	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-09-01 00:46:58 UTC (rev 127345)
@@ -1,3 +1,34 @@
+2012-08-31  Geoffrey Garen  <[email protected]>
+
+        Rolled back in a piece of <http://trac.webkit.org/changeset/127293>.
+
+            Shrink activation objects by half
+            https://bugs.webkit.org/show_bug.cgi?id=95591
+
+            Reviewed by Sam Weinig.
+
+        * dfg/DFGAbstractState.cpp:
+        (JSC::DFG::AbstractState::execute):
+        * jit/JITOpcodes.cpp:
+        (JSC::JIT::emit_op_resolve_global_dynamic):
+        * llint/LowLevelInterpreter32_64.asm:
+        * llint/LowLevelInterpreter64.asm:
+        * runtime/JSActivation.cpp:
+        (JSC::JSActivation::JSActivation):
+        * runtime/JSGlobalData.cpp:
+        (JSC::JSGlobalData::JSGlobalData):
+        * runtime/JSGlobalData.h:
+        (JSGlobalData):
+        * runtime/JSGlobalObject.cpp:
+        (JSC::JSGlobalObject::reset):
+        (JSC::JSGlobalObject::visitChildren):
+        * runtime/JSGlobalObject.h:
+        (JSGlobalObject):
+        (JSC::JSGlobalObject::withScopeStructure):
+        (JSC::JSGlobalObject::strictEvalActivationStructure):
+        (JSC::JSGlobalObject::activationStructure):
+        (JSC::JSGlobalObject::nameScopeStructure):
+
 2012-08-31  Mark Hahnenberg  <[email protected]>
 
         Remove use of ClassInfo in SpeculativeJIT::emitBranch

Modified: trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp (127344 => 127345)


--- trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/dfg/DFGAbstractState.cpp	2012-09-01 00:46:58 UTC (rev 127345)
@@ -1166,7 +1166,7 @@
         
     case CreateActivation:
         node.setCanExit(false);
-        forNode(nodeIndex).set(m_graph.m_globalData.activationStructure.get());
+        forNode(nodeIndex).set(m_codeBlock->globalObjectFor(node.codeOrigin)->activationStructure());
         m_haveStructures = true;
         break;
         

Modified: trunk/Source/_javascript_Core/jit/JITOpcodes.cpp (127344 => 127345)


--- trunk/Source/_javascript_Core/jit/JITOpcodes.cpp	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/jit/JITOpcodes.cpp	2012-09-01 00:46:58 UTC (rev 127345)
@@ -1591,12 +1591,12 @@
         Jump activationNotCreated;
         if (checkTopLevel)
             activationNotCreated = branchTestPtr(Zero, addressFor(m_codeBlock->activationRegister()));
-        addSlowCase(checkStructure(regT0, m_globalData->activationStructure.get()));
+        addSlowCase(checkStructure(regT0, m_codeBlock->globalObject()->activationStructure()));
         loadPtr(Address(regT0, JSScope::offsetOfNext()), regT0);
         activationNotCreated.link(this);
     }
     while (skip--) {
-        addSlowCase(checkStructure(regT0, m_globalData->activationStructure.get()));
+        addSlowCase(checkStructure(regT0, m_codeBlock->globalObject()->activationStructure()));
         loadPtr(Address(regT0, JSScope::offsetOfNext()), regT0);
     }
     emit_op_resolve_global(currentInstruction, true);

Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm (127344 => 127345)


--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm	2012-09-01 00:46:58 UTC (rev 127345)
@@ -1024,8 +1024,9 @@
 
 _llint_op_resolve_global_dynamic:
     traceExecution()
-    loadp JITStackFrame::globalData[sp], t3
-    loadp JSGlobalData::activationStructure[t3], t3
+    loadp CodeBlock[cfr], t3
+    loadp CodeBlock::m_globalObject[t3], t3
+    loadp JSGlobalObject::m_activationStructure[t3], t3
     getScope(
         20[PC],
         macro (scope, scratch)

Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter64.asm (127344 => 127345)


--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter64.asm	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter64.asm	2012-09-01 00:46:58 UTC (rev 127345)
@@ -881,8 +881,9 @@
 
 _llint_op_resolve_global_dynamic:
     traceExecution()
-    loadp JITStackFrame::globalData[sp], t3
-    loadp JSGlobalData::activationStructure[t3], t3
+    loadp CodeBlock[cfr], t3
+    loadp CodeBlock::m_globalObject[t3], t3
+    loadp JSGlobalObject::m_activationStructure[t3], t3
     getScope(
         40[PB, PC, 8],
         macro (scope, scratch)

Modified: trunk/Source/_javascript_Core/runtime/JSActivation.cpp (127344 => 127345)


--- trunk/Source/_javascript_Core/runtime/JSActivation.cpp	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/runtime/JSActivation.cpp	2012-09-01 00:46:58 UTC (rev 127345)
@@ -44,7 +44,7 @@
 JSActivation::JSActivation(CallFrame* callFrame, FunctionExecutable* functionExecutable)
     : Base(
         callFrame->globalData(),
-        callFrame->globalData().activationStructure.get(),
+        callFrame->lexicalGlobalObject()->activationStructure(),
         callFrame->registers(),
         callFrame->lexicalGlobalObject(),
         callFrame->globalThisValue(),

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp (127344 => 127345)


--- trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalData.cpp	2012-09-01 00:46:58 UTC (rev 127345)
@@ -188,7 +188,6 @@
     IdentifierTable* existingEntryIdentifierTable = wtfThreadData().setCurrentIdentifierTable(identifierTable);
     structureStructure.set(*this, Structure::createStructure(*this));
     debuggerActivationStructure.set(*this, DebuggerActivation::createStructure(*this, 0, jsNull()));
-    activationStructure.set(*this, JSActivation::createStructure(*this, 0, jsNull()));
     interruptedExecutionErrorStructure.set(*this, InterruptedExecutionError::createStructure(*this, 0, jsNull()));
     terminatedExecutionErrorStructure.set(*this, TerminatedExecutionError::createStructure(*this, 0, jsNull()));
     nameScopeStructure.set(*this, JSNameScope::createStructure(*this, 0, jsNull()));

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalData.h (127344 => 127345)


--- trunk/Source/_javascript_Core/runtime/JSGlobalData.h	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalData.h	2012-09-01 00:46:58 UTC (rev 127345)
@@ -228,7 +228,6 @@
         
         Strong<Structure> structureStructure;
         Strong<Structure> debuggerActivationStructure;
-        Strong<Structure> activationStructure;
         Strong<Structure> interruptedExecutionErrorStructure;
         Strong<Structure> terminatedExecutionErrorStructure;
         Strong<Structure> nameScopeStructure;

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp (127344 => 127345)


--- trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2012-09-01 00:46:58 UTC (rev 127345)
@@ -30,10 +30,6 @@
 #include "config.h"
 #include "JSGlobalObject.h"
 
-#include "JSCallbackConstructor.h"
-#include "JSCallbackFunction.h"
-#include "JSCallbackObject.h"
-
 #include "Arguments.h"
 #include "ArrayConstructor.h"
 #include "ArrayPrototype.h"
@@ -42,18 +38,25 @@
 #include "CodeBlock.h"
 #include "DateConstructor.h"
 #include "DatePrototype.h"
+#include "Debugger.h"
 #include "Error.h"
 #include "ErrorConstructor.h"
 #include "ErrorPrototype.h"
 #include "FunctionConstructor.h"
 #include "FunctionPrototype.h"
 #include "GetterSetter.h"
+#include "Interpreter.h"
+#include "JSActivation.h"
 #include "JSBoundFunction.h"
+#include "JSCallbackConstructor.h"
+#include "JSCallbackFunction.h"
+#include "JSCallbackObject.h"
 #include "JSFunction.h"
 #include "JSGlobalObjectFunctions.h"
 #include "JSLock.h"
+#include "JSNameScope.h"
 #include "JSONObject.h"
-#include "Interpreter.h"
+#include "JSWithScope.h"
 #include "Lookup.h"
 #include "MathObject.h"
 #include "NameConstructor.h"
@@ -70,9 +73,9 @@
 #include "RegExpMatchesArray.h"
 #include "RegExpObject.h"
 #include "RegExpPrototype.h"
+#include "StrictEvalActivation.h"
 #include "StringConstructor.h"
 #include "StringPrototype.h"
-#include "Debugger.h"
 
 #include "JSGlobalObject.lut.h"
 
@@ -208,6 +211,11 @@
     m_objectPrototype->putDirectAccessor(exec->globalData(), exec->propertyNames().underscoreProto, protoAccessor, Accessor | DontEnum);
     m_functionPrototype->structure()->setPrototypeWithoutTransition(exec->globalData(), m_objectPrototype.get());
 
+    m_nameScopeStructure.set(exec->globalData(), this, JSNameScope::createStructure(exec->globalData(), this, jsNull()));
+    m_activationStructure.set(exec->globalData(), this, JSActivation::createStructure(exec->globalData(), this, jsNull()));
+    m_strictEvalActivationStructure.set(exec->globalData(), this, StrictEvalActivation::createStructure(exec->globalData(), this, jsNull()));
+    m_withScopeStructure.set(exec->globalData(), this, JSWithScope::createStructure(exec->globalData(), this, jsNull()));
+
     m_emptyObjectStructure.set(exec->globalData(), this, m_objectPrototype->inheritorID(exec->globalData()));
     m_nullPrototypeObjectStructure.set(exec->globalData(), this, createEmptyObjectStructure(exec->globalData(), this, jsNull()));
 
@@ -370,6 +378,10 @@
     visitor.append(&thisObject->m_regExpPrototype);
     visitor.append(&thisObject->m_errorPrototype);
 
+    visitor.append(&thisObject->m_withScopeStructure);
+    visitor.append(&thisObject->m_strictEvalActivationStructure);
+    visitor.append(&thisObject->m_activationStructure);
+    visitor.append(&thisObject->m_nameScopeStructure);
     visitor.append(&thisObject->m_argumentsStructure);
     visitor.append(&thisObject->m_arrayStructure);
     visitor.append(&thisObject->m_booleanObjectStructure);

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObject.h (127344 => 127345)


--- trunk/Source/_javascript_Core/runtime/JSGlobalObject.h	2012-09-01 00:40:57 UTC (rev 127344)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObject.h	2012-09-01 00:46:58 UTC (rev 127345)
@@ -120,6 +120,10 @@
         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;
@@ -248,6 +252,10 @@
 
         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(); }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to