<!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>[191537] trunk/Source/JavaScriptCore</title>
</head>
<body>

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

<h3>Log Message</h3>
<pre>Teach create_hash_table to omit builtins macros when generating tables for native-only objects
https://bugs.webkit.org/show_bug.cgi?id=150491

Reviewed by Yusuke Suzuki.

In order to support separate compilation for generated builtins files, we need to be able to
include specific builtins headers from generated .lut.h files. However, the create_hash_table
script isn't smart enough to figure out when a generated file might actually contain a builtin.
Without further help, we'd have to include an all-in-one header, mostly defeating the point of
generating separate .h and .cpp files for every builtin.

This patch segregates the pure native and partially builtin sources in the build system, and
gives hints to create_hash_table so that it doesn't even generate checks for builtins if the
input file has no builtin method implementations. Also do some modernization and code cleanup.

* CMakeLists.txt:

Generate each group with different flags to create_hash_table. Change the macro to take
flags through the variable LUT_GENERATOR_FLAGS. Set this as necessary before calling macro.
Add an additional hint to CMake that the .cpp source file depends on the generated file.

* DerivedSources.make:

Generate each group with different flags to create_hash_table. Clean up the 'all' target
so that static dependencies are listed first. Use static patterns to decide which .lut.h
files require which flags. Reduce fragile usages of implicit variables.

* JavaScriptCore.xcodeproj/project.pbxproj:

Add some missing .lut.h files to the Derived Sources group. Sort the project.

* create_hash_table:

Parse options in a sane way using GetOpt::Long. Remove ability to specify a custom namespace
since this isn't actually used anywhere. Normalize placement of newlines in quoted strings.
Only generate builtins macros and includes if the source file is known to have some builtins.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreCMakeListstxt">trunk/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreDerivedSourcesmake">trunk/Source/JavaScriptCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCorecreate_hash_table">trunk/Source/JavaScriptCore/create_hash_table</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/CMakeLists.txt (191536 => 191537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt        2015-10-24 20:04:39 UTC (rev 191536)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt        2015-10-24 21:39:37 UTC (rev 191537)
</span><span class="lines">@@ -666,14 +666,11 @@
</span><span class="cx">     ${JavaScriptCore_RUNTIME_SOURCES}
</span><span class="cx"> )
</span><span class="cx"> 
</span><del>-set(JavaScriptCore_LUT_FILES
-    runtime/ArrayConstructor.cpp
-    runtime/ArrayIteratorPrototype.cpp
</del><ins>+set(JavaScriptCore_NATIVE_OBJECT_LUT_SOURCES
</ins><span class="cx">     runtime/BooleanPrototype.cpp
</span><span class="cx">     runtime/DateConstructor.cpp
</span><span class="cx">     runtime/DatePrototype.cpp
</span><span class="cx">     runtime/ErrorPrototype.cpp
</span><del>-    runtime/InspectorInstrumentationObject.cpp
</del><span class="cx">     runtime/IntlCollatorConstructor.cpp
</span><span class="cx">     runtime/IntlCollatorPrototype.cpp
</span><span class="cx">     runtime/IntlDateTimeFormatConstructor.cpp
</span><span class="lines">@@ -681,22 +678,31 @@
</span><span class="cx">     runtime/IntlNumberFormatConstructor.cpp
</span><span class="cx">     runtime/IntlNumberFormatPrototype.cpp
</span><span class="cx">     runtime/JSDataViewPrototype.cpp
</span><ins>+    runtime/JSONObject.cpp
+    runtime/NumberConstructor.cpp
+    runtime/NumberPrototype.cpp
+    runtime/RegExpConstructor.cpp
+    runtime/RegExpPrototype.cpp
+    runtime/SymbolConstructor.cpp
+    runtime/SymbolPrototype.cpp
+)
+
+# If an object's implementation contains at least one builtin, then it must
+# be added to this section so it is generated with builtin-specific includes.
+
+set(JavaScriptCore_BUILTIN_OBJECT_LUT_SOURCES
+    runtime/ArrayConstructor.cpp
+    runtime/ArrayIteratorPrototype.cpp
+    runtime/InspectorInstrumentationObject.cpp
</ins><span class="cx">     runtime/JSGlobalObject.cpp
</span><span class="cx">     runtime/JSInternalPromiseConstructor.cpp
</span><del>-    runtime/JSONObject.cpp
</del><span class="cx">     runtime/JSPromiseConstructor.cpp
</span><span class="cx">     runtime/JSPromisePrototype.cpp
</span><span class="cx">     runtime/ModuleLoaderObject.cpp
</span><del>-    runtime/NumberConstructor.cpp
-    runtime/NumberPrototype.cpp
</del><span class="cx">     runtime/ObjectConstructor.cpp
</span><span class="cx">     runtime/ReflectObject.cpp
</span><del>-    runtime/RegExpConstructor.cpp
-    runtime/RegExpPrototype.cpp
</del><span class="cx">     runtime/StringConstructor.cpp
</span><span class="cx">     runtime/StringIteratorPrototype.cpp
</span><del>-    runtime/SymbolConstructor.cpp
-    runtime/SymbolPrototype.cpp
</del><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> set(JavaScriptCore_LIBRARIES
</span><span class="lines">@@ -966,21 +972,32 @@
</span><span class="cx"> endif ()
</span><span class="cx"> 
</span><span class="cx"> set(HASH_LUT_GENERATOR ${CMAKE_CURRENT_SOURCE_DIR}/create_hash_table)
</span><ins>+set(LUT_GENERATOR_FLAGS &quot;&quot;)
</ins><span class="cx"> macro(GENERATE_HASH_LUT _input _output)
</span><span class="cx">     add_custom_command(
</span><span class="cx">         OUTPUT ${_output}
</span><del>-        DEPENDS ${HASH_LUT_GENERATOR} ${_input} ${JavaScriptCore_SCRIPTS_DIR}/generate-js-builtins.py
-        COMMAND ${PERL_EXECUTABLE} ${HASH_LUT_GENERATOR} ${_input} -i &gt; ${_output}
</del><ins>+        MAIN_DEPENDENCY ${HASH_LUT_GENERATOR}
+        DEPENDS ${_input}
+        COMMAND ${PERL_EXECUTABLE} ${HASH_LUT_GENERATOR} ${LUT_GENERATOR_FLAGS} ${_input} &gt; ${_output}
</ins><span class="cx">         VERBATIM)
</span><span class="cx">     list(APPEND JavaScriptCore_HEADERS ${_output})
</span><ins>+    ADD_SOURCE_DEPENDENCIES(${_input} ${_output})
</ins><span class="cx"> endmacro()
</span><span class="cx"> 
</span><span class="cx"> # GENERATOR 1-A: LUT creator
</span><del>-foreach (_file ${JavaScriptCore_LUT_FILES})
</del><ins>+
+foreach (_file ${JavaScriptCore_NATIVE_OBJECT_LUT_SOURCES})
</ins><span class="cx">     get_filename_component(_name ${_file} NAME_WE)
</span><ins>+    set(LUT_GENERATOR_FLAGS -i)
</ins><span class="cx">     GENERATE_HASH_LUT(${CMAKE_CURRENT_SOURCE_DIR}/${_file} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${_name}.lut.h)
</span><span class="cx"> endforeach ()
</span><span class="cx"> 
</span><ins>+foreach (_file ${JavaScriptCore_BUILTIN_OBJECT_LUT_SOURCES})
+    get_filename_component(_name ${_file} NAME_WE)
+    set(LUT_GENERATOR_FLAGS -i -b)
+    GENERATE_HASH_LUT(${CMAKE_CURRENT_SOURCE_DIR}/${_file} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/${_name}.lut.h)
+endforeach ()
+
</ins><span class="cx"> set(JavaScriptCore_FORWARDING_HEADERS_DIRECTORIES
</span><span class="cx">     API
</span><span class="cx">     assembler
</span><span class="lines">@@ -1009,6 +1026,7 @@
</span><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> # GENERATOR 1-B: particular LUT creator (for 1 file only)
</span><ins>+set(LUT_GENERATOR_FLAGS )
</ins><span class="cx"> GENERATE_HASH_LUT(${CMAKE_CURRENT_SOURCE_DIR}/parser/Keywords.table ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Lexer.lut.h)
</span><span class="cx"> 
</span><span class="cx"> #GENERATOR: &quot;RegExpJitTables.h&quot;: tables used by Yarr
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (191536 => 191537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-10-24 20:04:39 UTC (rev 191536)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-10-24 21:39:37 UTC (rev 191537)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><ins>+2015-10-24  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Teach create_hash_table to omit builtins macros when generating tables for native-only objects
+        https://bugs.webkit.org/show_bug.cgi?id=150491
+
+        Reviewed by Yusuke Suzuki.
+
+        In order to support separate compilation for generated builtins files, we need to be able to
+        include specific builtins headers from generated .lut.h files. However, the create_hash_table
+        script isn't smart enough to figure out when a generated file might actually contain a builtin.
+        Without further help, we'd have to include an all-in-one header, mostly defeating the point of
+        generating separate .h and .cpp files for every builtin.
+
+        This patch segregates the pure native and partially builtin sources in the build system, and
+        gives hints to create_hash_table so that it doesn't even generate checks for builtins if the
+        input file has no builtin method implementations. Also do some modernization and code cleanup.
+
+        * CMakeLists.txt:
+
+        Generate each group with different flags to create_hash_table. Change the macro to take
+        flags through the variable LUT_GENERATOR_FLAGS. Set this as necessary before calling macro.
+        Add an additional hint to CMake that the .cpp source file depends on the generated file.
+
+        * DerivedSources.make:
+
+        Generate each group with different flags to create_hash_table. Clean up the 'all' target
+        so that static dependencies are listed first. Use static patterns to decide which .lut.h
+        files require which flags. Reduce fragile usages of implicit variables.
+
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+
+        Add some missing .lut.h files to the Derived Sources group. Sort the project.
+
+        * create_hash_table:
+
+        Parse options in a sane way using GetOpt::Long. Remove ability to specify a custom namespace
+        since this isn't actually used anywhere. Normalize placement of newlines in quoted strings.
+        Only generate builtins macros and includes if the source file is known to have some builtins.
+
</ins><span class="cx"> 2015-10-23  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Remove unused ScrollLayer Timeline EventType
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/DerivedSources.make (191536 => 191537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/DerivedSources.make        2015-10-24 20:04:39 UTC (rev 191536)
+++ trunk/Source/JavaScriptCore/DerivedSources.make        2015-10-24 21:39:37 UTC (rev 191537)
</span><span class="lines">@@ -33,47 +33,6 @@
</span><span class="cx">         $(JavaScriptCore)/builtins \
</span><span class="cx"> #
</span><span class="cx"> 
</span><del>-.PHONY : all
-all : \
-    ArrayConstructor.lut.h \
-    ArrayIteratorPrototype.lut.h \
-    BooleanPrototype.lut.h \
-    DateConstructor.lut.h \
-    DatePrototype.lut.h \
-    ErrorPrototype.lut.h \
-    InspectorInstrumentationObject.lut.h \
-    IntlCollatorConstructor.lut.h \
-    IntlCollatorPrototype.lut.h \
-    IntlDateTimeFormatConstructor.lut.h \
-    IntlDateTimeFormatPrototype.lut.h \
-    IntlNumberFormatConstructor.lut.h \
-    IntlNumberFormatPrototype.lut.h \
-    JSDataViewPrototype.lut.h \
-    JSONObject.lut.h \
-    JSGlobalObject.lut.h \
-    JSInternalPromiseConstructor.lut.h \
-    JSPromisePrototype.lut.h \
-    JSPromiseConstructor.lut.h \
-    KeywordLookup.h \
-    Lexer.lut.h \
-    ModuleLoaderObject.lut.h \
-    NumberConstructor.lut.h \
-    NumberPrototype.lut.h \
-    ObjectConstructor.lut.h \
-    ReflectObject.lut.h \
-    RegExpConstructor.lut.h \
-    RegExpPrototype.lut.h \
-    RegExpJitTables.h \
-    StringConstructor.lut.h \
-    StringIteratorPrototype.lut.h \
-    SymbolConstructor.lut.h \
-    SymbolPrototype.lut.h \
-    udis86_itab.h \
-    Bytecodes.h \
-    InitBytecodes.asm \
-    JSCBuiltins.h \
-#
-
</del><span class="cx"> PYTHON = python
</span><span class="cx"> PERL = perl
</span><span class="cx"> 
</span><span class="lines">@@ -84,8 +43,24 @@
</span><span class="cx"> else
</span><span class="cx">     DELETE = rm -f
</span><span class="cx"> endif
</span><ins>+
</ins><span class="cx"> # --------
</span><span class="cx"> 
</span><ins>+.PHONY : all
+all : \
+    udis86_itab.h \
+    Bytecodes.h \
+    CombinedDomains.json \
+    InitBytecodes.asm \
+    InjectedScriptSource.h \
+    InspectorFrontendDispatchers.h \
+    JSReplayInputs.h \
+    JSCBuiltins.h \
+    Lexer.lut.h \
+    KeywordLookup.h \
+    RegExpJitTables.h \
+#
+
</ins><span class="cx"> # JavaScript builtins.
</span><span class="cx"> 
</span><span class="cx"> BUILTINS_GENERATOR_SCRIPTS = \
</span><span class="lines">@@ -134,13 +109,55 @@
</span><span class="cx"> JSCBuiltins.h: $(BUILTINS_GENERATOR_SCRIPTS) $(JavaScriptCore_BUILTINS_SOURCES) JavaScriptCore_BUILTINS_DEPENDENCIES_LIST
</span><span class="cx">         $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py --combined --output-directory . --framework JavaScriptCore $(JavaScriptCore_BUILTINS_SOURCES)
</span><span class="cx"> 
</span><del>-# lookup tables for classes
</del><ins>+# Perfect hash lookup tables for JavaScript classes.
</ins><span class="cx"> 
</span><del>-%.lut.h: create_hash_table %.cpp
-        $(PERL) $^ -i &gt; $@
-Lexer.lut.h: create_hash_table Keywords.table
-        $(PERL) $^ &gt; $@
</del><ins>+NATIVE_OBJECT_LUT_HEADERS = \
+    BooleanPrototype.lut.h \
+    DateConstructor.lut.h \
+    DatePrototype.lut.h \
+    ErrorPrototype.lut.h \
+    IntlCollatorConstructor.lut.h \
+    IntlCollatorPrototype.lut.h \
+    IntlDateTimeFormatConstructor.lut.h \
+    IntlDateTimeFormatPrototype.lut.h \
+    IntlNumberFormatConstructor.lut.h \
+    IntlNumberFormatPrototype.lut.h \
+    JSDataViewPrototype.lut.h \
+    JSONObject.lut.h \
+    NumberConstructor.lut.h \
+    NumberPrototype.lut.h \
+    RegExpConstructor.lut.h \
+    RegExpPrototype.lut.h \
+    SymbolConstructor.lut.h \
+    SymbolPrototype.lut.h \
+#
</ins><span class="cx"> 
</span><ins>+# If an object's implementation contains at least one builtin, then it must
+# be added to this section so it is generated with builtin-specific includes.
+
+BUILTIN_OBJECT_LUT_HEADERS = \
+    ArrayConstructor.lut.h \
+    ArrayIteratorPrototype.lut.h \
+    InspectorInstrumentationObject.lut.h \
+    JSGlobalObject.lut.h \
+    JSInternalPromiseConstructor.lut.h \
+    JSPromisePrototype.lut.h \
+    JSPromiseConstructor.lut.h \
+    ModuleLoaderObject.lut.h \
+    ObjectConstructor.lut.h \
+    ReflectObject.lut.h \
+    StringConstructor.lut.h \
+    StringIteratorPrototype.lut.h \
+#
+
+$(NATIVE_OBJECT_LUT_HEADERS): %.lut.h : %.cpp $(JavaScriptCore)/create_hash_table
+        $(PERL) $(JavaScriptCore)/create_hash_table -i $&lt; &gt; $@
+$(BUILTIN_OBJECT_LUT_HEADERS): %.lut.h : %.cpp $(JavaScriptCore)/create_hash_table
+        $(PERL) $(JavaScriptCore)/create_hash_table -i -b $&lt; &gt; $@
+
+Lexer.lut.h: Keywords.table $(JavaScriptCore)/create_hash_table
+        $(PERL) $(JavaScriptCore)/create_hash_table -i $&lt; &gt; $@
+
</ins><span class="cx"> # character tables for Yarr
</span><span class="cx"> 
</span><span class="cx"> RegExpJitTables.h: create_regex_tables
</span><span class="lines">@@ -211,12 +228,6 @@
</span><span class="cx">         $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py \
</span><span class="cx"> #
</span><span class="cx"> 
</span><del>-all : \
-    CombinedDomains.json \
-    InspectorFrontendDispatchers.h \
-    InjectedScriptSource.h \
-#
-
</del><span class="cx"> # The combined JSON file depends on the actual set of domains and their file contents, so that
</span><span class="cx"> # adding, modifying, or removing domains will trigger regeneration of inspector files.
</span><span class="cx"> 
</span><span class="lines">@@ -248,7 +259,12 @@
</span><span class="cx">     $(JavaScriptCore)/replay/JSInputs.json \
</span><span class="cx"> #
</span><span class="cx"> 
</span><del>-all : JSReplayInputs.h
-
</del><span class="cx"> JSReplayInputs.h : $(INPUT_GENERATOR_SPECIFICATIONS) $(INPUT_GENERATOR_SCRIPTS)
</span><span class="cx">         $(PYTHON) $(JavaScriptCore)/replay/scripts/CodeGeneratorReplayInputs.py --outputDir . --framework JavaScriptCore $(INPUT_GENERATOR_SPECIFICATIONS)
</span><ins>+
+# Dynamically-defined targets are listed below. Static targets belong up top.
+
+all : \
+    $(BUILTIN_OBJECT_LUT_HEADERS) \
+    $(NATIVE_OBJECT_LUT_HEADERS) \
+#
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (191536 => 191537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-10-24 20:04:39 UTC (rev 191536)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-10-24 21:39:37 UTC (rev 191537)
</span><span class="lines">@@ -1218,6 +1218,24 @@
</span><span class="cx">                 9959E9311BD18272001AA413 /* generate-combined-inspector-json.py in Headers */ = {isa = PBXBuildFile; fileRef = 9959E92F1BD181F6001AA413 /* generate-combined-inspector-json.py */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 9959E9321BD18279001AA413 /* inline-and-minify-stylesheets-and-scripts.py in Headers */ = {isa = PBXBuildFile; fileRef = 9959E9301BD181F6001AA413 /* inline-and-minify-stylesheets-and-scripts.py */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 996231E918D1804200C03FDA /* InspectorBackendCommands.js in Headers */ = {isa = PBXBuildFile; fileRef = A53243961856A475002ED692 /* InspectorBackendCommands.js */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                996B73171BDA067F00331B84 /* ArrayConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73151BDA05AA00331B84 /* ArrayConstructor.lut.h */; };
+                996B73181BDA068000331B84 /* ArrayIteratorPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73161BDA05AA00331B84 /* ArrayIteratorPrototype.lut.h */; };
+                996B73191BDA068000331B84 /* BooleanPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73071BD9FA2C00331B84 /* BooleanPrototype.lut.h */; };
+                996B731A1BDA08D100331B84 /* DateConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73081BD9FA2C00331B84 /* DateConstructor.lut.h */; };
+                996B731B1BDA08D100331B84 /* ErrorPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73091BD9FA2C00331B84 /* ErrorPrototype.lut.h */; };
+                996B731C1BDA08DD00331B84 /* JSDataViewPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B730A1BD9FA2C00331B84 /* JSDataViewPrototype.lut.h */; };
+                996B731D1BDA08EF00331B84 /* JSGlobalObject.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B730B1BD9FA2C00331B84 /* JSGlobalObject.lut.h */; };
+                996B731E1BDA08EF00331B84 /* JSPromiseConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C184E2417BFFA36007CB63A /* JSPromiseConstructor.lut.h */; };
+                996B731F1BDA08EF00331B84 /* JSPromisePrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C184E2517BFFA36007CB63A /* JSPromisePrototype.lut.h */; };
+                996B73201BDA08EF00331B84 /* ModuleLoaderObject.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B730C1BD9FA2C00331B84 /* ModuleLoaderObject.lut.h */; };
+                996B73211BDA08EF00331B84 /* NumberPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B730D1BD9FA2C00331B84 /* NumberPrototype.lut.h */; };
+                996B73221BDA08EF00331B84 /* ObjectConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B730E1BD9FA2C00331B84 /* ObjectConstructor.lut.h */; };
+                996B73231BDA08EF00331B84 /* ReflectObject.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B730F1BD9FA2C00331B84 /* ReflectObject.lut.h */; };
+                996B73241BDA08EF00331B84 /* RegExpPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73101BD9FA2C00331B84 /* RegExpPrototype.lut.h */; };
+                996B73251BDA08EF00331B84 /* StringConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73111BD9FA2C00331B84 /* StringConstructor.lut.h */; };
+                996B73261BDA08EF00331B84 /* StringIteratorPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73121BD9FA2C00331B84 /* StringIteratorPrototype.lut.h */; };
+                996B73271BDA08EF00331B84 /* SymbolConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73131BD9FA2C00331B84 /* SymbolConstructor.lut.h */; };
+                996B73281BDA08EF00331B84 /* SymbolPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 996B73141BD9FA2C00331B84 /* SymbolPrototype.lut.h */; };
</ins><span class="cx">                 99CC0B6218BE9946006CEBCC /* CodeGeneratorReplayInputsTemplates.py in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A1E18A1B1E70026D88F /* CodeGeneratorReplayInputsTemplates.py */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 99CC0B6318BE9950006CEBCC /* CodeGeneratorReplayInputs.py in Headers */ = {isa = PBXBuildFile; fileRef = 99E45A1D18A1B1E70026D88F /* CodeGeneratorReplayInputs.py */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 99DA00A31BD5993100F4575C /* builtins_generator.py in Headers */ = {isa = PBXBuildFile; fileRef = 99DA009A1BD5992700F4575C /* builtins_generator.py */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -1656,7 +1674,6 @@
</span><span class="cx">                 BC18C46A0E16F5CD00B34460 /* StringPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C3C60E16EE3300B34460 /* StringPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BC18C46B0E16F5CD00B34460 /* SymbolTable.h in Headers */ = {isa = PBXBuildFile; fileRef = 14A396A60CD2933100B5B4FF /* SymbolTable.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BC18C47A0E16F5CD00B34460 /* WebKitAvailability.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DE3D0F40DD8DDFB00468714 /* WebKitAvailability.h */; settings = {ATTRIBUTES = (Public, ); }; };
</span><del>-                BC18C5240E16FC8A00B34460 /* ArrayPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C5230E16FC8A00B34460 /* ArrayPrototype.lut.h */; };
</del><span class="cx">                 BC18C52E0E16FCE100B34460 /* Lexer.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = BC18C52D0E16FCE100B34460 /* Lexer.lut.h */; };
</span><span class="cx">                 BC3046070E1F497F003232CF /* Error.h in Headers */ = {isa = PBXBuildFile; fileRef = BC3046060E1F497F003232CF /* Error.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BC6AAAE50E1F426500AD87D8 /* ClassInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BC6AAAE40E1F426500AD87D8 /* ClassInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -3131,6 +3148,22 @@
</span><span class="cx">                 9959E92A1BD17FA0001AA413 /* xxd.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = xxd.pl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9959E92F1BD181F6001AA413 /* generate-combined-inspector-json.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = &quot;generate-combined-inspector-json.py&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9959E9301BD181F6001AA413 /* inline-and-minify-stylesheets-and-scripts.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = &quot;inline-and-minify-stylesheets-and-scripts.py&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                996B73071BD9FA2C00331B84 /* BooleanPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BooleanPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73081BD9FA2C00331B84 /* DateConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateConstructor.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73091BD9FA2C00331B84 /* ErrorPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ErrorPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B730A1BD9FA2C00331B84 /* JSDataViewPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDataViewPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B730B1BD9FA2C00331B84 /* JSGlobalObject.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGlobalObject.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B730C1BD9FA2C00331B84 /* ModuleLoaderObject.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModuleLoaderObject.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B730D1BD9FA2C00331B84 /* NumberPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B730E1BD9FA2C00331B84 /* ObjectConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjectConstructor.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B730F1BD9FA2C00331B84 /* ReflectObject.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReflectObject.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73101BD9FA2C00331B84 /* RegExpPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegExpPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73111BD9FA2C00331B84 /* StringConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringConstructor.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73121BD9FA2C00331B84 /* StringIteratorPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringIteratorPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73131BD9FA2C00331B84 /* SymbolConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolConstructor.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73141BD9FA2C00331B84 /* SymbolPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73151BDA05AA00331B84 /* ArrayConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayConstructor.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                996B73161BDA05AA00331B84 /* ArrayIteratorPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayIteratorPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 99DA00991BD5992700F4575C /* __init__.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = __init__.py; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 99DA009A1BD5992700F4575C /* builtins_generator.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = builtins_generator.py; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 99DA009B1BD5992700F4575C /* builtins_model.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = builtins_model.py; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3518,7 +3551,6 @@
</span><span class="cx">                 BC18C3C30E16EE3300B34460 /* StringObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringObject.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC18C3C50E16EE3300B34460 /* StringPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringPrototype.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC18C3C60E16EE3300B34460 /* StringPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringPrototype.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                BC18C5230E16FC8A00B34460 /* ArrayPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArrayPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 BC18C52D0E16FCE100B34460 /* Lexer.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Lexer.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC22A3980E16E14800AF21C8 /* JSObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 BC22A3990E16E14800AF21C8 /* JSObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSObject.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3831,9 +3863,9 @@
</span><span class="cx">                 034768DFFF38A50411DB9C8B /* Products */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                932F5BE10822A1C700736975 /* jsc */,
</ins><span class="cx">                                 0FF922CF14F46B130041A24E /* JSCLLIntOffsetsExtractor */,
</span><span class="cx">                                 932F5BD90822A1C700736975 /* JavaScriptCore.framework */,
</span><del>-                                932F5BE10822A1C700736975 /* jsc */,
</del><span class="cx">                                 0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */,
</span><span class="cx">                                 141211200A48793C00480255 /* minidom */,
</span><span class="cx">                                 14BD59BF0A3E8F9000BAF59C /* testapi */,
</span><span class="lines">@@ -4501,10 +4533,14 @@
</span><span class="cx">                 650FDF8D09D0FCA700769E54 /* Derived Sources */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><del>-                                BC18C5230E16FC8A00B34460 /* ArrayPrototype.lut.h */,
</del><ins>+                                996B73151BDA05AA00331B84 /* ArrayConstructor.lut.h */,
+                                996B73161BDA05AA00331B84 /* ArrayIteratorPrototype.lut.h */,
+                                996B73071BD9FA2C00331B84 /* BooleanPrototype.lut.h */,
</ins><span class="cx">                                 6514F21718B3E1670098FF8B /* Bytecodes.h */,
</span><span class="cx">                                 A53243951856A475002ED692 /* CombinedDomains.json */,
</span><ins>+                                996B73081BD9FA2C00331B84 /* DateConstructor.lut.h */,
</ins><span class="cx">                                 BCD203E70E1718F4002C7E82 /* DatePrototype.lut.h */,
</span><ins>+                                996B73091BD9FA2C00331B84 /* ErrorPrototype.lut.h */,
</ins><span class="cx">                                 6514F21818B3E1670098FF8B /* InitBytecodes.asm */,
</span><span class="cx">                                 A513E5C6185F9436007E95AD /* InjectedScriptSource.h */,
</span><span class="cx">                                 A5EA710D19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h */,
</span><span class="lines">@@ -4524,6 +4560,8 @@
</span><span class="cx">                                 A125846D1B45A36000CC7F6C /* IntlNumberFormatPrototype.lut.h */,
</span><span class="cx">                                 A7D801A61880D6A80026C39B /* JSCBuiltins.cpp */,
</span><span class="cx">                                 A7D801A71880D6A80026C39B /* JSCBuiltins.h */,
</span><ins>+                                996B730A1BD9FA2C00331B84 /* JSDataViewPrototype.lut.h */,
+                                996B730B1BD9FA2C00331B84 /* JSGlobalObject.lut.h */,
</ins><span class="cx">                                 E33F50861B8449EF00413856 /* JSInternalPromiseConstructor.lut.h */,
</span><span class="cx">                                 BC87CDB810712ACA000614CF /* JSONObject.lut.h */,
</span><span class="cx">                                 7C184E2417BFFA36007CB63A /* JSPromiseConstructor.lut.h */,
</span><span class="lines">@@ -4532,9 +4570,18 @@
</span><span class="cx">                                 9928FF3A18AC4AEC00B8CF12 /* JSReplayInputs.h */,
</span><span class="cx">                                 A7C225CD1399849C00FF1662 /* KeywordLookup.h */,
</span><span class="cx">                                 BC18C52D0E16FCE100B34460 /* Lexer.lut.h */,
</span><ins>+                                996B730C1BD9FA2C00331B84 /* ModuleLoaderObject.lut.h */,
</ins><span class="cx">                                 BC2680E60E16D52300A06E92 /* NumberConstructor.lut.h */,
</span><ins>+                                996B730D1BD9FA2C00331B84 /* NumberPrototype.lut.h */,
+                                996B730E1BD9FA2C00331B84 /* ObjectConstructor.lut.h */,
+                                996B730F1BD9FA2C00331B84 /* ReflectObject.lut.h */,
</ins><span class="cx">                                 BCD202D50E170708002C7E82 /* RegExpConstructor.lut.h */,
</span><span class="cx">                                 A718F61A11754A21002465A7 /* RegExpJitTables.h */,
</span><ins>+                                996B73101BD9FA2C00331B84 /* RegExpPrototype.lut.h */,
+                                996B73111BD9FA2C00331B84 /* StringConstructor.lut.h */,
+                                996B73121BD9FA2C00331B84 /* StringIteratorPrototype.lut.h */,
+                                996B73131BD9FA2C00331B84 /* SymbolConstructor.lut.h */,
+                                996B73141BD9FA2C00331B84 /* SymbolPrototype.lut.h */,
</ins><span class="cx">                                 5D53727D0E1C55EC0021E549 /* TracingDtrace.h */,
</span><span class="cx">                         );
</span><span class="cx">                         name = &quot;Derived Sources&quot;;
</span><span class="lines">@@ -6061,7 +6108,6 @@
</span><span class="cx">                                 A7BDAEC917F4EA1400F6140C /* ArrayIteratorPrototype.h in Headers */,
</span><span class="cx">                                 0F63945515D07057006A597C /* ArrayProfile.h in Headers */,
</span><span class="cx">                                 BC18C3E70E16F5CD00B34460 /* ArrayPrototype.h in Headers */,
</span><del>-                                BC18C5240E16FC8A00B34460 /* ArrayPrototype.lut.h in Headers */,
</del><span class="cx">                                 0FB7F39615ED8E4600F167B2 /* ArrayStorage.h in Headers */,
</span><span class="cx">                                 9688CB150ED12B4E001D649F /* AssemblerBuffer.h in Headers */,
</span><span class="cx">                                 86D3B2C510156BDE002865E7 /* AssemblerBufferWithConstantPool.h in Headers */,
</span><span class="lines">@@ -6135,12 +6181,15 @@
</span><span class="cx">                                 0FD82E39141AB14D00179C94 /* CompactJITCodeMap.h in Headers */,
</span><span class="cx">                                 A7E5A3A81797432D00E893C0 /* CompilationResult.h in Headers */,
</span><span class="cx">                                 BC18C3F40E16F5CD00B34460 /* Completion.h in Headers */,
</span><ins>+                                996B731D1BDA08EF00331B84 /* JSGlobalObject.lut.h in Headers */,
+                                996B731F1BDA08EF00331B84 /* JSPromisePrototype.lut.h in Headers */,
</ins><span class="cx">                                 0F6FC751196110A800E1D02D /* ComplexGetStatus.h in Headers */,
</span><span class="cx">                                 0FDB2CEA174896C7007B3C1B /* ConcurrentJITLock.h in Headers */,
</span><span class="cx">                                 BC18C3F50E16F5CD00B34460 /* config.h in Headers */,
</span><span class="cx">                                 144836E7132DA7BE005BE785 /* ConservativeRoots.h in Headers */,
</span><span class="cx">                                 A53CE08A18BC21C300BEDF76 /* ConsoleClient.h in Headers */,
</span><span class="cx">                                 A5FD007A189B051000633231 /* ConsoleMessage.h in Headers */,
</span><ins>+                                996B73191BDA068000331B84 /* BooleanPrototype.lut.h in Headers */,
</ins><span class="cx">                                 A53CE08618BC1A5600BEDF76 /* ConsolePrototype.h in Headers */,
</span><span class="cx">                                 A5FD0074189B038C00633231 /* ConsoleTypes.h in Headers */,
</span><span class="cx">                                 0FFC99D1184EC8AD009C10AB /* ConstantMode.h in Headers */,
</span><span class="lines">@@ -6171,6 +6220,7 @@
</span><span class="cx">                                 14A1563210966365006FA260 /* DateInstanceCache.h in Headers */,
</span><span class="cx">                                 BCD2034C0E17135E002C7E82 /* DatePrototype.h in Headers */,
</span><span class="cx">                                 BCD203E80E1718F4002C7E82 /* DatePrototype.lut.h in Headers */,
</span><ins>+                                996B731B1BDA08D100331B84 /* ErrorPrototype.lut.h in Headers */,
</ins><span class="cx">                                 BC18C3FA0E16F5CD00B34460 /* Debugger.h in Headers */,
</span><span class="cx">                                 BC18C3FB0E16F5CD00B34460 /* DebuggerCallFrame.h in Headers */,
</span><span class="cx">                                 6AD2CB4D19B9140100065719 /* DebuggerEvalEnabler.h in Headers */,
</span><span class="lines">@@ -6353,6 +6403,7 @@
</span><span class="cx">                                 0F2BDC491522809600CD8910 /* DFGVariableEvent.h in Headers */,
</span><span class="cx">                                 0F2BDC4B1522809D00CD8910 /* DFGVariableEventStream.h in Headers */,
</span><span class="cx">                                 0FFFC96014EF90BD00C72532 /* DFGVirtualRegisterAllocationPhase.h in Headers */,
</span><ins>+                                996B73181BDA068000331B84 /* ArrayIteratorPrototype.lut.h in Headers */,
</ins><span class="cx">                                 0FC97F4218202119002C9B26 /* DFGWatchpointCollectionPhase.h in Headers */,
</span><span class="cx">                                 0FDB2CE8174830A2007B3C1B /* DFGWorklist.h in Headers */,
</span><span class="cx">                                 0FE050181AA9091100D33B33 /* DirectArguments.h in Headers */,
</span><span class="lines">@@ -6391,6 +6442,7 @@
</span><span class="cx">                                 0F485328187DFDEC0083B687 /* FTLAvailableRecovery.h in Headers */,
</span><span class="cx">                                 0FEA0A0A170513DB00BB722C /* FTLCapabilities.h in Headers */,
</span><span class="cx">                                 0FEA0A231709606900BB722C /* FTLCommonValues.h in Headers */,
</span><ins>+                                996B73221BDA08EF00331B84 /* ObjectConstructor.lut.h in Headers */,
</ins><span class="cx">                                 0FEA0A0C170513DB00BB722C /* FTLCompile.h in Headers */,
</span><span class="cx">                                 0FE95F7A18B5694700B531FB /* FTLDataSection.h in Headers */,
</span><span class="cx">                                 2AC922BC18A16182003CE0FB /* FTLDWARFDebugLineInfo.h in Headers */,
</span><span class="lines">@@ -6425,6 +6477,7 @@
</span><span class="cx">                                 0FD8A31C17D51F2200CA2C40 /* FTLOSREntry.h in Headers */,
</span><span class="cx">                                 0F235BDD17178E1C00690C7F /* FTLOSRExit.h in Headers */,
</span><span class="cx">                                 0F235BDE17178E1C00690C7F /* FTLOSRExitCompilationInfo.h in Headers */,
</span><ins>+                                996B73281BDA08EF00331B84 /* SymbolPrototype.lut.h in Headers */,
</ins><span class="cx">                                 0F235BE017178E1C00690C7F /* FTLOSRExitCompiler.h in Headers */,
</span><span class="cx">                                 0FEA0A11170513DB00BB722C /* FTLOutput.h in Headers */,
</span><span class="cx">                                 0F48532A187DFDEC0083B687 /* FTLRecoveryOpcode.h in Headers */,
</span><span class="lines">@@ -6462,10 +6515,12 @@
</span><span class="cx">                                 9959E9311BD18272001AA413 /* generate-combined-inspector-json.py in Headers */,
</span><span class="cx">                                 C4703CC0192844960013FBEA /* generate-inspector-protocol-bindings.py in Headers */,
</span><span class="cx">                                 99DA00AF1BD5994E00F4575C /* generate-js-builtins.py in Headers */,
</span><ins>+                                996B731C1BDA08DD00331B84 /* JSDataViewPrototype.lut.h in Headers */,
</ins><span class="cx">                                 A5EA70EC19F5B3EA0098F5EC /* generate_cpp_alternate_backend_dispatcher_header.py in Headers */,
</span><span class="cx">                                 A5EF9B141A1D43F600702E90 /* generate_cpp_backend_dispatcher_header.py in Headers */,
</span><span class="cx">                                 A5EF9B151A1D43FA00702E90 /* generate_cpp_backend_dispatcher_implementation.py in Headers */,
</span><span class="cx">                                 A5EF9B161A1D440000702E90 /* generate_cpp_frontend_dispatcher_header.py in Headers */,
</span><ins>+                                996B73251BDA08EF00331B84 /* StringConstructor.lut.h in Headers */,
</ins><span class="cx">                                 A5EF9B171A1D440300702E90 /* generate_cpp_frontend_dispatcher_implementation.py in Headers */,
</span><span class="cx">                                 A5EF9B181A1D440600702E90 /* generate_cpp_protocol_types_header.py in Headers */,
</span><span class="cx">                                 A5EF9B191A1D440700702E90 /* generate_cpp_protocol_types_implementation.py in Headers */,
</span><span class="lines">@@ -6639,6 +6694,7 @@
</span><span class="cx">                                 A7B4ACAF1484C9CE00B38A36 /* JSExportMacros.h in Headers */,
</span><span class="cx">                                 0F2B66EF17B6B5AB00A7AE3F /* JSFloat32Array.h in Headers */,
</span><span class="cx">                                 0F2B66F017B6B5AB00A7AE3F /* JSFloat64Array.h in Headers */,
</span><ins>+                                996B731E1BDA08EF00331B84 /* JSPromiseConstructor.lut.h in Headers */,
</ins><span class="cx">                                 BC18C41F0E16F5CD00B34460 /* JSFunction.h in Headers */,
</span><span class="cx">                                 A72028BA1797603D0098028C /* JSFunctionInlines.h in Headers */,
</span><span class="cx">                                 0F2B66F117B6B5AB00A7AE3F /* JSGenericTypedArrayView.h in Headers */,
</span><span class="lines">@@ -6713,6 +6769,7 @@
</span><span class="cx">                                 BC18C4280E16F5CD00B34460 /* JSStringRef.h in Headers */,
</span><span class="cx">                                 BC18C4290E16F5CD00B34460 /* JSStringRefCF.h in Headers */,
</span><span class="cx">                                 1A28D4A8177B71C80007FA3C /* JSStringRefPrivate.h in Headers */,
</span><ins>+                                996B73271BDA08EF00331B84 /* SymbolConstructor.lut.h in Headers */,
</ins><span class="cx">                                 0F919D0D157EE0A2004A4E7D /* JSSymbolTableObject.h in Headers */,
</span><span class="cx">                                 70ECA6061AFDBEA200449739 /* JSTemplateRegistryKey.h in Headers */,
</span><span class="cx">                                 BC18C42A0E16F5CD00B34460 /* JSType.h in Headers */,
</span><span class="lines">@@ -6723,6 +6780,7 @@
</span><span class="cx">                                 DEA7E2451BBC677F00D78440 /* JSTypedArrayViewPrototype.h in Headers */,
</span><span class="cx">                                 6507D29E0E871E5E00D7D896 /* JSTypeInfo.h in Headers */,
</span><span class="cx">                                 0F2B670217B6B5AB00A7AE3F /* JSUint16Array.h in Headers */,
</span><ins>+                                996B731A1BDA08D100331B84 /* DateConstructor.lut.h in Headers */,
</ins><span class="cx">                                 0F2B670317B6B5AB00A7AE3F /* JSUint32Array.h in Headers */,
</span><span class="cx">                                 0F2B670017B6B5AB00A7AE3F /* JSUint8Array.h in Headers */,
</span><span class="cx">                                 0F2B670117B6B5AB00A7AE3F /* JSUint8ClampedArray.h in Headers */,
</span><span class="lines">@@ -6730,6 +6788,7 @@
</span><span class="cx">                                 86E3C61B167BABEE006D760A /* JSValueInternal.h in Headers */,
</span><span class="cx">                                 BC18C42C0E16F5CD00B34460 /* JSValueRef.h in Headers */,
</span><span class="cx">                                 86E3C615167BABD7006D760A /* JSVirtualMachine.h in Headers */,
</span><ins>+                                996B73211BDA08EF00331B84 /* NumberPrototype.lut.h in Headers */,
</ins><span class="cx">                                 86E3C61D167BABEE006D760A /* JSVirtualMachineInternal.h in Headers */,
</span><span class="cx">                                 7B98D1371B60CD620023B1A4 /* JSWASMModule.h in Headers */,
</span><span class="cx">                                 A7CA3AE817DA41AE006538AF /* JSWeakMap.h in Headers */,
</span><span class="lines">@@ -6740,6 +6799,7 @@
</span><span class="cx">                                 86E3C619167BABEE006D760A /* JSWrapperMap.h in Headers */,
</span><span class="cx">                                 BC18C42E0E16F5CD00B34460 /* JSWrapperObject.h in Headers */,
</span><span class="cx">                                 BCFD8C930EEB2EE700283848 /* JumpTable.h in Headers */,
</span><ins>+                                996B73201BDA08EF00331B84 /* ModuleLoaderObject.lut.h in Headers */,
</ins><span class="cx">                                 A72FFD64139985A800E5365A /* KeywordLookup.h in Headers */,
</span><span class="cx">                                 969A072A0ED1CE6900F1F681 /* Label.h in Headers */,
</span><span class="cx">                                 960097A60EBABB58007A7297 /* LabelScope.h in Headers */,
</span><span class="lines">@@ -6803,6 +6863,7 @@
</span><span class="cx">                                 C4703CD7192844CC0013FBEA /* models.py in Headers */,
</span><span class="cx">                                 E3794E761B77EB97005543AE /* ModuleAnalyzer.h in Headers */,
</span><span class="cx">                                 E355F3531B7DC85300C50DC5 /* ModuleLoaderObject.h in Headers */,
</span><ins>+                                996B73241BDA08EF00331B84 /* RegExpPrototype.lut.h in Headers */,
</ins><span class="cx">                                 BC02E9110E1839DB000F9297 /* NativeErrorConstructor.h in Headers */,
</span><span class="cx">                                 BC02E9130E1839DB000F9297 /* NativeErrorPrototype.h in Headers */,
</span><span class="cx">                                 E33E8D211B9013DE00346B52 /* NativeStdFunctionCell.h in Headers */,
</span><span class="lines">@@ -6832,6 +6893,7 @@
</span><span class="cx">                                 0FE228ED1436AB2700196C48 /* Options.h in Headers */,
</span><span class="cx">                                 BC18C44B0E16F5CD00B34460 /* Parser.h in Headers */,
</span><span class="cx">                                 93052C350FB792190048FDC3 /* ParserArena.h in Headers */,
</span><ins>+                                996B73231BDA08EF00331B84 /* ReflectObject.lut.h in Headers */,
</ins><span class="cx">                                 0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */,
</span><span class="cx">                                 A77F1825164192C700640A47 /* ParserModes.h in Headers */,
</span><span class="cx">                                 65303D641447B9E100D3F904 /* ParserTokens.h in Headers */,
</span><span class="lines">@@ -6876,6 +6938,7 @@
</span><span class="cx">                                 0FF60AC216740F8300029779 /* ReduceWhitespace.h in Headers */,
</span><span class="cx">                                 E33637A61B63220200EE0840 /* ReflectObject.h in Headers */,
</span><span class="cx">                                 0FA7A8EC18B413C80052371D /* Reg.h in Headers */,
</span><ins>+                                996B73171BDA067F00331B84 /* ArrayConstructor.lut.h in Headers */,
</ins><span class="cx">                                 BC18C45A0E16F5CD00B34460 /* RegExp.h in Headers */,
</span><span class="cx">                                 A1712B3F11C7B228007A5315 /* RegExpCache.h in Headers */,
</span><span class="cx">                                 BCD202C20E1706A7002C7E82 /* RegExpConstructor.h in Headers */,
</span><span class="lines">@@ -6997,6 +7060,7 @@
</span><span class="cx">                                 A7A8AF4017ADB5F3005AB174 /* Uint8ClampedArray.h in Headers */,
</span><span class="cx">                                 0F5F08CF146C7633000472A9 /* UnconditionalFinalizer.h in Headers */,
</span><span class="cx">                                 A7B601821639FD2A00372BA3 /* UnlinkedCodeBlock.h in Headers */,
</span><ins>+                                996B73261BDA08EF00331B84 /* StringIteratorPrototype.lut.h in Headers */,
</ins><span class="cx">                                 14142E511B796ECE00F4BF4B /* UnlinkedFunctionExecutable.h in Headers */,
</span><span class="cx">                                 0F2E892C16D028AD009E4FD2 /* UnusedPointer.h in Headers */,
</span><span class="cx">                                 99DA00B11BD5994E00F4575C /* UpdateContents.py in Headers */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorecreate_hash_table"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/create_hash_table (191536 => 191537)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/create_hash_table        2015-10-24 20:04:39 UTC (rev 191536)
+++ trunk/Source/JavaScriptCore/create_hash_table        2015-10-24 21:39:37 UTC (rev 191537)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> # (c) 2000-2002 by Harri Porten &lt;porten@kde.org&gt; and
</span><span class="cx"> #                  David Faure &lt;faure@kde.org&gt;
</span><span class="cx"> # Modified (c) 2004 by Nikolas Zimmermann &lt;wildfox@kde.org&gt;
</span><del>-# Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved.
</del><ins>+# Copyright (C) 2007, 2008, 2009, 2015 Apple Inc. All rights reserved.
</ins><span class="cx"> #
</span><span class="cx"> # This library is free software; you can redistribute it and/or
</span><span class="cx"> # modify it under the terms of the GNU Lesser General Public
</span><span class="lines">@@ -21,18 +21,19 @@
</span><span class="cx"> # License along with this library; if not, write to the Free Software
</span><span class="cx"> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
</span><span class="cx"> #
</span><del>-
</del><ins>+ 
</ins><span class="cx"> use strict;
</span><ins>+use Getopt::Long qw(:config pass_through);
</ins><span class="cx"> 
</span><del>-my $file = $ARGV[0];
-shift;
-my $includelookup = 0;
</del><ins>+my $includeLookup = 0;
+my $includeBuiltin = 0;
</ins><span class="cx"> 
</span><del>-# Use -i as second argument to make it include &quot;Lookup.h&quot;
-$includelookup = 1 if (defined($ARGV[0]) &amp;&amp; $ARGV[0] eq &quot;-i&quot;);
</del><ins>+GetOptions('i|lookup' =&gt; \$includeLookup,    # Include &quot;Lookup.h&quot;.
+           'b|builtin' =&gt; \$includeBuiltin,  # Include JSCBuiltins.h and builtins support.
+)
+or die(&quot;Unable to process command line options.&quot;);
</ins><span class="cx"> 
</span><del>-# Use -n as second argument to make it use the third argument as namespace parameter ie. -n KDOM
-my $useNameSpace = $ARGV[1] if (defined($ARGV[0]) &amp;&amp; $ARGV[0] eq &quot;-n&quot;);
</del><ins>+my $file = shift @ARGV or die(&quot;Must provide source file as final argument.&quot;);
</ins><span class="cx"> 
</span><span class="cx"> print STDERR &quot;Creating hashtable for $file\n&quot;;
</span><span class="cx"> open(IN, $file) or die &quot;No such file $file&quot;;
</span><span class="lines">@@ -257,17 +258,13 @@
</span><span class="cx">     my $nameIndex = &quot;${name}Index&quot;;
</span><span class="cx">     $nameIndex =~ s/:/_/g;
</span><span class="cx"> 
</span><del>-    print &quot;\n#include \&quot;JSCBuiltins.h\&quot;\n&quot;;
-    print &quot;\n#include \&quot;Lookup.h\&quot;\n&quot; if ($includelookup);
-
-    if ($useNameSpace) {
-        print &quot;\nnamespace ${useNameSpace} {\n&quot;;
-        print &quot;\nusing namespace JSC;\n&quot;;
-    } else {
-        print &quot;\nnamespace JSC {\n&quot;;
-    }
-
-    print &quot;\nstatic const struct CompactHashIndex ${nameIndex}\[$compactSize\] = {\n&quot;;
</del><ins>+    print &quot;\n&quot;;
+    print &quot;#include \&quot;JSCBuiltins.h\&quot;\n&quot; if ($includeBuiltin);
+    print &quot;#include \&quot;Lookup.h\&quot;\n&quot; if ($includeLookup);
+    print &quot;\n&quot;;
+    print &quot;namespace JSC {\n&quot;;
+    print &quot;\n&quot;;
+    print &quot;static const struct CompactHashIndex ${nameIndex}\[$compactSize\] = {\n&quot;;
</ins><span class="cx">     for (my $i = 0; $i &lt; $compactSize; $i++) {
</span><span class="cx">         my $T = -1;
</span><span class="cx">         if (defined($table[$i])) { $T = $table[$i]; }
</span><span class="lines">@@ -275,10 +272,11 @@
</span><span class="cx">         if (defined($links[$i])) { $L = $links[$i]; }
</span><span class="cx">         print &quot;    { $T, $L },\n&quot;;
</span><span class="cx">     }
</span><del>-    print &quot;};\n\n&quot;;
</del><ins>+    print &quot;};\n&quot;;
+    print &quot;\n&quot;;
</ins><span class="cx"> 
</span><span class="cx">     my $packedSize = scalar @keys;
</span><del>-    print &quot;\nstatic const struct HashTableValue ${nameEntries}\[$packedSize\] = {\n&quot;;
</del><ins>+    print &quot;static const struct HashTableValue ${nameEntries}\[$packedSize\] = {\n&quot;;
</ins><span class="cx">     my $i = 0;
</span><span class="cx">     foreach my $key (@keys) {
</span><span class="cx">         my $firstValue = &quot;&quot;;
</span><span class="lines">@@ -316,7 +314,7 @@
</span><span class="cx">             $intrinsic = &quot;RegExpTestIntrinsic&quot; if ($key eq &quot;test&quot;);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if ($values[$i]{&quot;type&quot;} eq &quot;Function&quot;)  {
</del><ins>+        if ($values[$i]{&quot;type&quot;} eq &quot;Function&quot; &amp;&amp; $includeBuiltin)  {
</ins><span class="cx">             my $tableHead = $name;
</span><span class="cx">             $tableHead =~ s/Table$//;
</span><span class="cx">             print &quot; #if JSC_BUILTIN_EXISTS(&quot; . uc($tableHead) . &quot;, &quot; . uc($key) .&quot;)\n&quot;;
</span><span class="lines">@@ -324,13 +322,15 @@
</span><span class="cx">             print &quot; #else\n&quot;
</span><span class="cx">         }
</span><span class="cx">         print &quot;   { \&quot;$key\&quot;, $attrs[$i], $intrinsic, { (intptr_t)&quot; . $firstCastStr . &quot;($firstValue), (intptr_t)&quot; . $secondCastStr . &quot;($secondValue) } },\n&quot;;
</span><del>-        if ($values[$i]{&quot;type&quot;} eq &quot;Function&quot;)  {
-            print &quot; #endif\n&quot;
</del><ins>+        if ($values[$i]{&quot;type&quot;} eq &quot;Function&quot; &amp;&amp; $includeBuiltin)  {
+            print &quot; #endif\n&quot;;
</ins><span class="cx">         }
</span><span class="cx">         $i++;
</span><span class="cx">     }
</span><del>-    print &quot;};\n\n&quot;;
</del><ins>+    print &quot;};\n&quot;;
+    print &quot;\n&quot;;
</ins><span class="cx">     print &quot;static const struct HashTable $name =\n&quot;;
</span><span class="cx">     print &quot;    \{ $packedSize, $compactHashSizeMask, $hasSetter, $nameEntries, $nameIndex \};\n&quot;;
</span><del>-    print &quot;} // namespace\n&quot;;
</del><ins>+    print &quot;\n&quot;;
+    print &quot;} // namespace JSC\n&quot;;
</ins><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>