Title: [163151] trunk/Source/_javascript_Core
- Revision
- 163151
- Author
- [email protected]
- Date
- 2014-01-30 19:38:06 -0800 (Thu, 30 Jan 2014)
Log Message
CodeBlock's cloned SymbolTables only need the captured names.
<https://webkit.org/b/127978>
Renamed SymbolTable::clone() to SymbolTable::cloneCapturedNames()
and make it skip over any symbols that aren't captured, since those
won't be needed after codegen.
This is a first step towards getting rid of redundant symbol tables.
Reviewed by Geoffrey Garen.
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
* runtime/SymbolTable.cpp:
(JSC::SymbolTable::cloneCapturedNames):
* runtime/SymbolTable.h:
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (163150 => 163151)
--- trunk/Source/_javascript_Core/ChangeLog 2014-01-31 03:16:21 UTC (rev 163150)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-01-31 03:38:06 UTC (rev 163151)
@@ -1,3 +1,22 @@
+2014-01-30 Andreas Kling <[email protected]>
+
+ CodeBlock's cloned SymbolTables only need the captured names.
+ <https://webkit.org/b/127978>
+
+ Renamed SymbolTable::clone() to SymbolTable::cloneCapturedNames()
+ and make it skip over any symbols that aren't captured, since those
+ won't be needed after codegen.
+
+ This is a first step towards getting rid of redundant symbol tables.
+
+ Reviewed by Geoffrey Garen.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ * runtime/SymbolTable.cpp:
+ (JSC::SymbolTable::cloneCapturedNames):
+ * runtime/SymbolTable.h:
+
2014-01-28 Timothy Hatcher <[email protected]>
Add column number and call timing support to LegacyProfiler.
Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (163150 => 163151)
--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp 2014-01-31 03:16:21 UTC (rev 163150)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp 2014-01-31 03:38:06 UTC (rev 163151)
@@ -1558,7 +1558,7 @@
if (SymbolTable* symbolTable = unlinkedCodeBlock->symbolTable()) {
if (codeType() == FunctionCode && symbolTable->captureCount()) {
- m_symbolTable.set(*m_vm, m_ownerExecutable.get(), symbolTable->clone(*m_vm));
+ m_symbolTable.set(*m_vm, m_ownerExecutable.get(), symbolTable->cloneCapturedNames(*m_vm));
didCloneSymbolTable = true;
} else
m_symbolTable.set(*m_vm, m_ownerExecutable.get(), symbolTable);
Modified: trunk/Source/_javascript_Core/runtime/SymbolTable.cpp (163150 => 163151)
--- trunk/Source/_javascript_Core/runtime/SymbolTable.cpp 2014-01-31 03:16:21 UTC (rev 163150)
+++ trunk/Source/_javascript_Core/runtime/SymbolTable.cpp 2014-01-31 03:38:06 UTC (rev 163151)
@@ -134,7 +134,7 @@
}
}
-SymbolTable* SymbolTable::clone(VM& vm)
+SymbolTable* SymbolTable::cloneCapturedNames(VM& vm)
{
SymbolTable* result = SymbolTable::create(vm);
@@ -142,10 +142,10 @@
result->m_usesNonStrictEval = m_usesNonStrictEval;
result->m_captureStart = m_captureStart;
result->m_captureEnd = m_captureEnd;
-
- Map::iterator iter = m_map.begin();
- Map::iterator end = m_map.end();
- for (; iter != end; ++iter) {
+
+ for (auto iter = m_map.begin(), end = m_map.end(); iter != end; ++iter) {
+ if (!isCaptured(iter->value.getIndex()))
+ continue;
result->m_map.add(
iter->key,
SymbolTableEntry(iter->value.getIndex(), iter->value.getAttributes()));
Modified: trunk/Source/_javascript_Core/runtime/SymbolTable.h (163150 => 163151)
--- trunk/Source/_javascript_Core/runtime/SymbolTable.h 2014-01-31 03:16:21 UTC (rev 163150)
+++ trunk/Source/_javascript_Core/runtime/SymbolTable.h 2014-01-31 03:38:06 UTC (rev 163151)
@@ -467,7 +467,7 @@
const SlowArgument* slowArguments() { return m_slowArguments.get(); }
void setSlowArguments(std::unique_ptr<SlowArgument[]> slowArguments) { m_slowArguments = std::move(slowArguments); }
- SymbolTable* clone(VM&);
+ SymbolTable* cloneCapturedNames(VM&);
static void visitChildren(JSCell*, SlotVisitor&);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes