<!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>[163574] 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/163574">163574</a></dd>
<dt>Author</dt> <dd>mhahnenberg@apple.com</dd>
<dt>Date</dt> <dd>2014-02-06 16:29:57 -0800 (Thu, 06 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>JSManagedValue should automatically call removeManagedReference:withOwner: upon dealloc
https://bugs.webkit.org/show_bug.cgi?id=124053

Reviewed by Geoffrey Garen.

* API/JSManagedValue.h:
* API/JSManagedValue.mm:
(+[JSManagedValue managedValueWithValue:andOwner:]):
(-[JSManagedValue initWithValue:]):
(-[JSManagedValue dealloc]):
(-[JSManagedValue didAddOwner:]):
(-[JSManagedValue didRemoveOwner:]):
* API/JSManagedValueInternal.h: Added.
* API/JSVirtualMachine.mm:
(-[JSVirtualMachine addManagedReference:withOwner:]):
(-[JSVirtualMachine removeManagedReference:withOwner:]):
* API/WebKitAvailability.h:
* API/tests/testapi.mm:
(-[TextXYZ click]):
* JavaScriptCore.xcodeproj/project.pbxproj:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSManagedValueh">trunk/Source/JavaScriptCore/API/JSManagedValue.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSManagedValuemm">trunk/Source/JavaScriptCore/API/JSManagedValue.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSVirtualMachinemm">trunk/Source/JavaScriptCore/API/JSVirtualMachine.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIWebKitAvailabilityh">trunk/Source/JavaScriptCore/API/WebKitAvailability.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIteststestapimm">trunk/Source/JavaScriptCore/API/tests/testapi.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSManagedValueInternalh">trunk/Source/JavaScriptCore/API/JSManagedValueInternal.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSManagedValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSManagedValue.h (163573 => 163574)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSManagedValue.h        2014-02-07 00:29:03 UTC (rev 163573)
+++ trunk/Source/JavaScriptCore/API/JSManagedValue.h        2014-02-07 00:29:57 UTC (rev 163574)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #define JSManagedValue_h
</span><span class="cx"> 
</span><span class="cx"> #import &lt;JavaScriptCore/JSBase.h&gt;
</span><ins>+#import &lt;JavaScriptCore/WebKitAvailability.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> #if JSC_OBJC_API_ENABLED
</span><span class="cx"> 
</span><span class="lines">@@ -63,6 +64,18 @@
</span><span class="cx"> @result The new JSManagedValue.
</span><span class="cx"> */
</span><span class="cx"> + (JSManagedValue *)managedValueWithValue:(JSValue *)value;
</span><ins>+// FIXME: There's a bug in earlier versions of clang that shipped on 10.8 that causes the NS_AVAILABLE macro
+// to be ignored by the preprocessor when it follows a class method. The compiler then tries to treat the 
+// macro as part of the selector.
+#if __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
++ (JSManagedValue *)managedValueWithValue:(JSValue *)value andOwner:(id)owner NS_AVAILABLE(10_10, 8_0);
+#else
+#if (TARGET_OS_MAC &amp;&amp; !(TARGET_OS_EMBEDDED || TARGET_OS_IPHONE))
++ (JSManagedValue *)managedValueWithValue:(JSValue *)value andOwner:(id)owner __attribute__((availability(macosx,__NSi_10_10)));
+#else
++ (JSManagedValue *)managedValueWithValue:(JSValue *)value andOwner:(id)owner __attribute__((availability(ios,__NSi_8_0)));
+#endif
+#endif // __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 1090
</ins><span class="cx"> 
</span><span class="cx"> /*!
</span><span class="cx"> @method
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSManagedValuemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSManagedValue.mm (163573 => 163574)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSManagedValue.mm        2014-02-07 00:29:03 UTC (rev 163573)
+++ trunk/Source/JavaScriptCore/API/JSManagedValue.mm        2014-02-07 00:29:57 UTC (rev 163574)
</span><span class="lines">@@ -169,6 +169,7 @@
</span><span class="cx"> @implementation JSManagedValue {
</span><span class="cx">     JSC::Weak&lt;JSC::JSGlobalObject&gt; m_globalObject;
</span><span class="cx">     WeakValueRef m_weakValue;
</span><ins>+    NSMapTable *m_owners;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> + (JSManagedValue *)managedValueWithValue:(JSValue *)value
</span><span class="lines">@@ -176,6 +177,13 @@
</span><span class="cx">     return [[[self alloc] initWithValue:value] autorelease];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>++ (JSManagedValue *)managedValueWithValue:(JSValue *)value andOwner:(id)owner
+{
+    JSManagedValue *managedValue = [[self alloc] initWithValue:value];
+    [value.context.virtualMachine addManagedReference:managedValue withOwner:owner];
+    return [managedValue autorelease];
+}
+
</ins><span class="cx"> - (instancetype)init
</span><span class="cx"> {
</span><span class="cx">     return [self initWithValue:nil];
</span><span class="lines">@@ -195,6 +203,10 @@
</span><span class="cx">     JSC::Weak&lt;JSC::JSGlobalObject&gt; weak(globalObject, managedValueHandleOwner(), self);
</span><span class="cx">     m_globalObject.swap(weak);
</span><span class="cx"> 
</span><ins>+    NSPointerFunctionsOptions weakIDOptions = NSPointerFunctionsWeakMemory | NSPointerFunctionsObjectPersonality;
+    NSPointerFunctionsOptions integerOptions = NSPointerFunctionsOpaqueMemory | NSPointerFunctionsIntegerPersonality;
+    m_owners = [[NSMapTable alloc] initWithKeyOptions:weakIDOptions valueOptions:integerOptions capacity:1];
+
</ins><span class="cx">     JSC::JSValue jsValue = toJS(exec, [value JSValueRef]);
</span><span class="cx">     if (jsValue.isObject())
</span><span class="cx">         m_weakValue.setObject(JSC::jsCast&lt;JSC::JSObject*&gt;(jsValue.asCell()), self);
</span><span class="lines">@@ -205,6 +217,43 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)dealloc
+{
+    JSVirtualMachine *virtualMachine = [[[self value] context] virtualMachine];
+    if (virtualMachine) {
+        for (id owner in [m_owners keyEnumerator]) {
+            size_t count = reinterpret_cast&lt;size_t&gt;(NSMapGet(m_owners, owner));
+            while (count--)
+                [virtualMachine removeManagedReference:self withOwner:owner];
+        }
+    }
+
+    [self disconnectValue];
+    [m_owners release];
+    [super dealloc];
+}
+
+- (void)didAddOwner:(id)owner
+{
+    size_t count = reinterpret_cast&lt;size_t&gt;(NSMapGet(m_owners, owner));
+    NSMapInsert(m_owners, owner, reinterpret_cast&lt;void*&gt;(count + 1));
+}
+
+- (void)didRemoveOwner:(id)owner
+{
+    size_t count = reinterpret_cast&lt;size_t&gt;(NSMapGet(m_owners, owner));
+
+    if (!count)
+        return;
+
+    if (count == 1) {
+        NSMapRemove(m_owners, owner);
+        return;
+    }
+
+    NSMapInsert(m_owners, owner, reinterpret_cast&lt;void*&gt;(count - 1));
+}
+
</ins><span class="cx"> - (JSValue *)value
</span><span class="cx"> {
</span><span class="cx">     if (!m_globalObject)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSManagedValueInternalh"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/API/JSManagedValueInternal.h (0 => 163574)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSManagedValueInternal.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/API/JSManagedValueInternal.h        2014-02-07 00:29:57 UTC (rev 163574)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JSManagedValueInternal_h
+#define JSManagedValueInternal_h
+
+#import &lt;JavaScriptCore/JSBase.h&gt;
+
+#if JSC_OBJC_API_ENABLED
+
+@interface JSManagedValue(Internal)
+
+- (void)didAddOwner:(id)owner;
+- (void)didRemoveOwner:(id)owner;
+
+@end
+
+#endif // JSC_OBJC_API_ENABLED
+
+#endif // JSManagedValueInternal_h
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSVirtualMachinemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSVirtualMachine.mm (163573 => 163574)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSVirtualMachine.mm        2014-02-07 00:29:03 UTC (rev 163573)
+++ trunk/Source/JavaScriptCore/API/JSVirtualMachine.mm        2014-02-07 00:29:57 UTC (rev 163574)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;APICast.h&quot;
</span><span class="cx"> #import &quot;APIShims.h&quot;
</span><ins>+#import &quot;JSManagedValueInternal.h&quot;
</ins><span class="cx"> #import &quot;JSVirtualMachine.h&quot;
</span><span class="cx"> #import &quot;JSVirtualMachineInternal.h&quot;
</span><span class="cx"> #import &quot;JSWrapperMap.h&quot;
</span><span class="lines">@@ -161,7 +162,12 @@
</span><span class="cx">         [m_externalObjectGraph setObject:ownedObjects forKey:owner];
</span><span class="cx">         [ownedObjects release];
</span><span class="cx">     }
</span><del>-    NSMapInsert(ownedObjects, object, reinterpret_cast&lt;void*&gt;(reinterpret_cast&lt;size_t&gt;(NSMapGet(ownedObjects, object)) + 1));
</del><ins>+
+    if ([object isKindOfClass:[JSManagedValue class]])
+        [object didAddOwner:owner];
+        
+    size_t count = reinterpret_cast&lt;size_t&gt;(NSMapGet(ownedObjects, object));
+    NSMapInsert(ownedObjects, object, reinterpret_cast&lt;void*&gt;(count + 1));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)removeManagedReference:(id)object withOwner:(id)owner
</span><span class="lines">@@ -187,6 +193,9 @@
</span><span class="cx">     if (count == 1)
</span><span class="cx">         NSMapRemove(ownedObjects, object);
</span><span class="cx"> 
</span><ins>+    if ([object isKindOfClass:[JSManagedValue class]])
+        [object didRemoveOwner:owner];
+
</ins><span class="cx">     if (![ownedObjects count])
</span><span class="cx">         [m_externalObjectGraph removeObjectForKey:owner];
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIWebKitAvailabilityh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/WebKitAvailability.h (163573 => 163574)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/WebKitAvailability.h        2014-02-07 00:29:03 UTC (rev 163573)
+++ trunk/Source/JavaScriptCore/API/WebKitAvailability.h        2014-02-07 00:29:57 UTC (rev 163574)
</span><span class="lines">@@ -27,10 +27,30 @@
</span><span class="cx"> #define __WebKitAvailability__
</span><span class="cx"> 
</span><span class="cx"> #ifdef __APPLE__
</span><ins>+
</ins><span class="cx"> #include &lt;AvailabilityMacros.h&gt;
</span><span class="cx"> #include &lt;CoreFoundation/CoreFoundation.h&gt;
</span><del>-#else
</del><ins>+
+#if !defined(NS_AVAILABLE)
+#define NS_AVAILABLE(_mac, _ios)
+#endif // !defined(NS_AVAILABLE)
+#if !defined(CF_AVAILABLE)
</ins><span class="cx"> #define CF_AVAILABLE(_mac, _ios)
</span><ins>+#endif // !defined(CF_AVAILABLE)
+
+#else // __APPLE__
+
+#define CF_AVAILABLE(_mac, _ios)
+#define NS_AVAILABLE(_mac, _ios)
+
+#endif // __APPLE__
+
+#if !defined(__NSi_10_10)
+#define __NSi_10_10 introduced=10.10
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if !defined(__NSi_8_0)
+#define __NSi_8_0 introduced=8.0
+#endif
+
</ins><span class="cx"> #endif /* __WebKitAvailability__ */
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIteststestapimm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/tests/testapi.mm (163573 => 163574)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/tests/testapi.mm        2014-02-07 00:29:03 UTC (rev 163573)
+++ trunk/Source/JavaScriptCore/API/tests/testapi.mm        2014-02-07 00:29:57 UTC (rev 163574)
</span><span class="lines">@@ -172,13 +172,6 @@
</span><span class="cx">     JSValue *function = [m_onclickHandler value];
</span><span class="cx">     [function callWithArguments:[NSArray array]];
</span><span class="cx"> }
</span><del>-- (void)dealloc
-{
-    [[m_onclickHandler value].context.virtualMachine removeManagedReference:m_onclickHandler withOwner:self];
-#if !__has_feature(objc_arc)
-    [super dealloc];
-#endif
-}
</del><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @class TinyDOMNode;
</span><span class="lines">@@ -213,18 +206,6 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)dealloc
-{
-    for (TinyDOMNode *child in m_children)
-        [m_sharedVirtualMachine removeManagedReference:child withOwner:self];
-
-#if !__has_feature(objc_arc)
-    [m_children release];
-    [m_sharedVirtualMachine release];
-    [super dealloc];
-#endif
-}
-
</del><span class="cx"> - (void)appendChild:(TinyDOMNode *)child
</span><span class="cx"> {
</span><span class="cx">     [m_sharedVirtualMachine addManagedReference:child withOwner:self];
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (163573 => 163574)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-02-07 00:29:03 UTC (rev 163573)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-02-07 00:29:57 UTC (rev 163574)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2014-02-06  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        JSManagedValue should automatically call removeManagedReference:withOwner: upon dealloc
+        https://bugs.webkit.org/show_bug.cgi?id=124053
+
+        Reviewed by Geoffrey Garen.
+
+        * API/JSManagedValue.h:
+        * API/JSManagedValue.mm:
+        (+[JSManagedValue managedValueWithValue:andOwner:]):
+        (-[JSManagedValue initWithValue:]):
+        (-[JSManagedValue dealloc]):
+        (-[JSManagedValue didAddOwner:]):
+        (-[JSManagedValue didRemoveOwner:]):
+        * API/JSManagedValueInternal.h: Added.
+        * API/JSVirtualMachine.mm:
+        (-[JSVirtualMachine addManagedReference:withOwner:]):
+        (-[JSVirtualMachine removeManagedReference:withOwner:]):
+        * API/WebKitAvailability.h:
+        * API/tests/testapi.mm:
+        (-[TextXYZ click]):
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+
</ins><span class="cx"> 2014-02-06  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Add Console support to JSContext Inspection
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (163573 => 163574)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-02-07 00:29:03 UTC (rev 163573)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-02-07 00:29:57 UTC (rev 163574)
</span><span class="lines">@@ -743,6 +743,7 @@
</span><span class="cx">                 2A343F7618A1748B0039B085 /* GCSegmentedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A343F7418A1748B0039B085 /* GCSegmentedArray.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2A343F7818A1749D0039B085 /* GCSegmentedArrayInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A343F7718A1749D0039B085 /* GCSegmentedArrayInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2A48D1911772365B00C65A5F /* APICallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = C211B574176A224D000E2A23 /* APICallbackFunction.h */; };
</span><ins>+                2A4BB7F318A41179008A0FCD /* JSManagedValueInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A4BB7F218A41179008A0FCD /* JSManagedValueInternal.h */; };
</ins><span class="cx">                 2A4EC90B1860D6C20094F782 /* WriteBarrierBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A4EC9091860D6C20094F782 /* WriteBarrierBuffer.cpp */; };
</span><span class="cx">                 2A4EC90C1860D6C20094F782 /* WriteBarrierBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A4EC90A1860D6C20094F782 /* WriteBarrierBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2A68295B1875F80500B6C3E2 /* CopyWriteBarrier.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A68295A1875F80500B6C3E2 /* CopyWriteBarrier.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -2147,6 +2148,7 @@
</span><span class="cx">                 2A2825CF18341F2D0087FBA9 /* DelayedReleaseScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DelayedReleaseScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2A343F7418A1748B0039B085 /* GCSegmentedArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCSegmentedArray.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2A343F7718A1749D0039B085 /* GCSegmentedArrayInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCSegmentedArrayInlines.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                2A4BB7F218A41179008A0FCD /* JSManagedValueInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSManagedValueInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 2A4EC9091860D6C20094F782 /* WriteBarrierBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WriteBarrierBuffer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2A4EC90A1860D6C20094F782 /* WriteBarrierBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WriteBarrierBuffer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 2A68295A1875F80500B6C3E2 /* CopyWriteBarrier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopyWriteBarrier.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3438,6 +3440,7 @@
</span><span class="cx">                 1432EBD70A34CAD400717B9F /* API */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                2A4BB7F218A41179008A0FCD /* JSManagedValueInternal.h */,
</ins><span class="cx">                                 C211B574176A224D000E2A23 /* APICallbackFunction.h */,
</span><span class="cx">                                 1482B78A0A4305AB00517CFC /* APICast.h */,
</span><span class="cx">                                 865F408710E7D56300947361 /* APIShims.h */,
</span><span class="lines">@@ -4811,6 +4814,7 @@
</span><span class="cx">                                 A7D9A29517A0BC7400EE2618 /* DFGAtTailAbstractState.h in Headers */,
</span><span class="cx">                                 0F714CA516EA92F200F3EBEB /* DFGBackwardsPropagationPhase.h in Headers */,
</span><span class="cx">                                 0F620176143FCD3B0068B77C /* DFGBasicBlock.h in Headers */,
</span><ins>+                                2A4BB7F318A41179008A0FCD /* JSManagedValueInternal.h in Headers */,
</ins><span class="cx">                                 0FFB921A16D02EC50055A5DB /* DFGBasicBlockInlines.h in Headers */,
</span><span class="cx">                                 A70B083317A0B79B00DAF14B /* DFGBinarySwitch.h in Headers */,
</span><span class="cx">                                 A7D89CF417A0B8CC00773AD8 /* DFGBlockInsertionSet.h in Headers */,
</span></span></pre>
</div>
</div>

</body>
</html>