<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[171115] trunk/Source/JavaScriptCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/171115">171115</a></dd>
<dt>Author</dt> <dd>mhahnenberg@apple.com</dd>
<dt>Date</dt> <dd>2014-07-15 14:05:43 -0700 (Tue, 15 Jul 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Stores to PropertyTable use the Structure as the owner
https://bugs.webkit.org/show_bug.cgi?id=134595

Reviewed by Darin Adler.

Since PropertyTable is the object that does the marking of these references, it should be the owner.

Also removed some unused parameters to other methods that historically used the Structure as the owner.

* runtime/JSPropertyNameIterator.h:
(JSC::StructureRareData::setEnumerationCache):
* runtime/ObjectPrototype.cpp:
(JSC::objectProtoFuncToString):
* runtime/PropertyMapHashTable.h:
(JSC::PropertyTable::copy):
* runtime/PropertyTable.cpp:
(JSC::PropertyTable::clone):
(JSC::PropertyTable::PropertyTable):
* runtime/Structure.cpp:
(JSC::Structure::Structure):
(JSC::Structure::materializePropertyMap):
(JSC::Structure::addPropertyTransition):
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::despecifyFunctionTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::preventExtensionsTransition):
(JSC::Structure::takePropertyTableOrCloneIfPinned):
(JSC::Structure::nonPropertyTransition):
(JSC::Structure::copyPropertyTable):
(JSC::Structure::copyPropertyTableForPinning):
(JSC::Structure::putSpecificValue):
* runtime/Structure.h:
(JSC::Structure::setObjectToStringValue):
(JSC::Structure::setPreviousID):
* runtime/StructureInlines.h:
(JSC::Structure::setEnumerationCache):
* runtime/StructureRareData.h:
* runtime/StructureRareDataInlines.h:
(JSC::StructureRareData::setPreviousID):
(JSC::StructureRareData::setObjectToStringValue):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPropertyNameIteratorh">trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeObjectPrototypecpp">trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertyMapHashTableh">trunk/Source/JavaScriptCore/runtime/PropertyMapHashTable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertyTablecpp">trunk/Source/JavaScriptCore/runtime/PropertyTable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructurecpp">trunk/Source/JavaScriptCore/runtime/Structure.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureh">trunk/Source/JavaScriptCore/runtime/Structure.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureInlinesh">trunk/Source/JavaScriptCore/runtime/StructureInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureRareDatah">trunk/Source/JavaScriptCore/runtime/StructureRareData.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureRareDataInlinesh">trunk/Source/JavaScriptCore/runtime/StructureRareDataInlines.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -1,5 +1,49 @@
</span><span class="cx"> 2014-07-15  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Stores to PropertyTable use the Structure as the owner
+        https://bugs.webkit.org/show_bug.cgi?id=134595
+
+        Reviewed by Darin Adler.
+
+        Since PropertyTable is the object that does the marking of these references, it should be the owner.
+
+        Also removed some unused parameters to other methods that historically used the Structure as the owner.
+
+        * runtime/JSPropertyNameIterator.h:
+        (JSC::StructureRareData::setEnumerationCache):
+        * runtime/ObjectPrototype.cpp:
+        (JSC::objectProtoFuncToString):
+        * runtime/PropertyMapHashTable.h:
+        (JSC::PropertyTable::copy):
+        * runtime/PropertyTable.cpp:
+        (JSC::PropertyTable::clone):
+        (JSC::PropertyTable::PropertyTable):
+        * runtime/Structure.cpp:
+        (JSC::Structure::Structure):
+        (JSC::Structure::materializePropertyMap):
+        (JSC::Structure::addPropertyTransition):
+        (JSC::Structure::changePrototypeTransition):
+        (JSC::Structure::despecifyFunctionTransition):
+        (JSC::Structure::attributeChangeTransition):
+        (JSC::Structure::toDictionaryTransition):
+        (JSC::Structure::preventExtensionsTransition):
+        (JSC::Structure::takePropertyTableOrCloneIfPinned):
+        (JSC::Structure::nonPropertyTransition):
+        (JSC::Structure::copyPropertyTable):
+        (JSC::Structure::copyPropertyTableForPinning):
+        (JSC::Structure::putSpecificValue):
+        * runtime/Structure.h:
+        (JSC::Structure::setObjectToStringValue):
+        (JSC::Structure::setPreviousID):
+        * runtime/StructureInlines.h:
+        (JSC::Structure::setEnumerationCache):
+        * runtime/StructureRareData.h:
+        * runtime/StructureRareDataInlines.h:
+        (JSC::StructureRareData::setPreviousID):
+        (JSC::StructureRareData::setObjectToStringValue):
+
+2014-07-15  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
</ins><span class="cx">         ScriptExecutable::forEachCodeBlock can dereference null CodeBlocks
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=134928
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPropertyNameIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx">         return m_enumerationCache.get();
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    inline void StructureRareData::setEnumerationCache(VM&amp; vm, const Structure*, JSPropertyNameIterator* value)
</del><ins>+    inline void StructureRareData::setEnumerationCache(VM&amp; vm, JSPropertyNameIterator* value)
</ins><span class="cx">     {
</span><span class="cx">         m_enumerationCache.set(vm, this, value);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeObjectPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -225,7 +225,7 @@
</span><span class="cx">             return JSValue::encode(throwOutOfMemoryError(exec));
</span><span class="cx"> 
</span><span class="cx">         result = jsNontrivialString(&amp;vm, newString.release());
</span><del>-        thisObject-&gt;structure(vm)-&gt;setObjectToStringValue(vm, thisObject, result);
</del><ins>+        thisObject-&gt;structure(vm)-&gt;setObjectToStringValue(vm, result);
</ins><span class="cx">     }
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertyMapHashTableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertyMapHashTable.h (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertyMapHashTable.h        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/PropertyMapHashTable.h        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -163,8 +163,8 @@
</span><span class="cx"> 
</span><span class="cx">     // Constructor is passed an initial capacity, a PropertyTable to copy, or both.
</span><span class="cx">     static PropertyTable* create(VM&amp;, unsigned initialCapacity);
</span><del>-    static PropertyTable* clone(VM&amp;, JSCell* owner, const PropertyTable&amp;);
-    static PropertyTable* clone(VM&amp;, JSCell* owner, unsigned initialCapacity, const PropertyTable&amp;);
</del><ins>+    static PropertyTable* clone(VM&amp;, const PropertyTable&amp;);
+    static PropertyTable* clone(VM&amp;, unsigned initialCapacity, const PropertyTable&amp;);
</ins><span class="cx">     ~PropertyTable();
</span><span class="cx"> 
</span><span class="cx">     // Ordered iteration methods.
</span><span class="lines">@@ -202,7 +202,7 @@
</span><span class="cx">     PropertyOffset nextOffset(PropertyOffset inlineCapacity);
</span><span class="cx"> 
</span><span class="cx">     // Copy this PropertyTable, ensuring the copy has at least the capacity provided.
</span><del>-    PropertyTable* copy(VM&amp;, JSCell* owner, unsigned newCapacity);
</del><ins>+    PropertyTable* copy(VM&amp;, unsigned newCapacity);
</ins><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><span class="cx">     size_t sizeInMemory();
</span><span class="lines">@@ -214,8 +214,8 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     PropertyTable(VM&amp;, unsigned initialCapacity);
</span><del>-    PropertyTable(VM&amp;, JSCell*, const PropertyTable&amp;);
-    PropertyTable(VM&amp;, JSCell*, unsigned initialCapacity, const PropertyTable&amp;);
</del><ins>+    PropertyTable(VM&amp;, const PropertyTable&amp;);
+    PropertyTable(VM&amp;, unsigned initialCapacity, const PropertyTable&amp;);
</ins><span class="cx"> 
</span><span class="cx">     PropertyTable(const PropertyTable&amp;);
</span><span class="cx">     // Used to insert a value known not to be in the table, and where we know capacity to be available.
</span><span class="lines">@@ -498,15 +498,15 @@
</span><span class="cx">     return offsetForPropertyNumber(size(), inlineCapacity);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline PropertyTable* PropertyTable::copy(VM&amp; vm, JSCell* owner, unsigned newCapacity)
</del><ins>+inline PropertyTable* PropertyTable::copy(VM&amp; vm, unsigned newCapacity)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(newCapacity &gt;= m_keyCount);
</span><span class="cx"> 
</span><span class="cx">     // Fast case; if the new table will be the same m_indexSize as this one, we can memcpy it,
</span><span class="cx">     // save rehashing all keys.
</span><span class="cx">     if (sizeForCapacity(newCapacity) == m_indexSize)
</span><del>-        return PropertyTable::clone(vm, owner, *this);
-    return PropertyTable::clone(vm, owner, newCapacity, *this);
</del><ins>+        return PropertyTable::clone(vm, *this);
+    return PropertyTable::clone(vm, newCapacity, *this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertyTablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertyTable.cpp (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertyTable.cpp        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/PropertyTable.cpp        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -44,16 +44,16 @@
</span><span class="cx">     return table;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PropertyTable* PropertyTable::clone(VM&amp; vm, JSCell* owner, const PropertyTable&amp; other)
</del><ins>+PropertyTable* PropertyTable::clone(VM&amp; vm, const PropertyTable&amp; other)
</ins><span class="cx"> {
</span><del>-    PropertyTable* table = new (NotNull, allocateCell&lt;PropertyTable&gt;(vm.heap)) PropertyTable(vm, owner, other);
</del><ins>+    PropertyTable* table = new (NotNull, allocateCell&lt;PropertyTable&gt;(vm.heap)) PropertyTable(vm, other);
</ins><span class="cx">     table-&gt;finishCreation(vm);
</span><span class="cx">     return table;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PropertyTable* PropertyTable::clone(VM&amp; vm, JSCell* owner, unsigned initialCapacity, const PropertyTable&amp; other)
</del><ins>+PropertyTable* PropertyTable::clone(VM&amp; vm, unsigned initialCapacity, const PropertyTable&amp; other)
</ins><span class="cx"> {
</span><del>-    PropertyTable* table = new (NotNull, allocateCell&lt;PropertyTable&gt;(vm.heap)) PropertyTable(vm, owner, initialCapacity, other);
</del><ins>+    PropertyTable* table = new (NotNull, allocateCell&lt;PropertyTable&gt;(vm.heap)) PropertyTable(vm, initialCapacity, other);
</ins><span class="cx">     table-&gt;finishCreation(vm);
</span><span class="cx">     return table;
</span><span class="cx"> }
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     ASSERT(isPowerOf2(m_indexSize));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PropertyTable::PropertyTable(VM&amp; vm, JSCell* owner, const PropertyTable&amp; other)
</del><ins>+PropertyTable::PropertyTable(VM&amp; vm, const PropertyTable&amp; other)
</ins><span class="cx">     : JSCell(vm, vm.propertyTableStructure.get())
</span><span class="cx">     , m_indexSize(other.m_indexSize)
</span><span class="cx">     , m_indexMask(other.m_indexMask)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx">     iterator end = this-&gt;end();
</span><span class="cx">     for (iterator iter = begin(); iter != end; ++iter) {
</span><span class="cx">         iter-&gt;key-&gt;ref();
</span><del>-        vm.heap.writeBarrier(owner, iter-&gt;specificValue.get());
</del><ins>+        vm.heap.writeBarrier(this, iter-&gt;specificValue.get());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Copy the m_deletedOffsets vector.
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">         m_deletedOffsets = adoptPtr(new Vector&lt;PropertyOffset&gt;(*otherDeletedOffsets));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PropertyTable::PropertyTable(VM&amp; vm, JSCell* owner, unsigned initialCapacity, const PropertyTable&amp; other)
</del><ins>+PropertyTable::PropertyTable(VM&amp; vm, unsigned initialCapacity, const PropertyTable&amp; other)
</ins><span class="cx">     : JSCell(vm, vm.propertyTableStructure.get())
</span><span class="cx">     , m_indexSize(sizeForCapacity(initialCapacity))
</span><span class="cx">     , m_indexMask(m_indexSize - 1)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">         ASSERT(canInsert());
</span><span class="cx">         reinsert(*iter);
</span><span class="cx">         iter-&gt;key-&gt;ref();
</span><del>-        vm.heap.writeBarrier(owner, iter-&gt;specificValue.get());
</del><ins>+        vm.heap.writeBarrier(this, iter-&gt;specificValue.get());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Copy the m_deletedOffsets vector.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructurecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.cpp (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.cpp        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/Structure.cpp        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -237,7 +237,7 @@
</span><span class="cx">     ASSERT(!previous-&gt;typeInfo().structureIsImmortal());
</span><span class="cx">     if (previous-&gt;m_hasRareData &amp;&amp; previous-&gt;rareData()-&gt;needsCloning())
</span><span class="cx">         cloneRareDataFrom(vm, previous);
</span><del>-    setPreviousID(vm, this, previous);
</del><ins>+    setPreviousID(vm, previous);
</ins><span class="cx"> 
</span><span class="cx">     previous-&gt;notifyTransitionFromThisStructure();
</span><span class="cx">     if (previous-&gt;m_globalObject)
</span><span class="lines">@@ -293,7 +293,7 @@
</span><span class="cx">     findStructuresAndMapForMaterialization(structures, structure, table);
</span><span class="cx">     
</span><span class="cx">     if (table) {
</span><del>-        table = table-&gt;copy(vm, structure, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
</del><ins>+        table = table-&gt;copy(vm, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
</ins><span class="cx">         structure-&gt;m_lock.unlock();
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -450,7 +450,7 @@
</span><span class="cx">     transition-&gt;m_nameInPrevious = propertyName.uid();
</span><span class="cx">     transition-&gt;m_attributesInPrevious = attributes;
</span><span class="cx">     transition-&gt;m_specificValueInPrevious.setMayBeNull(vm, transition, specificValue);
</span><del>-    transition-&gt;propertyTable().set(vm, transition, structure-&gt;takePropertyTableOrCloneIfPinned(vm, transition));
</del><ins>+    transition-&gt;propertyTable().set(vm, transition, structure-&gt;takePropertyTableOrCloneIfPinned(vm));
</ins><span class="cx">     transition-&gt;m_offset = structure-&gt;m_offset;
</span><span class="cx"> 
</span><span class="cx">     offset = transition-&gt;putSpecificValue(vm, propertyName, attributes, specificValue);
</span><span class="lines">@@ -485,7 +485,7 @@
</span><span class="cx"> 
</span><span class="cx">     DeferGC deferGC(vm.heap);
</span><span class="cx">     structure-&gt;materializePropertyMapIfNecessary(vm, deferGC);
</span><del>-    transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm, transition));
</del><ins>+    transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm));
</ins><span class="cx">     transition-&gt;m_offset = structure-&gt;m_offset;
</span><span class="cx">     transition-&gt;pin();
</span><span class="cx"> 
</span><span class="lines">@@ -502,7 +502,7 @@
</span><span class="cx"> 
</span><span class="cx">     DeferGC deferGC(vm.heap);
</span><span class="cx">     structure-&gt;materializePropertyMapIfNecessary(vm, deferGC);
</span><del>-    transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm, transition));
</del><ins>+    transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm));
</ins><span class="cx">     transition-&gt;m_offset = structure-&gt;m_offset;
</span><span class="cx">     transition-&gt;pin();
</span><span class="cx"> 
</span><span class="lines">@@ -524,7 +524,7 @@
</span><span class="cx">         Structure* transition = create(vm, structure);
</span><span class="cx"> 
</span><span class="cx">         structure-&gt;materializePropertyMapIfNecessary(vm, deferGC);
</span><del>-        transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm, transition));
</del><ins>+        transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm));
</ins><span class="cx">         transition-&gt;m_offset = structure-&gt;m_offset;
</span><span class="cx">         transition-&gt;pin();
</span><span class="cx">         
</span><span class="lines">@@ -548,7 +548,7 @@
</span><span class="cx"> 
</span><span class="cx">     DeferGC deferGC(vm.heap);
</span><span class="cx">     structure-&gt;materializePropertyMapIfNecessary(vm, deferGC);
</span><del>-    transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm, transition));
</del><ins>+    transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm));
</ins><span class="cx">     transition-&gt;m_offset = structure-&gt;m_offset;
</span><span class="cx">     transition-&gt;m_dictionaryKind = kind;
</span><span class="cx">     transition-&gt;pin();
</span><span class="lines">@@ -611,7 +611,7 @@
</span><span class="cx"> 
</span><span class="cx">     DeferGC deferGC(vm.heap);
</span><span class="cx">     structure-&gt;materializePropertyMapIfNecessary(vm, deferGC);
</span><del>-    transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm, transition));
</del><ins>+    transition-&gt;propertyTable().set(vm, transition, structure-&gt;copyPropertyTableForPinning(vm));
</ins><span class="cx">     transition-&gt;m_offset = structure-&gt;m_offset;
</span><span class="cx">     transition-&gt;m_preventExtensions = true;
</span><span class="cx">     transition-&gt;pin();
</span><span class="lines">@@ -620,13 +620,13 @@
</span><span class="cx">     return transition;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-PropertyTable* Structure::takePropertyTableOrCloneIfPinned(VM&amp; vm, Structure* owner)
</del><ins>+PropertyTable* Structure::takePropertyTableOrCloneIfPinned(VM&amp; vm)
</ins><span class="cx"> {
</span><span class="cx">     DeferGC deferGC(vm.heap);
</span><span class="cx">     materializePropertyMapIfNecessaryForPinning(vm, deferGC);
</span><span class="cx">     
</span><span class="cx">     if (m_isPinnedPropertyTable)
</span><del>-        return propertyTable()-&gt;copy(vm, owner, propertyTable()-&gt;size() + 1);
</del><ins>+        return propertyTable()-&gt;copy(vm, propertyTable()-&gt;size() + 1);
</ins><span class="cx">     
</span><span class="cx">     // Hold the lock while stealing the table - so that getConcurrently() on another thread
</span><span class="cx">     // will either have to bypass this structure, or will get to use the property table
</span><span class="lines">@@ -662,7 +662,7 @@
</span><span class="cx">     Structure* transition = create(vm, structure);
</span><span class="cx">     transition-&gt;m_attributesInPrevious = attributes;
</span><span class="cx">     transition-&gt;m_blob.setIndexingType(indexingType);
</span><del>-    transition-&gt;propertyTable().set(vm, transition, structure-&gt;takePropertyTableOrCloneIfPinned(vm, transition));
</del><ins>+    transition-&gt;propertyTable().set(vm, transition, structure-&gt;takePropertyTableOrCloneIfPinned(vm));
</ins><span class="cx">     transition-&gt;m_offset = structure-&gt;m_offset;
</span><span class="cx">     checkOffset(transition-&gt;m_offset, transition-&gt;inlineCapacity());
</span><span class="cx">     
</span><span class="lines">@@ -864,17 +864,17 @@
</span><span class="cx"> 
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-PropertyTable* Structure::copyPropertyTable(VM&amp; vm, Structure* owner)
</del><ins>+PropertyTable* Structure::copyPropertyTable(VM&amp; vm)
</ins><span class="cx"> {
</span><span class="cx">     if (!propertyTable())
</span><span class="cx">         return 0;
</span><del>-    return PropertyTable::clone(vm, owner, *propertyTable().get());
</del><ins>+    return PropertyTable::clone(vm, *propertyTable().get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-PropertyTable* Structure::copyPropertyTableForPinning(VM&amp; vm, Structure* owner)
</del><ins>+PropertyTable* Structure::copyPropertyTableForPinning(VM&amp; vm)
</ins><span class="cx"> {
</span><span class="cx">     if (propertyTable())
</span><del>-        return PropertyTable::clone(vm, owner, *propertyTable().get());
</del><ins>+        return PropertyTable::clone(vm, *propertyTable().get());
</ins><span class="cx">     return PropertyTable::create(vm, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -956,7 +956,7 @@
</span><span class="cx"> 
</span><span class="cx">     PropertyOffset newOffset = propertyTable()-&gt;nextOffset(m_inlineCapacity);
</span><span class="cx"> 
</span><del>-    propertyTable()-&gt;add(PropertyMapEntry(vm, this, rep, newOffset, attributes, specificValue), m_offset, PropertyTable::PropertyOffsetMayChange);
</del><ins>+    propertyTable()-&gt;add(PropertyMapEntry(vm, propertyTable().get(), rep, newOffset, attributes, specificValue), m_offset, PropertyTable::PropertyOffsetMayChange);
</ins><span class="cx">     
</span><span class="cx">     checkConsistency();
</span><span class="cx">     return newOffset;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Structure.h (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Structure.h        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/Structure.h        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -315,11 +315,11 @@
</span><span class="cx">         return rareData()-&gt;objectToStringValue();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void setObjectToStringValue(VM&amp; vm, const JSCell* owner, JSString* value)
</del><ins>+    void setObjectToStringValue(VM&amp; vm, JSString* value)
</ins><span class="cx">     {
</span><span class="cx">         if (!m_hasRareData)
</span><span class="cx">             allocateRareData(vm);
</span><del>-        rareData()-&gt;setObjectToStringValue(vm, owner, value);
</del><ins>+        rareData()-&gt;setObjectToStringValue(vm, value);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool staticFunctionsReified()
</span><span class="lines">@@ -429,9 +429,9 @@
</span><span class="cx">     void despecifyAllFunctions(VM&amp;);
</span><span class="cx"> 
</span><span class="cx">     WriteBarrier&lt;PropertyTable&gt;&amp; propertyTable();
</span><del>-    PropertyTable* takePropertyTableOrCloneIfPinned(VM&amp;, Structure* owner);
-    PropertyTable* copyPropertyTable(VM&amp;, Structure* owner);
-    PropertyTable* copyPropertyTableForPinning(VM&amp;, Structure* owner);
</del><ins>+    PropertyTable* takePropertyTableOrCloneIfPinned(VM&amp;);
+    PropertyTable* copyPropertyTable(VM&amp;);
+    PropertyTable* copyPropertyTableForPinning(VM&amp;);
</ins><span class="cx">     JS_EXPORT_PRIVATE void materializePropertyMap(VM&amp;);
</span><span class="cx">     ALWAYS_INLINE void materializePropertyMapIfNecessary(VM&amp; vm, DeferGC&amp;)
</span><span class="cx">     {
</span><span class="lines">@@ -461,12 +461,12 @@
</span><span class="cx">             materializePropertyMap(vm);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void setPreviousID(VM&amp; vm, Structure* transition, Structure* structure)
</del><ins>+    void setPreviousID(VM&amp; vm, Structure* structure)
</ins><span class="cx">     {
</span><span class="cx">         if (m_hasRareData)
</span><del>-            rareData()-&gt;setPreviousID(vm, transition, structure);
</del><ins>+            rareData()-&gt;setPreviousID(vm, structure);
</ins><span class="cx">         else
</span><del>-            m_previousOrRareData.set(vm, transition, structure);
</del><ins>+            m_previousOrRareData.set(vm, this, structure);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void clearPreviousID()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StructureInlines.h (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StructureInlines.h        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/StructureInlines.h        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx">     ASSERT(!isDictionary());
</span><span class="cx">     if (!m_hasRareData)
</span><span class="cx">         allocateRareData(vm);
</span><del>-    rareData()-&gt;setEnumerationCache(vm, this, enumerationCache);
</del><ins>+    rareData()-&gt;setEnumerationCache(vm, enumerationCache);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline JSPropertyNameIterator* Structure::enumerationCache()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureRareDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StructureRareData.h (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StructureRareData.h        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/StructureRareData.h        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -49,14 +49,14 @@
</span><span class="cx">     bool needsCloning() const { return false; }
</span><span class="cx"> 
</span><span class="cx">     Structure* previousID() const;
</span><del>-    void setPreviousID(VM&amp;, Structure* transition, Structure*);
</del><ins>+    void setPreviousID(VM&amp;, Structure*);
</ins><span class="cx">     void clearPreviousID();
</span><span class="cx"> 
</span><span class="cx">     JSString* objectToStringValue() const;
</span><del>-    void setObjectToStringValue(VM&amp;, const JSCell* owner, JSString* value);
</del><ins>+    void setObjectToStringValue(VM&amp;, JSString* value);
</ins><span class="cx"> 
</span><span class="cx">     JSPropertyNameIterator* enumerationCache();
</span><del>-    void setEnumerationCache(VM&amp;, const Structure* owner, JSPropertyNameIterator* value);
</del><ins>+    void setEnumerationCache(VM&amp;, JSPropertyNameIterator* value);
</ins><span class="cx"> 
</span><span class="cx">     DECLARE_EXPORT_INFO;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureRareDataInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StructureRareDataInlines.h (171114 => 171115)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StructureRareDataInlines.h        2014-07-15 20:52:12 UTC (rev 171114)
+++ trunk/Source/JavaScriptCore/runtime/StructureRareDataInlines.h        2014-07-15 21:05:43 UTC (rev 171115)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">     return m_previous.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void StructureRareData::setPreviousID(VM&amp; vm, Structure*, Structure* structure)
</del><ins>+inline void StructureRareData::setPreviousID(VM&amp; vm, Structure* structure)
</ins><span class="cx"> {
</span><span class="cx">     m_previous.set(vm, this, structure);
</span><span class="cx"> }
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">     return m_objectToStringValue.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void StructureRareData::setObjectToStringValue(VM&amp; vm, const JSCell*, JSString* value)
</del><ins>+inline void StructureRareData::setObjectToStringValue(VM&amp; vm, JSString* value)
</ins><span class="cx"> {
</span><span class="cx">     m_objectToStringValue.set(vm, this, value);
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>