<!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>[164732] trunk/Source</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/164732">164732</a></dd>
<dt>Author</dt> <dd>msaboff@apple.com</dd>
<dt>Date</dt> <dd>2014-02-26 11:45:38 -0800 (Wed, 26 Feb 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Auto generate bytecode information for bytecode parser and LLInt
https://bugs.webkit.org/show_bug.cgi?id=129181
Reviewed by Mark Lam.
Source/JavaScriptCore:
Added new bytecode/BytecodeList.json that contains a list of bytecodes and related
helpers. It also includes bytecode length and other information used to generate files.
Added a new generator, generate-bytecode-files that generates Bytecodes.h and InitBytecodes.asm
in DerivedSources/JavaScriptCore/.
Added the generation of these files to the "DerivedSource" build step.
Slighty changed the build order, since the Bytecodes.h file is needed by
JSCLLIntOffsetsExtractor. Moved the offline assembly to a separate step since it needs
to be run after JSCLLIntOffsetsExtractor.
Made related changes to OPCODE macros and their use.
* CMakeLists.txt:
* DerivedSources.make:
* GNUmakefile.am:
* GNUmakefile.list.am:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.vcxproj/copy-files.cmd:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/BytecodeList.json: Added.
* bytecode/Opcode.h:
(JSC::padOpcodeName):
* generate-bytecode-files: Added.
* llint/LLIntCLoop.cpp:
(JSC::LLInt::CLoop::initialize):
* llint/LLIntCLoop.h:
* llint/LLIntData.cpp:
(JSC::LLInt::initialize):
* llint/LLIntOpcode.h:
* llint/LowLevelInterpreter.asm:
Source/WebKit:
Added ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} to WebKit_INCLUDE_DIRECTORIES due to new
generated Bytecodes.h include file.
* CMakeLists.txt:
Source/WebKit2:
Added ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} to WebKit2_INCLUDE_DIRECTORIES due to new
generated Bytecodes.h include file.
* CMakeLists.txt:</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="#trunkSourceJavaScriptCoreGNUmakefileam">trunk/Source/JavaScriptCore/GNUmakefile.am</a></li>
<li><a href="#trunkSourceJavaScriptCoreGNUmakefilelistam">trunk/Source/JavaScriptCore/GNUmakefile.list.am</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj">trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters">trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorevcxprojcopyfilescmd">trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeOpcodeh">trunk/Source/JavaScriptCore/bytecode/Opcode.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntCLoopcpp">trunk/Source/JavaScriptCore/llint/LLIntCLoop.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntCLooph">trunk/Source/JavaScriptCore/llint/LLIntCLoop.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntDatacpp">trunk/Source/JavaScriptCore/llint/LLIntData.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntOpcodeh">trunk/Source/JavaScriptCore/llint/LLIntOpcode.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLowLevelInterpreterasm">trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm</a></li>
<li><a href="#trunkSourceWebKitCMakeListstxt">trunk/Source/WebKit/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKitChangeLog">trunk/Source/WebKit/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeListjson">trunk/Source/JavaScriptCore/bytecode/BytecodeList.json</a></li>
<li><a href="#trunkSourceJavaScriptCoregeneratebytecodefiles">trunk/Source/JavaScriptCore/generate-bytecode-files</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/CMakeLists.txt (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -594,24 +594,31 @@
</span><span class="cx"> )
</span><span class="cx">
</span><span class="cx"> add_custom_command(
</span><ins>+ OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Bytecodes.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InitBytecodes.asm
+ MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/generate-bytecode-files
+ DEPENDS ${JAVASCRIPTCORE_DIR}/generate-bytecode-files bytecode/BytecodeList.json
+ COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/generate-bytecode-files --bytecodes_h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Bytecodes.h --init_bytecodes_asm ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InitBytecodes.asm ${JAVASCRIPTCORE_DIR}/bytecode/BytecodeList.json
+ VERBATIM)
+
+ add_custom_command(
</ins><span class="cx"> OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h
</span><span class="cx"> MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/generate_offset_extractor.rb
</span><span class="cx"> DEPENDS ${LLINT_ASM} ${OFFLINE_ASM}
</span><span class="cx"> COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/generate_offset_extractor.rb ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h
</span><span class="cx"> VERBATIM)
</span><span class="cx">
</span><del>- # We add the header file directly to the ADD_EXECUTABLE call instead of setting the
- # OBJECT_DEPENDS property in LLIntOffsetsExtractor.cpp because generate_offset_extractor.rb may
- # not regenerate it in case the hash it calculates does not change.
- # In this case, if some of the dependencies specified in the ADD_CUSTOM_COMMAND above have
- # changed the command will always be called because the mtime of LLIntDesiredOffsets.h will
- # always be older than that of its dependencies.
- # Additionally, setting the OBJECT_DEPENDS property will make LLIntDesiredOffsets.h a Makefile
</del><ins>+ # We add the header files directly to the ADD_EXECUTABLE call instead of setting the
+ # OBJECT_DEPENDS property in LLIntOffsetsExtractor.cpp because generate_offset_extractor.rb and
+ # generate-bytecode-files may not regenerate the .h files in case the hash it calculates does not change.
+ # In this case, if some of the dependencies specified in the ADD_CUSTOM_COMMANDs above have
+ # changed the command will always be called because the mtime of the .h files will
+ # always be older than that of their dependencies.
+ # Additionally, setting the OBJECT_DEPENDS property will make the .h files a Makefile
</ins><span class="cx"> # dependency of both LLIntOffsetsExtractor and LLIntOffsetsExtractor.cpp, so the command will
</span><del>- # actually be run twice!
</del><ins>+ # actually be run multiple times!
</ins><span class="cx"> add_executable(LLIntOffsetsExtractor
</span><span class="cx"> ${JAVASCRIPTCORE_DIR}/llint/LLIntOffsetsExtractor.cpp
</span><del>- ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h
</del><ins>+ ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntDesiredOffsets.h ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Bytecodes.h
</ins><span class="cx"> )
</span><span class="cx"> target_link_libraries(LLIntOffsetsExtractor WTF)
</span><span class="cx">
</span><span class="lines">@@ -624,7 +631,7 @@
</span><span class="cx"> add_custom_command(
</span><span class="cx"> OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntAssembly.h
</span><span class="cx"> MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb
</span><del>- DEPENDS LLIntOffsetsExtractor ${LLINT_ASM} ${OFFLINE_ASM}
</del><ins>+ DEPENDS LLIntOffsetsExtractor ${LLINT_ASM} ${OFFLINE_ASM} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/InitBytecodes.asm
</ins><span class="cx"> COMMAND ${RUBY_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/offlineasm/asm.rb ${JAVASCRIPTCORE_DIR}/llint/LowLevelInterpreter.asm $<TARGET_FILE:LLIntOffsetsExtractor> ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntAssembly.h
</span><span class="cx"> COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/LLIntAssembly.h
</span><span class="cx"> VERBATIM)
</span><span class="lines">@@ -789,6 +796,7 @@
</span><span class="cx"> runtime/VM.h
</span><span class="cx">
</span><span class="cx"> ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/JSCBuiltins.h
</span><ins>+ ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/Bytecodes.h
</ins><span class="cx"> )
</span><span class="cx">
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><ins>+2014-02-26 Michael Saboff <msaboff@apple.com>
+
+ Auto generate bytecode information for bytecode parser and LLInt
+ https://bugs.webkit.org/show_bug.cgi?id=129181
+
+ Reviewed by Mark Lam.
+
+ Added new bytecode/BytecodeList.json that contains a list of bytecodes and related
+ helpers. It also includes bytecode length and other information used to generate files.
+ Added a new generator, generate-bytecode-files that generates Bytecodes.h and InitBytecodes.asm
+ in DerivedSources/JavaScriptCore/.
+
+ Added the generation of these files to the "DerivedSource" build step.
+ Slighty changed the build order, since the Bytecodes.h file is needed by
+ JSCLLIntOffsetsExtractor. Moved the offline assembly to a separate step since it needs
+ to be run after JSCLLIntOffsetsExtractor.
+
+ Made related changes to OPCODE macros and their use.
+
+ * CMakeLists.txt:
+ * DerivedSources.make:
+ * GNUmakefile.am:
+ * GNUmakefile.list.am:
+ * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+ * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
+ * JavaScriptCore.vcxproj/copy-files.cmd:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * bytecode/BytecodeList.json: Added.
+ * bytecode/Opcode.h:
+ (JSC::padOpcodeName):
+ * generate-bytecode-files: Added.
+ * llint/LLIntCLoop.cpp:
+ (JSC::LLInt::CLoop::initialize):
+ * llint/LLIntCLoop.h:
+ * llint/LLIntData.cpp:
+ (JSC::LLInt::initialize):
+ * llint/LLIntOpcode.h:
+ * llint/LowLevelInterpreter.asm:
+
</ins><span class="cx"> 2014-02-26 Mark Lam <mark.lam@apple.com>
</span><span class="cx">
</span><span class="cx"> ASSERTION FAILED: m_heap->vm()->currentThreadIsHoldingAPILock() in inspector-protocol/*.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/DerivedSources.make (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/DerivedSources.make        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/DerivedSources.make        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -58,6 +58,8 @@
</span><span class="cx"> RegExpObject.lut.h \
</span><span class="cx"> StringConstructor.lut.h \
</span><span class="cx"> udis86_itab.h \
</span><ins>+ Bytecodes.h \
+ InitBytecodes.asm \
</ins><span class="cx"> JSCBuiltins \
</span><span class="cx"> #
</span><span class="cx">
</span><span class="lines">@@ -90,7 +92,14 @@
</span><span class="cx"> udis86_itab.h: $(JavaScriptCore)/disassembler/udis86/itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml
</span><span class="cx">         (PYTHONPATH=$(JavaScriptCore)/disassembler/udis86 python $(JavaScriptCore)/disassembler/udis86/itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml || exit 1)
</span><span class="cx">
</span><ins>+# Bytecode files
</ins><span class="cx">
</span><ins>+Bytecodes.h: $(JavaScriptCore)/generate-bytecode-files $(JavaScriptCore)/bytecode/BytecodeList.json
+        python $(JavaScriptCore)/generate-bytecode-files --bytecodes_h Bytecodes.h $(JavaScriptCore)/bytecode/BytecodeList.json
+
+InitBytecodes.asm: $(JavaScriptCore)/generate-bytecode-files $(JavaScriptCore)/bytecode/BytecodeList.json
+        python $(JavaScriptCore)/generate-bytecode-files --init_bytecodes_asm InitBytecodes.asm $(JavaScriptCore)/bytecode/BytecodeList.json
+
</ins><span class="cx"> # Inspector interfaces
</span><span class="cx">
</span><span class="cx"> INSPECTOR_DOMAINS = \
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreGNUmakefileam"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/GNUmakefile.am (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/GNUmakefile.am        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/GNUmakefile.am        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -95,6 +95,12 @@
</span><span class="cx">
</span><span class="cx"> $(shell mkdir -p DerivedSources/JavaScriptCore)
</span><span class="cx">
</span><ins>+DerivedSources/JavaScriptCore/Bytecodes.h: $(srcdir)/Source/JavaScriptCore/generate-bytecode-files $(srcdir)/Source/JavaScriptCore/bytecode/BytecodeList.json
+        $(AM_V_GEN)$(PYTHON) $(srcdir)/Source/JavaScriptCore/generate-bytecode-files --bytecodes_h $@ $(srcdir)/Source/JavaScriptCore/bytecode/BytecodeList.json
+
+DerivedSources/JavaScriptCore/InitBytecodes.asm: $(srcdir)/Source/JavaScriptCore/generate-bytecode-files $(srcdir)/Source/JavaScriptCore/bytecode/BytecodeList.json
+        $(AM_V_GEN)$(PYTHON) $(srcdir)/Source/JavaScriptCore/generate-bytecode-files --init_bytecodes_asm $@ $(srcdir)/Source/JavaScriptCore/bytecode/BytecodeList.json
+
</ins><span class="cx"> DerivedSources/JavaScriptCore/Lexer.lut.h: $(srcdir)/Source/JavaScriptCore/create_hash_table $(srcdir)/Source/JavaScriptCore/parser/Keywords.table
</span><span class="cx">         $(AM_V_GEN)$(PERL) $^ > $@
</span><span class="cx">
</span><span class="lines">@@ -111,9 +117,9 @@
</span><span class="cx">         $(AM_V_GEN)$(RUBY) $(srcdir)/Source/JavaScriptCore/offlineasm/generate_offset_extractor.rb $(srcdir)/Source/JavaScriptCore/llint/LowLevelInterpreter.asm $@
</span><span class="cx">         $(AM_V_at)touch $@
</span><span class="cx">
</span><del>-$(Programs_LLIntOffsetsExtractor_OBJECTS): DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h
</del><ins>+$(Programs_LLIntOffsetsExtractor_OBJECTS): DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h DerivedSources/JavaScriptCore/Bytecodes.h
</ins><span class="cx">
</span><del>-DerivedSources/JavaScriptCore/LLIntAssembly.h: Programs/LLIntOffsetsExtractor$(EXEEXT)
</del><ins>+DerivedSources/JavaScriptCore/LLIntAssembly.h: Programs/LLIntOffsetsExtractor$(EXEEXT) DerivedSources/JavaScriptCore/InitBytecodes.asm
</ins><span class="cx">         $(AM_V_GEN)$(RUBY) $(srcdir)/Source/JavaScriptCore/offlineasm/asm.rb $(srcdir)/Source/JavaScriptCore/llint/LowLevelInterpreter.asm Programs/LLIntOffsetsExtractor$(EXEEXT) $@
</span><span class="cx">         $(AM_V_at)touch $@
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreGNUmakefilelistam"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/GNUmakefile.list.am (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/GNUmakefile.list.am        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/GNUmakefile.list.am        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -34,6 +34,8 @@
</span><span class="cx">         DerivedSources/JavaScriptCore/RegExpObject.lut.h \
</span><span class="cx">         DerivedSources/JavaScriptCore/RegExpPrototype.lut.h \
</span><span class="cx">         DerivedSources/JavaScriptCore/StringConstructor.lut.h \
</span><ins>+        DerivedSources/JavaScriptCore/Bytecodes.h \
+        DerivedSources/JavaScriptCore/InitBytecodes.asm \
</ins><span class="cx">         DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h \
</span><span class="cx">         DerivedSources/JavaScriptCore/LLIntAssembly.h
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -1446,6 +1446,7 @@
</span><span class="cx"> <ClInclude Include="..\yarr\YarrSyntaxChecker.h" />
</span><span class="cx"> </ItemGroup>
</span><span class="cx"> <ItemGroup>
</span><ins>+ <None Include="..\bytecode\BytecodeList.json" />
</ins><span class="cx"> <None Include="JavaScriptCorePostBuild.cmd">
</span><span class="cx"> <FileType>Document</FileType>
</span><span class="cx"> </None>
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -3336,6 +3336,9 @@
</span><span class="cx"> <None Include="JavaScriptCorePreLink.cmd" />
</span><span class="cx"> <None Include="JavaScriptCorePostBuild.cmd" />
</span><span class="cx"> <None Include="JavaScriptCorePreBuild.cmd" />
</span><ins>+ <None Include="..\bytecode\BytecodeList.json">
+ <Filter>bytecode</Filter>
+ </None>
</ins><span class="cx"> </ItemGroup>
</span><span class="cx"> <ItemGroup>
</span><span class="cx"> <MASM Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\LowLevelInterpreterWin.asm" />
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojcopyfilescmd"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -75,6 +75,7 @@
</span><span class="cx">
</span><span class="cx"> echo Copying builtins header as if it were a private header...
</span><span class="cx"> xcopy /y "%DerivedSourcesDirectory%\JSCBuiltins.h" "%PrivateHeadersDirectory%" >NUL
</span><ins>+xcopy /y "%DerivedSourcesDirectory%\Bytecodes.h" "%PrivateHeadersDirectory%" >NUL
</ins><span class="cx">
</span><span class="cx"> echo Copying resources...
</span><span class="cx"> mkdir "%ResourcesDirectory%" 2>NUL
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -29,6 +29,18 @@
</span><span class="cx">                         name = "Test Tools";
</span><span class="cx">                         productName = "Test Tools";
</span><span class="cx">                 };
</span><ins>+                65788A9D18B409EB00C189FF /* Offline Assembler */ = {
+                        isa = PBXAggregateTarget;
+                        buildConfigurationList = 65788AA218B409EB00C189FF /* Build configuration list for PBXAggregateTarget "Offline Assembler" */;
+                        buildPhases = (
+                                65788AA018B409EB00C189FF /* Generate Offline Assembler */,
+                        );
+                        dependencies = (
+                                65788A9E18B409EB00C189FF /* PBXTargetDependency */,
+                        );
+                        name = "Offline Assembler";
+                        productName = "Offline Assembler";
+                };
</ins><span class="cx">                 65FB3F6609D11E9100F49DEB /* Derived Sources */ = {
</span><span class="cx">                         isa = PBXAggregateTarget;
</span><span class="cx">                         buildConfigurationList = 65FB3F7709D11EBD00F49DEB /* Build configuration list for PBXAggregateTarget "Derived Sources" */;
</span><span class="lines">@@ -37,7 +49,7 @@
</span><span class="cx">                                 5D35DEE10C7C140B008648B2 /* Generate DTrace header */,
</span><span class="cx">                         );
</span><span class="cx">                         dependencies = (
</span><del>-                                0FF922D614F46B600041A24E /* PBXTargetDependency */,
</del><ins>+                                65788AA918B40A3300C189FF /* PBXTargetDependency */,
</ins><span class="cx">                         );
</span><span class="cx">                         name = "Derived Sources";
</span><span class="cx">                         productName = "Derived Sources";
</span><span class="lines">@@ -792,6 +804,7 @@
</span><span class="cx">                 651122FD14046A4C002B101D /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; };
</span><span class="cx">                 651122FE14046A4C002B101D /* libedit.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5D8AD00E0D0EBE00F9C692 /* libedit.dylib */; };
</span><span class="cx">                 6511230714046B0A002B101D /* testRegExp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 651122E5140469BA002B101D /* testRegExp.cpp */; };
</span><ins>+                6514F21918B3E1670098FF8B /* Bytecodes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6514F21718B3E1670098FF8B /* Bytecodes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 65303D641447B9E100D3F904 /* ParserTokens.h in Headers */ = {isa = PBXBuildFile; fileRef = 65303D631447B9E100D3F904 /* ParserTokens.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 6553A33117A1F1EE008CF6F3 /* CommonSlowPathsExceptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6553A32F17A1F1EE008CF6F3 /* CommonSlowPathsExceptions.cpp */; };
</span><span class="cx">                 6553A33217A1F1EE008CF6F3 /* CommonSlowPathsExceptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6553A33017A1F1EE008CF6F3 /* CommonSlowPathsExceptions.h */; };
</span><span class="lines">@@ -1453,13 +1466,6 @@
</span><span class="cx">                         remoteGlobalIDString = 0F4680A914BA7FD900BFE272;
</span><span class="cx">                         remoteInfo = "LLInt Offsets";
</span><span class="cx">                 };
</span><del>-                0FF922D514F46B600041A24E /* PBXContainerItemProxy */ = {
-                        isa = PBXContainerItemProxy;
-                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
-                        proxyType = 1;
-                        remoteGlobalIDString = 0FF922C314F46B130041A24E;
-                        remoteInfo = JSCLLIntOffsetsExtractor;
-                };
</del><span class="cx">                 5D69E911152BE5470028D720 /* PBXContainerItemProxy */ = {
</span><span class="cx">                         isa = PBXContainerItemProxy;
</span><span class="cx">                         containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
</span><span class="lines">@@ -1495,6 +1501,34 @@
</span><span class="cx">                         remoteGlobalIDString = 5D6B2A47152B9E17005231DE;
</span><span class="cx">                         remoteInfo = "Test Tools";
</span><span class="cx">                 };
</span><ins>+                65788A9F18B409EB00C189FF /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 0FF922C314F46B130041A24E;
+                        remoteInfo = JSCLLIntOffsetsExtractor;
+                };
+                65788AA818B40A3300C189FF /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 0F4680A914BA7FD900BFE272;
+                        remoteInfo = "LLInt Offsets";
+                };
+                65788AAA18B40A3B00C189FF /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 65FB3F6609D11E9100F49DEB;
+                        remoteInfo = "Derived Sources";
+                };
+                65788AAC18B40A7B00C189FF /* PBXContainerItemProxy */ = {
+                        isa = PBXContainerItemProxy;
+                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+                        proxyType = 1;
+                        remoteGlobalIDString = 65788A9D18B409EB00C189FF;
+                        remoteInfo = "Offline Assembler";
+                };
</ins><span class="cx">                 65FB3F7D09D11EF300F49DEB /* PBXContainerItemProxy */ = {
</span><span class="cx">                         isa = PBXContainerItemProxy;
</span><span class="cx">                         containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
</span><span class="lines">@@ -2236,6 +2270,10 @@
</span><span class="cx">                 6507D2970E871E4A00D7D896 /* JSTypeInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTypeInfo.h; sourceTree = "<group>"; };
</span><span class="cx">                 651122E5140469BA002B101D /* testRegExp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = testRegExp.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 6511230514046A4C002B101D /* testRegExp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testRegExp; sourceTree = BUILT_PRODUCTS_DIR; };
</span><ins>+                6514F21718B3E1670098FF8B /* Bytecodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bytecodes.h; sourceTree = "<group>"; };
+                6514F21818B3E1670098FF8B /* InitBytecodes.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = InitBytecodes.asm; sourceTree = "<group>"; };
+                6529FB3018B2D63900C61102 /* generate-bytecode-files */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = "generate-bytecode-files"; sourceTree = "<group>"; };
+                6529FB3118B2D99900C61102 /* BytecodeList.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BytecodeList.json; sourceTree = "<group>"; };
</ins><span class="cx">                 652A3A201651C66100A80AFE /* ARM64Disassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ARM64Disassembler.cpp; path = disassembler/ARM64Disassembler.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 652A3A221651C69700A80AFE /* A64DOpcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = A64DOpcode.cpp; path = disassembler/ARM64/A64DOpcode.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 652A3A231651C69700A80AFE /* A64DOpcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = A64DOpcode.h; path = disassembler/ARM64/A64DOpcode.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -3054,6 +3092,7 @@
</span><span class="cx">                 0867D691FE84028FC02AAC07 /* JavaScriptCore */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                6529FB3018B2D63900C61102 /* generate-bytecode-files */,
</ins><span class="cx">                                 8604F4F2143A6C4400B295F5 /* ChangeLog */,
</span><span class="cx">                                 F692A8540255597D01FF60F7 /* create_hash_table */,
</span><span class="cx">                                 A718F8211178EB4B002465A7 /* create_regex_tables */,
</span><span class="lines">@@ -3658,7 +3697,9 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 BC18C5230E16FC8A00B34460 /* ArrayPrototype.lut.h */,
</span><ins>+                                6514F21718B3E1670098FF8B /* Bytecodes.h */,
</ins><span class="cx">                                 BCD203E70E1718F4002C7E82 /* DatePrototype.lut.h */,
</span><ins>+                                6514F21818B3E1670098FF8B /* InitBytecodes.asm */,
</ins><span class="cx">                                 A513E5C6185F9436007E95AD /* InjectedScriptSource.h */,
</span><span class="cx">                                 A53243951856A475002ED692 /* InspectorJS.json */,
</span><span class="cx">                                 A53243961856A475002ED692 /* InspectorJSBackendCommands.js */,
</span><span class="lines">@@ -4518,6 +4559,7 @@
</span><span class="cx">                 969A078F0ED1D3AE00F1F681 /* bytecode */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                6529FB3118B2D99900C61102 /* BytecodeList.json */,
</ins><span class="cx">                                 0F8335B41639C1E3001443B5 /* ArrayAllocationProfile.cpp */,
</span><span class="cx">                                 0F8335B51639C1E3001443B5 /* ArrayAllocationProfile.h */,
</span><span class="cx">                                 0F63945115D07051006A597C /* ArrayProfile.cpp */,
</span><span class="lines">@@ -4831,6 +4873,10 @@
</span><span class="cx">                                 A1A009C11831A26E00CF8711 /* ARM64Assembler.h in Headers */,
</span><span class="cx">                                 86D3B2C410156BDE002865E7 /* ARMAssembler.h in Headers */,
</span><span class="cx">                                 86ADD1450FDDEA980006EEC2 /* ARMv7Assembler.h in Headers */,
</span><ins>+                                A5CEEE15187F3BAD00E55C99 /* InspectorAgent.h in Headers */,
+                                6514F21918B3E1670098FF8B /* Bytecodes.h in Headers */,
+                                2A343F7618A1748B0039B085 /* GCSegmentedArray.h in Headers */,
+                                2A343F7818A1749D0039B085 /* GCSegmentedArrayInlines.h in Headers */,
</ins><span class="cx">                                 65C0285D1717966800351E35 /* ARMv7DOpcode.h in Headers */,
</span><span class="cx">                                 0F8335B81639C1EA001443B5 /* ArrayAllocationProfile.h in Headers */,
</span><span class="cx">                                 A7A8AF3517ADB5F3005AB174 /* ArrayBuffer.h in Headers */,
</span><span class="lines">@@ -5650,6 +5696,7 @@
</span><span class="cx">                         buildRules = (
</span><span class="cx">                         );
</span><span class="cx">                         dependencies = (
</span><ins>+                                65788AAB18B40A3B00C189FF /* PBXTargetDependency */,
</ins><span class="cx">                                 0FF922D314F46B2F0041A24E /* PBXTargetDependency */,
</span><span class="cx">                         );
</span><span class="cx">                         name = JSCLLIntOffsetsExtractor;
</span><span class="lines">@@ -5729,6 +5776,7 @@
</span><span class="cx">                         );
</span><span class="cx">                         dependencies = (
</span><span class="cx">                                 0FCEFABD1805D66300472CE4 /* PBXTargetDependency */,
</span><ins>+                                65788AAD18B40A7B00C189FF /* PBXTargetDependency */,
</ins><span class="cx">                                 65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */,
</span><span class="cx">                         );
</span><span class="cx">                         name = JavaScriptCore;
</span><span class="lines">@@ -5780,15 +5828,16 @@
</span><span class="cx">                         targets = (
</span><span class="cx">                                 932F5BE30822A1C700736975 /* All */,
</span><span class="cx">                                 932F5B3E0822A1C700736975 /* JavaScriptCore */,
</span><ins>+                                0FCEFAB51805D61600472CE4 /* llvmForJSC */,
+                                0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
</ins><span class="cx">                                 65FB3F6609D11E9100F49DEB /* Derived Sources */,
</span><ins>+                                0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */,
+                                65788A9D18B409EB00C189FF /* Offline Assembler */,
</ins><span class="cx">                                 1412111F0A48793C00480255 /* minidom */,
</span><span class="cx">                                 14BD59BE0A3E8F9000BAF59C /* testapi */,
</span><span class="cx">                                 932F5BDA0822A1C700736975 /* jsc */,
</span><span class="cx">                                 651122F714046A4C002B101D /* testRegExp */,
</span><del>-                                0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
-                                0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */,
</del><span class="cx">                                 5D6B2A47152B9E17005231DE /* Test Tools */,
</span><del>-                                0FCEFAB51805D61600472CE4 /* llvmForJSC */,
</del><span class="cx">                         );
</span><span class="cx">                 };
</span><span class="cx"> /* End PBXProject section */
</span><span class="lines">@@ -5939,6 +5988,20 @@
</span><span class="cx">                         shellPath = /bin/sh;
</span><span class="cx">                         shellScript = "set -e\n\n# Skip for Production builds.\nif [[ ${CONFIGURATION:=Debug} == \"Production\" ]]; then\n exit\nfi\n\n# Copy and update the jsc binary to refer to JavaScriptCore.framework relative to its location.\nditto \"${BUILT_PRODUCTS_DIR}/jsc\" \"${BUILT_PRODUCTS_DIR}/${JAVASCRIPTCORE_RESOURCES_DIR}/jsc\"\ninstall_name_tool -change \"${JAVASCRIPTCORE_FRAMEWORKS_DIR}/JavaScriptCore.framework/Versions/A/JavaScriptCore\" \"@loader_path/../JavaScriptCore\" \"${BUILT_PRODUCTS_DIR}/${JAVASCRIPTCORE_RESOURCES_DIR}/jsc\"\n";
</span><span class="cx">                 };
</span><ins>+                65788AA018B409EB00C189FF /* Generate Derived Sources */ = {
+                        isa = PBXShellScriptBuildPhase;
+                        buildActionMask = 2147483647;
+                        files = (
+                        );
+                        inputPaths = (
+                        );
+                        name = "Generate Derived Sources";
+                        outputPaths = (
+                        );
+                        runOnlyForDeploymentPostprocessing = 0;
+                        shellPath = /bin/sh;
+                        shellScript = "cd \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\n\n/usr/bin/env ruby JavaScriptCore/offlineasm/asm.rb JavaScriptCore/llint/LowLevelInterpreter.asm ${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor LLIntAssembly.h || exit 1";
+                };
</ins><span class="cx">                 65FB3F6509D11E9100F49DEB /* Generate Derived Sources */ = {
</span><span class="cx">                         isa = PBXShellScriptBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="lines">@@ -5951,7 +6014,7 @@
</span><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span><span class="cx">                         shellPath = /bin/sh;
</span><del>-                        shellScript = "set -e\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\n\n/bin/ln -sfh \"${SRCROOT}\" JavaScriptCore\nexport JavaScriptCore=\"JavaScriptCore\"\nexport BUILT_PRODUCTS_DIR=\"../..\"\n\nmake --no-builtin-rules -f \"JavaScriptCore/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.ncpu`\n\nif [[ \"${ACTION}\" == \"installhdrs\" ]]; then\n exit 0\nfi\n\n/usr/bin/env ruby JavaScriptCore/offlineasm/asm.rb JavaScriptCore/llint/LowLevelInterpreter.asm ${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor LLIntAssembly.h\n";
</del><ins>+                        shellScript = "set -e\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\"\n\n/bin/ln -sfh \"${SRCROOT}\" JavaScriptCore\nexport JavaScriptCore=\"JavaScriptCore\"\nexport BUILT_PRODUCTS_DIR=\"../..\"\n\nmake --no-builtin-rules -f \"JavaScriptCore/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.ncpu`\n\nif [[ \"${ACTION}\" == \"installhdrs\" ]]; then\n exit 0\nfi";
</ins><span class="cx">                 };
</span><span class="cx">                 A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */ = {
</span><span class="cx">                         isa = PBXShellScriptBuildPhase;
</span><span class="lines">@@ -6584,11 +6647,6 @@
</span><span class="cx">                         target = 0F4680A914BA7FD900BFE272 /* LLInt Offsets */;
</span><span class="cx">                         targetProxy = 0FF922D214F46B2F0041A24E /* PBXContainerItemProxy */;
</span><span class="cx">                 };
</span><del>-                0FF922D614F46B600041A24E /* PBXTargetDependency */ = {
-                        isa = PBXTargetDependency;
-                        target = 0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */;
-                        targetProxy = 0FF922D514F46B600041A24E /* PBXContainerItemProxy */;
-                };
</del><span class="cx">                 5D69E912152BE5470028D720 /* PBXTargetDependency */ = {
</span><span class="cx">                         isa = PBXTargetDependency;
</span><span class="cx">                         target = 932F5BDA0822A1C700736975 /* jsc */;
</span><span class="lines">@@ -6614,6 +6672,26 @@
</span><span class="cx">                         target = 5D6B2A47152B9E17005231DE /* Test Tools */;
</span><span class="cx">                         targetProxy = 5D6B2A56152B9E2E005231DE /* PBXContainerItemProxy */;
</span><span class="cx">                 };
</span><ins>+                65788A9E18B409EB00C189FF /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */;
+                        targetProxy = 65788A9F18B409EB00C189FF /* PBXContainerItemProxy */;
+                };
+                65788AA918B40A3300C189FF /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 0F4680A914BA7FD900BFE272 /* LLInt Offsets */;
+                        targetProxy = 65788AA818B40A3300C189FF /* PBXContainerItemProxy */;
+                };
+                65788AAB18B40A3B00C189FF /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 65FB3F6609D11E9100F49DEB /* Derived Sources */;
+                        targetProxy = 65788AAA18B40A3B00C189FF /* PBXContainerItemProxy */;
+                };
+                65788AAD18B40A7B00C189FF /* PBXTargetDependency */ = {
+                        isa = PBXTargetDependency;
+                        target = 65788A9D18B409EB00C189FF /* Offline Assembler */;
+                        targetProxy = 65788AAC18B40A7B00C189FF /* PBXContainerItemProxy */;
+                };
</ins><span class="cx">                 65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */ = {
</span><span class="cx">                         isa = PBXTargetDependency;
</span><span class="cx">                         target = 65FB3F6609D11E9100F49DEB /* Derived Sources */;
</span><span class="lines">@@ -6901,6 +6979,42 @@
</span><span class="cx">                         };
</span><span class="cx">                         name = Production;
</span><span class="cx">                 };
</span><ins>+                65788AA318B409EB00C189FF /* Debug */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */;
+                        buildSettings = {
+                                INFOPLIST_FILE = "Derived Sources copy-Info.plist";
+                                PRODUCT_NAME = "Derived Sources copy";
+                        };
+                        name = Debug;
+                };
+                65788AA418B409EB00C189FF /* Release */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */;
+                        buildSettings = {
+                                INFOPLIST_FILE = "Derived Sources copy-Info.plist";
+                                PRODUCT_NAME = "Derived Sources copy";
+                        };
+                        name = Release;
+                };
+                65788AA518B409EB00C189FF /* Profiling */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */;
+                        buildSettings = {
+                                INFOPLIST_FILE = "Derived Sources copy-Info.plist";
+                                PRODUCT_NAME = "Derived Sources copy";
+                        };
+                        name = Profiling;
+                };
+                65788AA618B409EB00C189FF /* Production */ = {
+                        isa = XCBuildConfiguration;
+                        baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */;
+                        buildSettings = {
+                                INFOPLIST_FILE = "Derived Sources copy-Info.plist";
+                                PRODUCT_NAME = "Derived Sources copy";
+                        };
+                        name = Production;
+                };
</ins><span class="cx">                 65FB3F7809D11EBD00F49DEB /* Debug */ = {
</span><span class="cx">                         isa = XCBuildConfiguration;
</span><span class="cx">                         baseConfigurationReference = 1C9051430BA9E8A70081E9D0 /* JavaScriptCore.xcconfig */;
</span><span class="lines">@@ -7101,6 +7215,17 @@
</span><span class="cx">                         defaultConfigurationIsVisible = 0;
</span><span class="cx">                         defaultConfigurationName = Production;
</span><span class="cx">                 };
</span><ins>+                65788AA218B409EB00C189FF /* Build configuration list for PBXAggregateTarget "Offline Assembler" */ = {
+                        isa = XCConfigurationList;
+                        buildConfigurations = (
+                                65788AA318B409EB00C189FF /* Debug */,
+                                65788AA418B409EB00C189FF /* Release */,
+                                65788AA518B409EB00C189FF /* Profiling */,
+                                65788AA618B409EB00C189FF /* Production */,
+                        );
+                        defaultConfigurationIsVisible = 0;
+                        defaultConfigurationName = Production;
+                };
</ins><span class="cx">                 65FB3F7709D11EBD00F49DEB /* Build configuration list for PBXAggregateTarget "Derived Sources" */ = {
</span><span class="cx">                         isa = XCConfigurationList;
</span><span class="cx">                         buildConfigurations = (
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeListjson"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/bytecode/BytecodeList.json (0 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeList.json         (rev 0)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -0,0 +1,162 @@
</span><ins>+[
+ {
+ "section" : "Bytecodes", "emitInHFile" : true, "emitInASMFile" : true, "macroNameComponent" : "BYTECODE",
+ "bytecodes" : [
+ { "name" : "op_enter", "length" : 1 },
+ { "name" : "op_create_activation", "length" : 2 },
+ { "name" : "op_touch_entry", "length" : 1 },
+ { "name" : "op_init_lazy_reg", "length" : 2 },
+ { "name" : "op_create_arguments", "length" : 2 },
+ { "name" : "op_create_this", "length" : 4 },
+ { "name" : "op_get_callee", "length" : 3 },
+ { "name" : "op_to_this", "length" : 3 },
+ { "name" : "op_new_object", "length" : 4 },
+ { "name" : "op_new_array", "length" : 5 },
+ { "name" : "op_new_array_with_size", "length" : 4 },
+ { "name" : "op_new_array_buffer", "length" : 5 },
+ { "name" : "op_new_regexp", "length" : 3 },
+ { "name" : "op_mov", "length" : 3 },
+ { "name" : "op_captured_mov", "length" : 4 },
+ { "name" : "op_not", "length" : 3 },
+ { "name" : "op_eq", "length" : 4 },
+ { "name" : "op_eq_null", "length" : 3 },
+ { "name" : "op_neq", "length" : 4 },
+ { "name" : "op_neq_null", "length" : 3 },
+ { "name" : "op_stricteq", "length" : 4 },
+ { "name" : "op_nstricteq", "length" : 4 },
+ { "name" : "op_less", "length" : 4 },
+ { "name" : "op_lesseq", "length" : 4 },
+ { "name" : "op_greater", "length" : 4 },
+ { "name" : "op_greatereq", "length" : 4 },
+ { "name" : "op_inc", "length" : 2 },
+ { "name" : "op_dec", "length" : 2 },
+ { "name" : "op_to_number", "length" : 3 },
+ { "name" : "op_negate", "length" : 3 },
+ { "name" : "op_add", "length" : 5 },
+ { "name" : "op_mul", "length" : 5 },
+ { "name" : "op_div", "length" : 5 },
+ { "name" : "op_mod", "length" : 4 },
+ { "name" : "op_sub", "length" : 5 },
+ { "name" : "op_lshift", "length" : 4 },
+ { "name" : "op_rshift", "length" : 4 },
+ { "name" : "op_urshift", "length" : 4 },
+ { "name" : "op_unsigned", "length" : 3 },
+ { "name" : "op_bitand", "length" : 5 },
+ { "name" : "op_bitxor", "length" : 5 },
+ { "name" : "op_bitor", "length" : 5 },
+ { "name" : "op_check_has_instance", "length" : 5 },
+ { "name" : "op_instanceof", "length" : 4 },
+ { "name" : "op_typeof", "length" : 3 },
+ { "name" : "op_is_undefined", "length" : 3 },
+ { "name" : "op_is_boolean", "length" : 3 },
+ { "name" : "op_is_number", "length" : 3 },
+ { "name" : "op_is_string", "length" : 3 },
+ { "name" : "op_is_object", "length" : 3 },
+ { "name" : "op_is_function", "length" : 3 },
+ { "name" : "op_in", "length" : 4 },
+ { "name" : "op_init_global_const_nop", "length" : 5 },
+ { "name" : "op_init_global_const", "length" : 5 },
+ { "name" : "op_get_by_id", "length" : 9 },
+ { "name" : "op_get_by_id_out_of_line", "length" : 9 },
+ { "name" : "op_get_array_length", "length" : 9 },
+ { "name" : "op_get_arguments_length", "length" : 4 },
+ { "name" : "op_put_by_id", "length" : 9 },
+ { "name" : "op_put_by_id_out_of_line", "length" : 9 },
+ { "name" : "op_put_by_id_transition_direct", "length" : 9 },
+ { "name" : "op_put_by_id_transition_direct_out_of_line", "length" : 9 },
+ { "name" : "op_put_by_id_transition_normal", "length" : 9 },
+ { "name" : "op_put_by_id_transition_normal_out_of_line", "length" : 9 },
+ { "name" : "op_del_by_id", "length" : 4 },
+ { "name" : "op_get_by_val", "length" : 6 },
+ { "name" : "op_get_argument_by_val", "length" : 6 },
+ { "name" : "op_get_by_pname", "length" : 7 },
+ { "name" : "op_put_by_val", "length" : 5 },
+ { "name" : "op_put_by_val_direct", "length" : 5 },
+ { "name" : "op_del_by_val", "length" : 4 },
+ { "name" : "op_put_by_index", "length" : 4 },
+ { "name" : "op_put_getter_setter", "length" : 5 },
+ { "name" : "op_jmp", "length" : 2 },
+ { "name" : "op_jtrue", "length" : 3 },
+ { "name" : "op_jfalse", "length" : 3 },
+ { "name" : "op_jeq_null", "length" : 3 },
+ { "name" : "op_jneq_null", "length" : 3 },
+ { "name" : "op_jneq_ptr", "length" : 4 },
+ { "name" : "op_jless", "length" : 4 },
+ { "name" : "op_jlesseq", "length" : 4 },
+ { "name" : "op_jgreater", "length" : 4 },
+ { "name" : "op_jgreatereq", "length" : 4 },
+ { "name" : "op_jnless", "length" : 4 },
+ { "name" : "op_jnlesseq", "length" : 4 },
+ { "name" : "op_jngreater", "length" : 4 },
+ { "name" : "op_jngreatereq", "length" : 4 },
+ { "name" : "op_loop_hint", "length" : 1 },
+ { "name" : "op_switch_imm", "length" : 4 },
+ { "name" : "op_switch_char", "length" : 4 },
+ { "name" : "op_switch_string", "length" : 4 },
+ { "name" : "op_new_func", "length" : 4 },
+ { "name" : "op_new_captured_func", "length" : 4 },
+ { "name" : "op_new_func_exp", "length" : 3 },
+ { "name" : "op_call", "length" : 9 },
+ { "name" : "op_call_eval", "length" : 9 },
+ { "name" : "op_call_varargs", "length" : 9 },
+ { "name" : "op_tear_off_activation", "length" : 2 },
+ { "name" : "op_tear_off_arguments", "length" : 3 },
+ { "name" : "op_ret", "length" : 2 },
+ { "name" : "op_ret_object_or_this", "length" : 3 },
+ { "name" : "op_construct", "length" : 9 },
+ { "name" : "op_strcat", "length" : 4 },
+ { "name" : "op_to_primitive", "length" : 3 },
+ { "name" : "op_get_pnames", "length" : 6 },
+ { "name" : "op_next_pname", "length" : 7 },
+ { "name" : "op_resolve_scope", "length" : 6 },
+ { "name" : "op_get_from_scope", "length" : 8 },
+ { "name" : "op_put_to_scope", "length" : 7 },
+ { "name" : "op_push_with_scope", "length" : 2 },
+ { "name" : "op_pop_scope", "length" : 1 },
+ { "name" : "op_push_name_scope", "length" : 4 },
+ { "name" : "op_catch", "length" : 2 },
+ { "name" : "op_throw", "length" : 2 },
+ { "name" : "op_throw_static_error", "length" : 3 },
+ { "name" : "op_debug", "length" : 3 },
+ { "name" : "op_profile_will_call", "length" : 2 },
+ { "name" : "op_profile_did_call", "length" : 2 },
+ { "name" : "op_end", "length" : 2 }
+ ]
+ },
+ {
+ "section" : "NativeHelpers", "emitInHFile" : true, "emitInASMFile" : true, "defaultLength" : 1,
+ "macroNameComponent" : "BYTECODE_HELPER", "emitDefineID" : true,
+ "bytecodes" : [
+ { "name" : "llint_program_prologue" },
+ { "name" : "llint_eval_prologue" },
+ { "name" : "llint_function_for_call_prologue" },
+ { "name" : "llint_function_for_construct_prologue" },
+ { "name" : "llint_function_for_call_arity_check" },
+ { "name" : "llint_function_for_construct_arity_check" },
+ { "name" : "llint_generic_return_point" },
+ { "name" : "llint_throw_from_slow_path_trampoline" },
+ { "name" : "llint_throw_during_call_trampoline" },
+ { "name" : "llint_native_call_trampoline" },
+ { "name" : "llint_native_construct_trampoline" }
+ ]
+ },
+ {
+ "section" : "CLoopHelpers", "emitInHFile" : true, "emitInASMFile" : false, "defaultLength" : 1,
+ "macroNameComponent" : "CLOOP_BYTECODE_HELPER",
+ "bytecodes" : [
+ { "name" : "llint_c_loop_init" },
+ { "name" : "getHostCallReturnValue" },
+ { "name" : "llint_return_to_host" },
+ { "name" : "llint_call_to_javascript" },
+ { "name" : "llint_call_to_native_function" },
+ { "name" : "handleUncaughtException" },
+ { "name" : "llint_cloop_did_return_from_js_1" },
+ { "name" : "llint_cloop_did_return_from_js_2" },
+ { "name" : "llint_cloop_did_return_from_js_3" },
+ { "name" : "llint_cloop_did_return_from_js_4" },
+ { "name" : "llint_cloop_did_return_from_js_5" },
+ { "name" : "llint_cloop_did_return_from_js_6" },
+ { "name" : "llint_cloop_did_return_from_js_7" }
+ ]
+ }
+]
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeOpcodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/Opcode.h (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/Opcode.h        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/bytecode/Opcode.h        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -30,6 +30,7 @@
</span><span class="cx"> #ifndef Opcode_h
</span><span class="cx"> #define Opcode_h
</span><span class="cx">
</span><ins>+#include "Bytecodes.h"
</ins><span class="cx"> #include "LLIntOpcode.h"
</span><span class="cx">
</span><span class="cx"> #include <algorithm>
</span><span class="lines">@@ -40,144 +41,8 @@
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><span class="cx"> #define FOR_EACH_CORE_OPCODE_ID_WITH_EXTENSION(macro, extension__) \
</span><del>- macro(op_enter, 1) \
- macro(op_create_activation, 2) \
- macro(op_touch_entry, 1) \
- macro(op_init_lazy_reg, 2) \
- macro(op_create_arguments, 2) \
- macro(op_create_this, 4) \
- macro(op_get_callee, 3) \
- macro(op_to_this, 3) \
- \
- macro(op_new_object, 4) \
- macro(op_new_array, 5) \
- macro(op_new_array_with_size, 4) \
- macro(op_new_array_buffer, 5) \
- macro(op_new_regexp, 3) \
- macro(op_mov, 3) \
- macro(op_captured_mov, 4) \
- \
- macro(op_not, 3) \
- macro(op_eq, 4) \
- macro(op_eq_null, 3) \
- macro(op_neq, 4) \
- macro(op_neq_null, 3) \
- macro(op_stricteq, 4) \
- macro(op_nstricteq, 4) \
- macro(op_less, 4) \
- macro(op_lesseq, 4) \
- macro(op_greater, 4) \
- macro(op_greatereq, 4) \
- \
- macro(op_inc, 2) \
- macro(op_dec, 2) \
- macro(op_to_number, 3) \
- macro(op_negate, 3) \
- macro(op_add, 5) \
- macro(op_mul, 5) \
- macro(op_div, 5) \
- macro(op_mod, 4) \
- macro(op_sub, 5) \
- \
- macro(op_lshift, 4) \
- macro(op_rshift, 4) \
- macro(op_urshift, 4) \
- macro(op_unsigned, 3) \
- macro(op_bitand, 5) \
- macro(op_bitxor, 5) \
- macro(op_bitor, 5) \
- \
- macro(op_check_has_instance, 5) \
- macro(op_instanceof, 4) \
- macro(op_typeof, 3) \
- macro(op_is_undefined, 3) \
- macro(op_is_boolean, 3) \
- macro(op_is_number, 3) \
- macro(op_is_string, 3) \
- macro(op_is_object, 3) \
- macro(op_is_function, 3) \
- macro(op_in, 4) \
- \
- macro(op_init_global_const_nop, 5) \
- macro(op_init_global_const, 5) \
- macro(op_get_by_id, 9) /* has value profiling */ \
- macro(op_get_by_id_out_of_line, 9) /* has value profiling */ \
- macro(op_get_array_length, 9) /* has value profiling */ \
- macro(op_get_arguments_length, 4) \
- macro(op_put_by_id, 9) \
- macro(op_put_by_id_out_of_line, 9) \
- macro(op_put_by_id_transition_direct, 9) \
- macro(op_put_by_id_transition_direct_out_of_line, 9) \
- macro(op_put_by_id_transition_normal, 9) \
- macro(op_put_by_id_transition_normal_out_of_line, 9) \
- macro(op_del_by_id, 4) \
- macro(op_get_by_val, 6) /* has value profiling */ \
- macro(op_get_argument_by_val, 6) /* must be the same size as op_get_by_val */ \
- macro(op_get_by_pname, 7) \
- macro(op_put_by_val, 5) \
- macro(op_put_by_val_direct, 5) \
- macro(op_del_by_val, 4) \
- macro(op_put_by_index, 4) \
- macro(op_put_getter_setter, 5) \
- \
- macro(op_jmp, 2) \
- macro(op_jtrue, 3) \
- macro(op_jfalse, 3) \
- macro(op_jeq_null, 3) \
- macro(op_jneq_null, 3) \
- macro(op_jneq_ptr, 4) \
- macro(op_jless, 4) \
- macro(op_jlesseq, 4) \
- macro(op_jgreater, 4) \
- macro(op_jgreatereq, 4) \
- macro(op_jnless, 4) \
- macro(op_jnlesseq, 4) \
- macro(op_jngreater, 4) \
- macro(op_jngreatereq, 4) \
- \
- macro(op_loop_hint, 1) \
- \
- macro(op_switch_imm, 4) \
- macro(op_switch_char, 4) \
- macro(op_switch_string, 4) \
- \
- macro(op_new_func, 4) \
- macro(op_new_captured_func, 4) \
- macro(op_new_func_exp, 3) \
- macro(op_call, 9) /* has value profiling */ \
- macro(op_call_eval, 9) /* has value profiling */ \
- macro(op_call_varargs, 9) /* has value profiling */ \
- macro(op_tear_off_activation, 2) \
- macro(op_tear_off_arguments, 3) \
- macro(op_ret, 2) \
- macro(op_ret_object_or_this, 3) \
- \
- macro(op_construct, 9) \
- macro(op_strcat, 4) \
- macro(op_to_primitive, 3) \
- \
- macro(op_get_pnames, 6) \
- macro(op_next_pname, 7) \
- \
- macro(op_resolve_scope, 6) \
- macro(op_get_from_scope, 8) /* has value profiling */ \
- macro(op_put_to_scope, 7) \
- \
- macro(op_push_with_scope, 2) \
- macro(op_pop_scope, 1) \
- macro(op_push_name_scope, 4) \
- \
- macro(op_catch, 2) \
- macro(op_throw, 2) \
- macro(op_throw_static_error, 3) \
- \
- macro(op_debug, 3) \
- macro(op_profile_will_call, 2) \
- macro(op_profile_did_call, 2) \
- \
- extension__ \
- \
- macro(op_end, 2) // end must be the last opcode in the list
</del><ins>+ FOR_EACH_BYTECODE_ID(macro) \
+ extension__
</ins><span class="cx">
</span><span class="cx"> #define FOR_EACH_CORE_OPCODE_ID(macro) \
</span><span class="cx"> FOR_EACH_CORE_OPCODE_ID_WITH_EXTENSION(macro, /* No extension */ )
</span><span class="lines">@@ -194,7 +59,11 @@
</span><span class="cx"> #undef OPCODE_ID_ENUM
</span><span class="cx">
</span><span class="cx"> const int maxOpcodeLength = 9;
</span><del>-const int numOpcodeIDs = op_end + 1;
</del><ins>+#if ENABLE(LLINT_C_LOOP)
+const int numOpcodeIDs = NUMBER_OF_BYTECODE_IDS + NUMBER_OF_BYTECODE_HELPER_IDS + NUMBER_OF_CLOOP_BYTECODE_HELPER_IDS;
+#else
+const int numOpcodeIDs = NUMBER_OF_BYTECODE_IDS;
+#endif
</ins><span class="cx">
</span><span class="cx"> #define OPCODE_ID_LENGTHS(id, length) const int id##_length = length;
</span><span class="cx"> FOR_EACH_OPCODE_ID(OPCODE_ID_LENGTHS);
</span><span class="lines">@@ -206,7 +75,7 @@
</span><span class="cx"> const int opcodeLengths[numOpcodeIDs] = { FOR_EACH_OPCODE_ID(OPCODE_ID_LENGTH_MAP) };
</span><span class="cx"> #undef OPCODE_ID_LENGTH_MAP
</span><span class="cx">
</span><del>-#define VERIFY_OPCODE_ID(id, size) COMPILE_ASSERT(id <= op_end, ASSERT_THAT_JS_OPCODE_IDS_ARE_VALID);
</del><ins>+#define VERIFY_OPCODE_ID(id, size) COMPILE_ASSERT(id <= numOpcodeIDs, ASSERT_THAT_JS_OPCODE_IDS_ARE_VALID);
</ins><span class="cx"> FOR_EACH_OPCODE_ID(VERIFY_OPCODE_ID);
</span><span class="cx"> #undef VERIFY_OPCODE_ID
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoregeneratebytecodefiles"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/generate-bytecode-files (0 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/generate-bytecode-files         (rev 0)
+++ trunk/Source/JavaScriptCore/generate-bytecode-files        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -0,0 +1,237 @@
</span><ins>+#! /usr/bin/python
+
+# Copyright (C) 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 AND ITS CONTRIBUTORS "AS IS" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# This tool processes the bytecode list to create Bytecodes.h and InitBytecodes.asm
+
+import hashlib
+import json
+import optparse
+import os
+import re
+import sys
+
+cCopyrightMsg = """/*
+* Copyright (C) 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 AND ITS CONTRIBUTORS "AS IS" AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* Autogenerated from %s, do not modify.
+*/
+
+"""
+
+asmCopyrightMsg = """# Copyright (C) 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 AND ITS CONTRIBUTORS "AS IS" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Autogenerated from %s, do not modify.
+
+"""
+def openOrExit(path, mode):
+ try:
+ return open(path, mode)
+ except IOError as e:
+ print "I/O error opening {0}, ({1}): {2}".format(path, e.errno, e.strerror)
+ exit(1)
+
+def hashFile(file):
+ sha1 = hashlib.sha1()
+ file.seek(0)
+ for line in file:
+ sha1.update(line)
+
+ file.seek(0)
+
+ return sha1.hexdigest()
+
+if __name__ == "__main__":
+ parser = optparse.OptionParser(usage = "usage: %prog [--bytecodes_h <FILE>] [--init_bytecodes_asm <FILE>] <bytecode-json-file>")
+ parser.add_option("-b", "--bytecodes_h", dest = "bytecodesHFileName", help = "generate bytecodes macro .h FILE", metavar = "FILE")
+ parser.add_option("-a", "--init_bytecodes_asm", dest = "initASMFileName", help="generate ASM bytecodes init FILE", metavar = "FILE")
+ (options, args) = parser.parse_args()
+
+ if len(args) != 1:
+ parser.error("missing <bytecode-json-file>")
+
+ bytecodeJSONFile = args[0]
+ bytecodeFile = openOrExit(bytecodeJSONFile, "rb")
+ sha1Hash = hashFile(bytecodeFile)
+
+ hFileHashString = "// SHA1Hash: {0}\n".format(sha1Hash)
+ asmFileHashString = "# SHA1Hash: {0}\n".format(sha1Hash)
+
+ bytecodeHFilename = options.bytecodesHFileName
+ initASMFileName = options.initASMFileName
+
+ if not bytecodeHFilename and not initASMFileName:
+ parser.print_help()
+ exit(0)
+
+ needToGenerate = False
+
+ if bytecodeHFilename:
+ try:
+ bytecodeHReadFile = open(bytecodeHFilename, "rb")
+
+ hashLine = bytecodeHReadFile.readline()
+ if hashLine != hFileHashString:
+ needToGenerate = True
+ except:
+ needToGenerate = True
+ else:
+ bytecodeHReadFile.close()
+
+ if initASMFileName:
+ try:
+ initBytecodesReadFile = open(initASMFileName, "rb")
+
+ hashLine = initBytecodesReadFile.readline()
+ if hashLine != asmFileHashString:
+ needToGenerate = True
+ except:
+ needToGenerate = True
+ else:
+ initBytecodesReadFile.close()
+
+ if not needToGenerate:
+ print "Nothing changed.\n"
+ exit(0)
+
+ genString = "Generating "
+
+ if bytecodeHFilename:
+ bytecodeHFile = openOrExit(bytecodeHFilename, "wb")
+ genString = genString + "{0} ".format(bytecodeHFilename)
+
+ if initASMFileName:
+ initBytecodesFile = openOrExit(initASMFileName, "wb")
+ if bytecodeHFilename:
+ genString = genString + "and "
+ genString = genString + "{0} ".format(initASMFileName)
+
+ print "{0}from {1}\n".format(genString, bytecodeJSONFile)
+
+
+ try:
+ bytecodeSections = json.load(bytecodeFile, encoding = "utf-8")
+ except:
+ print "Unexpected error parsing {0}: {1}".format(bytecodeJSONFile, sys.exc_info())
+
+ if bytecodeHFilename:
+ bytecodeHFile.write(hFileHashString)
+ bytecodeHFile.write(cCopyrightMsg % bytecodeJSONFile)
+ bytecodeHFile.write("#ifndef Bytecodes_h\n")
+ bytecodeHFile.write("#define Bytecodes_h\n\n")
+
+ if initASMFileName:
+ initBytecodesFile.write(asmFileHashString)
+ initBytecodesFile.write(asmCopyrightMsg % bytecodeJSONFile)
+ initASMBytecodeNum = 0
+
+ for section in bytecodeSections:
+ if bytecodeHFilename and section['emitInHFile']:
+ bytecodeHFile.write("#define FOR_EACH_{0}_ID(macro) \\\n".format(section["macroNameComponent"]))
+ firstMacro = True
+ defaultLength = 1
+ if "defaultLength" in section:
+ defaultLength = section["defaultLength"]
+
+ bytecodeNum = 0
+ for bytecode in section["bytecodes"]:
+ if not firstMacro:
+ bytecodeHFile.write(" \\\n")
+
+ length = defaultLength
+ if "length" in bytecode:
+ length = bytecode["length"]
+
+ bytecodeHFile.write(" macro({0}, {1})".format(bytecode["name"], length))
+ firstMacro = False
+ bytecodeNum = bytecodeNum + 1
+
+ bytecodeHFile.write("\n\n")
+ bytecodeHFile.write("#define NUMBER_OF_{0}_IDS {1}\n\n".format(section["macroNameComponent"], bytecodeNum))
+
+ if "emitDefineID" in section:
+ bytecodeNum = 0
+ for bytecode in section["bytecodes"]:
+ bytecodeHFile.write("#define %s_ID %s\n" % (bytecode["name"].upper(), bytecodeNum))
+ bytecodeNum = bytecodeNum + 1
+
+ bytecodeHFile.write("\n\n")
+
+ if initASMFileName and section['emitInASMFile']:
+ for bytecode in section["bytecodes"]:
+ initBytecodesFile.write("setEntryAddress({0}, _{1})\n".format(initASMBytecodeNum, bytecode["name"]))
+ initASMBytecodeNum = initASMBytecodeNum + 1
+
+ if bytecodeHFilename:
+ bytecodeHFile.write("#endif // Bytecodes_h\n")
+ bytecodeHFile.close()
+
+ if initASMFileName:
+ initBytecodesFile.close()
+
+ bytecodeFile.close()
+
+ exit(0)
</ins><span class="cx">Property changes on: trunk/Source/JavaScriptCore/generate-bytecode-files
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnexecutable"></a>
<div class="addfile"><h4>Added: svn:executable</h4></div>
<a id="trunkSourceJavaScriptCorellintLLIntCLoopcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntCLoop.cpp (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntCLoop.cpp        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/llint/LLIntCLoop.cpp        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">
</span><span class="cx"> void CLoop::initialize()
</span><span class="cx"> {
</span><del>- execute(llint_unused, 0, 0, 0, true);
</del><ins>+ execute(llint_c_loop_init, 0, 0, 0, true);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace LLInt
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntCLooph"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntCLoop.h (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntCLoop.h        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/llint/LLIntCLoop.h        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -36,8 +36,6 @@
</span><span class="cx"> namespace JSC {
</span><span class="cx"> namespace LLInt {
</span><span class="cx">
</span><del>-const OpcodeID llint_unused = llint_end;
-
</del><span class="cx"> class CLoop {
</span><span class="cx"> public:
</span><span class="cx"> static void initialize();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntData.cpp (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntData.cpp        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/llint/LLIntData.cpp        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> LLInt::getCodePtr(llint_throw_from_slow_path_trampoline);
</span><span class="cx"> #define OPCODE_ENTRY(opcode, length) \
</span><span class="cx"> Data::s_opcodeMap[opcode] = static_cast<Opcode>(LLInt::getCodePtr(llint_##opcode));
</span><del>- FOR_EACH_OPCODE_ID(OPCODE_ENTRY);
</del><ins>+ FOR_EACH_CORE_OPCODE_ID(OPCODE_ENTRY);
</ins><span class="cx"> #undef OPCODE_ENTRY
</span><span class="cx"> #endif // !ENABLE(LLINT_C_LOOP)
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntOpcodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntOpcode.h (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntOpcode.h        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/llint/LLIntOpcode.h        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -31,19 +31,7 @@
</span><span class="cx"> #if ENABLE(LLINT_C_LOOP)
</span><span class="cx">
</span><span class="cx"> #define FOR_EACH_LLINT_NOJIT_NATIVE_HELPER(macro) \
</span><del>- macro(getHostCallReturnValue, 1) \
- macro(llint_return_to_host, 1) \
- macro(llint_call_to_javascript, 1) \
- macro(llint_call_to_native_function, 1) \
- macro(handleUncaughtException, 1) \
- \
- macro(llint_cloop_did_return_from_js_1, 1) \
- macro(llint_cloop_did_return_from_js_2, 1) \
- macro(llint_cloop_did_return_from_js_3, 1) \
- macro(llint_cloop_did_return_from_js_4, 1) \
- macro(llint_cloop_did_return_from_js_5, 1) \
- macro(llint_cloop_did_return_from_js_6, 1) \
- macro(llint_cloop_did_return_from_js_7, 1) \
</del><ins>+ FOR_EACH_CLOOP_BYTECODE_HELPER_ID(macro)
</ins><span class="cx">
</span><span class="cx"> #else // !ENABLE(LLINT_C_LOOP)
</span><span class="cx">
</span><span class="lines">@@ -56,25 +44,10 @@
</span><span class="cx"> #define FOR_EACH_LLINT_NATIVE_HELPER(macro) \
</span><span class="cx"> FOR_EACH_LLINT_NOJIT_NATIVE_HELPER(macro) \
</span><span class="cx"> \
</span><del>- macro(llint_begin, 1) \
- \
- macro(llint_program_prologue, 1) \
- macro(llint_eval_prologue, 1) \
- macro(llint_function_for_call_prologue, 1) \
- macro(llint_function_for_construct_prologue, 1) \
- macro(llint_function_for_call_arity_check, 1) \
- macro(llint_function_for_construct_arity_check, 1) \
- macro(llint_generic_return_point, 1) \
- macro(llint_throw_from_slow_path_trampoline, 1) \
- macro(llint_throw_during_call_trampoline, 1) \
- \
- /* Native call trampolines */ \
- macro(llint_native_call_trampoline, 1) \
- macro(llint_native_construct_trampoline, 1) \
- \
- macro(llint_end, 1)
</del><ins>+ FOR_EACH_BYTECODE_HELPER_ID(macro)
</ins><span class="cx">
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> #if ENABLE(LLINT_C_LOOP)
</span><span class="cx"> #define FOR_EACH_LLINT_OPCODE_EXTENSION(macro) FOR_EACH_LLINT_NATIVE_HELPER(macro)
</span><span class="cx"> #else
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLowLevelInterpreterasm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -630,6 +630,12 @@
</span><span class="cx"> ret
</span><span class="cx"> end
</span><span class="cx">
</span><ins>+# Dummy entry point the C Loop uses to initialize.
+if C_LOOP
+_llint_c_loop_init:
+ crash()
+end
+
</ins><span class="cx"> # stub to call into JavaScript or Native functions
</span><span class="cx"> # EncodedJSValue callToJavaScript(void* code, ExecState** vmTopCallFrame, ProtoCallFrame* protoFrame)
</span><span class="cx"> # EncodedJSValue callToNativeFunction(void* code, ExecState** vmTopCallFrame, ProtoCallFrame* protoFrame)
</span><span class="lines">@@ -688,11 +694,6 @@
</span><span class="cx"> end
</span><span class="cx">
</span><span class="cx">
</span><del>-# Indicate the beginning of LLInt.
-_llint_begin:
- crash()
-
-
</del><span class="cx"> _llint_program_prologue:
</span><span class="cx"> prologue(notFunctionCodeBlockGetter, notFunctionCodeBlockSetter, _llint_entry_osr, _llint_trace_prologue)
</span><span class="cx"> dispatch(0)
</span><span class="lines">@@ -1143,7 +1144,3 @@
</span><span class="cx"> _llint_op_init_global_const_nop:
</span><span class="cx"> dispatch(5)
</span><span class="cx">
</span><del>-# Indicate the end of LLInt.
-_llint_end:
- crash()
-
</del></span></pre></div>
<a id="trunkSourceWebKitCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/CMakeLists.txt (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/CMakeLists.txt        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/WebKit/CMakeLists.txt        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -78,6 +78,7 @@
</span><span class="cx"> "${JAVASCRIPTCORE_DIR}/profiler"
</span><span class="cx"> "${JAVASCRIPTCORE_DIR}/runtime"
</span><span class="cx"> "${WTF_DIR}"
</span><ins>+ "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}"
</ins><span class="cx"> "${DERIVED_SOURCES_WEBCORE_DIR}"
</span><span class="cx"> "${DERIVED_SOURCES_DIR}/ForwardingHeaders"
</span><span class="cx"> "${CMAKE_BINARY_DIR}"
</span></span></pre></div>
<a id="trunkSourceWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/ChangeLog (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/ChangeLog        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/WebKit/ChangeLog        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-02-26 Michael Saboff <msaboff@apple.com>
+
+ Auto generate bytecode information for bytecode parser and LLInt
+ https://bugs.webkit.org/show_bug.cgi?id=129181
+
+ Reviewed by Mark Lam.
+
+ Added ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} to WebKit_INCLUDE_DIRECTORIES due to new
+ generated Bytecodes.h include file.
+
+ * CMakeLists.txt:
+
</ins><span class="cx"> 2014-02-26 Joseph Pecoraro <pecoraro@apple.com>
</span><span class="cx">
</span><span class="cx"> Web Inspector: Remove console.profiles from window.console API
</span></span></pre></div>
<a id="trunkSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/CMakeLists.txt (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/CMakeLists.txt        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/WebKit2/CMakeLists.txt        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -133,6 +133,7 @@
</span><span class="cx"> "${JAVASCRIPTCORE_DIR}/runtime"
</span><span class="cx"> "${WTF_DIR}"
</span><span class="cx"> "${DERIVED_SOURCES_DIR}"
</span><ins>+ "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}"
</ins><span class="cx"> "${DERIVED_SOURCES_WEBCORE_DIR}"
</span><span class="cx"> "${DERIVED_SOURCES_WEBKIT2_DIR}"
</span><span class="cx"> "${DERIVED_SOURCES_WEBKIT2_DIR}/include"
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (164731 => 164732)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-02-26 19:44:12 UTC (rev 164731)
+++ trunk/Source/WebKit2/ChangeLog        2014-02-26 19:45:38 UTC (rev 164732)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2014-02-26 Michael Saboff <msaboff@apple.com>
+
+ Auto generate bytecode information for bytecode parser and LLInt
+ https://bugs.webkit.org/show_bug.cgi?id=129181
+
+ Reviewed by Mark Lam.
+
+ Added ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR} to WebKit2_INCLUDE_DIRECTORIES due to new
+ generated Bytecodes.h include file.
+
+ * CMakeLists.txt:
+
</ins><span class="cx"> 2014-02-26 Simon Fraser <simon.fraser@apple.com>
</span><span class="cx">
</span><span class="cx"> Fix MiniBrowser/WebKitTestRunner link errors; WKView still
</span></span></pre>
</div>
</div>
</body>
</html>