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(); }