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

Reply via email to