<!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>[169628] branches/ftlopt/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/169628">169628</a></dd>
<dt>Author</dt> <dd>fpizlo@apple.com</dd>
<dt>Date</dt> <dd>2014-06-05 15:54:49 -0700 (Thu, 05 Jun 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Added system for inlining native functions via the FTL.
https://bugs.webkit.org/show_bug.cgi?id=131515

Patch by Matthew Mirman &lt;mmirman@apple.com&gt; on 2014-06-04
Reviewed by Filip Pizlo.

Also fixed the build to not compress the bitcode and to 
include all of the relevant runtime. With GCC_GENERATE_DEBUGGING_SYMBOLS = NO, 
the produced bitcode files are a 100th the size they were before.  
Now we can include all of the relevant runtime files with only a 3mb overhead. 
This is the same overhead as for two compressed files before, 
but done more efficiently (on both ends) and with less code.
        
Deciding whether to inline native functions is left up to LLVM. 
The entire module containing the function is linked into the current 
compiled JS so that inlining the native functions shouldn't make them smaller.
        
Rather than loading Runtime.symtbl at runtime FTLState.cpp now generates a file 
InlineRuntimeSymbolTable.h which statically builds the symbol table hash table.  
        
* JavaScriptCore.xcodeproj/project.pbxproj: Added back runtime files to compile.
* build-symbol-table-index.py: Changed bitcode suffix. 
Added inclusion of only tested symbols.  
Added output to InlineRuntimeSymbolTable.h. 
* build-symbol-table-index.sh: Changed bitcode suffix.
* copy-llvm-ir-to-derived-sources.sh: Removed gzip compression.
* tested-symbols.symlst: Added.
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleCall):  
Now sets the knownFunction of the call node if such a function exists 
and emits a check that during runtime the callee is in fact known.
* dfg/DFGNode.h:
Added functions to set the known function of a call node.
(JSC::DFG::Node::canBeKnownFunction): Added.
(JSC::DFG::Node::hasKnownFunction): Added.
(JSC::DFG::Node::knownFunction): Added.
(JSC::DFG::Node::giveKnownFunction): Added.
* ftl/FTLAbbreviatedTypes.h: Added a typedef for LLVMMemoryBufferRef
* ftl/FTLAbbreviations.h: Added some abbreviations.
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::isInlinableSize): Added. Hardcoded threshold to 275.
(JSC::FTL::LowerDFGToLLVM::getModuleByPathForSymbol): Added.
(JSC::FTL::LowerDFGToLLVM::getFunctionBySymbol): Added.
(JSC::FTL::LowerDFGToLLVM::possiblyCompileInlineableNativeCall): Added.
(JSC::FTL::LowerDFGToLLVM::compileCallOrConstruct):  
Added call to possiblyCompileInlineableNativeCall
* ftl/FTLOutput.h:
(JSC::FTL::Output::allocaName):  Added. Useful for debugging.
* ftl/FTLState.cpp:
(JSC::FTL::State::State): Added an include for InlineRuntimeSymbolTable.h
* ftl/FTLState.h: Added symbol table hash table.
* ftl/FTLCompile.cpp:
(JSC::FTL::compile): Added inlining and dead function elimination passes.
* heap/HandleStack.h: Added JS_EXPORT_PRIVATE to a few functions to get inlining to compile.
* llvm/InitializeLLVMMac.mm: Deleted.
* llvm/InitializeLLVMMac.cpp: Added.
* llvm/LLVMAPIFunctions.h: Added macros to include Bitcode parsing and linking functions.
* llvm/LLVMHeaders.h: Added includes for Bitcode parsing and linking.
* runtime/BundlePath.h: Added.
* runtime/BundlePath.mm: Added.
* runtime/DateInstance.h: Added JS_EXPORT_PRIVATE to a few functions to get inlining to compile.
* runtime/DateInstance.h: ditto.
* runtime/DateConversion.h: ditto.
* runtime/ExceptionHelpers.h: ditto.
* runtime/JSCJSValue.h: ditto.
* runtime/JSArray.h: ditto.
* runtime/JSDateMath.h: ditto.
* runtime/JSObject.h: ditto.
* runtime/JSObject.h: ditto.
* runtime/RegExp.h: ditto.
* runtime/Structure.h: ditto.
* runtime/Options.h:  Added maximumLLVMInstructionCountForNativeInlining.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchesftloptSourceJavaScriptCoreChangeLog">branches/ftlopt/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebuildsymboltableindexpy">branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.py</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebuildsymboltableindexsh">branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.sh</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorecopyllvmirtoderivedsourcessh">branches/ftlopt/Source/JavaScriptCore/copy-llvm-ir-to-derived-sources.sh</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoredfgDFGByteCodeParsercpp">branches/ftlopt/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoredfgDFGNodeh">branches/ftlopt/Source/JavaScriptCore/dfg/DFGNode.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreftlFTLAbbreviatedTypesh">branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreftlFTLAbbreviationsh">branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviations.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreftlFTLCompilecpp">branches/ftlopt/Source/JavaScriptCore/ftl/FTLCompile.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreftlFTLLowerDFGToLLVMcpp">branches/ftlopt/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreftlFTLStatecpp">branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreftlFTLStateh">branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreheapHandleStackh">branches/ftlopt/Source/JavaScriptCore/heap/HandleStack.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellvmInitializeLLVMh">branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVM.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellvmLLVMAPIFunctionsh">branches/ftlopt/Source/JavaScriptCore/llvm/LLVMAPIFunctions.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellvmLLVMHeadersh">branches/ftlopt/Source/JavaScriptCore/llvm/LLVMHeaders.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeDateConversionh">branches/ftlopt/Source/JavaScriptCore/runtime/DateConversion.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeDateInstanceh">branches/ftlopt/Source/JavaScriptCore/runtime/DateInstance.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeExceptionHelpersh">branches/ftlopt/Source/JavaScriptCore/runtime/ExceptionHelpers.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeJSArrayh">branches/ftlopt/Source/JavaScriptCore/runtime/JSArray.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeJSCJSValueh">branches/ftlopt/Source/JavaScriptCore/runtime/JSCJSValue.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeJSDateMathh">branches/ftlopt/Source/JavaScriptCore/runtime/JSDateMath.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeJSObjecth">branches/ftlopt/Source/JavaScriptCore/runtime/JSObject.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeJSWrapperObjecth">branches/ftlopt/Source/JavaScriptCore/runtime/JSWrapperObject.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeOptionsh">branches/ftlopt/Source/JavaScriptCore/runtime/Options.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeRegExph">branches/ftlopt/Source/JavaScriptCore/runtime/RegExp.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeStringObjecth">branches/ftlopt/Source/JavaScriptCore/runtime/StringObject.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeStructureh">branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#branchesftloptSourceJavaScriptCorellvmInitializeLLVMMaccpp">branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVMMac.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeBundlePathh">branches/ftlopt/Source/JavaScriptCore/runtime/BundlePath.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeBundlePathmm">branches/ftlopt/Source/JavaScriptCore/runtime/BundlePath.mm</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoretestedsymbolssymlst">branches/ftlopt/Source/JavaScriptCore/tested-symbols.symlst</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#branchesftloptSourceJavaScriptCorellvmInitializeLLVMMacmm">branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVMMac.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchesftloptSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/ChangeLog (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/ChangeLog        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/ChangeLog        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -1,3 +1,77 @@
</span><ins>+2014-06-04  Matthew Mirman  &lt;mmirman@apple.com&gt;
+
+        Added system for inlining native functions via the FTL.
+        https://bugs.webkit.org/show_bug.cgi?id=131515
+
+        Reviewed by Filip Pizlo.
+
+        Also fixed the build to not compress the bitcode and to 
+        include all of the relevant runtime. With GCC_GENERATE_DEBUGGING_SYMBOLS = NO, 
+        the produced bitcode files are a 100th the size they were before.  
+        Now we can include all of the relevant runtime files with only a 3mb overhead. 
+        This is the same overhead as for two compressed files before, 
+        but done more efficiently (on both ends) and with less code.
+        
+        Deciding whether to inline native functions is left up to LLVM. 
+        The entire module containing the function is linked into the current 
+        compiled JS so that inlining the native functions shouldn't make them smaller.
+        
+        Rather than loading Runtime.symtbl at runtime FTLState.cpp now generates a file 
+        InlineRuntimeSymbolTable.h which statically builds the symbol table hash table.  
+        
+        * JavaScriptCore.xcodeproj/project.pbxproj: Added back runtime files to compile.
+        * build-symbol-table-index.py: Changed bitcode suffix. 
+        Added inclusion of only tested symbols.  
+        Added output to InlineRuntimeSymbolTable.h. 
+        * build-symbol-table-index.sh: Changed bitcode suffix.
+        * copy-llvm-ir-to-derived-sources.sh: Removed gzip compression.
+        * tested-symbols.symlst: Added.
+        * dfg/DFGByteCodeParser.cpp:
+        (JSC::DFG::ByteCodeParser::handleCall):  
+        Now sets the knownFunction of the call node if such a function exists 
+        and emits a check that during runtime the callee is in fact known.
+        * dfg/DFGNode.h:
+        Added functions to set the known function of a call node.
+        (JSC::DFG::Node::canBeKnownFunction): Added.
+        (JSC::DFG::Node::hasKnownFunction): Added.
+        (JSC::DFG::Node::knownFunction): Added.
+        (JSC::DFG::Node::giveKnownFunction): Added.
+        * ftl/FTLAbbreviatedTypes.h: Added a typedef for LLVMMemoryBufferRef
+        * ftl/FTLAbbreviations.h: Added some abbreviations.
+        * ftl/FTLLowerDFGToLLVM.cpp:
+        (JSC::FTL::LowerDFGToLLVM::isInlinableSize): Added. Hardcoded threshold to 275.
+        (JSC::FTL::LowerDFGToLLVM::getModuleByPathForSymbol): Added.
+        (JSC::FTL::LowerDFGToLLVM::getFunctionBySymbol): Added.
+        (JSC::FTL::LowerDFGToLLVM::possiblyCompileInlineableNativeCall): Added.
+        (JSC::FTL::LowerDFGToLLVM::compileCallOrConstruct):  
+        Added call to possiblyCompileInlineableNativeCall
+        * ftl/FTLOutput.h:
+        (JSC::FTL::Output::allocaName):  Added. Useful for debugging.
+        * ftl/FTLState.cpp:
+        (JSC::FTL::State::State): Added an include for InlineRuntimeSymbolTable.h
+        * ftl/FTLState.h: Added symbol table hash table.
+        * ftl/FTLCompile.cpp:
+        (JSC::FTL::compile): Added inlining and dead function elimination passes.
+        * heap/HandleStack.h: Added JS_EXPORT_PRIVATE to a few functions to get inlining to compile.
+        * llvm/InitializeLLVMMac.mm: Deleted.
+        * llvm/InitializeLLVMMac.cpp: Added.
+        * llvm/LLVMAPIFunctions.h: Added macros to include Bitcode parsing and linking functions.
+        * llvm/LLVMHeaders.h: Added includes for Bitcode parsing and linking.
+        * runtime/BundlePath.h: Added.
+        * runtime/BundlePath.mm: Added.
+        * runtime/DateInstance.h: Added JS_EXPORT_PRIVATE to a few functions to get inlining to compile.
+        * runtime/DateInstance.h: ditto.
+        * runtime/DateConversion.h: ditto.
+        * runtime/ExceptionHelpers.h: ditto.
+        * runtime/JSCJSValue.h: ditto.
+        * runtime/JSArray.h: ditto.
+        * runtime/JSDateMath.h: ditto.
+        * runtime/JSObject.h: ditto.
+        * runtime/JSObject.h: ditto.
+        * runtime/RegExp.h: ditto.
+        * runtime/Structure.h: ditto.
+        * runtime/Options.h:  Added maximumLLVMInstructionCountForNativeInlining.
+
</ins><span class="cx"> 2014-06-04  Filip Pizlo  &lt;fpizlo@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [ftlopt] Unreviewed, fix 32-bit.
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -479,11 +479,9 @@
</span><span class="cx">                 0FCEFAAB1804C13E00472CE4 /* FTLSaveRestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */; };
</span><span class="cx">                 0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */; };
</del><span class="cx">                 0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */; };
</span><span class="cx">                 0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */; };
</span><span class="cx">                 0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */; };
</span><del>-                0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; };
</del><span class="cx">                 0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */; };
</span><span class="cx">                 0FCEFACE1805E75500472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -830,6 +828,7 @@
</span><span class="cx">                 4443AE3316E188D90076F110 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */; };
</span><span class="cx">                 451539B912DC994500EF7AC4 /* Yarr.h in Headers */ = {isa = PBXBuildFile; fileRef = 451539B812DC994500EF7AC4 /* Yarr.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 5510502618EB827500001F3E /* JSCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F88F0A508B100005F061 /* JSCallbackFunction.h */; };
</span><ins>+                552EA70C1908704800A66F2F /* JSDataViewPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66BF17B6B5AB00A7AE3F /* JSDataViewPrototype.cpp */; };
</ins><span class="cx">                 5540757218DA58AD00EFF7F2 /* ArgList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF605120E203EF800B9A64D /* ArgList.h */; };
</span><span class="cx">                 5540757318DA58AD00EFF7F2 /* Arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = BC257DE60E1F51C50016B6C9 /* Arguments.h */; };
</span><span class="cx">                 5540757418DA58AD00EFF7F2 /* ArgumentsIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A76140C8182982CB00750624 /* ArgumentsIteratorConstructor.h */; };
</span><span class="lines">@@ -1063,6 +1062,46 @@
</span><span class="cx">                 554078AF18DA58AD00EFF7F2 /* ArrayPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A84D0255597D01FF60F7 /* ArrayPrototype.cpp */; };
</span><span class="cx">                 55407A3818DA58AD00EFF7F2 /* NumberConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C20E16D4E900A06E92 /* NumberConstructor.cpp */; };
</span><span class="cx">                 55407A3A18DA58AD00EFF7F2 /* NumberPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C40E16D4E900A06E92 /* NumberPrototype.cpp */; };
</span><ins>+                556A35C8190842BC00B56747 /* SetConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299DA317D12858005F5FF9 /* SetConstructor.cpp */; };
+                556A35C9190842D500B56747 /* NativeErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */; };
+                556A35CA190842DD00B56747 /* Arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC257DE50E1F51C50016B6C9 /* Arguments.cpp */; };
+                556A35CB190842E800B56747 /* ArgumentsIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A76140C9182982CB00750624 /* ArgumentsIteratorPrototype.cpp */; };
+                556A35CC190842F300B56747 /* ArrayIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC217F4EA1400F6140C /* ArrayIteratorPrototype.cpp */; };
+                556A35CD190842FD00B56747 /* BooleanConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952320E15EB5600A898AB /* BooleanConstructor.cpp */; };
+                556A35CE1908430B00B56747 /* BooleanPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952340E15EB5600A898AB /* BooleanPrototype.cpp */; };
+                556A35CF1908431600B56747 /* DateConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203450E17135E002C7E82 /* DateConstructor.cpp */; };
+                556A35D01908432000B56747 /* DatePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203470E17135E002C7E82 /* DatePrototype.cpp */; };
+                556A35D11908432900B56747 /* ErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */; };
+                556A35D21908433300B56747 /* ErrorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */; };
+                556A35D31908434300B56747 /* FunctionConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */; };
+                556A35D41908434D00B56747 /* FunctionPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */; };
+                556A35D51908436800B56747 /* JSArrayBufferConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B617B6B5AB00A7AE3F /* JSArrayBufferConstructor.cpp */; };
+                556A35D61908437500B56747 /* JSArrayBufferPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B817B6B5AB00A7AE3F /* JSArrayBufferPrototype.cpp */; };
+                556A35D71908438A00B56747 /* JSArrayIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC417F4EA1400F6140C /* JSArrayIterator.cpp */; };
+                556A35D81908439D00B56747 /* JSBoundFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */; };
+                556A35D9190843B100B56747 /* JSFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85E0255597D01FF60F7 /* JSFunction.cpp */; };
+                556A35DA190843C200B56747 /* JSGlobalObjectFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */; };
+                556A35DB190843CF00B56747 /* JSONObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */; };
+                556A35DC190843E700B56747 /* JSPromiseConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E2017BEE240007CB63A /* JSPromiseConstructor.cpp */; };
+                556A35DD190843E700B56747 /* JSPromiseFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */; };
+                556A35DE190843E700B56747 /* JSPromisePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E1C17BEE22E007CB63A /* JSPromisePrototype.cpp */; };
+                556A35DF190843F300B56747 /* ConsolePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A53CE08118BC1A5600BEDF76 /* ConsolePrototype.cpp */; };
+                556A35E01908441D00B56747 /* MapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873717CBE85300C3E643 /* MapConstructor.cpp */; };
+                556A35E11908441D00B56747 /* MapIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A74DEF8D182D991400522C22 /* MapIteratorPrototype.cpp */; };
+                556A35E21908441D00B56747 /* MapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873B17CBE8D300C3E643 /* MapPrototype.cpp */; };
+                556A35E31908442A00B56747 /* MathObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A86A0255597D01FF60F7 /* MathObject.cpp */; };
+                556A35E41908443700B56747 /* NameConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2F91560F036008E9222 /* NameConstructor.cpp */; };
+                556A35E51908443700B56747 /* NamePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2FD1560F036008E9222 /* NamePrototype.cpp */; };
+                556A35E61908444900B56747 /* ObjectConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C60E16D4E900A06E92 /* ObjectConstructor.cpp */; };
+                556A35E71908444900B56747 /* ObjectPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C80E16D4E900A06E92 /* ObjectPrototype.cpp */; };
+                556A35E81908448000B56747 /* RegExpConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BD0E1706A7002C7E82 /* RegExpConstructor.cpp */; };
+                556A35E91908448000B56747 /* RegExpPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BF0E1706A7002C7E82 /* RegExpPrototype.cpp */; };
+                556A35EA190844A000B56747 /* SetIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A790DD67182F499700588807 /* SetIteratorPrototype.cpp */; };
+                556A35EB190844A000B56747 /* SetPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299D9F17D12848005F5FF9 /* SetPrototype.cpp */; };
+                556A35EC190844AA00B56747 /* StringConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C00E16EE3300B34460 /* StringConstructor.cpp */; };
+                556A35ED190844B500B56747 /* WeakMapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADD17DA41AE006538AF /* WeakMapConstructor.cpp */; };
+                556A35EE190844C000B56747 /* WeakMapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADF17DA41AE006538AF /* WeakMapPrototype.cpp */; };
+                55A04E211908653D0024E40C /* StringPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */; };
</ins><span class="cx">                 5D53726F0E1C54880021E549 /* Tracing.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53726E0E1C54880021E549 /* Tracing.h */; };
</span><span class="cx">                 5D5D8AD10E0D0EBE00F9C692 /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5D8AD00E0D0EBE00F9C692 /* libedit.dylib */; };
</span><span class="cx">                 5DBB151B131D0B310056AD36 /* testapi.js in Copy Support Script */ = {isa = PBXBuildFile; fileRef = 14D857740A4696C80032146C /* testapi.js */; };
</span><span class="lines">@@ -1236,6 +1275,286 @@
</span><span class="cx">                 99E45A2618A1B2590026D88F /* EncodedValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A2118A1B2590026D88F /* EncodedValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 99E45A2718A1B2590026D88F /* InputCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A2218A1B2590026D88F /* InputCursor.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 99E45A2818A1B2590026D88F /* NondeterministicInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A2318A1B2590026D88F /* NondeterministicInput.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */; };
+                9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; };
+                9E72940B190F0514001A91B5 /* BundlePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E72940A190F0514001A91B5 /* BundlePath.h */; };
+                9E8791E0193FB6800076CA78 /* Arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = BC257DE60E1F51C50016B6C9 /* Arguments.h */; };
+                9E8791E1193FB6800076CA78 /* ArgumentsIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A76140C8182982CB00750624 /* ArgumentsIteratorConstructor.h */; };
+                9E8791E2193FB6800076CA78 /* ArgumentsIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A76140CA182982CB00750624 /* ArgumentsIteratorPrototype.h */; };
+                9E8791E3193FB6800076CA78 /* ArrayConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC7952070E15E8A800A898AB /* ArrayConstructor.h */; };
+                9E8791E4193FB6800076CA78 /* ArrayIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BDAEC117F4EA1400F6140C /* ArrayIteratorConstructor.h */; };
+                9E8791E5193FB6800076CA78 /* ArrayIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BDAEC317F4EA1400F6140C /* ArrayIteratorPrototype.h */; };
+                9E8791E6193FB6800076CA78 /* BatchedTransitionOptimizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */; };
+                9E8791E7193FB6800076CA78 /* BigInteger.h in Headers */ = {isa = PBXBuildFile; fileRef = 866739D013BFDE710023D87C /* BigInteger.h */; };
+                9E8791E8193FB6800076CA78 /* CommonSlowPathsExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6553A33017A1F1EE008CF6F3 /* CommonSlowPathsExceptions.h */; };
+                9E8791E9193FB6800076CA78 /* JSConsole.h in Headers */ = {isa = PBXBuildFile; fileRef = A53CE08418BC1A5600BEDF76 /* JSConsole.h */; };
+                9E8791EA193FB6800076CA78 /* DateConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD203460E17135E002C7E82 /* DateConstructor.h */; };
+                9E8791EB193FB6800076CA78 /* DateConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = D21202290AD4310C00ED79B6 /* DateConversion.h */; };
+                9E8791EC193FB6800076CA78 /* DatePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD203480E17135E002C7E82 /* DatePrototype.h */; };
+                9E8791ED193FB6800076CA78 /* ErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9050E1839DB000F9297 /* ErrorConstructor.h */; };
+                9E8791EE193FB6800076CA78 /* ConsolePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A53CE08218BC1A5600BEDF76 /* ConsolePrototype.h */; };
+                9E8791EF193FB6800076CA78 /* JSActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DA818E0D99FD2000B0A4FB /* JSActivation.h */; settings = {ATTRIBUTES = (); }; };
+                9E8791F0193FB6800076CA78 /* JSArgumentsIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A76140CC182982CB00750624 /* JSArgumentsIterator.h */; };
+                9E8791F1193FB6800076CA78 /* JSArrayIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BDAEC517F4EA1400F6140C /* JSArrayIterator.h */; };
+                9E8791F2193FB6800076CA78 /* (null) in Headers */ = {isa = PBXBuildFile; };
+                9E8791F3193FB6800076CA78 /* JSGlobalObjectDebuggable.h in Headers */ = {isa = PBXBuildFile; fileRef = A59455911824744700CC3843 /* JSGlobalObjectDebuggable.h */; };
+                9E8791F4193FB6800076CA78 /* JSGlobalObjectFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = BC756FC70E2031B200DE7D12 /* JSGlobalObjectFunctions.h */; };
+                9E8791F5193FB6800076CA78 /* JSMapIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A74DEF90182D991400522C22 /* JSMapIterator.h */; };
+                9E8791F6193FB6800076CA78 /* JSPromiseConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C184E2117BEE240007CB63A /* JSPromiseConstructor.h */; };
+                9E8791F7193FB6800076CA78 /* JSPromisePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C184E1D17BEE22E007CB63A /* JSPromisePrototype.h */; };
+                9E8791F8193FB6800076CA78 /* JSPromiseReaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CDD1871258D00955C24 /* JSPromiseReaction.h */; };
+                9E8791F9193FB6800076CA78 /* JSSetIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD6A182F499700588807 /* JSSetIterator.h */; };
+                9E8791FA193FB6800076CA78 /* JSStackInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */; };
+                9E8791FB193FB6800076CA78 /* JSStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 86E85538111B9968001AF51E /* JSStringBuilder.h */; };
+                9E8791FC193FB6800076CA78 /* JSStringJoiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 2600B5A5152BAAA70091EE5F /* JSStringJoiner.h */; };
+                9E8791FD193FB6800076CA78 /* JSWeakMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA3AE217DA41AE006538AF /* JSWeakMap.h */; };
+                9E8791FE193FB6800076CA78 /* LiteralParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E2EA690FB460CF00601F06 /* LiteralParser.h */; };
+                9E8791FF193FB6800076CA78 /* MapConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A700873817CBE85300C3E643 /* MapConstructor.h */; };
+                9E879200193FB6800076CA78 /* MapIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A74DEF8C182D991400522C22 /* MapIteratorConstructor.h */; };
+                9E879201193FB6800076CA78 /* MapIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A74DEF8E182D991400522C22 /* MapIteratorPrototype.h */; };
+                9E879202193FB6800076CA78 /* MapPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A700873C17CBE8D300C3E643 /* MapPrototype.h */; };
+                9E879203193FB6800076CA78 /* NameConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FA1560F036008E9222 /* NameConstructor.h */; };
+                9E879204193FB6800076CA78 /* NameInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FC1560F036008E9222 /* NameInstance.h */; };
+                9E879205193FB6800076CA78 /* NamePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EBF2FE1560F036008E9222 /* NamePrototype.h */; };
+                9E879206193FB6800076CA78 /* NativeErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9090E1839DB000F9297 /* NativeErrorConstructor.h */; };
+                9E879207193FB6800076CA78 /* NativeErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E90B0E1839DB000F9297 /* NativeErrorPrototype.h */; };
+                9E879208193FB6800076CA78 /* NumberConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C30E16D4E900A06E92 /* NumberConstructor.h */; };
+                9E879209193FB6800076CA78 /* StructureIDBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AAAA31018BD49D100394CC8 /* StructureIDBlob.h */; };
+                9E87920A193FB6800076CA78 /* ArrayBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2617ADB5F3005AB174 /* ArrayBuffer.h */; };
+                9E87920B193FB6800076CA78 /* ArrayBufferNeuteringWatchpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFC99D3184EE318009C10AB /* ArrayBufferNeuteringWatchpoint.h */; };
+                9E87920C193FB6800076CA78 /* ArrayBufferView.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2817ADB5F3005AB174 /* ArrayBufferView.h */; };
+                9E87920D193FB6800076CA78 /* ArrayConventions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38915ED8E3800F167B2 /* ArrayConventions.h */; };
+                9E87920E193FB6800076CA78 /* ArrayPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A84E0255597D01FF60F7 /* ArrayPrototype.h */; };
+                9E87920F193FB6800076CA78 /* StructureIDTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AF7382B18BBBF92008A5A37 /* StructureIDTable.h */; };
+                9E879210193FB6800076CA78 /* ArrayStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38A15ED8E3800F167B2 /* ArrayStorage.h */; };
+                9E879211193FB6800076CA78 /* BooleanObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 704FD35305697E6D003DBED9 /* BooleanObject.h */; };
+                9E879212193FB6800076CA78 /* Butterfly.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38B15ED8E3800F167B2 /* Butterfly.h */; };
+                9E879213193FB6800076CA78 /* ButterflyInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38C15ED8E3800F167B2 /* ButterflyInlines.h */; };
+                9E879214193FB6800076CA78 /* CallData.h in Headers */ = {isa = PBXBuildFile; fileRef = 145C507F0D9DF63B0088F6B9 /* CallData.h */; };
+                9E879215193FB6800076CA78 /* ClassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6AAAE40E1F426500AD87D8 /* ClassInfo.h */; };
+                9E879216193FB6800076CA78 /* CodeCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A77F1820164088B200640A47 /* CodeCache.h */; };
+                9E879217193FB6800076CA78 /* CodeSpecializationKind.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F21C27914BE727300ADC64B /* CodeSpecializationKind.h */; };
+                9E879218193FB6800076CA78 /* CommonIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 65EA73630BAE35D1001BB560 /* CommonIdentifiers.h */; };
+                9E879219193FB6800076CA78 /* CommonSlowPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F15F15D14B7A73A005DE37D /* CommonSlowPaths.h */; };
+                9E87921A193FB6800076CA78 /* CompilationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E5A3A61797432D00E893C0 /* CompilationResult.h */; };
+                9E87921B193FB6800076CA78 /* Completion.h in Headers */ = {isa = PBXBuildFile; fileRef = F5BB2BC5030F772101FCFE1D /* Completion.h */; };
+                9E87921C193FB6800076CA78 /* ConcurrentJITLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDB2CE9174896C7007B3C1B /* ConcurrentJITLock.h */; };
+                9E87921D193FB6800076CA78 /* ConsoleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = A5FD0071189B038C00633231 /* ConsoleTypes.h */; };
+                9E87921E193FB6800076CA78 /* ConstantMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFC99D0184EC8AD009C10AB /* ConstantMode.h */; };
+                9E87921F193FB6800076CA78 /* ConstructData.h in Headers */ = {isa = PBXBuildFile; fileRef = BC8F3CCF0DAF17BA00577A80 /* ConstructData.h */; };
+                9E879220193FB6800076CA78 /* DataView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B117B6B5AB00A7AE3F /* DataView.h */; };
+                9E879221193FB6800076CA78 /* DateInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1166010E1997B1008066DD /* DateInstance.h */; };
+                9E879222193FB6800076CA78 /* DateInstanceCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A1563010966365006FA260 /* DateInstanceCache.h */; };
+                9E879223193FB6800076CA78 /* Debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8590255597D01FF60F7 /* Debugger.h */; };
+                9E879224193FB6800076CA78 /* DumpContext.h in Headers */ = {isa = PBXBuildFile; fileRef = A70447EC17A0BD7000F5898E /* DumpContext.h */; };
+                9E879225193FB6800076CA78 /* Error.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3046060E1F497F003232CF /* Error.h */; };
+                9E879226193FB6800076CA78 /* ErrorHandlingScope.h in Headers */ = {isa = PBXBuildFile; fileRef = FEB58C13187B8B160098EF0B /* ErrorHandlingScope.h */; };
+                9E879227193FB6800076CA78 /* ErrorInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E98B0E183E38000F9297 /* ErrorInstance.h */; };
+                9E879228193FB6800076CA78 /* ErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9070E1839DB000F9297 /* ErrorPrototype.h */; };
+                9E879229193FB6800076CA78 /* ExceptionHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = A72701B30DADE94900E548D7 /* ExceptionHelpers.h */; };
+                9E87922A193FB6800076CA78 /* Executable.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CAFEE21035DDE60028A609 /* Executable.h */; };
+                9E87922B193FB6800076CA78 /* Float32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2917ADB5F3005AB174 /* Float32Array.h */; };
+                9E87922C193FB6800076CA78 /* Float64Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2A17ADB5F3005AB174 /* Float64Array.h */; };
+                9E87922D193FB6800076CA78 /* ConsoleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A53CE08918BC21C300BEDF76 /* ConsoleClient.h */; };
+                9E87922E193FB6800076CA78 /* FunctionConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */; };
+                9E87922F193FB6800076CA78 /* FunctionExecutableDump.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */; };
+                9E879230193FB6800076CA78 /* FunctionPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A85D0255597D01FF60F7 /* FunctionPrototype.h */; };
+                9E879231193FB6800076CA78 /* GenericTypedArrayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B217B6B5AB00A7AE3F /* GenericTypedArrayView.h */; };
+                9E879232193FB6800076CA78 /* GenericTypedArrayViewInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B317B6B5AB00A7AE3F /* GenericTypedArrayViewInlines.h */; };
+                9E879233193FB6800076CA78 /* Identifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 933A349A038AE7C6008635CE /* Identifier.h */; };
+                9E879234193FB6800076CA78 /* IndexingHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38D15ED8E3800F167B2 /* IndexingHeader.h */; };
+                9E879235193FB6800076CA78 /* IndexingHeaderInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38E15ED8E3800F167B2 /* IndexingHeaderInlines.h */; };
+                9E879236193FB6800076CA78 /* IndexingType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F38F15ED8E3800F167B2 /* IndexingType.h */; };
+                9E879237193FB6800076CA78 /* InitializeThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = E178633F0D9BEC0000D74E75 /* InitializeThreading.h */; };
+                9E879238193FB6800076CA78 /* Int16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2C17ADB5F3005AB174 /* Int16Array.h */; };
+                9E879239193FB6800076CA78 /* Int32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2D17ADB5F3005AB174 /* Int32Array.h */; };
+                9E87923A193FB6800076CA78 /* Int8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF2B17ADB5F3005AB174 /* Int8Array.h */; };
+                9E87923B193FB6800076CA78 /* IntendedStructureChain.h in Headers */ = {isa = PBXBuildFile; fileRef = A78853F817972629001440E4 /* IntendedStructureChain.h */; };
+                9E87923C193FB6800076CA78 /* InternalFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = BC11667A0E199C05008066DD /* InternalFunction.h */; };
+                9E87923D193FB6800076CA78 /* Intrinsic.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BF642A148DB2B5004DE36A /* Intrinsic.h */; };
+                9E87923E193FB6800076CA78 /* JSAPIValueWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0894D60FAFBA2D00001865 /* JSAPIValueWrapper.h */; };
+                9E87923F193FB6800076CA78 /* JSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 938772E5038BFE19008635CE /* JSArray.h */; };
+                9E879240193FB6800076CA78 /* JSArrayBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B517B6B5AB00A7AE3F /* JSArrayBuffer.h */; };
+                9E879241193FB6800076CA78 /* JSArrayBufferConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B717B6B5AB00A7AE3F /* JSArrayBufferConstructor.h */; };
+                9E879242193FB6800076CA78 /* JSArrayBufferPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66B917B6B5AB00A7AE3F /* JSArrayBufferPrototype.h */; };
+                9E879243193FB6800076CA78 /* JSArrayBufferView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66BB17B6B5AB00A7AE3F /* JSArrayBufferView.h */; };
+                9E879244193FB6800076CA78 /* JSArrayBufferViewInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66BC17B6B5AB00A7AE3F /* JSArrayBufferViewInlines.h */; };
+                9E879245193FB6800076CA78 /* JSCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1167D80E19BCC9008066DD /* JSCell.h */; };
+                9E879246193FB6800076CA78 /* JSCellInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F97496F1687ADE200A4FF6A /* JSCellInlines.h */; };
+                9E879247193FB6800076CA78 /* JSCInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1DD84918A945BE0026F3FA /* JSCInlines.h */; };
+                9E879248193FB6800076CA78 /* JSCJSValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 14ABB36E099C076400E2A24F /* JSCJSValue.h */; };
+                9E879249193FB6800076CA78 /* JSCJSValueInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 865A30F0135007E100CDB49E /* JSCJSValueInlines.h */; };
+                9E87924A193FB6800076CA78 /* JSDataView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66BE17B6B5AB00A7AE3F /* JSDataView.h */; };
+                9E87924B193FB6800076CA78 /* JSDataViewPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C017B6B5AB00A7AE3F /* JSDataViewPrototype.h */; };
+                9E87924C193FB6800076CA78 /* JSDateMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9788FC231471AD0C0068CE2D /* JSDateMath.h */; };
+                9E87924D193FB6800076CA78 /* JSDestructibleObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C2A7F687160432D400F76B98 /* JSDestructibleObject.h */; };
+                9E87924E193FB6800076CA78 /* JSExportMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B4ACAE1484C9CE00B38A36 /* JSExportMacros.h */; };
+                9E87924F193FB6800076CA78 /* JSFloat32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C117B6B5AB00A7AE3F /* JSFloat32Array.h */; };
+                9E879250193FB6800076CA78 /* JSFloat64Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C217B6B5AB00A7AE3F /* JSFloat64Array.h */; };
+                9E879251193FB6800076CA78 /* JSFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A85F0255597D01FF60F7 /* JSFunction.h */; };
+                9E879252193FB6800076CA78 /* JSFunctionInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A72028B91797603D0098028C /* JSFunctionInlines.h */; };
+                9E879253193FB6800076CA78 /* JSGenericTypedArrayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C317B6B5AB00A7AE3F /* JSGenericTypedArrayView.h */; };
+                9E879254193FB6800076CA78 /* JSGenericTypedArrayViewConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C417B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructor.h */; };
+                9E879255193FB6800076CA78 /* JSGenericTypedArrayViewConstructorInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C517B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructorInlines.h */; };
+                9E879256193FB6800076CA78 /* JSGenericTypedArrayViewInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C617B6B5AB00A7AE3F /* JSGenericTypedArrayViewInlines.h */; };
+                9E879257193FB6800076CA78 /* JSGenericTypedArrayViewPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C717B6B5AB00A7AE3F /* JSGenericTypedArrayViewPrototype.h */; };
+                9E879258193FB6800076CA78 /* JSGenericTypedArrayViewPrototypeInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C817B6B5AB00A7AE3F /* JSGenericTypedArrayViewPrototypeInlines.h */; };
+                9E879259193FB6800076CA78 /* JSGlobalObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E894330CD0603F00367179 /* JSGlobalObject.h */; };
+                9E87925A193FB6800076CA78 /* JSInt16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66CA17B6B5AB00A7AE3F /* JSInt16Array.h */; };
+                9E87925B193FB6800076CA78 /* JSInt32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66CB17B6B5AB00A7AE3F /* JSInt32Array.h */; };
+                9E87925C193FB6800076CA78 /* JSInt8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66C917B6B5AB00A7AE3F /* JSInt8Array.h */; };
+                9E87925D193FB6800076CA78 /* JSLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 65EA4C9A092AF9E20093D800 /* JSLock.h */; };
+                9E87925E193FB6800076CA78 /* JSMap.h in Headers */ = {isa = PBXBuildFile; fileRef = A700874017CBE8EB00C3E643 /* JSMap.h */; };
+                9E87925F193FB6800076CA78 /* JSNameScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14874AE015EBDE4A002E3587 /* JSNameScope.h */; };
+                9E879260193FB6800076CA78 /* JSObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BC22A3990E16E14800AF21C8 /* JSObject.h */; };
+                9E879261193FB6800076CA78 /* JSONObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A7F9935D0FD7325100A0B2D0 /* JSONObject.h */; };
+                9E879262193FB6800076CA78 /* JSPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C184E1917BEDBD3007CB63A /* JSPromise.h */; };
+                9E879263193FB6800076CA78 /* JSPromiseDeferred.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CD9187124BB00955C24 /* JSPromiseDeferred.h */; };
+                9E879264193FB6800076CA78 /* JSPromiseFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CD1186F8A9300955C24 /* JSPromiseFunctions.h */; };
+                9E879265193FB6800076CA78 /* JSProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 862553CF16136AA5009F17D0 /* JSProxy.h */; };
+                9E879266193FB6800076CA78 /* JSScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14874AE215EBDE4A002E3587 /* JSScope.h */; };
+                9E879267193FB6800076CA78 /* JSSegmentedVariableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F919D0F157F3327004A4E7D /* JSSegmentedVariableObject.h */; };
+                9E879268193FB6800076CA78 /* JSSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A7299D9C17D12837005F5FF9 /* JSSet.h */; };
+                9E879269193FB6800076CA78 /* JSString.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8620255597D01FF60F7 /* JSString.h */; };
+                9E87926A193FB6800076CA78 /* JSSymbolTableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F919D0A157EE09D004A4E7D /* JSSymbolTableObject.h */; };
+                9E87926B193FB6800076CA78 /* JSType.h in Headers */ = {isa = PBXBuildFile; fileRef = 14ABB454099C2A0F00E2A24F /* JSType.h */; };
+                9E87926C193FB6800076CA78 /* JSTypedArrayConstructors.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66CD17B6B5AB00A7AE3F /* JSTypedArrayConstructors.h */; };
+                9E87926D193FB6800076CA78 /* JSTypedArrayPrototypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66CF17B6B5AB00A7AE3F /* JSTypedArrayPrototypes.h */; };
+                9E87926E193FB6800076CA78 /* JSTypedArrays.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D117B6B5AB00A7AE3F /* JSTypedArrays.h */; };
+                9E87926F193FB6800076CA78 /* JSTypeInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6507D2970E871E4A00D7D896 /* JSTypeInfo.h */; };
+                9E879270193FB6800076CA78 /* JSUint16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D417B6B5AB00A7AE3F /* JSUint16Array.h */; };
+                9E879271193FB6800076CA78 /* JSUint32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D517B6B5AB00A7AE3F /* JSUint32Array.h */; };
+                9E879272193FB6800076CA78 /* JSUint8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D217B6B5AB00A7AE3F /* JSUint8Array.h */; };
+                9E879273193FB6800076CA78 /* JSUint8ClampedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D317B6B5AB00A7AE3F /* JSUint8ClampedArray.h */; };
+                9E879274193FB6800076CA78 /* JSVariableObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 14F252560D08DD8D004ECFFF /* JSVariableObject.h */; };
+                9E879275193FB6800076CA78 /* JSWithScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 1442566015EDE98D0066A49B /* JSWithScope.h */; };
+                9E879276193FB6800076CA78 /* JSWrapperObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C7A1720A8EAACB00FA37EA /* JSWrapperObject.h */; };
+                9E879277193FB6800076CA78 /* Lookup.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8690255597D01FF60F7 /* Lookup.h */; };
+                9E879278193FB6800076CA78 /* MapData.h in Headers */ = {isa = PBXBuildFile; fileRef = A78507D517CBC6FD0011F6E7 /* MapData.h */; };
+                9E879279193FB6800076CA78 /* MatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8612E4CB1522918400C836BE /* MatchResult.h */; };
+                9E87927A193FB6800076CA78 /* MathObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A86B0255597D01FF60F7 /* MathObject.h */; };
+                9E87927B193FB6800076CA78 /* MemoryStatistics.h in Headers */ = {isa = PBXBuildFile; fileRef = 90213E3C123A40C200D422F3 /* MemoryStatistics.h */; };
+                9E87927C193FB6800076CA78 /* Microtask.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CE5187631B600955C24 /* Microtask.h */; };
+                9E87927D193FB6800076CA78 /* NumberObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8710255597D01FF60F7 /* NumberObject.h */; };
+                9E87927E193FB6800076CA78 /* NumberPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C50E16D4E900A06E92 /* NumberPrototype.h */; };
+                9E87927F193FB6800076CA78 /* NumericStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 142D3938103E4560007DCB52 /* NumericStrings.h */; };
+                9E879280193FB6800076CA78 /* ObjectConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C70E16D4E900A06E92 /* ObjectConstructor.h */; };
+                9E879281193FB6800076CA78 /* ObjectPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC2680C90E16D4E900A06E92 /* ObjectPrototype.h */; };
+                9E879282193FB6800076CA78 /* Operations.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A8780255597D01FF60F7 /* Operations.h */; };
+                9E879283193FB6800076CA78 /* Options.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE228EB1436AB2300196C48 /* Options.h */; };
+                9E879284193FB6800076CA78 /* PrivateName.h in Headers */ = {isa = PBXBuildFile; fileRef = 868916A9155F285400CB2B9A /* PrivateName.h */; };
+                9E879285193FB6800076CA78 /* PropertyDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */; };
+                9E879286193FB6800076CA78 /* PropertyMapHashTable.h in Headers */ = {isa = PBXBuildFile; fileRef = BC95437C0EBA70FD0072B6D3 /* PropertyMapHashTable.h */; };
+                9E879287193FB6800076CA78 /* PropertyName.h in Headers */ = {isa = PBXBuildFile; fileRef = 86158AB2155C8B3F00B45C9C /* PropertyName.h */; };
+                9E879288193FB6800076CA78 /* PropertyNameArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 65400C100A69BAF200509887 /* PropertyNameArray.h */; };
+                9E879289193FB6800076CA78 /* PropertyOffset.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF7168A15A3B231008F5DAA /* PropertyOffset.h */; };
+                9E87928A193FB6800076CA78 /* PropertySlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 65621E6C089E859700760F35 /* PropertySlot.h */; };
+                9E87928B193FB6800076CA78 /* PropertyStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39015ED8E3800F167B2 /* PropertyStorage.h */; };
+                9E87928C193FB6800076CA78 /* Protect.h in Headers */ = {isa = PBXBuildFile; fileRef = 65C02FBB0637462A003E7EE6 /* Protect.h */; };
+                9E87928D193FB6800076CA78 /* PrototypeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D844A316AA2C7000A65AF0 /* PrototypeMap.h */; };
+                9E87928E193FB6800076CA78 /* PutDirectIndexMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F0CD4C015F1A6040032F1C0 /* PutDirectIndexMode.h */; };
+                9E87928F193FB6800076CA78 /* PutPropertySlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 147B84620E6DE6B1004775A4 /* PutPropertySlot.h */; };
+                9E879290193FB6800076CA78 /* RegExp.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A87E0255597D01FF60F7 /* RegExp.h */; };
+                9E879291193FB6800076CA78 /* RegExpCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B3E11C7B228007A5315 /* RegExpCache.h */; };
+                9E879292193FB6800076CA78 /* RegExpKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B4011C7B235007A5315 /* RegExpKey.h */; };
+                9E879293193FB6800076CA78 /* RegExpObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F692A87C0255597D01FF60F7 /* RegExpObject.h */; };
+                9E879294193FB6800076CA78 /* RegisterPreservationMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CB81861244C00845D97 /* RegisterPreservationMode.h */; };
+                9E879295193FB6800076CA78 /* Reject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39115ED8E3800F167B2 /* Reject.h */; };
+                9E879296193FB6800076CA78 /* SamplingCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F77008E1402FDD60078EB39 /* SamplingCounter.h */; };
+                9E879297193FB6800076CA78 /* SimpleTypedArrayController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D717B6B5AB00A7AE3F /* SimpleTypedArrayController.h */; };
+                9E879298193FB6800076CA78 /* SmallStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 93303FEA0E6A72C000786E6A /* SmallStrings.h */; };
+                9E879299193FB6800076CA78 /* SparseArrayValueMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB7F39215ED8E3800F167B2 /* SparseArrayValueMap.h */; };
+                9E87929A193FB6800076CA78 /* StackAlignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F3AC751183EA1040032029F /* StackAlignment.h */; };
+                9E87929B193FB6800076CA78 /* StringObject.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C30E16EE3300B34460 /* StringObject.h */; };
+                9E87929C193FB6800076CA78 /* StringPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C60E16EE3300B34460 /* StringPrototype.h */; };
+                9E87929D193FB6800076CA78 /* Structure.h in Headers */ = {isa = PBXBuildFile; fileRef = BCDE3AB10E6C82CF001453A7 /* Structure.h */; };
+                9E87929E193FB6800076CA78 /* StructureChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E4EE7080EBB7963005934AA /* StructureChain.h */; };
+                9E87929F193FB6800076CA78 /* StructureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD2C92316D01EE900C7803F /* StructureInlines.h */; };
+                9E8792A0193FB6800076CA78 /* StructureRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = C2FE18A316BAEC4000AF3061 /* StructureRareData.h */; };
+                9E8792A1193FB6800076CA78 /* StructureRareDataInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C20BA92C16BB1C1500B3AEA2 /* StructureRareDataInlines.h */; };
+                9E8792A2193FB6800076CA78 /* StructureTransitionTable.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9041470EB9250900FE26FA /* StructureTransitionTable.h */; };
+                9E8792A3193FB6800076CA78 /* SymbolTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A396A60CD2933100B5B4FF /* SymbolTable.h */; };
+                9E8792A4193FB6800076CA78 /* TestRunnerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FA2C17A17D7CF84009D015F /* TestRunnerUtils.h */; };
+                9E8792A5193FB6800076CA78 /* ToNativeFromValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F55989717C86C5600A1E543 /* ToNativeFromValue.h */; };
+                9E8792A6193FB6800076CA78 /* TypedArrayAdaptors.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66D817B6B5AB00A7AE3F /* TypedArrayAdaptors.h */; };
+                9E8792A7193FB6800076CA78 /* TypedArrayController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66DA17B6B5AB00A7AE3F /* TypedArrayController.h */; };
+                9E8792A8193FB6800076CA78 /* TypedArrayInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F4B94DB17B9F07500DD03A4 /* TypedArrayInlines.h */; };
+                9E8792A9193FB6800076CA78 /* TypedArrays.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66DB17B6B5AB00A7AE3F /* TypedArrays.h */; };
+                9E8792AA193FB6800076CA78 /* TypedArrayType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66DD17B6B5AB00A7AE3F /* TypedArrayType.h */; };
+                9E8792AB193FB6800076CA78 /* Uint16Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF3217ADB5F3005AB174 /* Uint16Array.h */; };
+                9E8792AC193FB6800076CA78 /* Uint32Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF3317ADB5F3005AB174 /* Uint32Array.h */; };
+                9E8792AD193FB6800076CA78 /* Uint8Array.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF3017ADB5F3005AB174 /* Uint8Array.h */; };
+                9E8792AE193FB6800076CA78 /* Uint8ClampedArray.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A8AF3117ADB5F3005AB174 /* Uint8ClampedArray.h */; };
+                9E8792AF193FB6800076CA78 /* VM.h in Headers */ = {isa = PBXBuildFile; fileRef = E18E3A560DF9278C00D90B34 /* VM.h */; };
+                9E8792B0193FB6800076CA78 /* VMEntryScope.h in Headers */ = {isa = PBXBuildFile; fileRef = FE5932A6183C5A2600A1ECCC /* VMEntryScope.h */; };
+                9E8792B1193FB6800076CA78 /* Watchdog.h in Headers */ = {isa = PBXBuildFile; fileRef = FED94F2C171E3E2300BE77A4 /* Watchdog.h */; };
+                9E8792B2193FB6800076CA78 /* WeakGCMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14BFCE6810CDB1FC00364CCE /* WeakGCMap.h */; };
+                9E8792B3193FB6800076CA78 /* WeakRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 1420BE7A10AA6DDB00F455D2 /* WeakRandom.h */; };
+                9E8792B4193FB6800076CA78 /* WriteBarrier.h in Headers */ = {isa = PBXBuildFile; fileRef = A7DCB77912E3D90500911940 /* WriteBarrier.h */; };
+                9E8792B5193FB6800076CA78 /* WriteBarrierInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = C2B6D75218A33793004A9301 /* WriteBarrierInlines.h */; };
+                9E8792B6193FB6800076CA78 /* ArityCheckMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CB71861244C00845D97 /* ArityCheckMode.h */; };
+                9E8792B7193FB6800076CA78 /* ArgList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCF605120E203EF800B9A64D /* ArgList.h */; };
+                9E8792B8193FB6800076CA78 /* JSCallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F88F0A508B100005F061 /* JSCallbackFunction.h */; };
+                9E8792B9193FB6800076CA78 /* RegExpConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD202BE0E1706A7002C7E82 /* RegExpConstructor.h */; };
+                9E8792BA193FB6800076CA78 /* RegExpPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD202C00E1706A7002C7E82 /* RegExpPrototype.h */; };
+                9E8792BB193FB6800076CA78 /* SetConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7299DA417D12858005F5FF9 /* SetConstructor.h */; };
+                9E8792BC193FB6800076CA78 /* SetIteratorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD66182F499700588807 /* SetIteratorConstructor.h */; };
+                9E8792BD193FB6800076CA78 /* SetIteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A790DD68182F499700588807 /* SetIteratorPrototype.h */; };
+                9E8792BE193FB6800076CA78 /* SetPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A7299DA017D12848005F5FF9 /* SetPrototype.h */; };
+                9E8792BF193FB6800076CA78 /* StrictEvalActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = A730B6101250068F009D25B1 /* StrictEvalActivation.h */; };
+                9E8792C0193FB6800076CA78 /* StringConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C10E16EE3300B34460 /* StringConstructor.h */; };
+                9E8792C1193FB6800076CA78 /* Tracing.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D53726E0E1C54880021E549 /* Tracing.h */; };
+                9E8792C2193FB6800076CA78 /* Uint16WithFraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 866739D113BFDE710023D87C /* Uint16WithFraction.h */; };
+                9E8792C3193FB6800076CA78 /* WeakMapConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA3ADE17DA41AE006538AF /* WeakMapConstructor.h */; };
+                9E8792C4193FB6800076CA78 /* WeakMapData.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA3AEA17DA5168006538AF /* WeakMapData.h */; };
+                9E8792C5193FB6800076CA78 /* WeakMapPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = A7CA3AE017DA41AE006538AF /* WeakMapPrototype.h */; };
+                9E8792C7193FB6800076CA78 /* JSDataViewPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66BF17B6B5AB00A7AE3F /* JSDataViewPrototype.cpp */; };
+                9E8792C8193FB6800076CA78 /* StringPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */; };
+                9E8792C9193FB6800076CA78 /* WeakMapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADF17DA41AE006538AF /* WeakMapPrototype.cpp */; };
+                9E8792CA193FB6800076CA78 /* WeakMapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7CA3ADD17DA41AE006538AF /* WeakMapConstructor.cpp */; };
+                9E8792CB193FB6800076CA78 /* StringConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC18C3C00E16EE3300B34460 /* StringConstructor.cpp */; };
+                9E8792CC193FB6800076CA78 /* SetIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A790DD67182F499700588807 /* SetIteratorPrototype.cpp */; };
+                9E8792CD193FB6800076CA78 /* SetPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299D9F17D12848005F5FF9 /* SetPrototype.cpp */; };
+                9E8792CE193FB6800076CA78 /* RegExpConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BD0E1706A7002C7E82 /* RegExpConstructor.cpp */; };
+                9E8792CF193FB6800076CA78 /* RegExpPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD202BF0E1706A7002C7E82 /* RegExpPrototype.cpp */; };
+                9E8792D0193FB6800076CA78 /* ObjectConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C60E16D4E900A06E92 /* ObjectConstructor.cpp */; };
+                9E8792D1193FB6800076CA78 /* ObjectPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C80E16D4E900A06E92 /* ObjectPrototype.cpp */; };
+                9E8792D2193FB6800076CA78 /* NameConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2F91560F036008E9222 /* NameConstructor.cpp */; };
+                9E8792D3193FB6800076CA78 /* NamePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86EBF2FD1560F036008E9222 /* NamePrototype.cpp */; };
+                9E8792D4193FB6800076CA78 /* MathObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A86A0255597D01FF60F7 /* MathObject.cpp */; };
+                9E8792D5193FB6800076CA78 /* MapConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873717CBE85300C3E643 /* MapConstructor.cpp */; };
+                9E8792D6193FB6800076CA78 /* MapIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A74DEF8D182D991400522C22 /* MapIteratorPrototype.cpp */; };
+                9E8792D7193FB6800076CA78 /* MapPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A700873B17CBE8D300C3E643 /* MapPrototype.cpp */; };
+                9E8792D8193FB6800076CA78 /* ConsolePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A53CE08118BC1A5600BEDF76 /* ConsolePrototype.cpp */; };
+                9E8792D9193FB6800076CA78 /* JSPromiseConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E2017BEE240007CB63A /* JSPromiseConstructor.cpp */; };
+                9E8792DA193FB6800076CA78 /* JSPromiseFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */; };
+                9E8792DB193FB6800076CA78 /* JSPromisePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C184E1C17BEE22E007CB63A /* JSPromisePrototype.cpp */; };
+                9E8792DC193FB6800076CA78 /* JSONObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F9935E0FD7325100A0B2D0 /* JSONObject.cpp */; };
+                9E8792DD193FB6800076CA78 /* JSGlobalObjectFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC756FC60E2031B200DE7D12 /* JSGlobalObjectFunctions.cpp */; };
+                9E8792DE193FB6800076CA78 /* JSFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85E0255597D01FF60F7 /* JSFunction.cpp */; };
+                9E8792DF193FB6800076CA78 /* JSBoundFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FA9E8F142BBB2D001773B7 /* JSBoundFunction.cpp */; };
+                9E8792E0193FB6800076CA78 /* JSArrayIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC417F4EA1400F6140C /* JSArrayIterator.cpp */; };
+                9E8792E1193FB6800076CA78 /* JSArrayBufferPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B817B6B5AB00A7AE3F /* JSArrayBufferPrototype.cpp */; };
+                9E8792E2193FB6800076CA78 /* JSArrayBufferConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B66B617B6B5AB00A7AE3F /* JSArrayBufferConstructor.cpp */; };
+                9E8792E3193FB6800076CA78 /* FunctionPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */; };
+                9E8792E4193FB6800076CA78 /* FunctionConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */; };
+                9E8792E5193FB6800076CA78 /* ErrorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */; };
+                9E8792E6193FB6800076CA78 /* ErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9040E1839DB000F9297 /* ErrorConstructor.cpp */; };
+                9E8792E7193FB6800076CA78 /* DatePrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203470E17135E002C7E82 /* DatePrototype.cpp */; };
+                9E8792E8193FB6800076CA78 /* DateConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD203450E17135E002C7E82 /* DateConstructor.cpp */; };
+                9E8792E9193FB6800076CA78 /* BooleanPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952340E15EB5600A898AB /* BooleanPrototype.cpp */; };
+                9E8792EA193FB6800076CA78 /* BooleanConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952320E15EB5600A898AB /* BooleanConstructor.cpp */; };
+                9E8792EB193FB6800076CA78 /* ArrayIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAEC217F4EA1400F6140C /* ArrayIteratorPrototype.cpp */; };
+                9E8792EC193FB6800076CA78 /* ArgumentsIteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A76140C9182982CB00750624 /* ArgumentsIteratorPrototype.cpp */; };
+                9E8792ED193FB6800076CA78 /* Arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC257DE50E1F51C50016B6C9 /* Arguments.cpp */; };
+                9E8792EE193FB6800076CA78 /* NativeErrorConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */; };
+                9E8792EF193FB6800076CA78 /* SetConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299DA317D12858005F5FF9 /* SetConstructor.cpp */; };
+                9E8792F0193FB6800076CA78 /* ArrayConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7952060E15E8A800A898AB /* ArrayConstructor.cpp */; };
+                9E8792F1193FB6800076CA78 /* ArrayPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A84D0255597D01FF60F7 /* ArrayPrototype.cpp */; };
+                9E8792F2193FB6800076CA78 /* NumberConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C20E16D4E900A06E92 /* NumberConstructor.cpp */; };
+                9E8792F3193FB6800076CA78 /* NumberPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2680C40E16D4E900A06E92 /* NumberPrototype.cpp */; };
+                9EA5C7A1190F084200508EBE /* BundlePath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9E729409190F0306001A91B5 /* BundlePath.mm */; };
+                9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */; };
</ins><span class="cx">                 A1712B3B11C7B212007A5315 /* RegExpCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1712B3A11C7B212007A5315 /* RegExpCache.cpp */; };
</span><span class="cx">                 A1712B3F11C7B228007A5315 /* RegExpCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B3E11C7B228007A5315 /* RegExpCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A1712B4111C7B235007A5315 /* RegExpKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A1712B4011C7B235007A5315 /* RegExpKey.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -1708,7 +2027,6 @@
</span><span class="cx">                 C2FE18A416BAEC4000AF3061 /* StructureRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = C2FE18A316BAEC4000AF3061 /* StructureRareData.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E124A8F70E555775003091F1 /* OpaqueJSString.h in Headers */ = {isa = PBXBuildFile; fileRef = E124A8F50E555775003091F1 /* OpaqueJSString.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 E124A8F80E555775003091F1 /* OpaqueJSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E124A8F60E555775003091F1 /* OpaqueJSString.cpp */; };
</span><del>-                E178636D0D9BEEC300D74E75 /* InitializeThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */; };
</del><span class="cx">                 E18E3A590DF9278C00D90B34 /* VM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E18E3A570DF9278C00D90B34 /* VM.cpp */; };
</span><span class="cx">                 E49DC16B12EF293E00184A1F /* SourceProviderCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E49DC15512EF277200184A1F /* SourceProviderCache.cpp */; };
</span><span class="cx">                 E49DC16C12EF294E00184A1F /* SourceProviderCache.h in Headers */ = {isa = PBXBuildFile; fileRef = E49DC15112EF272200184A1F /* SourceProviderCache.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -1770,13 +2088,6 @@
</span><span class="cx">                         remoteGlobalIDString = 65FB3F6609D11E9100F49DEB;
</span><span class="cx">                         remoteInfo = &quot;Generate Derived Sources&quot;;
</span><span class="cx">                 };
</span><del>-                55F8FC2B18EB937B00783E6E /* PBXContainerItemProxy */ = {
-                        isa = PBXContainerItemProxy;
-                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
-                        proxyType = 1;
-                        remoteGlobalIDString = 5540756218DA58AD00EFF7F2;
-                        remoteInfo = CompileRuntimeToLLVMIR;
-                };
</del><span class="cx">                 5D69E911152BE5470028D720 /* PBXContainerItemProxy */ = {
</span><span class="cx">                         isa = PBXContainerItemProxy;
</span><span class="cx">                         containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
</span><span class="lines">@@ -1861,6 +2172,41 @@
</span><span class="cx">                         remoteGlobalIDString = 932F5B3E0822A1C700736975;
</span><span class="cx">                         remoteInfo = &quot;JavaScriptCore (Upgraded)&quot;;
</span><span class="cx">                 };
</span><ins>+                9E8791DA193FB6800076CA78 /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 0FCEFAB51805D61600472CE4;
+                        remoteInfo = llvmForJSC;
+                };
+                9E8791DC193FB6800076CA78 /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 65788A9D18B409EB00C189FF;
+                        remoteInfo = &quot;Offline Assembler&quot;;
+                };
+                9E8791DE193FB6800076CA78 /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 65FB3F6609D11E9100F49DEB;
+                        remoteInfo = &quot;Generate Derived Sources&quot;;
+                };
+                9E8792FB193FB69F0076CA78 /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 5540756218DA58AD00EFF7F2;
+                        remoteInfo = &quot;Compile Runtime to LLVM IR&quot;;
+                };
+                9E8792FD193FB6A60076CA78 /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 9E8791D8193FB6800076CA78;
+                        remoteInfo = &quot;Compile Runtime to Binary&quot;;
+                };
</ins><span class="cx"> /* End PBXContainerItemProxy section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXCopyFilesBuildPhase section */
</span><span class="lines">@@ -2304,7 +2650,6 @@
</span><span class="cx">                 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLSaveRestore.cpp; path = ftl/FTLSaveRestore.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSaveRestore.h; path = ftl/FTLSaveRestore.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVM.h; path = llvm/InitializeLLVM.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InitializeLLVMMac.mm; path = llvm/InitializeLLVMMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */ = {isa = PBXFileReference; explicitFileType = &quot;compiled.mach-o.dylib&quot;; includeInIndex = 0; path = libllvmForJSC.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
</span><span class="cx">                 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = LLVMForJSC.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMOverrides.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2843,6 +3188,10 @@
</span><span class="cx">                 99E45A2118A1B2590026D88F /* EncodedValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EncodedValue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 99E45A2218A1B2590026D88F /* InputCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InputCursor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 99E45A2318A1B2590026D88F /* NondeterministicInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NondeterministicInput.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                9E729409190F0306001A91B5 /* BundlePath.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BundlePath.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9E72940A190F0514001A91B5 /* BundlePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BundlePath.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9E8792FA193FB6800076CA78 /* libCompile Runtime to Binary.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = &quot;libCompile Runtime to Binary.a&quot;; sourceTree = BUILT_PRODUCTS_DIR; };
+                9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVMMac.cpp; path = llvm/InitializeLLVMMac.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 A1712B3A11C7B212007A5315 /* RegExpCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegExpCache.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A1712B3E11C7B228007A5315 /* RegExpCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpCache.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A1712B4011C7B235007A5315 /* RegExpKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpKey.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3448,6 +3797,7 @@
</span><span class="cx">                                 14BD59BF0A3E8F9000BAF59C /* testapi */,
</span><span class="cx">                                 6511230514046A4C002B101D /* testRegExp */,
</span><span class="cx">                                 55407AC818DA58AD00EFF7F2 /* libCompileRuntimeToLLVMIR.a */,
</span><ins>+                                9E8792FA193FB6800076CA78 /* libCompile Runtime to Binary.a */,
</ins><span class="cx">                         );
</span><span class="cx">                         name = Products;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -3547,10 +3897,10 @@
</span><span class="cx">                 0FCEFAAD1805CA4400472CE4 /* llvm */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */,
</ins><span class="cx">                                 0FCEFABF1805D94100472CE4 /* library */,
</span><span class="cx">                                 0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */,
</span><span class="cx">                                 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */,
</span><del>-                                0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */,
</del><span class="cx">                                 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */,
</span><span class="cx">                                 0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */,
</span><span class="cx">                                 0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */,
</span><span class="lines">@@ -4179,6 +4529,8 @@
</span><span class="cx">                 7EF6E0BB0EB7A1EC0079AFAF /* runtime */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                9E72940A190F0514001A91B5 /* BundlePath.h */,
+                                9E729409190F0306001A91B5 /* BundlePath.mm */,
</ins><span class="cx">                                 BCF605110E203EF800B9A64D /* ArgList.cpp */,
</span><span class="cx">                                 BCF605120E203EF800B9A64D /* ArgList.h */,
</span><span class="cx">                                 BC257DE50E1F51C50016B6C9 /* Arguments.cpp */,
</span><span class="lines">@@ -5823,6 +6175,7 @@
</span><span class="cx">                                 0F235BDE17178E1C00690C7F /* FTLOSRExitCompilationInfo.h in Headers */,
</span><span class="cx">                                 0F235BE017178E1C00690C7F /* FTLOSRExitCompiler.h in Headers */,
</span><span class="cx">                                 0FEA0A11170513DB00BB722C /* FTLOutput.h in Headers */,
</span><ins>+                                9E72940B190F0514001A91B5 /* BundlePath.h in Headers */,
</ins><span class="cx">                                 0F48532A187DFDEC0083B687 /* FTLRecoveryOpcode.h in Headers */,
</span><span class="cx">                                 0F6B1CC41862C47800845D97 /* FTLRegisterAtOffset.h in Headers */,
</span><span class="cx">                                 0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */,
</span><span class="lines">@@ -6335,6 +6688,243 @@
</span><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span><span class="cx">                 };
</span><ins>+                9E8791DF193FB6800076CA78 /* Headers */ = {
+                        isa = PBXHeadersBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                9E8791E0193FB6800076CA78 /* Arguments.h in Headers */,
+                                9E8791E1193FB6800076CA78 /* ArgumentsIteratorConstructor.h in Headers */,
+                                9E8791E2193FB6800076CA78 /* ArgumentsIteratorPrototype.h in Headers */,
+                                9E8791E3193FB6800076CA78 /* ArrayConstructor.h in Headers */,
+                                9E8791E4193FB6800076CA78 /* ArrayIteratorConstructor.h in Headers */,
+                                9E8791E5193FB6800076CA78 /* ArrayIteratorPrototype.h in Headers */,
+                                9E8791E6193FB6800076CA78 /* BatchedTransitionOptimizer.h in Headers */,
+                                9E8791E7193FB6800076CA78 /* BigInteger.h in Headers */,
+                                9E8791E8193FB6800076CA78 /* CommonSlowPathsExceptions.h in Headers */,
+                                9E8791E9193FB6800076CA78 /* JSConsole.h in Headers */,
+                                9E8791EA193FB6800076CA78 /* DateConstructor.h in Headers */,
+                                9E8791EB193FB6800076CA78 /* DateConversion.h in Headers */,
+                                9E8791EC193FB6800076CA78 /* DatePrototype.h in Headers */,
+                                9E8791ED193FB6800076CA78 /* ErrorConstructor.h in Headers */,
+                                9E8791EE193FB6800076CA78 /* ConsolePrototype.h in Headers */,
+                                9E8791EF193FB6800076CA78 /* JSActivation.h in Headers */,
+                                9E8791F0193FB6800076CA78 /* JSArgumentsIterator.h in Headers */,
+                                9E8791F1193FB6800076CA78 /* JSArrayIterator.h in Headers */,
+                                9E8791F2193FB6800076CA78 /* (null) in Headers */,
+                                9E8791F3193FB6800076CA78 /* JSGlobalObjectDebuggable.h in Headers */,
+                                9E8791F4193FB6800076CA78 /* JSGlobalObjectFunctions.h in Headers */,
+                                9E8791F5193FB6800076CA78 /* JSMapIterator.h in Headers */,
+                                9E8791F6193FB6800076CA78 /* JSPromiseConstructor.h in Headers */,
+                                9E8791F7193FB6800076CA78 /* JSPromisePrototype.h in Headers */,
+                                9E8791F8193FB6800076CA78 /* JSPromiseReaction.h in Headers */,
+                                9E8791F9193FB6800076CA78 /* JSSetIterator.h in Headers */,
+                                9E8791FA193FB6800076CA78 /* JSStackInlines.h in Headers */,
+                                9E8791FB193FB6800076CA78 /* JSStringBuilder.h in Headers */,
+                                9E8791FC193FB6800076CA78 /* JSStringJoiner.h in Headers */,
+                                9E8791FD193FB6800076CA78 /* JSWeakMap.h in Headers */,
+                                9E8791FE193FB6800076CA78 /* LiteralParser.h in Headers */,
+                                9E8791FF193FB6800076CA78 /* MapConstructor.h in Headers */,
+                                9E879200193FB6800076CA78 /* MapIteratorConstructor.h in Headers */,
+                                9E879201193FB6800076CA78 /* MapIteratorPrototype.h in Headers */,
+                                9E879202193FB6800076CA78 /* MapPrototype.h in Headers */,
+                                9E879203193FB6800076CA78 /* NameConstructor.h in Headers */,
+                                9E879204193FB6800076CA78 /* NameInstance.h in Headers */,
+                                9E879205193FB6800076CA78 /* NamePrototype.h in Headers */,
+                                9E879206193FB6800076CA78 /* NativeErrorConstructor.h in Headers */,
+                                9E879207193FB6800076CA78 /* NativeErrorPrototype.h in Headers */,
+                                9E879208193FB6800076CA78 /* NumberConstructor.h in Headers */,
+                                9E879209193FB6800076CA78 /* StructureIDBlob.h in Headers */,
+                                9E87920A193FB6800076CA78 /* ArrayBuffer.h in Headers */,
+                                9E87920B193FB6800076CA78 /* ArrayBufferNeuteringWatchpoint.h in Headers */,
+                                9E87920C193FB6800076CA78 /* ArrayBufferView.h in Headers */,
+                                9E87920D193FB6800076CA78 /* ArrayConventions.h in Headers */,
+                                9E87920E193FB6800076CA78 /* ArrayPrototype.h in Headers */,
+                                9E87920F193FB6800076CA78 /* StructureIDTable.h in Headers */,
+                                9E879210193FB6800076CA78 /* ArrayStorage.h in Headers */,
+                                9E879211193FB6800076CA78 /* BooleanObject.h in Headers */,
+                                9E879212193FB6800076CA78 /* Butterfly.h in Headers */,
+                                9E879213193FB6800076CA78 /* ButterflyInlines.h in Headers */,
+                                9E879214193FB6800076CA78 /* CallData.h in Headers */,
+                                9E879215193FB6800076CA78 /* ClassInfo.h in Headers */,
+                                9E879216193FB6800076CA78 /* CodeCache.h in Headers */,
+                                9E879217193FB6800076CA78 /* CodeSpecializationKind.h in Headers */,
+                                9E879218193FB6800076CA78 /* CommonIdentifiers.h in Headers */,
+                                9E879219193FB6800076CA78 /* CommonSlowPaths.h in Headers */,
+                                9E87921A193FB6800076CA78 /* CompilationResult.h in Headers */,
+                                9E87921B193FB6800076CA78 /* Completion.h in Headers */,
+                                9E87921C193FB6800076CA78 /* ConcurrentJITLock.h in Headers */,
+                                9E87921D193FB6800076CA78 /* ConsoleTypes.h in Headers */,
+                                9E87921E193FB6800076CA78 /* ConstantMode.h in Headers */,
+                                9E87921F193FB6800076CA78 /* ConstructData.h in Headers */,
+                                9E879220193FB6800076CA78 /* DataView.h in Headers */,
+                                9E879221193FB6800076CA78 /* DateInstance.h in Headers */,
+                                9E879222193FB6800076CA78 /* DateInstanceCache.h in Headers */,
+                                9E879223193FB6800076CA78 /* Debugger.h in Headers */,
+                                9E879224193FB6800076CA78 /* DumpContext.h in Headers */,
+                                9E879225193FB6800076CA78 /* Error.h in Headers */,
+                                9E879226193FB6800076CA78 /* ErrorHandlingScope.h in Headers */,
+                                9E879227193FB6800076CA78 /* ErrorInstance.h in Headers */,
+                                9E879228193FB6800076CA78 /* ErrorPrototype.h in Headers */,
+                                9E879229193FB6800076CA78 /* ExceptionHelpers.h in Headers */,
+                                9E87922A193FB6800076CA78 /* Executable.h in Headers */,
+                                9E87922B193FB6800076CA78 /* Float32Array.h in Headers */,
+                                9E87922C193FB6800076CA78 /* Float64Array.h in Headers */,
+                                9E87922D193FB6800076CA78 /* ConsoleClient.h in Headers */,
+                                9E87922E193FB6800076CA78 /* FunctionConstructor.h in Headers */,
+                                9E87922F193FB6800076CA78 /* FunctionExecutableDump.h in Headers */,
+                                9E879230193FB6800076CA78 /* FunctionPrototype.h in Headers */,
+                                9E879231193FB6800076CA78 /* GenericTypedArrayView.h in Headers */,
+                                9E879232193FB6800076CA78 /* GenericTypedArrayViewInlines.h in Headers */,
+                                9E879233193FB6800076CA78 /* Identifier.h in Headers */,
+                                9E879234193FB6800076CA78 /* IndexingHeader.h in Headers */,
+                                9E879235193FB6800076CA78 /* IndexingHeaderInlines.h in Headers */,
+                                9E879236193FB6800076CA78 /* IndexingType.h in Headers */,
+                                9E879237193FB6800076CA78 /* InitializeThreading.h in Headers */,
+                                9E879238193FB6800076CA78 /* Int16Array.h in Headers */,
+                                9E879239193FB6800076CA78 /* Int32Array.h in Headers */,
+                                9E87923A193FB6800076CA78 /* Int8Array.h in Headers */,
+                                9E87923B193FB6800076CA78 /* IntendedStructureChain.h in Headers */,
+                                9E87923C193FB6800076CA78 /* InternalFunction.h in Headers */,
+                                9E87923D193FB6800076CA78 /* Intrinsic.h in Headers */,
+                                9E87923E193FB6800076CA78 /* JSAPIValueWrapper.h in Headers */,
+                                9E87923F193FB6800076CA78 /* JSArray.h in Headers */,
+                                9E879240193FB6800076CA78 /* JSArrayBuffer.h in Headers */,
+                                9E879241193FB6800076CA78 /* JSArrayBufferConstructor.h in Headers */,
+                                9E879242193FB6800076CA78 /* JSArrayBufferPrototype.h in Headers */,
+                                9E879243193FB6800076CA78 /* JSArrayBufferView.h in Headers */,
+                                9E879244193FB6800076CA78 /* JSArrayBufferViewInlines.h in Headers */,
+                                9E879245193FB6800076CA78 /* JSCell.h in Headers */,
+                                9E879246193FB6800076CA78 /* JSCellInlines.h in Headers */,
+                                9E879247193FB6800076CA78 /* JSCInlines.h in Headers */,
+                                9E879248193FB6800076CA78 /* JSCJSValue.h in Headers */,
+                                9E879249193FB6800076CA78 /* JSCJSValueInlines.h in Headers */,
+                                9E87924A193FB6800076CA78 /* JSDataView.h in Headers */,
+                                9E87924B193FB6800076CA78 /* JSDataViewPrototype.h in Headers */,
+                                9E87924C193FB6800076CA78 /* JSDateMath.h in Headers */,
+                                9E87924D193FB6800076CA78 /* JSDestructibleObject.h in Headers */,
+                                9E87924E193FB6800076CA78 /* JSExportMacros.h in Headers */,
+                                9E87924F193FB6800076CA78 /* JSFloat32Array.h in Headers */,
+                                9E879250193FB6800076CA78 /* JSFloat64Array.h in Headers */,
+                                9E879251193FB6800076CA78 /* JSFunction.h in Headers */,
+                                9E879252193FB6800076CA78 /* JSFunctionInlines.h in Headers */,
+                                9E879253193FB6800076CA78 /* JSGenericTypedArrayView.h in Headers */,
+                                9E879254193FB6800076CA78 /* JSGenericTypedArrayViewConstructor.h in Headers */,
+                                9E879255193FB6800076CA78 /* JSGenericTypedArrayViewConstructorInlines.h in Headers */,
+                                9E879256193FB6800076CA78 /* JSGenericTypedArrayViewInlines.h in Headers */,
+                                9E879257193FB6800076CA78 /* JSGenericTypedArrayViewPrototype.h in Headers */,
+                                9E879258193FB6800076CA78 /* JSGenericTypedArrayViewPrototypeInlines.h in Headers */,
+                                9E879259193FB6800076CA78 /* JSGlobalObject.h in Headers */,
+                                9E87925A193FB6800076CA78 /* JSInt16Array.h in Headers */,
+                                9E87925B193FB6800076CA78 /* JSInt32Array.h in Headers */,
+                                9E87925C193FB6800076CA78 /* JSInt8Array.h in Headers */,
+                                9E87925D193FB6800076CA78 /* JSLock.h in Headers */,
+                                9E87925E193FB6800076CA78 /* JSMap.h in Headers */,
+                                9E87925F193FB6800076CA78 /* JSNameScope.h in Headers */,
+                                9E879260193FB6800076CA78 /* JSObject.h in Headers */,
+                                9E879261193FB6800076CA78 /* JSONObject.h in Headers */,
+                                9E879262193FB6800076CA78 /* JSPromise.h in Headers */,
+                                9E879263193FB6800076CA78 /* JSPromiseDeferred.h in Headers */,
+                                9E879264193FB6800076CA78 /* JSPromiseFunctions.h in Headers */,
+                                9E879265193FB6800076CA78 /* JSProxy.h in Headers */,
+                                9E879266193FB6800076CA78 /* JSScope.h in Headers */,
+                                9E879267193FB6800076CA78 /* JSSegmentedVariableObject.h in Headers */,
+                                9E879268193FB6800076CA78 /* JSSet.h in Headers */,
+                                9E879269193FB6800076CA78 /* JSString.h in Headers */,
+                                9E87926A193FB6800076CA78 /* JSSymbolTableObject.h in Headers */,
+                                9E87926B193FB6800076CA78 /* JSType.h in Headers */,
+                                9E87926C193FB6800076CA78 /* JSTypedArrayConstructors.h in Headers */,
+                                9E87926D193FB6800076CA78 /* JSTypedArrayPrototypes.h in Headers */,
+                                9E87926E193FB6800076CA78 /* JSTypedArrays.h in Headers */,
+                                9E87926F193FB6800076CA78 /* JSTypeInfo.h in Headers */,
+                                9E879270193FB6800076CA78 /* JSUint16Array.h in Headers */,
+                                9E879271193FB6800076CA78 /* JSUint32Array.h in Headers */,
+                                9E879272193FB6800076CA78 /* JSUint8Array.h in Headers */,
+                                9E879273193FB6800076CA78 /* JSUint8ClampedArray.h in Headers */,
+                                9E879274193FB6800076CA78 /* JSVariableObject.h in Headers */,
+                                9E879275193FB6800076CA78 /* JSWithScope.h in Headers */,
+                                9E879276193FB6800076CA78 /* JSWrapperObject.h in Headers */,
+                                9E879277193FB6800076CA78 /* Lookup.h in Headers */,
+                                9E879278193FB6800076CA78 /* MapData.h in Headers */,
+                                9E879279193FB6800076CA78 /* MatchResult.h in Headers */,
+                                9E87927A193FB6800076CA78 /* MathObject.h in Headers */,
+                                9E87927B193FB6800076CA78 /* MemoryStatistics.h in Headers */,
+                                9E87927C193FB6800076CA78 /* Microtask.h in Headers */,
+                                9E87927D193FB6800076CA78 /* NumberObject.h in Headers */,
+                                9E87927E193FB6800076CA78 /* NumberPrototype.h in Headers */,
+                                9E87927F193FB6800076CA78 /* NumericStrings.h in Headers */,
+                                9E879280193FB6800076CA78 /* ObjectConstructor.h in Headers */,
+                                9E879281193FB6800076CA78 /* ObjectPrototype.h in Headers */,
+                                9E879282193FB6800076CA78 /* Operations.h in Headers */,
+                                9E879283193FB6800076CA78 /* Options.h in Headers */,
+                                9E879284193FB6800076CA78 /* PrivateName.h in Headers */,
+                                9E879285193FB6800076CA78 /* PropertyDescriptor.h in Headers */,
+                                9E879286193FB6800076CA78 /* PropertyMapHashTable.h in Headers */,
+                                9E879287193FB6800076CA78 /* PropertyName.h in Headers */,
+                                9E879288193FB6800076CA78 /* PropertyNameArray.h in Headers */,
+                                9E879289193FB6800076CA78 /* PropertyOffset.h in Headers */,
+                                9E87928A193FB6800076CA78 /* PropertySlot.h in Headers */,
+                                9E87928B193FB6800076CA78 /* PropertyStorage.h in Headers */,
+                                9E87928C193FB6800076CA78 /* Protect.h in Headers */,
+                                9E87928D193FB6800076CA78 /* PrototypeMap.h in Headers */,
+                                9E87928E193FB6800076CA78 /* PutDirectIndexMode.h in Headers */,
+                                9E87928F193FB6800076CA78 /* PutPropertySlot.h in Headers */,
+                                9E879290193FB6800076CA78 /* RegExp.h in Headers */,
+                                9E879291193FB6800076CA78 /* RegExpCache.h in Headers */,
+                                9E879292193FB6800076CA78 /* RegExpKey.h in Headers */,
+                                9E879293193FB6800076CA78 /* RegExpObject.h in Headers */,
+                                9E879294193FB6800076CA78 /* RegisterPreservationMode.h in Headers */,
+                                9E879295193FB6800076CA78 /* Reject.h in Headers */,
+                                9E879296193FB6800076CA78 /* SamplingCounter.h in Headers */,
+                                9E879297193FB6800076CA78 /* SimpleTypedArrayController.h in Headers */,
+                                9E879298193FB6800076CA78 /* SmallStrings.h in Headers */,
+                                9E879299193FB6800076CA78 /* SparseArrayValueMap.h in Headers */,
+                                9E87929A193FB6800076CA78 /* StackAlignment.h in Headers */,
+                                9E87929B193FB6800076CA78 /* StringObject.h in Headers */,
+                                9E87929C193FB6800076CA78 /* StringPrototype.h in Headers */,
+                                9E87929D193FB6800076CA78 /* Structure.h in Headers */,
+                                9E87929E193FB6800076CA78 /* StructureChain.h in Headers */,
+                                9E87929F193FB6800076CA78 /* StructureInlines.h in Headers */,
+                                9E8792A0193FB6800076CA78 /* StructureRareData.h in Headers */,
+                                9E8792A1193FB6800076CA78 /* StructureRareDataInlines.h in Headers */,
+                                9E8792A2193FB6800076CA78 /* StructureTransitionTable.h in Headers */,
+                                9E8792A3193FB6800076CA78 /* SymbolTable.h in Headers */,
+                                9E8792A4193FB6800076CA78 /* TestRunnerUtils.h in Headers */,
+                                9E8792A5193FB6800076CA78 /* ToNativeFromValue.h in Headers */,
+                                9E8792A6193FB6800076CA78 /* TypedArrayAdaptors.h in Headers */,
+                                9E8792A7193FB6800076CA78 /* TypedArrayController.h in Headers */,
+                                9E8792A8193FB6800076CA78 /* TypedArrayInlines.h in Headers */,
+                                9E8792A9193FB6800076CA78 /* TypedArrays.h in Headers */,
+                                9E8792AA193FB6800076CA78 /* TypedArrayType.h in Headers */,
+                                9E8792AB193FB6800076CA78 /* Uint16Array.h in Headers */,
+                                9E8792AC193FB6800076CA78 /* Uint32Array.h in Headers */,
+                                9E8792AD193FB6800076CA78 /* Uint8Array.h in Headers */,
+                                9E8792AE193FB6800076CA78 /* Uint8ClampedArray.h in Headers */,
+                                9E8792AF193FB6800076CA78 /* VM.h in Headers */,
+                                9E8792B0193FB6800076CA78 /* VMEntryScope.h in Headers */,
+                                9E8792B1193FB6800076CA78 /* Watchdog.h in Headers */,
+                                9E8792B2193FB6800076CA78 /* WeakGCMap.h in Headers */,
+                                9E8792B3193FB6800076CA78 /* WeakRandom.h in Headers */,
+                                9E8792B4193FB6800076CA78 /* WriteBarrier.h in Headers */,
+                                9E8792B5193FB6800076CA78 /* WriteBarrierInlines.h in Headers */,
+                                9E8792B6193FB6800076CA78 /* ArityCheckMode.h in Headers */,
+                                9E8792B7193FB6800076CA78 /* ArgList.h in Headers */,
+                                9E8792B8193FB6800076CA78 /* JSCallbackFunction.h in Headers */,
+                                9E8792B9193FB6800076CA78 /* RegExpConstructor.h in Headers */,
+                                9E8792BA193FB6800076CA78 /* RegExpPrototype.h in Headers */,
+                                9E8792BB193FB6800076CA78 /* SetConstructor.h in Headers */,
+                                9E8792BC193FB6800076CA78 /* SetIteratorConstructor.h in Headers */,
+                                9E8792BD193FB6800076CA78 /* SetIteratorPrototype.h in Headers */,
+                                9E8792BE193FB6800076CA78 /* SetPrototype.h in Headers */,
+                                9E8792BF193FB6800076CA78 /* StrictEvalActivation.h in Headers */,
+                                9E8792C0193FB6800076CA78 /* StringConstructor.h in Headers */,
+                                9E8792C1193FB6800076CA78 /* Tracing.h in Headers */,
+                                9E8792C2193FB6800076CA78 /* Uint16WithFraction.h in Headers */,
+                                9E8792C3193FB6800076CA78 /* WeakMapConstructor.h in Headers */,
+                                9E8792C4193FB6800076CA78 /* WeakMapData.h in Headers */,
+                                9E8792C5193FB6800076CA78 /* WeakMapPrototype.h in Headers */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
</ins><span class="cx"> /* End PBXHeadersBuildPhase section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXNativeTarget section */
</span><span class="lines">@@ -6461,12 +7051,11 @@
</span><span class="cx">                                 5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */,
</span><span class="cx">                                 3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */,
</span><span class="cx">                                 A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */,
</span><del>-                                55850CA118F4842000F81829 /* Build Symbol Index Table */,
</del><span class="cx">                         );
</span><span class="cx">                         buildRules = (
</span><span class="cx">                         );
</span><span class="cx">                         dependencies = (
</span><del>-                                55F8FC2C18EB937B00783E6E /* PBXTargetDependency */,
</del><ins>+                                9E8792FE193FB6A60076CA78 /* PBXTargetDependency */,
</ins><span class="cx">                                 0FCEFABD1805D66300472CE4 /* PBXTargetDependency */,
</span><span class="cx">                                 65788AAD18B40A7B00C189FF /* PBXTargetDependency */,
</span><span class="cx">                                 65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */,
</span><span class="lines">@@ -6495,6 +7084,27 @@
</span><span class="cx">                         productReference = 932F5BE10822A1C700736975 /* jsc */;
</span><span class="cx">                         productType = &quot;com.apple.product-type.tool&quot;;
</span><span class="cx">                 };
</span><ins>+                9E8791D8193FB6800076CA78 /* Compile Runtime to Binary */ = {
+                        isa = PBXNativeTarget;
+                        buildConfigurationList = 9E8792F5193FB6800076CA78 /* Build configuration list for PBXNativeTarget &quot;Compile Runtime to Binary&quot; */;
+                        buildPhases = (
+                                9E8791DF193FB6800076CA78 /* Headers */,
+                                9E8792C6193FB6800076CA78 /* Sources */,
+                                9E8792F4193FB6800076CA78 /* Build Symbol Index Table */,
+                        );
+                        buildRules = (
+                        );
+                        dependencies = (
+                                9E8792FC193FB69F0076CA78 /* PBXTargetDependency */,
+                                9E8791D9193FB6800076CA78 /* PBXTargetDependency */,
+                                9E8791DB193FB6800076CA78 /* PBXTargetDependency */,
+                                9E8791DD193FB6800076CA78 /* PBXTargetDependency */,
+                        );
+                        name = &quot;Compile Runtime to Binary&quot;;
+                        productName = JavaScriptCore;
+                        productReference = 9E8792FA193FB6800076CA78 /* libCompile Runtime to Binary.a */;
+                        productType = &quot;com.apple.product-type.library.static&quot;;
+                };
</ins><span class="cx"> /* End PBXNativeTarget section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXProject section */
</span><span class="lines">@@ -6521,6 +7131,7 @@
</span><span class="cx">                         targets = (
</span><span class="cx">                                 932F5BE30822A1C700736975 /* All */,
</span><span class="cx">                                 5540756218DA58AD00EFF7F2 /* Compile Runtime to LLVM IR */,
</span><ins>+                                9E8791D8193FB6800076CA78 /* Compile Runtime to Binary */,
</ins><span class="cx">                                 932F5B3E0822A1C700736975 /* JavaScriptCore */,
</span><span class="cx">                                 0FCEFAB51805D61600472CE4 /* llvmForJSC */,
</span><span class="cx">                                 0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
</span><span class="lines">@@ -6614,21 +7225,6 @@
</span><span class="cx">                         shellPath = /bin/sh;
</span><span class="cx">                         shellScript = &quot;exec ${SRCROOT}/postprocess-headers.sh&quot;;
</span><span class="cx">                 };
</span><del>-                55850CA118F4842000F81829 /* Build Symbol Index Table */ = {
-                        isa = PBXShellScriptBuildPhase;
-                        buildActionMask = 2147483647;
-                        files = (
-                        );
-                        inputPaths = (
-                        );
-                        name = &quot;Build Symbol Index Table&quot;;
-                        outputPaths = (
-                                &quot;$(BUILT_PRODUCTS_DIR)/$(JAVASCRIPTCORE_RESOURCES_DIR)/Runtime.symtbl&quot;,
-                        );
-                        runOnlyForDeploymentPostprocessing = 0;
-                        shellPath = /bin/sh;
-                        shellScript = &quot;${SRCROOT}/build-symbol-table-index.sh&quot;;
-                };
</del><span class="cx">                 559CD06A18F487A800F9ADC0 /* Copy LLVM IR */ = {
</span><span class="cx">                         isa = PBXShellScriptBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="lines">@@ -6766,6 +7362,22 @@
</span><span class="cx">                         shellPath = /bin/sh;
</span><span class="cx">                         shellScript = &quot;set -e\n\nmkdir -p \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\&quot;\ncd \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\&quot;\n\n/bin/ln -sfh \&quot;${SRCROOT}\&quot; JavaScriptCore\nexport JavaScriptCore=\&quot;JavaScriptCore\&quot;\nexport BUILT_PRODUCTS_DIR=\&quot;../..\&quot;\n\nmake --no-builtin-rules -f \&quot;JavaScriptCore/DerivedSources.make\&quot; -j `/usr/sbin/sysctl -n hw.ncpu`\n&quot;;
</span><span class="cx">                 };
</span><ins>+                9E8792F4193FB6800076CA78 /* Build Symbol Index Table */ = {
+                        isa = PBXShellScriptBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                        );
+                        inputPaths = (
+                        );
+                        name = &quot;Build Symbol Index Table&quot;;
+                        outputPaths = (
+                                &quot;$(BUILT_PRODUCTS_DIR)/$(JAVASCRIPTCORE_RESOURCES_DIR)/Runtime.symtbl&quot;,
+                                &quot;$(SHARED_DERIVED_FILE_DIR)/JavaScriptCore/InlineRuntimeSymbolTable.h&quot;,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                        shellPath = /bin/sh;
+                        shellScript = &quot;${SRCROOT}/build-symbol-table-index.sh&quot;;
+                };
</ins><span class="cx">                 A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */ = {
</span><span class="cx">                         isa = PBXShellScriptBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="lines">@@ -6830,6 +7442,47 @@
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                552EA70C1908704800A66F2F /* JSDataViewPrototype.cpp in Sources */,
+                                55A04E211908653D0024E40C /* StringPrototype.cpp in Sources */,
+                                556A35EE190844C000B56747 /* WeakMapPrototype.cpp in Sources */,
+                                556A35ED190844B500B56747 /* WeakMapConstructor.cpp in Sources */,
+                                556A35EC190844AA00B56747 /* StringConstructor.cpp in Sources */,
+                                556A35EA190844A000B56747 /* SetIteratorPrototype.cpp in Sources */,
+                                556A35EB190844A000B56747 /* SetPrototype.cpp in Sources */,
+                                556A35E81908448000B56747 /* RegExpConstructor.cpp in Sources */,
+                                556A35E91908448000B56747 /* RegExpPrototype.cpp in Sources */,
+                                556A35E61908444900B56747 /* ObjectConstructor.cpp in Sources */,
+                                556A35E71908444900B56747 /* ObjectPrototype.cpp in Sources */,
+                                556A35E41908443700B56747 /* NameConstructor.cpp in Sources */,
+                                556A35E51908443700B56747 /* NamePrototype.cpp in Sources */,
+                                556A35E31908442A00B56747 /* MathObject.cpp in Sources */,
+                                556A35E01908441D00B56747 /* MapConstructor.cpp in Sources */,
+                                556A35E11908441D00B56747 /* MapIteratorPrototype.cpp in Sources */,
+                                556A35E21908441D00B56747 /* MapPrototype.cpp in Sources */,
+                                556A35DF190843F300B56747 /* ConsolePrototype.cpp in Sources */,
+                                556A35DC190843E700B56747 /* JSPromiseConstructor.cpp in Sources */,
+                                556A35DD190843E700B56747 /* JSPromiseFunctions.cpp in Sources */,
+                                556A35DE190843E700B56747 /* JSPromisePrototype.cpp in Sources */,
+                                556A35DB190843CF00B56747 /* JSONObject.cpp in Sources */,
+                                556A35DA190843C200B56747 /* JSGlobalObjectFunctions.cpp in Sources */,
+                                556A35D9190843B100B56747 /* JSFunction.cpp in Sources */,
+                                556A35D81908439D00B56747 /* JSBoundFunction.cpp in Sources */,
+                                556A35D71908438A00B56747 /* JSArrayIterator.cpp in Sources */,
+                                556A35D61908437500B56747 /* JSArrayBufferPrototype.cpp in Sources */,
+                                556A35D51908436800B56747 /* JSArrayBufferConstructor.cpp in Sources */,
+                                556A35D41908434D00B56747 /* FunctionPrototype.cpp in Sources */,
+                                556A35D31908434300B56747 /* FunctionConstructor.cpp in Sources */,
+                                556A35D21908433300B56747 /* ErrorPrototype.cpp in Sources */,
+                                556A35D11908432900B56747 /* ErrorConstructor.cpp in Sources */,
+                                556A35D01908432000B56747 /* DatePrototype.cpp in Sources */,
+                                556A35CF1908431600B56747 /* DateConstructor.cpp in Sources */,
+                                556A35CE1908430B00B56747 /* BooleanPrototype.cpp in Sources */,
+                                556A35CD190842FD00B56747 /* BooleanConstructor.cpp in Sources */,
+                                556A35CC190842F300B56747 /* ArrayIteratorPrototype.cpp in Sources */,
+                                556A35CB190842E800B56747 /* ArgumentsIteratorPrototype.cpp in Sources */,
+                                556A35CA190842DD00B56747 /* Arguments.cpp in Sources */,
+                                556A35C9190842D500B56747 /* NativeErrorConstructor.cpp in Sources */,
+                                556A35C8190842BC00B56747 /* SetConstructor.cpp in Sources */,
</ins><span class="cx">                                 554078AB18DA58AD00EFF7F2 /* ArrayConstructor.cpp in Sources */,
</span><span class="cx">                                 554078AF18DA58AD00EFF7F2 /* ArrayPrototype.cpp in Sources */,
</span><span class="cx">                                 55407A3818DA58AD00EFF7F2 /* NumberConstructor.cpp in Sources */,
</span><span class="lines">@@ -6849,6 +7502,10 @@
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */,
+                                9EA5C7A1190F084200508EBE /* BundlePath.mm in Sources */,
+                                9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */,
+                                9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */,
</ins><span class="cx">                                 0FFA549716B8835000B3A982 /* A64DOpcode.cpp in Sources */,
</span><span class="cx">                                 0F55F0F414D1063900AC7649 /* AbstractPC.cpp in Sources */,
</span><span class="cx">                                 147F39BD107EC37600427A48 /* ArgList.cpp in Sources */,
</span><span class="lines">@@ -7102,9 +7759,6 @@
</span><span class="cx">                                 C25F8BCD157544A900245B71 /* IncrementalSweeper.cpp in Sources */,
</span><span class="cx">                                 0F13E04E16164A1F00DC8DE7 /* IndexingType.cpp in Sources */,
</span><span class="cx">                                 0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */,
</span><del>-                                0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */,
-                                0FCEFACB1805E75500472CE4 /* InitializeLLVMPOSIX.cpp in Sources */,
-                                E178636D0D9BEEC300D74E75 /* InitializeThreading.cpp in Sources */,
</del><span class="cx">                                 A513E5B7185B8BD3007E95AD /* InjectedScript.cpp in Sources */,
</span><span class="cx">                                 A514B2C2185A684400F3C7CB /* InjectedScriptBase.cpp in Sources */,
</span><span class="cx">                                 A58E35911860DECF001F24FE /* InjectedScriptHost.cpp in Sources */,
</span><span class="lines">@@ -7415,6 +8069,58 @@
</span><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span><span class="cx">                 };
</span><ins>+                9E8792C6193FB6800076CA78 /* Sources */ = {
+                        isa = PBXSourcesBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                                9E8792C7193FB6800076CA78 /* JSDataViewPrototype.cpp in Sources */,
+                                9E8792C8193FB6800076CA78 /* StringPrototype.cpp in Sources */,
+                                9E8792C9193FB6800076CA78 /* WeakMapPrototype.cpp in Sources */,
+                                9E8792CA193FB6800076CA78 /* WeakMapConstructor.cpp in Sources */,
+                                9E8792CB193FB6800076CA78 /* StringConstructor.cpp in Sources */,
+                                9E8792CC193FB6800076CA78 /* SetIteratorPrototype.cpp in Sources */,
+                                9E8792CD193FB6800076CA78 /* SetPrototype.cpp in Sources */,
+                                9E8792CE193FB6800076CA78 /* RegExpConstructor.cpp in Sources */,
+                                9E8792CF193FB6800076CA78 /* RegExpPrototype.cpp in Sources */,
+                                9E8792D0193FB6800076CA78 /* ObjectConstructor.cpp in Sources */,
+                                9E8792D1193FB6800076CA78 /* ObjectPrototype.cpp in Sources */,
+                                9E8792D2193FB6800076CA78 /* NameConstructor.cpp in Sources */,
+                                9E8792D3193FB6800076CA78 /* NamePrototype.cpp in Sources */,
+                                9E8792D4193FB6800076CA78 /* MathObject.cpp in Sources */,
+                                9E8792D5193FB6800076CA78 /* MapConstructor.cpp in Sources */,
+                                9E8792D6193FB6800076CA78 /* MapIteratorPrototype.cpp in Sources */,
+                                9E8792D7193FB6800076CA78 /* MapPrototype.cpp in Sources */,
+                                9E8792D8193FB6800076CA78 /* ConsolePrototype.cpp in Sources */,
+                                9E8792D9193FB6800076CA78 /* JSPromiseConstructor.cpp in Sources */,
+                                9E8792DA193FB6800076CA78 /* JSPromiseFunctions.cpp in Sources */,
+                                9E8792DB193FB6800076CA78 /* JSPromisePrototype.cpp in Sources */,
+                                9E8792DC193FB6800076CA78 /* JSONObject.cpp in Sources */,
+                                9E8792DD193FB6800076CA78 /* JSGlobalObjectFunctions.cpp in Sources */,
+                                9E8792DE193FB6800076CA78 /* JSFunction.cpp in Sources */,
+                                9E8792DF193FB6800076CA78 /* JSBoundFunction.cpp in Sources */,
+                                9E8792E0193FB6800076CA78 /* JSArrayIterator.cpp in Sources */,
+                                9E8792E1193FB6800076CA78 /* JSArrayBufferPrototype.cpp in Sources */,
+                                9E8792E2193FB6800076CA78 /* JSArrayBufferConstructor.cpp in Sources */,
+                                9E8792E3193FB6800076CA78 /* FunctionPrototype.cpp in Sources */,
+                                9E8792E4193FB6800076CA78 /* FunctionConstructor.cpp in Sources */,
+                                9E8792E5193FB6800076CA78 /* ErrorPrototype.cpp in Sources */,
+                                9E8792E6193FB6800076CA78 /* ErrorConstructor.cpp in Sources */,
+                                9E8792E7193FB6800076CA78 /* DatePrototype.cpp in Sources */,
+                                9E8792E8193FB6800076CA78 /* DateConstructor.cpp in Sources */,
+                                9E8792E9193FB6800076CA78 /* BooleanPrototype.cpp in Sources */,
+                                9E8792EA193FB6800076CA78 /* BooleanConstructor.cpp in Sources */,
+                                9E8792EB193FB6800076CA78 /* ArrayIteratorPrototype.cpp in Sources */,
+                                9E8792EC193FB6800076CA78 /* ArgumentsIteratorPrototype.cpp in Sources */,
+                                9E8792ED193FB6800076CA78 /* Arguments.cpp in Sources */,
+                                9E8792EE193FB6800076CA78 /* NativeErrorConstructor.cpp in Sources */,
+                                9E8792EF193FB6800076CA78 /* SetConstructor.cpp in Sources */,
+                                9E8792F0193FB6800076CA78 /* ArrayConstructor.cpp in Sources */,
+                                9E8792F1193FB6800076CA78 /* ArrayPrototype.cpp in Sources */,
+                                9E8792F2193FB6800076CA78 /* NumberConstructor.cpp in Sources */,
+                                9E8792F3193FB6800076CA78 /* NumberPrototype.cpp in Sources */,
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                };
</ins><span class="cx"> /* End PBXSourcesBuildPhase section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin PBXTargetDependency section */
</span><span class="lines">@@ -7443,11 +8149,6 @@
</span><span class="cx">                         target = 65FB3F6609D11E9100F49DEB /* Derived Sources */;
</span><span class="cx">                         targetProxy = 5540756818DA58AD00EFF7F2 /* PBXContainerItemProxy */;
</span><span class="cx">                 };
</span><del>-                55F8FC2C18EB937B00783E6E /* PBXTargetDependency */ = {
-                        isa = PBXTargetDependency;
-                        target = 5540756218DA58AD00EFF7F2 /* Compile Runtime to LLVM IR */;
-                        targetProxy = 55F8FC2B18EB937B00783E6E /* PBXContainerItemProxy */;
-                };
</del><span class="cx">                 5D69E912152BE5470028D720 /* PBXTargetDependency */ = {
</span><span class="cx">                         isa = PBXTargetDependency;
</span><span class="cx">                         target = 932F5BDA0822A1C700736975 /* jsc */;
</span><span class="lines">@@ -7508,6 +8209,31 @@
</span><span class="cx">                         target = 932F5B3E0822A1C700736975 /* JavaScriptCore */;
</span><span class="cx">                         targetProxy = 932F5BE60822A1C700736975 /* PBXContainerItemProxy */;
</span><span class="cx">                 };
</span><ins>+                9E8791D9193FB6800076CA78 /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 0FCEFAB51805D61600472CE4 /* llvmForJSC */;
+                        targetProxy = 9E8791DA193FB6800076CA78 /* PBXContainerItemProxy */;
+                };
+                9E8791DB193FB6800076CA78 /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 65788A9D18B409EB00C189FF /* Offline Assembler */;
+                        targetProxy = 9E8791DC193FB6800076CA78 /* PBXContainerItemProxy */;
+                };
+                9E8791DD193FB6800076CA78 /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 65FB3F6609D11E9100F49DEB /* Derived Sources */;
+                        targetProxy = 9E8791DE193FB6800076CA78 /* PBXContainerItemProxy */;
+                };
+                9E8792FC193FB69F0076CA78 /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 5540756218DA58AD00EFF7F2 /* Compile Runtime to LLVM IR */;
+                        targetProxy = 9E8792FB193FB69F0076CA78 /* PBXContainerItemProxy */;
+                };
+                9E8792FE193FB6A60076CA78 /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 9E8791D8193FB6800076CA78 /* Compile Runtime to Binary */;
+                        targetProxy = 9E8792FD193FB6A60076CA78 /* PBXContainerItemProxy */;
+                };
</ins><span class="cx"> /* End PBXTargetDependency section */
</span><span class="cx"> 
</span><span class="cx"> /* Begin XCBuildConfiguration section */
</span><span class="lines">@@ -7873,6 +8599,46 @@
</span><span class="cx">                         };
</span><span class="cx">                         name = Production;
</span><span class="cx">                 };
</span><ins>+                9E8792F6193FB6800076CA78 /* Debug */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */;
+                        buildSettings = {
+                                OTHER_CFLAGS = &quot;&quot;;
+                                OTHER_CPLUSPLUSFLAGS = &quot;&quot;;
+                                PRODUCT_NAME = &quot;Compile Runtime to Binary&quot;;
+                        };
+                        name = Debug;
+                };
+                9E8792F7193FB6800076CA78 /* Release */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */;
+                        buildSettings = {
+                                OTHER_CFLAGS = &quot;&quot;;
+                                OTHER_CPLUSPLUSFLAGS = &quot;&quot;;
+                                PRODUCT_NAME = &quot;Compile Runtime to Binary&quot;;
+                        };
+                        name = Release;
+                };
+                9E8792F8193FB6800076CA78 /* Profiling */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */;
+                        buildSettings = {
+                                OTHER_CFLAGS = &quot;&quot;;
+                                OTHER_CPLUSPLUSFLAGS = &quot;&quot;;
+                                PRODUCT_NAME = &quot;Compile Runtime to Binary&quot;;
+                        };
+                        name = Profiling;
+                };
+                9E8792F9193FB6800076CA78 /* Production */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 5540758418F4A37500602A5D /* CompileRuntimeToLLVMIR.xcconfig */;
+                        buildSettings = {
+                                OTHER_CFLAGS = &quot;&quot;;
+                                OTHER_CPLUSPLUSFLAGS = &quot;&quot;;
+                                PRODUCT_NAME = &quot;Compile Runtime to Binary&quot;;
+                        };
+                        name = Production;
+                };
</ins><span class="cx">                 A761483D0E6402F700E357FA /* Profiling */ = {
</span><span class="cx">                         isa = XCBuildConfiguration;
</span><span class="cx">                         baseConfigurationReference = 1C9051440BA9E8A70081E9D0 /* DebugRelease.xcconfig */;
</span><span class="lines">@@ -8082,6 +8848,17 @@
</span><span class="cx">                         defaultConfigurationIsVisible = 0;
</span><span class="cx">                         defaultConfigurationName = Production;
</span><span class="cx">                 };
</span><ins>+                9E8792F5193FB6800076CA78 /* Build configuration list for PBXNativeTarget &quot;Compile Runtime to Binary&quot; */ = {
+                        isa = XCConfigurationList;
+                        buildConfigurations = (
+                                9E8792F6193FB6800076CA78 /* Debug */,
+                                9E8792F7193FB6800076CA78 /* Release */,
+                                9E8792F8193FB6800076CA78 /* Profiling */,
+                                9E8792F9193FB6800076CA78 /* Production */,
+                        );
+                        defaultConfigurationIsVisible = 0;
+                        defaultConfigurationName = Production;
+                };
</ins><span class="cx"> /* End XCConfigurationList section */
</span><span class="cx">         };
</span><span class="cx">         rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebuildsymboltableindexpy"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.py (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.py        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.py        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -4,6 +4,7 @@
</span><span class="cx"> import os
</span><span class="cx"> import subprocess
</span><span class="cx"> import sys
</span><ins>+from sets import Set
</ins><span class="cx"> from operator import itemgetter
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -22,6 +23,7 @@
</span><span class="cx"> 
</span><span class="cx"> framework_directory = os.path.join(os.getenv(&quot;BUILT_PRODUCTS_DIR&quot;), os.getenv(&quot;JAVASCRIPTCORE_RESOURCES_DIR&quot;), &quot;Runtime&quot;, current_arch)
</span><span class="cx"> 
</span><ins>+
</ins><span class="cx"> symbol_table_location = os.path.join(framework_directory, &quot;Runtime.symtbl&quot;)
</span><span class="cx"> 
</span><span class="cx"> symbol_table = {}
</span><span class="lines">@@ -33,9 +35,20 @@
</span><span class="cx"> if os.path.isfile(symbol_table_location):
</span><span class="cx">     symbol_table_modification_time = os.path.getmtime(symbol_table_location)
</span><span class="cx"> 
</span><del>-file_suffix = &quot;bc.gz&quot;
</del><ins>+file_suffix = &quot;bc&quot;
</ins><span class="cx"> file_suffix_length = len(file_suffix)
</span><span class="cx"> 
</span><ins>+tested_symbols_location = &quot;./tested-symbols.symlst&quot;
+include_symbol_table_location = os.path.join(os.getenv(&quot;SHARED_DERIVED_FILE_DIR&quot;), &quot;JavaScriptCore/InlineRuntimeSymbolTable.h&quot;)
+
+tested_symbols = Set([])
+
+if os.path.isfile(tested_symbols_location):
+    with open(tested_symbols_location, 'r') as file:
+        print(&quot;Loading tested symbols&quot;)
+        for line in file:
+            tested_symbols.add(line[:-1])
+
</ins><span class="cx"> for bitcode_file in glob.iglob(os.path.join(framework_directory, &quot;*.&quot; + file_suffix)):
</span><span class="cx">     bitcode_basename = os.path.basename(bitcode_file)
</span><span class="cx">     binary_file = os.path.join(binary_file_directory, bitcode_basename[:-file_suffix_length] + &quot;o&quot;)
</span><span class="lines">@@ -48,8 +61,8 @@
</span><span class="cx">     lines = subprocess.check_output([&quot;nm&quot;, &quot;-U&quot;, &quot;-j&quot;, binary_file]).splitlines()
</span><span class="cx"> 
</span><span class="cx">     for symbol in lines:
</span><del>-        if symbol[:2] == &quot;__&quot; and symbol[-3:] != &quot;.eh&quot;:
-            symbol_table[symbol] = bitcode_basename[1:]
</del><ins>+        if symbol[:2] == &quot;__&quot; and symbol[-3:] != &quot;.eh&quot; and symbol in tested_symbols:
+            symbol_table[symbol[1:]] = bitcode_basename
</ins><span class="cx"> 
</span><span class="cx"> if not symbol_table_is_out_of_date:
</span><span class="cx">     sys.exit()
</span><span class="lines">@@ -67,8 +80,11 @@
</span><span class="cx"> 
</span><span class="cx"> print(&quot;Writing symbol table&quot;)
</span><span class="cx"> 
</span><del>-with open(symbol_table_location, &quot;w&quot;) as file:
-    for symbol, location in symbol_list:
-        file.write(&quot;{} {}\n&quot;.format(symbol, location))
-
</del><ins>+with open(symbol_table_location, &quot;w&quot;) as symbol_file:
+    with open(include_symbol_table_location, &quot;w&quot;) as include_file:
+        include_file.write(&quot;#define FOR_EACH_LIBRARY_SYMBOL(macro)&quot;)
+        for symbol, location in symbol_list:
+            symbol_file.write(&quot;{} {}\n&quot;.format(symbol, location))
+            include_file.write(&quot; \\\nmacro(\&quot;{}\&quot;, \&quot;{}\&quot;)&quot;.format(symbol, location))
+        include_file.write(&quot;\n&quot;)
</ins><span class="cx"> print(&quot;Done&quot;)
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebuildsymboltableindexsh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.sh (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.sh        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/build-symbol-table-index.sh        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">     if [ -d &quot;$RUNTIME_DERIVED_SOURCES_DIR/$arch&quot; ];
</span><span class="cx">     then
</span><span class="cx">         mkdir -p &quot;$RUNTIME_INSTALL_DIR/$arch&quot;
</span><del>-        cp &quot;$RUNTIME_DERIVED_SOURCES_DIR/$arch&quot;/*.bc.gz &quot;$RUNTIME_INSTALL_DIR/$arch&quot;/.
</del><ins>+        cp &quot;$RUNTIME_DERIVED_SOURCES_DIR/$arch&quot;/*.bc &quot;$RUNTIME_INSTALL_DIR/$arch&quot;/.
</ins><span class="cx">         ${SRCROOT}/build-symbol-table-index.py $arch
</span><span class="cx">     fi
</span><span class="cx"> done
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorecopyllvmirtoderivedsourcessh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/copy-llvm-ir-to-derived-sources.sh (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/copy-llvm-ir-to-derived-sources.sh        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/copy-llvm-ir-to-derived-sources.sh        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -11,7 +11,7 @@
</span><span class="cx">         for file in &quot;$OBJ_DIR/$arch&quot;/*.o;
</span><span class="cx">         do
</span><span class="cx">             file_name=${file##*/}
</span><del>-            gzip -9 -c &quot;$file&quot; &gt; &quot;$RUNTIME_DERIVED_SOURCES_DIR/$arch/${file_name%.o}.bc.gz&quot;
</del><ins>+            cp &quot;$file&quot; &quot;$RUNTIME_DERIVED_SOURCES_DIR/$arch/${file_name%.o}.bc&quot;
</ins><span class="cx">         done
</span><span class="cx">     fi
</span><span class="cx"> done
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoredfgDFGByteCodeParsercpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -1253,6 +1253,8 @@
</span><span class="cx">     }
</span><span class="cx">         
</span><span class="cx">     Intrinsic intrinsic = callLinkStatus.intrinsicFor(specializationKind);
</span><ins>+
+    JSFunction* knownFunction = nullptr;
</ins><span class="cx">     if (intrinsic != NoIntrinsic) {
</span><span class="cx">         emitFunctionChecks(callLinkStatus, callTarget, registerOffset, specializationKind);
</span><span class="cx">             
</span><span class="lines">@@ -1269,9 +1271,13 @@
</span><span class="cx">         if (m_graph.compilation())
</span><span class="cx">             m_graph.compilation()-&gt;noticeInlinedCall();
</span><span class="cx">         return;
</span><del>-    }
</del><ins>+    } else if (JSFunction* function = callLinkStatus.function())
+        if (function-&gt;isHostFunction()) {
+            emitFunctionChecks(callLinkStatus, callTarget, registerOffset, specializationKind);
+            knownFunction = function;
+        }
</ins><span class="cx">     
</span><del>-    addCall(result, op, callTarget, argumentCountIncludingThis, registerOffset);
</del><ins>+    addCall(result, op, callTarget, argumentCountIncludingThis, registerOffset)-&gt;giveKnownFunction(knownFunction);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ByteCodeParser::emitFunctionChecks(const CallLinkStatus&amp; callLinkStatus, Node* callTarget, int registerOffset, CodeSpecializationKind kind)
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoredfgDFGNodeh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/dfg/DFGNode.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/dfg/DFGNode.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/dfg/DFGNode.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -1005,6 +1005,40 @@
</span><span class="cx">         return mergeSpeculation(m_opInfo2, prediction);
</span><span class="cx">     }
</span><span class="cx">     
</span><ins>+    bool canBeKnownFunction()
+    {
+        switch (op()) {
+        case Construct:
+        case Call:
+            return true;
+        default:
+            return false;
+        }
+    }
+
+    bool hasKnownFunction()
+    {
+        switch (op()) {
+        case Construct:
+        case Call:
+            return (bool)m_opInfo;
+        default:
+            return false;
+        }
+    }
+    
+    JSFunction* knownFunction()
+    {
+        ASSERT(canBeKnownFunction());
+        return bitwise_cast&lt;JSFunction*&gt;(m_opInfo);
+    }
+
+    void giveKnownFunction(JSFunction* callData) 
+    {
+        ASSERT(canBeKnownFunction());
+        m_opInfo = bitwise_cast&lt;uintptr_t&gt;(callData);
+    }
+
</ins><span class="cx">     bool hasFunction()
</span><span class="cx">     {
</span><span class="cx">         switch (op()) {
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreftlFTLAbbreviatedTypesh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -43,6 +43,7 @@
</span><span class="cx"> typedef LLVMRealPredicate LRealPredicate;
</span><span class="cx"> typedef LLVMTypeRef LType;
</span><span class="cx"> typedef LLVMValueRef LValue;
</span><ins>+typedef LLVMMemoryBufferRef LMemoryBuffer;
</ins><span class="cx"> 
</span><span class="cx"> } } // namespace JSC::FTL
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreftlFTLAbbreviationsh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviations.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviations.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/ftl/FTLAbbreviations.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -113,6 +113,8 @@
</span><span class="cx"> 
</span><span class="cx"> static inline LType typeOf(LValue value) { return llvm-&gt;TypeOf(value); }
</span><span class="cx"> 
</span><ins>+static inline LType getElementType(LType value) { return llvm-&gt;GetElementType(value); }
+
</ins><span class="cx"> static inline unsigned mdKindID(LContext context, const char* string) { return llvm-&gt;GetMDKindIDInContext(context, string, std::strlen(string)); }
</span><span class="cx"> static inline LValue mdString(LContext context, const char* string, unsigned length) { return llvm-&gt;MDStringInContext(context, string, length); }
</span><span class="cx"> static inline LValue mdString(LContext context, const char* string) { return mdString(context, string, std::strlen(string)); }
</span><span class="lines">@@ -134,11 +136,37 @@
</span><span class="cx"> 
</span><span class="cx"> static inline void setMetadata(LValue instruction, unsigned kind, LValue metadata) { llvm-&gt;SetMetadata(instruction, kind, metadata); }
</span><span class="cx"> 
</span><ins>+static inline LValue getFirstInstruction(LBasicBlock block) { return llvm-&gt;GetFirstInstruction(block); }
+static inline LValue getNextInstruction(LValue instruction) { return llvm-&gt;GetNextInstruction(instruction); }
+
+
</ins><span class="cx"> static inline LValue addFunction(LModule module, const char* name, LType type) { return llvm-&gt;AddFunction(module, name, type); }
</span><del>-static inline void setLinkage(LValue global, LLinkage linkage) { llvm-&gt;SetLinkage(global, linkage); }
</del><ins>+static inline LValue getNamedFunction(LModule module, const char* name) { return llvm-&gt;GetNamedFunction(module, name); }
+static inline LValue getFirstFunction(LModule module) { return llvm-&gt;GetFirstFunction(module); }
+static inline LValue getNextFunction(LValue function) { return llvm-&gt;GetNextFunction(function); }
+
</ins><span class="cx"> static inline void setFunctionCallingConv(LValue function, LCallConv convention) { llvm-&gt;SetFunctionCallConv(function, convention); }
</span><span class="cx"> static inline void addTargetDependentFunctionAttr(LValue function, const char* key, const char* value) { llvm-&gt;AddTargetDependentFunctionAttr(function, key, value); }
</span><ins>+static inline void removeFunctionAttr(LValue function, LLVMAttribute pa) { llvm-&gt;RemoveFunctionAttr(function, pa); }
</ins><span class="cx"> 
</span><ins>+
+
+static inline void setLinkage(LValue global, LLVMLinkage linkage) { llvm-&gt;SetLinkage(global, linkage); }
+static inline void setVisibility(LValue global, LLVMVisibility viz) { llvm-&gt;SetVisibility(global, viz); }
+static inline LLVMBool isDeclaration(LValue global) { return llvm-&gt;IsDeclaration(global); }
+
+static inline LLVMBool linkModules(LModule dest, LModule str, LLVMLinkerMode mode, char** outMessage) { return llvm-&gt;LinkModules(dest, str, mode, outMessage); }
+
+static inline const char * getValueName(LValue global) { return llvm-&gt;GetValueName(global); }
+
+static inline LValue getNamedGlobal(LModule module, const char* name) { return llvm-&gt;GetNamedGlobal(module, name); }
+static inline LValue getFirstGlobal(LModule module) { return llvm-&gt;GetFirstGlobal(module); }
+static inline LValue getNextGlobal(LValue global) { return llvm-&gt;GetNextGlobal(global); }
+
+
+
+
+
</ins><span class="cx"> static inline LValue addExternFunction(LModule module, const char* name, LType type)
</span><span class="cx"> {
</span><span class="cx">     LValue result = addFunction(module, name, type);
</span><span class="lines">@@ -146,7 +174,27 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline LLVMBool createMemoryBufferWithContentsOfFile(const char* path, LLVMMemoryBufferRef* outMemBuf, char** outMessage) 
+{ 
+    return llvm-&gt;CreateMemoryBufferWithContentsOfFile(path, outMemBuf, outMessage); 
+}
+
+
+static inline LLVMBool parseBitcodeInContext(LLVMContextRef contextRef, LLVMMemoryBufferRef memBuf, LModule *outModule, char **outMessage)
+{ 
+    return llvm-&gt;ParseBitcodeInContext(contextRef, memBuf, outModule, outMessage); 
+}
+
+
+static inline void disposeMemoryBuffer(LLVMMemoryBufferRef memBuf){ llvm-&gt;DisposeMemoryBuffer(memBuf); }
+
+
+static inline LModule moduleCreateWithNameInContext(const char* moduleID, LContext context){ return llvm-&gt;ModuleCreateWithNameInContext(moduleID, context); }
+static inline void disposeModule(LModule m){ llvm-&gt;DisposeModule(m); }
+
</ins><span class="cx"> static inline LValue getParam(LValue function, unsigned index) { return llvm-&gt;GetParam(function, index); }
</span><ins>+
+static inline void getParamTypes(LType function, LType* dest) { return llvm-&gt;GetParamTypes(function, dest); }
</ins><span class="cx"> static inline LValue getUndef(LType type) { return llvm-&gt;GetUndef(type); }
</span><span class="cx"> 
</span><span class="cx"> enum BitExtension { ZeroExtend, SignExtend };
</span><span class="lines">@@ -156,6 +204,9 @@
</span><span class="cx"> static inline LValue constNull(LType type) { return llvm-&gt;ConstNull(type); }
</span><span class="cx"> static inline LValue constBitCast(LValue value, LType type) { return llvm-&gt;ConstBitCast(value, type); }
</span><span class="cx"> 
</span><ins>+static inline LBasicBlock getFirstBasicBlock(LValue function) { return llvm-&gt;GetFirstBasicBlock(function); }
+static inline LBasicBlock getNextBasicBlock(LBasicBlock block) { return llvm-&gt;GetNextBasicBlock(block); }
+
</ins><span class="cx"> static inline LBasicBlock appendBasicBlock(LContext context, LValue function, const char* name = &quot;&quot;) { return llvm-&gt;AppendBasicBlockInContext(context, function, name); }
</span><span class="cx"> static inline LBasicBlock insertBasicBlock(LContext context, LBasicBlock beforeBasicBlock, const char* name = &quot;&quot;) { return llvm-&gt;InsertBasicBlockInContext(context, beforeBasicBlock, name); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreftlFTLCompilecpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/ftl/FTLCompile.cpp (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/ftl/FTLCompile.cpp        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/ftl/FTLCompile.cpp        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -523,18 +523,32 @@
</span><span class="cx">         if (Options::llvmSimpleOpt()) {
</span><span class="cx">             modulePasses = llvm-&gt;CreatePassManager();
</span><span class="cx">             llvm-&gt;AddTargetData(llvm-&gt;GetExecutionEngineTargetData(engine), modulePasses);
</span><ins>+
+            LLVMTargetMachineRef targetMachine = llvm-&gt;GetExecutionEngineTargetMachine(engine);
+            
+            llvm-&gt;AddAnalysisPasses(targetMachine, modulePasses);
</ins><span class="cx">             llvm-&gt;AddPromoteMemoryToRegisterPass(modulePasses);
</span><ins>+
+            llvm-&gt;AddGlobalOptimizerPass(modulePasses);
+
+            llvm-&gt;AddFunctionInliningPass(modulePasses);
+            llvm-&gt;AddPruneEHPass(modulePasses);
+            llvm-&gt;AddGlobalDCEPass(modulePasses);
+            
</ins><span class="cx">             llvm-&gt;AddConstantPropagationPass(modulePasses);
</span><ins>+            llvm-&gt;AddAggressiveDCEPass(modulePasses);
</ins><span class="cx">             llvm-&gt;AddInstructionCombiningPass(modulePasses);
</span><span class="cx">             llvm-&gt;AddBasicAliasAnalysisPass(modulePasses);
</span><span class="cx">             llvm-&gt;AddTypeBasedAliasAnalysisPass(modulePasses);
</span><span class="cx">             llvm-&gt;AddGVNPass(modulePasses);
</span><span class="cx">             llvm-&gt;AddCFGSimplificationPass(modulePasses);
</span><span class="cx">             llvm-&gt;AddDeadStoreEliminationPass(modulePasses);
</span><ins>+
</ins><span class="cx">             llvm-&gt;RunPassManager(modulePasses, state.module);
</span><span class="cx">         } else {
</span><span class="cx">             LLVMPassManagerBuilderRef passBuilder = llvm-&gt;PassManagerBuilderCreate();
</span><span class="cx">             llvm-&gt;PassManagerBuilderSetOptLevel(passBuilder, Options::llvmOptimizationLevel());
</span><ins>+            llvm-&gt;PassManagerBuilderUseInlinerWithThreshold(passBuilder, 275);
</ins><span class="cx">             llvm-&gt;PassManagerBuilderSetSizeLevel(passBuilder, Options::llvmSizeLevel());
</span><span class="cx">         
</span><span class="cx">             functionPasses = llvm-&gt;CreateFunctionPassManagerForModule(state.module);
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreftlFTLLowerDFGToLLVMcpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(FTL_JIT)
</span><span class="cx"> 
</span><ins>+#include &quot;BundlePath.h&quot;
</ins><span class="cx"> #include &quot;CodeBlockWithJITType.h&quot;
</span><span class="cx"> #include &quot;DFGAbstractInterpreterInlines.h&quot;
</span><span class="cx"> #include &quot;DFGInPlaceAbstractState.h&quot;
</span><span class="lines">@@ -40,11 +41,13 @@
</span><span class="cx"> #include &quot;FTLOutput.h&quot;
</span><span class="cx"> #include &quot;FTLThunks.h&quot;
</span><span class="cx"> #include &quot;FTLWeightedTarget.h&quot;
</span><ins>+#include &quot;JSCInlines.h&quot;
</ins><span class="cx"> #include &quot;LinkBuffer.h&quot;
</span><span class="cx"> #include &quot;OperandsInlines.h&quot;
</span><del>-#include &quot;JSCInlines.h&quot;
</del><span class="cx"> #include &quot;VirtualRegister.h&quot;
</span><span class="cx"> #include &lt;atomic&gt;
</span><ins>+#include &lt;dlfcn.h&gt;
+#include &lt;llvm/InitializeLLVM.h&gt;
</ins><span class="cx"> #include &lt;wtf/ProcessID.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC { namespace FTL {
</span><span class="lines">@@ -93,6 +96,8 @@
</span><span class="cx">         , m_state(state.graph)
</span><span class="cx">         , m_interpreter(state.graph, m_state)
</span><span class="cx">         , m_stackmapIDs(0)
</span><ins>+        , m_tbaaKind(mdKindID(state.context, &quot;tbaa&quot;))
+        , m_tbaaStructKind(mdKindID(state.context, &quot;tbaa.struct&quot;))
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -109,7 +114,7 @@
</span><span class="cx">         m_graph.m_dominators.computeIfNecessary(m_graph);
</span><span class="cx">         
</span><span class="cx">         m_ftlState.module =
</span><del>-            llvm-&gt;ModuleCreateWithNameInContext(name.data(), m_ftlState.context);
</del><ins>+            moduleCreateWithNameInContext(name.data(), m_ftlState.context);
</ins><span class="cx">         
</span><span class="cx">         m_ftlState.function = addFunction(
</span><span class="cx">             m_ftlState.module, name.data(), functionType(m_out.int64));
</span><span class="lines">@@ -138,7 +143,35 @@
</span><span class="cx">         
</span><span class="cx">         m_out.appendTo(m_prologue, stackOverflow);
</span><span class="cx">         createPhiVariables();
</span><ins>+
+        Vector&lt;BasicBlock*&gt; depthFirst;
+        m_graph.getBlocksInDepthFirstOrder(depthFirst);
+
+        int maxNumberOfArguments = -1;
+        for (unsigned blockIndex = depthFirst.size(); blockIndex--; ) {
+            BasicBlock* block = depthFirst[blockIndex];
+            for (unsigned nodeIndex = block-&gt;size(); nodeIndex--; ) {
+                Node* m_node = block-&gt;at(nodeIndex);
+                if (m_node-&gt;hasKnownFunction()) {
+                    int numArgs = m_node-&gt;numChildren();
+                    NativeFunction func = m_node-&gt;knownFunction()-&gt;nativeFunction();
+                    Dl_info info;
+                    if (dladdr((void*)func, &amp;info)) {
+                        LValue callee = getFunctionBySymbol(info.dli_sname);
+                        if (callee &amp;&amp; numArgs &gt; maxNumberOfArguments)
+                            maxNumberOfArguments = numArgs;
+                    }
+                }
+            }
+        }
+
</ins><span class="cx">         LValue capturedAlloca = m_out.alloca(arrayType(m_out.int64, m_graph.m_nextMachineLocal));
</span><ins>+
+        if (maxNumberOfArguments &gt;= 0) {
+            m_execState = m_out.alloca(arrayType(m_out.int64, JSStack::CallFrameHeaderSize + maxNumberOfArguments));
+            m_execStorage = m_out.ptrToInt(m_execState, m_out.intPtr);        
+        }
+
</ins><span class="cx">         m_captured = m_out.add(
</span><span class="cx">             m_out.ptrToInt(capturedAlloca, m_out.intPtr),
</span><span class="cx">             m_out.constIntPtr(m_graph.m_nextMachineLocal * sizeof(Register)));
</span><span class="lines">@@ -175,9 +208,8 @@
</span><span class="cx">             m_out.stackmapIntrinsic(), m_out.constInt64(m_ftlState.handleExceptionStackmapID),
</span><span class="cx">             m_out.constInt32(MacroAssembler::maxJumpReplacementSize()));
</span><span class="cx">         m_out.unreachable();
</span><del>-        
-        Vector&lt;BasicBlock*&gt; depthFirst;
-        m_graph.getBlocksInDepthFirstOrder(depthFirst);
</del><ins>+
+
</ins><span class="cx">         for (unsigned i = 0; i &lt; depthFirst.size(); ++i)
</span><span class="cx">             compileBlock(depthFirst[i]);
</span><span class="cx">         
</span><span class="lines">@@ -3552,15 +3584,19 @@
</span><span class="cx">     {
</span><span class="cx">         setBoolean(m_out.bitNot(boolify(m_node-&gt;child1())));
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     void compileCallOrConstruct()
</span><span class="cx">     {
</span><span class="cx">         int dummyThisArgument = m_node-&gt;op() == Call ? 0 : 1;
</span><span class="cx">         int numPassedArgs = m_node-&gt;numChildren() - 1;
</span><span class="cx">         int numArgs = numPassedArgs + dummyThisArgument;
</span><del>-        
-        LValue callee = lowJSValue(m_graph.varArgChild(m_node, 0));
-        
</del><ins>+
+        if (m_node-&gt;hasKnownFunction()
+            &amp;&amp; possiblyCompileInlineableNativeCall(dummyThisArgument, numPassedArgs, numArgs))
+            return;
+
+        LValue jsCallee = lowJSValue(m_graph.varArgChild(m_node, 0));
+
</ins><span class="cx">         unsigned stackmapID = m_stackmapIDs++;
</span><span class="cx">         
</span><span class="cx">         Vector&lt;LValue&gt; arguments;
</span><span class="lines">@@ -3568,10 +3604,10 @@
</span><span class="cx">         arguments.append(m_out.constInt32(sizeOfCall()));
</span><span class="cx">         arguments.append(constNull(m_out.ref8));
</span><span class="cx">         arguments.append(m_out.constInt32(1 + JSStack::CallFrameHeaderSize - JSStack::CallerFrameAndPCSize + numArgs));
</span><del>-        arguments.append(callee); // callee -&gt; %rax
</del><ins>+        arguments.append(jsCallee); // callee -&gt; %rax
</ins><span class="cx">         arguments.append(getUndef(m_out.int64)); // code block
</span><span class="cx">         arguments.append(getUndef(m_out.int64)); // scope chain
</span><del>-        arguments.append(callee); // callee -&gt; stack
</del><ins>+        arguments.append(jsCallee); // callee -&gt; stack
</ins><span class="cx">         arguments.append(m_out.constInt64(numArgs)); // argument count and zeros for the tag
</span><span class="cx">         if (dummyThisArgument)
</span><span class="cx">             arguments.append(getUndef(m_out.int64));
</span><span class="lines">@@ -3587,7 +3623,7 @@
</span><span class="cx">         
</span><span class="cx">         setJSValue(call);
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     void compileJump()
</span><span class="cx">     {
</span><span class="cx">         m_out.jump(lowBlock(m_node-&gt;targetBlock()));
</span><span class="lines">@@ -3939,6 +3975,159 @@
</span><span class="cx"> #endif
</span><span class="cx">     }
</span><span class="cx">     
</span><ins>+    bool possiblyCompileInlineableNativeCall(int dummyThisArgument, int numPassedArgs, int numArgs)
+    {
+        JSFunction* knownFunction = m_node-&gt;knownFunction();
+        NativeFunction function = knownFunction-&gt;nativeFunction();
+        Dl_info info;
+        if (dladdr((void*)function, &amp;info)) {
+            LValue callee = getFunctionBySymbol(info.dli_sname);
+            LType typeCallee;
+            if (callee &amp;&amp; (typeCallee = typeOf(callee)) &amp;&amp; (typeCallee = getElementType(typeCallee))) {
+
+                JSScope* scope = knownFunction-&gt;scopeUnchecked();
+                m_out.storePtr(m_callFrame, m_execStorage, m_heaps.CallFrame_callerFrame);
+                m_out.storePtr(constNull(m_out.intPtr), addressFor(m_execStorage, JSStack::CodeBlock));
+                m_out.storePtr(weakPointer(scope), addressFor(m_execStorage, JSStack::ScopeChain));
+                m_out.storePtr(weakPointer(knownFunction), addressFor(m_execStorage, JSStack::Callee));
+
+                m_out.store64(m_out.constInt64(numArgs), addressFor(m_execStorage, JSStack::ArgumentCount));
+
+                if (dummyThisArgument) 
+                    m_out.storePtr(getUndef(m_out.int64), addressFor(m_execStorage, JSStack::ThisArgument));
+                
+                for (int i = 0; i &lt; numPassedArgs; ++i) {
+                    m_out.storePtr(lowJSValue(m_graph.varArgChild(m_node, 1 + i)),
+                        addressFor(m_execStorage, dummyThisArgument ? JSStack::FirstArgument : JSStack::ThisArgument, i * sizeof(Register)));
+                }
+
+                LType typeCalleeArg;
+                getParamTypes(typeCallee, &amp;typeCalleeArg);
+                LValue calleeCallFrame = m_out.address(m_execState, m_heaps.CallFrame_callerFrame).value();
+                m_out.storePtr(m_out.ptrToInt(calleeCallFrame, m_out.intPtr), m_out.absolute(&amp;vm().topCallFrame));
+                
+                LValue call = vmCall(callee, 
+                    m_out.bitCast(calleeCallFrame, typeCalleeArg));
+
+                if (Options::verboseCompilation())
+                    dataLog(&quot;Inlining: &quot;, info.dli_sname, &quot;\n&quot;);
+
+                setJSValue(call);
+                return true;
+            }
+        }
+        return false;
+    }
+
+    LValue getFunctionBySymbol(const CString symbol)
+    {
+        if (!m_ftlState.symbolTable.contains(symbol)) 
+            return nullptr;
+        if (!getModuleByPathForSymbol(m_ftlState.symbolTable.get(symbol), symbol))
+            return nullptr;
+        return getNamedFunction(m_ftlState.module, symbol.data());
+    }
+
+    bool getModuleByPathForSymbol(const CString path, const CString symbol)
+    {
+        if (m_ftlState.nativeLoadedLibraries.contains(path)) {
+            LValue function = getNamedFunction(m_ftlState.module, symbol.data());
+            if (!isInlinableSize(function)) {
+                // We had no choice but to compile this function, but don't try to inline it ever again.
+                m_ftlState.symbolTable.remove(symbol);
+                return false;
+            }
+            return true;
+        }
+
+        LMemoryBuffer memBuf;
+        
+        ASSERT(isX86() || isARM64());
+
+        const CString actualPath = toCString(bundlePath().data(), 
+            isX86() ? &quot;/Resources/Runtime/x86_64/&quot; : &quot;/Resources/Runtime/arm64/&quot;,
+            path.data());
+
+        if (createMemoryBufferWithContentsOfFile(actualPath.data(), &amp;memBuf, nullptr)) {
+            if (Options::verboseCompilation()) 
+                dataLog(&quot;Failed to load module at &quot;, actualPath.data(), &quot;\n for symbol &quot;, symbol.data());
+            return false;
+        }
+
+        LModule module;
+
+        if (parseBitcodeInContext(m_ftlState.context, memBuf, &amp;module, nullptr)) {
+            disposeMemoryBuffer(memBuf);
+            return false;
+        }
+
+        disposeMemoryBuffer(memBuf);
+        
+        if (LValue function = getNamedFunction(m_ftlState.module, symbol.data())) {
+            if (!isInlinableSize(function)) {
+                m_ftlState.symbolTable.remove(symbol);
+                disposeModule(module);
+                return false;
+            }
+        }
+
+        Vector&lt;CString&gt; namedFunctions;
+        for (LValue function = getFirstFunction(module); function; function = getNextFunction(function)) {
+            CString functionName(getValueName(function));
+            namedFunctions.append(functionName);
+            
+            for (LBasicBlock basicBlock = getFirstBasicBlock(function); basicBlock; basicBlock = getNextBasicBlock(basicBlock)) {
+                for (LValue instruction = getFirstInstruction(basicBlock); instruction; instruction = getNextInstruction(instruction)) {
+                    setMetadata(instruction, m_tbaaKind, nullptr);
+                    setMetadata(instruction, m_tbaaStructKind, nullptr);
+                }
+            }
+        }
+
+        Vector&lt;CString&gt; namedGlobals;
+        for (LValue global = getFirstGlobal(module); global; global = getNextGlobal(global)) {
+            CString globalName(getValueName(global));
+            namedGlobals.append(globalName);
+        }
+
+        if (linkModules(m_ftlState.module, module, LLVMLinkerDestroySource, nullptr))
+            return false;
+        
+        for (CString* symbol = namedFunctions.begin(); symbol != namedFunctions.end(); ++symbol) {
+            LValue function = getNamedFunction(m_ftlState.module, symbol-&gt;data());
+            setVisibility(function, LLVMHiddenVisibility);
+            if (!isDeclaration(function)) {
+                setLinkage(function, LLVMPrivateLinkage);
+
+                if (ASSERT_DISABLED)
+                    removeFunctionAttr(function, LLVMStackProtectAttribute);
+            }
+        }
+
+        for (CString* symbol = namedGlobals.begin(); symbol != namedGlobals.end(); ++symbol) {
+            LValue global = getNamedGlobal(m_ftlState.module, symbol-&gt;data());
+            setVisibility(global, LLVMHiddenVisibility);
+            if (!isDeclaration(global))
+                setLinkage(global, LLVMPrivateLinkage);
+        }
+
+        m_ftlState.nativeLoadedLibraries.add(path);
+        return true;
+    }
+
+    bool isInlinableSize(LValue function)
+    {
+        size_t instructionCount = 0;
+        size_t maxSize = Options::maximumLLVMInstructionCountForNativeInlining();
+        for (LBasicBlock basicBlock = getFirstBasicBlock(function); basicBlock; basicBlock = getNextBasicBlock(basicBlock)) {
+            for (LValue instruction = getFirstInstruction(basicBlock); instruction; instruction = getNextInstruction(instruction)) {
+                if (++instructionCount &gt;= maxSize)
+                    return false;
+            }
+        }
+        return true;
+    }
+
</ins><span class="cx">     LValue didOverflowStack()
</span><span class="cx">     {
</span><span class="cx">         // This does a very simple leaf function analysis. The invariant of FTL call
</span><span class="lines">@@ -6122,6 +6311,8 @@
</span><span class="cx">     LBasicBlock m_handleExceptions;
</span><span class="cx">     HashMap&lt;BasicBlock*, LBasicBlock&gt; m_blocks;
</span><span class="cx">     
</span><ins>+    LValue m_execState;
+    LValue m_execStorage;
</ins><span class="cx">     LValue m_callFrame;
</span><span class="cx">     LValue m_captured;
</span><span class="cx">     LValue m_tagTypeNumber;
</span><span class="lines">@@ -6153,6 +6344,8 @@
</span><span class="cx">     Node* m_node;
</span><span class="cx">     
</span><span class="cx">     uint32_t m_stackmapIDs;
</span><ins>+    unsigned m_tbaaKind;
+    unsigned m_tbaaStructKind;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> void lowerDFGToLLVM(State&amp; state)
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreftlFTLStatecpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.cpp (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.cpp        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.cpp        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -32,6 +32,9 @@
</span><span class="cx"> #include &quot;FTLForOSREntryJITCode.h&quot;
</span><span class="cx"> #include &quot;FTLJITCode.h&quot;
</span><span class="cx"> #include &quot;FTLJITFinalizer.h&quot;
</span><ins>+#include &quot;InlineRuntimeSymbolTable.h&quot;
+#include &lt;llvm/InitializeLLVM.h&gt;
+#include &lt;stdio.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace JSC { namespace FTL {
</span><span class="cx"> 
</span><span class="lines">@@ -46,6 +49,12 @@
</span><span class="cx">     , compactUnwind(0)
</span><span class="cx">     , compactUnwindSize(0)
</span><span class="cx"> {
</span><ins>+
+#define SYMBOL_TABLE_ADD(symbol, file) \
+    symbolTable.fastAdd(symbol, file);
+    FOR_EACH_LIBRARY_SYMBOL(SYMBOL_TABLE_ADD)
+#undef SYMBOL_TABLE_ADD
+    
</ins><span class="cx">     switch (graph.m_plan.mode) {
</span><span class="cx">     case FTLMode: {
</span><span class="cx">         jitCode = adoptRef(new JITCode());
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreftlFTLStateh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/ftl/FTLState.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -81,6 +81,9 @@
</span><span class="cx">     RefPtr&lt;DataSection&gt; stackmapsSection;
</span><span class="cx">     
</span><span class="cx">     void dumpState(const char* when);
</span><ins>+
+    HashSet&lt;CString&gt; nativeLoadedLibraries;
+    HashMap&lt;CString, CString&gt; symbolTable;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } } // namespace JSC::FTL
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreheapHandleStackh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/heap/HandleStack.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/heap/HandleStack.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/heap/HandleStack.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx">     void visit(HeapRootVisitor&amp;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void grow();
</del><ins>+    JS_EXPORT_PRIVATE void grow();
</ins><span class="cx">     void zapTo(Frame&amp;);
</span><span class="cx">     HandleSlot findFirstAfter(HandleSlot);
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellvmInitializeLLVMh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVM.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVM.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVM.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -28,10 +28,15 @@
</span><span class="cx"> 
</span><span class="cx"> #if HAVE(LLVM)
</span><span class="cx"> 
</span><ins>+#include &lt;string&gt;
+#include &lt;wtf/text/CString.h&gt;
+
</ins><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><span class="cx"> void initializeLLVMImpl();
</span><span class="cx"> 
</span><ins>+extern const CString* llvmBitcodeLibraryForInliningPath;
+
</ins><span class="cx"> // You msut call this before using JSC::llvm. It's safe to call this multiple times.
</span><span class="cx"> // Returns true if we successfully loaded LLVM. Returns false if we didn't.
</span><span class="cx"> bool initializeLLVM();
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellvmInitializeLLVMMaccpp"></a>
<div class="addfile"><h4>Added: branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVMMac.cpp (0 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVMMac.cpp                                (rev 0)
+++ branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVMMac.cpp        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -0,0 +1,47 @@
</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. ``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
+ * 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. 
+ */
+
+#include &quot;config.h&quot;
+#include &quot;InitializeLLVM.h&quot;
+
+#if HAVE(LLVM)
+
+#include &quot;BundlePath.h&quot;
+#include &quot;InitializeLLVMPOSIX.h&quot;
+#include &lt;wtf/StringPrintStream.h&gt;
+
+// Use the &quot;JS&quot; prefix to make check-for-inappropriate-objc-class-names happy. I
+// think this is better than hacking that script.
+
+namespace JSC {
+
+void initializeLLVMImpl()
+{
+    initializeLLVMPOSIX(toCString(bundlePath().data(), &quot;/Libraries/libllvmForJSC.dylib&quot;).data());
+}
+
+} // namespace JSC
+
+#endif // HAVE(LLVM)
</ins></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellvmInitializeLLVMMacmm"></a>
<div class="delfile"><h4>Deleted: branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVMMac.mm (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVMMac.mm        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/llvm/InitializeLLVMMac.mm        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -1,57 +0,0 @@
</span><del>-/*
- * 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. ``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
- * 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. 
- */
-
-#import &quot;config.h&quot;
-#import &quot;InitializeLLVM.h&quot;
-
-#if HAVE(LLVM)
-
-#import &quot;InitializeLLVMPOSIX.h&quot;
-#import &lt;Foundation/Foundation.h&gt;
-
-// Use the &quot;JS&quot; prefix to make check-for-inappropriate-objc-class-names happy. I
-// think this is better than hacking that script.
-
-@interface JSJavaScriptCoreBundleFinder : NSObject
-@end
-
-@implementation JSJavaScriptCoreBundleFinder
-@end
-
-namespace JSC {
-
-void initializeLLVMImpl()
-{
-    @autoreleasepool {
-        NSBundle *myBundle = [NSBundle bundleForClass:[JSJavaScriptCoreBundleFinder class]];
-        NSString *path = [[myBundle bundlePath] stringByAppendingPathComponent:@&quot;Libraries/libllvmForJSC.dylib&quot;];
-        
-        initializeLLVMPOSIX([path UTF8String]);
-    }
-}
-
-} // namespace JSC
-
-#endif // HAVE(LLVM)
</del></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellvmLLVMAPIFunctionsh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llvm/LLVMAPIFunctions.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llvm/LLVMAPIFunctions.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/llvm/LLVMAPIFunctions.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -29,6 +29,13 @@
</span><span class="cx"> #include &quot;LLVMHeaders.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #define FOR_EACH_LLVM_API_FUNCTION(macro) \
</span><ins>+    macro(LLVMBool, ParseBitcode, (LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutModule, char **OutMessage)) \
+    macro(LLVMBool, ParseBitcodeInContext, (LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutModule, char **OutMessage)) \
+    macro(LLVMBool, GetBitcodeModuleInContext, (LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, char **OutMessage)) \
+    macro(LLVMBool, GetBitcodeModule, (LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, char **OutMessage)) \
+    macro(LLVMBool, GetBitcodeModuleProviderInContext, (LLVMContextRef ContextRef, LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef *OutMP, char **OutMessage)) \
+    macro(LLVMBool, GetBitcodeModuleProvider, (LLVMMemoryBufferRef MemBuf, LLVMModuleProviderRef *OutMP, char **OutMessage)) \
+    macro(LLVMBool, LinkModules, (LLVMModuleRef Dest, LLVMModuleRef Str, LLVMLinkerMode Mode, char **OutMessage)) \
</ins><span class="cx">     macro(void, InitializeCore, (LLVMPassRegistryRef R)) \
</span><span class="cx">     macro(void, Shutdown, ()) \
</span><span class="cx">     macro(char *, CreateMessage, (const char *Message)) \
</span><span class="lines">@@ -51,6 +58,7 @@
</span><span class="cx">     macro(void, SetModuleInlineAsm, (LLVMModuleRef M, const char *Asm)) \
</span><span class="cx">     macro(LLVMContextRef, GetModuleContext, (LLVMModuleRef M)) \
</span><span class="cx">     macro(LLVMTypeRef, GetTypeByName, (LLVMModuleRef M, const char *Name)) \
</span><ins>+    macro(void, DumpType, (LLVMTypeRef Val)) \
</ins><span class="cx">     macro(unsigned, GetNamedMetadataNumOperands, (LLVMModuleRef M, const char* name)) \
</span><span class="cx">     macro(void, GetNamedMetadataOperands, (LLVMModuleRef M, const char* name, LLVMValueRef *Dest)) \
</span><span class="cx">     macro(void, AddNamedMetadataOperand, (LLVMModuleRef M, const char* name, LLVMValueRef Val)) \
</span><span class="lines">@@ -575,6 +583,7 @@
</span><span class="cx">     macro(LLVMBool, FindFunction, (LLVMExecutionEngineRef EE, const char *Name, LLVMValueRef *OutFn)) \
</span><span class="cx">     macro(void *, RecompileAndRelinkFunction, (LLVMExecutionEngineRef EE, LLVMValueRef Fn)) \
</span><span class="cx">     macro(LLVMTargetDataRef, GetExecutionEngineTargetData, (LLVMExecutionEngineRef EE)) \
</span><ins>+    macro(LLVMTargetMachineRef, GetExecutionEngineTargetMachine, (LLVMExecutionEngineRef EE)) \
</ins><span class="cx">     macro(void, AddGlobalMapping, (LLVMExecutionEngineRef EE, LLVMValueRef Global, void* Addr)) \
</span><span class="cx">     macro(void *, GetPointerToGlobal, (LLVMExecutionEngineRef EE, LLVMValueRef Global)) \
</span><span class="cx">     macro(LLVMMCJITMemoryManagerRef, CreateSimpleMCJITMemoryManager, (void *Opaque, LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, LLVMMemoryManagerDestroyCallback Destory)) \
</span><span class="lines">@@ -601,9 +610,18 @@
</span><span class="cx">     macro(void, PassManagerBuilderPopulateFunctionPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
</span><span class="cx">     macro(void, PassManagerBuilderPopulateModulePassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM)) \
</span><span class="cx">     macro(void, PassManagerBuilderPopulateLTOPassManager, (LLVMPassManagerBuilderRef PMB, LLVMPassManagerRef PM, LLVMBool Internalize, LLVMBool RunInliner)) \
</span><ins>+    macro(void, AddAnalysisPasses, (LLVMTargetMachineRef T, LLVMPassManagerRef PM)) \
+    macro(void, AddInternalizePass, (LLVMPassManagerRef PM, unsigned AllButMain)) \
</ins><span class="cx">     macro(void, AddAggressiveDCEPass, (LLVMPassManagerRef PM)) \
</span><span class="cx">     macro(void, AddCFGSimplificationPass, (LLVMPassManagerRef PM)) \
</span><span class="cx">     macro(void, AddDeadStoreEliminationPass, (LLVMPassManagerRef PM)) \
</span><ins>+    macro(void, AddFunctionInliningPass, (LLVMPassManagerRef PM)) \
+    macro(void, AddGlobalDCEPass, (LLVMPassManagerRef PM)) \
+    macro(void, AddPruneEHPass, (LLVMPassManagerRef PM)) \
+    macro(void, AddIPSCCPPass, (LLVMPassManagerRef PM)) \
+    macro(void, AddDeadArgEliminationPass, (LLVMPassManagerRef PM)) \
+    macro(void, AddConstantMergePass, (LLVMPassManagerRef PM)) \
+    macro(void, AddGlobalOptimizerPass, (LLVMPassManagerRef PM)) \
</ins><span class="cx">     macro(void, AddGVNPass, (LLVMPassManagerRef PM)) \
</span><span class="cx">     macro(void, AddIndVarSimplifyPass, (LLVMPassManagerRef PM)) \
</span><span class="cx">     macro(void, AddInstructionCombiningPass, (LLVMPassManagerRef PM)) \
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellvmLLVMHeadersh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llvm/LLVMHeaders.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llvm/LLVMHeaders.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/llvm/LLVMHeaders.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -43,10 +43,15 @@
</span><span class="cx"> #endif // COMPILER(CLANG)
</span><span class="cx"> 
</span><span class="cx"> #include &lt;llvm-c/Analysis.h&gt;
</span><ins>+#include &lt;llvm-c/BitReader.h&gt;
</ins><span class="cx"> #include &lt;llvm-c/Core.h&gt;
</span><span class="cx"> #include &lt;llvm-c/Disassembler.h&gt;
</span><span class="cx"> #include &lt;llvm-c/ExecutionEngine.h&gt;
</span><ins>+#include &lt;llvm-c/Initialization.h&gt;
+#include &lt;llvm-c/Linker.h&gt;
</ins><span class="cx"> #include &lt;llvm-c/Target.h&gt;
</span><ins>+#include &lt;llvm-c/TargetMachine.h&gt;
+#include &lt;llvm-c/Transforms/IPO.h&gt;
</ins><span class="cx"> #include &lt;llvm-c/Transforms/PassManagerBuilder.h&gt;
</span><span class="cx"> #include &lt;llvm-c/Transforms/Scalar.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeBundlePathh"></a>
<div class="addfile"><h4>Added: branches/ftlopt/Source/JavaScriptCore/runtime/BundlePath.h (0 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/BundlePath.h                                (rev 0)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/BundlePath.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+/*
+ * Copyright (C) 2013, 2014 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. ``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
+ * 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 BundlePath_h
+#define BundlePath_h
+
+#include &lt;string&gt;
+#include &lt;wtf/text/CString.h&gt;
+
+namespace JSC {
+
+const CString&amp; bundlePath();
+
+} // namespace JSC
+
+#endif // BundlePath_h
+
</ins></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeBundlePathmm"></a>
<div class="addfile"><h4>Added: branches/ftlopt/Source/JavaScriptCore/runtime/BundlePath.mm (0 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/BundlePath.mm                                (rev 0)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/BundlePath.mm        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -0,0 +1,56 @@
</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. ``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
+ * 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. 
+ */
+
+#import &quot;config.h&quot;
+#import &quot;BundlePath.h&quot;
+
+#import &lt;Foundation/Foundation.h&gt;
+#import &lt;string&gt;
+
+@interface JSJavaScriptCoreFinder : NSObject
+@end
+
+@implementation JSJavaScriptCoreFinder
+@end
+
+
+namespace JSC {
+
+const CString* constantBundlePath = nullptr;
+
+const CString&amp; bundlePath()
+{
+    if (!constantBundlePath) {
+        @autoreleasepool {
+            NSBundle* myBundle = [NSBundle bundleForClass:[JSJavaScriptCoreFinder class]];
+
+            constantBundlePath = new CString([[myBundle bundlePath] UTF8String]);
+        }
+    }
+
+    return *constantBundlePath;
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeDateConversionh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/DateConversion.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/DateConversion.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/DateConversion.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx">     DateTimeFormatDateAndTime = DateTimeFormatDate | DateTimeFormatTime
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-WTF::String formatDateTime(const GregorianDateTime&amp;, DateTimeFormat, bool asUTCVariant);
</del><ins>+JS_EXPORT_PRIVATE WTF::String formatDateTime(const GregorianDateTime&amp;, DateTimeFormat, bool asUTCVariant);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeDateInstanceh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/DateInstance.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/DateInstance.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/DateInstance.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx">         void finishCreation(VM&amp;);
</span><span class="cx">         JS_EXPORT_PRIVATE void finishCreation(VM&amp;, double);
</span><span class="cx"> 
</span><del>-        static void destroy(JSCell*);
</del><ins>+        JS_EXPORT_PRIVATE static void destroy(JSCell*);
</ins><span class="cx">  
</span><span class="cx">     public:
</span><span class="cx">         typedef JSWrapperObject Base;
</span><span class="lines">@@ -74,8 +74,8 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        const GregorianDateTime* calculateGregorianDateTime(ExecState*) const;
-        const GregorianDateTime* calculateGregorianDateTimeUTC(ExecState*) const;
</del><ins>+        JS_EXPORT_PRIVATE const GregorianDateTime* calculateGregorianDateTime(ExecState*) const;
+        JS_EXPORT_PRIVATE const GregorianDateTime* calculateGregorianDateTimeUTC(ExecState*) const;
</ins><span class="cx"> 
</span><span class="cx">         mutable RefPtr&lt;DateInstanceData&gt; m_data;
</span><span class="cx">     };
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeExceptionHelpersh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/ExceptionHelpers.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/ExceptionHelpers.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/ExceptionHelpers.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -50,9 +50,9 @@
</span><span class="cx"> JSObject* createErrorForInvalidGlobalAssignment(ExecState*, const String&amp;);
</span><span class="cx"> JSString* errorDescriptionForValue(ExecState*, JSValue);
</span><span class="cx"> 
</span><del>-JSObject* throwOutOfMemoryError(ExecState*);
-JSObject* throwStackOverflowError(ExecState*);
-JSObject* throwTerminatedExecutionException(ExecState*);
</del><ins>+JS_EXPORT_PRIVATE JSObject* throwOutOfMemoryError(ExecState*);
+JS_EXPORT_PRIVATE JSObject* throwStackOverflowError(ExecState*);
+JS_EXPORT_PRIVATE JSObject* throwTerminatedExecutionException(ExecState*);
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class TerminatedExecutionError : public JSNonFinalObject {
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeJSArrayh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/JSArray.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/JSArray.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/JSArray.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -61,20 +61,20 @@
</span><span class="cx"> 
</span><span class="cx">     JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&amp;, bool throwException);
</span><span class="cx"> 
</span><del>-    static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
</del><ins>+    JS_EXPORT_PRIVATE static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
</ins><span class="cx"> 
</span><span class="cx">     DECLARE_EXPORT_INFO;
</span><span class="cx">         
</span><span class="cx">     unsigned length() const { return getArrayLength(); }
</span><span class="cx">     // OK to use on new arrays, but not if it might be a RegExpMatchArray.
</span><del>-    bool setLength(ExecState*, unsigned, bool throwException = false);
</del><ins>+    JS_EXPORT_PRIVATE bool setLength(ExecState*, unsigned, bool throwException = false);
</ins><span class="cx"> 
</span><del>-    void sort(ExecState*);
-    void sort(ExecState*, JSValue compareFunction, CallType, const CallData&amp;);
-    void sortNumeric(ExecState*, JSValue compareFunction, CallType, const CallData&amp;);
</del><ins>+    JS_EXPORT_PRIVATE void sort(ExecState*);
+    JS_EXPORT_PRIVATE void sort(ExecState*, JSValue compareFunction, CallType, const CallData&amp;);
+    JS_EXPORT_PRIVATE void sortNumeric(ExecState*, JSValue compareFunction, CallType, const CallData&amp;);
</ins><span class="cx"> 
</span><del>-    void push(ExecState*, JSValue);
-    JSValue pop(ExecState*);
</del><ins>+    JS_EXPORT_PRIVATE void push(ExecState*, JSValue);
+    JS_EXPORT_PRIVATE JSValue pop(ExecState*);
</ins><span class="cx"> 
</span><span class="cx">     enum ShiftCountMode {
</span><span class="cx">         // This form of shift hints that we're doing queueing. With this assumption in hand,
</span><span class="lines">@@ -131,8 +131,8 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void fillArgList(ExecState*, MarkedArgumentBuffer&amp;);
-    void copyToArguments(ExecState*, CallFrame*, uint32_t length, int32_t firstVarArgOffset);
</del><ins>+    JS_EXPORT_PRIVATE void fillArgList(ExecState*, MarkedArgumentBuffer&amp;);
+    JS_EXPORT_PRIVATE void copyToArguments(ExecState*, CallFrame*, uint32_t length, int32_t firstVarArgOffset);
</ins><span class="cx"> 
</span><span class="cx">     static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue prototype, IndexingType indexingType)
</span><span class="cx">     {
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx">     }
</span><span class="cx">         
</span><span class="cx">     bool shiftCountWithAnyIndexingType(ExecState*, unsigned startIndex, unsigned count);
</span><del>-    bool shiftCountWithArrayStorage(unsigned startIndex, unsigned count, ArrayStorage*);
</del><ins>+    JS_EXPORT_PRIVATE bool shiftCountWithArrayStorage(unsigned startIndex, unsigned count, ArrayStorage*);
</ins><span class="cx"> 
</span><span class="cx">     bool unshiftCountWithAnyIndexingType(ExecState*, unsigned startIndex, unsigned count);
</span><span class="cx">     bool unshiftCountWithArrayStorage(ExecState*, unsigned startIndex, unsigned count, ArrayStorage*);
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeJSCJSValueh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/JSCJSValue.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/JSCJSValue.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/JSCJSValue.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -240,14 +240,14 @@
</span><span class="cx">     JSObject* toObject(ExecState*, JSGlobalObject*) const;
</span><span class="cx"> 
</span><span class="cx">     // Integer conversions.
</span><del>-    JS_EXPORT_PRIVATE double toInteger(ExecState*) const;
-    double toIntegerPreserveNaN(ExecState*) const;
</del><ins>+    double toInteger(ExecState*) const;
+    JS_EXPORT_PRIVATE double toIntegerPreserveNaN(ExecState*) const;
</ins><span class="cx">     int32_t toInt32(ExecState*) const;
</span><span class="cx">     uint32_t toUInt32(ExecState*) const;
</span><span class="cx"> 
</span><span class="cx">     // Floating point conversions (this is a convenience method for webcore;
</span><span class="cx">     // signle precision float is not a representation used in JS or JSC).
</span><del>-    float toFloat(ExecState* exec) const { return static_cast&lt;float&gt;(toNumber(exec)); }
</del><ins>+    JS_EXPORT_PRIVATE float toFloat(ExecState* exec) const { return static_cast&lt;float&gt;(toNumber(exec)); }
</ins><span class="cx"> 
</span><span class="cx">     // Object operations, with the toObject operation included.
</span><span class="cx">     JSValue get(ExecState*, PropertyName) const;
</span><span class="lines">@@ -255,8 +255,8 @@
</span><span class="cx">     JSValue get(ExecState*, unsigned propertyName) const;
</span><span class="cx">     JSValue get(ExecState*, unsigned propertyName, PropertySlot&amp;) const;
</span><span class="cx">     void put(ExecState*, PropertyName, JSValue, PutPropertySlot&amp;);
</span><del>-    void putToPrimitive(ExecState*, PropertyName, JSValue, PutPropertySlot&amp;);
-    void putToPrimitiveByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
</del><ins>+    JS_EXPORT_PRIVATE void putToPrimitive(ExecState*, PropertyName, JSValue, PutPropertySlot&amp;);
+    JS_EXPORT_PRIVATE void putToPrimitiveByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
</ins><span class="cx">     void putByIndex(ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
</span><span class="cx"> 
</span><span class="cx">     JSValue toThis(ExecState*, ECMAMode) const;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeJSDateMathh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/JSDateMath.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/JSDateMath.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/JSDateMath.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -50,10 +50,10 @@
</span><span class="cx"> 
</span><span class="cx"> class VM;
</span><span class="cx"> 
</span><del>-void msToGregorianDateTime(VM&amp;, double, bool outputIsUTC, GregorianDateTime&amp;);
-double gregorianDateTimeToMS(VM&amp;, const GregorianDateTime&amp;, double, bool inputIsUTC);
-double getUTCOffset(VM&amp;);
-double parseDate(VM&amp;, const WTF::String&amp;);
</del><ins>+JS_EXPORT_PRIVATE void msToGregorianDateTime(VM&amp;, double, bool outputIsUTC, GregorianDateTime&amp;);
+JS_EXPORT_PRIVATE double gregorianDateTimeToMS(VM&amp;, const GregorianDateTime&amp;, double, bool inputIsUTC);
+JS_EXPORT_PRIVATE double getUTCOffset(VM&amp;);
+JS_EXPORT_PRIVATE double parseDate(VM&amp;, const WTF::String&amp;);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeJSObjecth"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/JSObject.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/JSObject.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/JSObject.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -110,8 +110,8 @@
</span><span class="cx">     JS_EXPORT_PRIVATE static String className(const JSObject*);
</span><span class="cx"> 
</span><span class="cx">     JSValue prototype() const;
</span><del>-    void setPrototype(VM&amp;, JSValue prototype);
-    bool setPrototypeWithCycleCheck(ExecState*, JSValue prototype);
</del><ins>+    JS_EXPORT_PRIVATE void setPrototype(VM&amp;, JSValue prototype);
+    JS_EXPORT_PRIVATE bool setPrototypeWithCycleCheck(ExecState*, JSValue prototype);
</ins><span class="cx">         
</span><span class="cx">     bool mayInterceptIndexedAccesses()
</span><span class="cx">     {
</span><span class="lines">@@ -131,9 +131,9 @@
</span><span class="cx">     // The key difference between this and getOwnPropertySlot is that getOwnPropertySlot
</span><span class="cx">     // currently returns incorrect results for the DOM window (with non-own properties)
</span><span class="cx">     // being returned. Once this is fixed we should migrate code &amp; remove this method.
</span><del>-    bool getOwnPropertyDescriptor(ExecState*, PropertyName, PropertyDescriptor&amp;);
</del><ins>+    JS_EXPORT_PRIVATE bool getOwnPropertyDescriptor(ExecState*, PropertyName, PropertyDescriptor&amp;);
</ins><span class="cx"> 
</span><del>-    bool allowsAccessFrom(ExecState*);
</del><ins>+    JS_EXPORT_PRIVATE bool allowsAccessFrom(ExecState*);
</ins><span class="cx"> 
</span><span class="cx">     unsigned getArrayLength() const
</span><span class="cx">     {
</span><span class="lines">@@ -589,7 +589,7 @@
</span><span class="cx">     JS_EXPORT_PRIVATE void putDirectNativeFunction(VM&amp;, JSGlobalObject*, const PropertyName&amp;, unsigned functionLength, NativeFunction, Intrinsic, unsigned attributes);
</span><span class="cx">     JSFunction* putDirectBuiltinFunction(VM&amp;, JSGlobalObject*, const PropertyName&amp;, FunctionExecutable*, unsigned attributes);
</span><span class="cx">     JSFunction* putDirectBuiltinFunctionWithoutTransition(VM&amp;, JSGlobalObject*, const PropertyName&amp;, FunctionExecutable*, unsigned attributes);
</span><del>-    void putDirectNativeFunctionWithoutTransition(VM&amp;, JSGlobalObject*, const PropertyName&amp;, unsigned functionLength, NativeFunction, Intrinsic, unsigned attributes);
</del><ins>+    JS_EXPORT_PRIVATE void putDirectNativeFunctionWithoutTransition(VM&amp;, JSGlobalObject*, const PropertyName&amp;, unsigned functionLength, NativeFunction, Intrinsic, unsigned attributes);
</ins><span class="cx"> 
</span><span class="cx">     JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&amp;, bool shouldThrow);
</span><span class="cx"> 
</span><span class="lines">@@ -600,8 +600,8 @@
</span><span class="cx">     bool isActivationObject() const;
</span><span class="cx">     bool isErrorInstance() const;
</span><span class="cx"> 
</span><del>-    void seal(VM&amp;);
-    void freeze(VM&amp;);
</del><ins>+    JS_EXPORT_PRIVATE void seal(VM&amp;);
+    JS_EXPORT_PRIVATE void freeze(VM&amp;);
</ins><span class="cx">     JS_EXPORT_PRIVATE void preventExtensions(VM&amp;);
</span><span class="cx">     bool isSealed(VM&amp; vm) { return structure(vm)-&gt;isSealed(vm); }
</span><span class="cx">     bool isFrozen(VM&amp; vm) { return structure(vm)-&gt;isFrozen(vm); }
</span><span class="lines">@@ -978,7 +978,7 @@
</span><span class="cx">     ContiguousDoubles ensureDoubleSlow(VM&amp;);
</span><span class="cx">     ContiguousJSValues ensureContiguousSlow(VM&amp;);
</span><span class="cx">     ContiguousJSValues rageEnsureContiguousSlow(VM&amp;);
</span><del>-    ArrayStorage* ensureArrayStorageSlow(VM&amp;);
</del><ins>+    JS_EXPORT_PRIVATE ArrayStorage* ensureArrayStorageSlow(VM&amp;);
</ins><span class="cx">     
</span><span class="cx">     enum DoubleToContiguousMode { EncodeValueAsDouble, RageConvertDoubleToValue };
</span><span class="cx">     template&lt;DoubleToContiguousMode mode&gt;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeJSWrapperObjecth"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/JSWrapperObject.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/JSWrapperObject.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/JSWrapperObject.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">         explicit JSWrapperObject(VM&amp;, Structure*);
</span><span class="cx">         static const unsigned StructureFlags = OverridesVisitChildren | Base::StructureFlags;
</span><span class="cx"> 
</span><del>-        static void visitChildren(JSCell*, SlotVisitor&amp;);
</del><ins>+        JS_EXPORT_PRIVATE static void visitChildren(JSCell*, SlotVisitor&amp;);
</ins><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         WriteBarrier&lt;Unknown&gt; m_internalValue;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeOptionsh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/Options.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/Options.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/Options.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -196,6 +196,8 @@
</span><span class="cx">     v(unsigned, maximumInliningDepthForMustInline, 7) \
</span><span class="cx">     v(unsigned, maximumInliningRecursionForMustInline, 3) \
</span><span class="cx">     \
</span><ins>+    v(unsigned, maximumLLVMInstructionCountForNativeInlining, 80) \
+    \
</ins><span class="cx">     /* Maximum size of a caller for enabling inlining. This is purely to protect us */\
</span><span class="cx">     /* from super long compiles that take a lot of memory. */\
</span><span class="cx">     v(unsigned, maximumInliningCallerSize, 10000) \
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeRegExph"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/RegExp.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/RegExp.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/RegExp.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">         const char* errorMessage() const { return m_constructionError; }
</span><span class="cx"> 
</span><span class="cx">         JS_EXPORT_PRIVATE int match(VM&amp;, const String&amp;, unsigned startOffset, Vector&lt;int, 32&gt;&amp; ovector);
</span><del>-        MatchResult match(VM&amp;, const String&amp;, unsigned startOffset);
</del><ins>+        JS_EXPORT_PRIVATE MatchResult match(VM&amp;, const String&amp;, unsigned startOffset);
</ins><span class="cx">         unsigned numSubpatterns() const { return m_numSubpatterns; }
</span><span class="cx"> 
</span><span class="cx">         bool hasCode()
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeStringObjecth"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/StringObject.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/StringObject.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/StringObject.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -45,16 +45,16 @@
</span><span class="cx">         }
</span><span class="cx">         static StringObject* create(VM&amp;, JSGlobalObject*, JSString*);
</span><span class="cx"> 
</span><del>-        static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
-        static bool getOwnPropertySlotByIndex(JSObject*, ExecState*, unsigned propertyName, PropertySlot&amp;);
</del><ins>+        JS_EXPORT_PRIVATE static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
+        JS_EXPORT_PRIVATE static bool getOwnPropertySlotByIndex(JSObject*, ExecState*, unsigned propertyName, PropertySlot&amp;);
</ins><span class="cx"> 
</span><del>-        static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&amp;);
-        static void putByIndex(JSCell*, ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
</del><ins>+        JS_EXPORT_PRIVATE static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&amp;);
+        JS_EXPORT_PRIVATE static void putByIndex(JSCell*, ExecState*, unsigned propertyName, JSValue, bool shouldThrow);
</ins><span class="cx"> 
</span><del>-        static bool deleteProperty(JSCell*, ExecState*, PropertyName);
-        static bool deletePropertyByIndex(JSCell*, ExecState*, unsigned propertyName);
-        static void getOwnPropertyNames(JSObject*, ExecState*, PropertyNameArray&amp;, EnumerationMode);
-        static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&amp;, bool shouldThrow);
</del><ins>+        JS_EXPORT_PRIVATE static bool deleteProperty(JSCell*, ExecState*, PropertyName);
+        JS_EXPORT_PRIVATE static bool deletePropertyByIndex(JSCell*, ExecState*, unsigned propertyName);
+        JS_EXPORT_PRIVATE static void getOwnPropertyNames(JSObject*, ExecState*, PropertyNameArray&amp;, EnumerationMode);
+        JS_EXPORT_PRIVATE static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&amp;, bool shouldThrow);
</ins><span class="cx"> 
</span><span class="cx">         DECLARE_EXPORT_INFO;
</span><span class="cx"> 
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeStructureh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h (169627 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h        2014-06-05 21:40:08 UTC (rev 169627)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -120,13 +120,13 @@
</span><span class="cx">     static Structure* attributeChangeTransition(VM&amp;, Structure*, PropertyName, unsigned attributes);
</span><span class="cx">     static Structure* toCacheableDictionaryTransition(VM&amp;, Structure*);
</span><span class="cx">     static Structure* toUncacheableDictionaryTransition(VM&amp;, Structure*);
</span><del>-    static Structure* sealTransition(VM&amp;, Structure*);
-    static Structure* freezeTransition(VM&amp;, Structure*);
</del><ins>+    JS_EXPORT_PRIVATE static Structure* sealTransition(VM&amp;, Structure*);
+    JS_EXPORT_PRIVATE static Structure* freezeTransition(VM&amp;, Structure*);
</ins><span class="cx">     static Structure* preventExtensionsTransition(VM&amp;, Structure*);
</span><del>-    static Structure* nonPropertyTransition(VM&amp;, Structure*, NonPropertyTransition);
</del><ins>+    JS_EXPORT_PRIVATE static Structure* nonPropertyTransition(VM&amp;, Structure*, NonPropertyTransition);
</ins><span class="cx"> 
</span><del>-    bool isSealed(VM&amp;);
-    bool isFrozen(VM&amp;);
</del><ins>+    JS_EXPORT_PRIVATE bool isSealed(VM&amp;);
+    JS_EXPORT_PRIVATE bool isFrozen(VM&amp;);
</ins><span class="cx">     bool isExtensible() const { return !m_preventExtensions; }
</span><span class="cx">     bool didTransition() const { return m_didTransition; }
</span><span class="cx">     bool putWillGrowOutOfLineStorage();
</span><span class="lines">@@ -488,7 +488,7 @@
</span><span class="cx">         
</span><span class="cx">     bool checkOffsetConsistency() const;
</span><span class="cx"> 
</span><del>-    void allocateRareData(VM&amp;);
</del><ins>+    JS_EXPORT_PRIVATE void allocateRareData(VM&amp;);
</ins><span class="cx">     void cloneRareDataFrom(VM&amp;, const Structure*);
</span><span class="cx"> 
</span><span class="cx">     static const int s_maxTransitionLength = 64;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoretestedsymbolssymlst"></a>
<div class="addfile"><h4>Added: branches/ftlopt/Source/JavaScriptCore/tested-symbols.symlst (0 => 169628)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/tested-symbols.symlst                                (rev 0)
+++ branches/ftlopt/Source/JavaScriptCore/tested-symbols.symlst        2014-06-05 22:54:49 UTC (rev 169628)
</span><span class="lines">@@ -0,0 +1,87 @@
</span><ins>+__ZN3JSC15globalFuncIsNaNEPNS_9ExecStateE
+__ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateE
+__ZN3JSCL16mathProtoFuncCosEPNS_9ExecStateE
+__ZN3JSCL16mathProtoFuncSinEPNS_9ExecStateE
+__ZN3JSCL16mathProtoFuncTanEPNS_9ExecStateE
+__ZN3JSCL17mathProtoFuncACosEPNS_9ExecStateE
+__ZN3JSCL17mathProtoFuncASinEPNS_9ExecStateE
+__ZN3JSCL17mathProtoFuncATanEPNS_9ExecStateE
+__ZN3JSCL17mathProtoFuncCbrtEPNS_9ExecStateE
+__ZN3JSCL17mathProtoFuncCoshEPNS_9ExecStateE
+__ZN3JSCL17mathProtoFuncLog2EPNS_9ExecStateE
+__ZN3JSCL17mathProtoFuncSinhEPNS_9ExecStateE
+__ZN3JSCL17mathProtoFuncTanhEPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncACoshEPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncASinhEPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncATan2EPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncATanhEPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncExpm1EPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncExpm1EPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncHypotEPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncLog10EPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncLog1pEPNS_9ExecStateE
+__ZN3JSCL18mathProtoFuncTruncEPNS_9ExecStateE
+__ZN3JSCL19arrayProtoFuncShiftEPNS_9ExecStateE
+__ZN3JSCL19dateProtoFuncGetDayEPNS_9ExecStateE
+__ZN3JSCL19mathProtoFuncRandomEPNS_9ExecStateE
+__ZN3JSCL20dateProtoFuncGetDateEPNS_9ExecStateE
+__ZN3JSCL20dateProtoFuncGetTimeEPNS_9ExecStateE
+__ZN3JSCL20dateProtoFuncGetYearEPNS_9ExecStateE
+__ZN3JSCL20dateProtoFuncSetDateEPNS_9ExecStateE
+__ZN3JSCL20stringProtoFuncSliceEPNS_9ExecStateE
+__ZN3JSCL21dateProtoFuncGetHoursEPNS_9ExecStateE
+__ZN3JSCL21dateProtoFuncGetMonthEPNS_9ExecStateE
+__ZN3JSCL21dateProtoFuncToStringEPNS_9ExecStateE
+__ZN3JSCL22JSONProtoFuncStringifyEPNS_9ExecStateE
+__ZN3JSCL22dateProtoFuncGetUTCDayEPNS_9ExecStateE
+__ZN3JSCL23dateProtoFuncGetMinutesEPNS_9ExecStateE
+__ZN3JSCL23dateProtoFuncGetSecondsEPNS_9ExecStateE
+__ZN3JSCL23dateProtoFuncGetUTCDateEPNS_9ExecStateE
+__ZN3JSCL23objectConstructorFreezeEPNS_9ExecStateE
+__ZN3JSCL24dateProtoFuncGetFullYearEPNS_9ExecStateE
+__ZN3JSCL24dateProtoFuncGetUTCHoursEPNS_9ExecStateE
+__ZN3JSCL24dateProtoFuncGetUTCMonthEPNS_9ExecStateE
+__ZN3JSCL24dateProtoFuncToUTCStringEPNS_9ExecStateE
+__ZN3JSCL25dataViewProtoFuncGetUint8EPNS_9ExecStateE
+__ZN3JSCL25dataViewProtoFuncSetUint8EPNS_9ExecStateE
+__ZN3JSCL25dateProtoFuncToDateStringEPNS_9ExecStateE
+__ZN3JSCL25dateProtoFuncToTimeStringEPNS_9ExecStateE
+__ZN3JSCL25objectConstructorIsFrozenEPNS_9ExecStateE
+__ZN3JSCL26dateProtoFuncGetUTCMinutesEPNS_9ExecStateE
+__ZN3JSCL26dateProtoFuncGetUTCSecondsEPNS_9ExecStateE
+__ZN3JSCL26stringProtoFuncToLowerCaseEPNS_9ExecStateE
+__ZN3JSCL26stringProtoFuncToUpperCaseEPNS_9ExecStateE
+__ZN3JSCL27dateProtoFuncGetUTCFullYearEPNS_9ExecStateE
+__ZN3JSCL28dateProtoFuncGetMilliSecondsEPNS_9ExecStateE
+__ZN3JSCL30dateProtoFuncGetTimezoneOffsetEPNS_9ExecStateE
+__ZN3JSCL31dateProtoFuncGetUTCMillisecondsEPNS_9ExecStateE
+__ZN3JSCL31dateProtoFuncToLocaleDateStringEPNS_9ExecStateE
+__ZN3JSCL34objectConstructorPreventExtensionsEPNS_9ExecStateE
+__ZN3JSCL36objectConstructorGetOwnPropertyNamesEPNS_9ExecStateE
+__ZN3JSCL9dateParseEPNS_9ExecStateE
+__ZN3JSC9ExecState13dataViewTableERNS_2VME
+__ZN3JSC13dataViewTableE
+__ZN3JSC19JSDataViewPrototype15createStructureERNS_2VMEPNS_14JSGlobalObjectENS_7JSValueE
+__ZN3JSC1teENS_12PropertyNameERNS_12PropertySlotE
+__ZN3JSC19JSDataViewPrototype6createERNS_2VMEPNS_9StructureE
+__ZN3JSC19JSDataViewPrototype6s_infoE
+__ZN3JSC19JSDataViewPrototypeC1ERNS_2VMEPNS_9Structu1getStaticFunctionSlotINS_8JSObjectEEEbPNS_9ExecStateERKNS_9HashTableEPS1_NS_12PropertyNameERNS_12PropertyS_9ExecStateE
+__ZN3JSC7getDataINS_12Uint8AdaptorEEExPNS_9ExecStateE
+__ZN3JSC7getDataI64AdaptorEEExPNS_9ExecStateE
+__ZN3JSC7setDataINS_11Int8AdaptorEEExPNS_9ExecStateE
+__ZN3JSC7setDataINS_12Int16AdaptorEEExPNS_9ExecStateE
+__ZN3JSC7setDataINS_12Int32AdaptorEEExPNS_9ExecStateE
+__ZNS_13Uint16AdaptorEEExPNS_9ExecStateE
+__ZN3JSC7setDataINS_13Uint32AdaptorEEExPNS_9ExecStateE
+__ZN3JSC7setDataINS_14Float32AdaptorEEExPNS_9ExecStateE
+__ZN3JSC7setDataINS_14Float64AdaptorEEExPNStaViewTableIndexE
+__ZN3JSCL19dataViewTableValuesE
+__ZN3JSCL24dataViewProtoFuncGetInt8EPNS_9ExecStateE
+__ZN3JSCL24dataViewProtoFuncSetInt8EPNS_9ExecStateE
+__ZN3JSCL25dataViewProtoFuncGetInt16EPNZN3JSCL25dataViewProtoFuncGetUint8EPNS_9ExecStateE
+__ZN3JSCL25dataViewProtoFuncSetInt16EPNS_9ExecStateE
+__ZN3JSCL25dataViewProtoFuncSetInt32EPNS_9ExecStateE
+__ZN3JSCL25dataViewProtoFuncSetUintteE
+__ZN3JSCL27dataViewProtoFuncSetFloat32EPNS_9ExecStateE
+__ZN3JSCL27dataViewProtoFuncSetFloat64EPNS_9ExecStateE
+__ZN3JSCL18dataViewTableIndexE
</ins></span></pre>
</div>
</div>

</body>
</html>