<!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>[171614] branches/ftlopt/Source/JavaScriptCore</title>
</head>
<body>

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

<h3>Log Message</h3>
<pre>Remove JSPropertyNameIterator
https://bugs.webkit.org/show_bug.cgi?id=135066

Reviewed by Geoffrey Garen.

It has been replaced by JSPropertyNameEnumerator.

* JavaScriptCore.order:
* bytecode/BytecodeBasicBlock.cpp:
(JSC::isBranch):
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
* bytecode/PreciseJumpTargets.cpp:
(JSC::getJumpTargetsForBytecodeOffset):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitGetPropertyNames): Deleted.
(JSC::BytecodeGenerator::emitNextPropertyName): Deleted.
* bytecompiler/BytecodeGenerator.h:
* interpreter/Interpreter.cpp:
* interpreter/Register.h:
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_get_pnames): Deleted.
(JSC::JIT::emit_op_next_pname): Deleted.
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_get_pnames): Deleted.
(JSC::JIT::emit_op_next_pname): Deleted.
* jit/JITOperations.cpp:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_by_pname): Deleted.
(JSC::JIT::emitSlow_op_get_by_pname): Deleted.
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_get_by_pname): Deleted.
(JSC::JIT::emitSlow_op_get_by_pname): Deleted.
* llint/LLIntOffsetsExtractor.cpp:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL): Deleted.
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/CommonSlowPaths.cpp:
* runtime/JSPropertyNameIterator.cpp:
(JSC::JSPropertyNameIterator::JSPropertyNameIterator): Deleted.
(JSC::JSPropertyNameIterator::create): Deleted.
(JSC::JSPropertyNameIterator::destroy): Deleted.
(JSC::JSPropertyNameIterator::get): Deleted.
(JSC::JSPropertyNameIterator::visitChildren): Deleted.
* runtime/JSPropertyNameIterator.h:
(JSC::JSPropertyNameIterator::createStructure): Deleted.
(JSC::JSPropertyNameIterator::size): Deleted.
(JSC::JSPropertyNameIterator::setCachedStructure): Deleted.
(JSC::JSPropertyNameIterator::cachedStructure): Deleted.
(JSC::JSPropertyNameIterator::setCachedPrototypeChain): Deleted.
(JSC::JSPropertyNameIterator::cachedPrototypeChain): Deleted.
(JSC::JSPropertyNameIterator::finishCreation): Deleted.
(JSC::Register::propertyNameIterator): Deleted.
(JSC::StructureRareData::enumerationCache): Deleted.
(JSC::StructureRareData::setEnumerationCache): Deleted.
* runtime/Structure.cpp:
(JSC::Structure::addPropertyWithoutTransition):
(JSC::Structure::removePropertyWithoutTransition):
* runtime/Structure.h:
* runtime/StructureInlines.h:
(JSC::Structure::setEnumerationCache): Deleted.
(JSC::Structure::enumerationCache): Deleted.
* runtime/StructureRareData.cpp:
(JSC::StructureRareData::visitChildren):
* runtime/StructureRareData.h:
* runtime/VM.cpp:
(JSC::VM::VM):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchesftloptSourceJavaScriptCoreCMakeListstxt">branches/ftlopt/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreChangeLog">branches/ftlopt/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreJavaScriptCoreorder">branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.order</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj">branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters">branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebytecodeBytecodeBasicBlockcpp">branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebytecodeBytecodeListjson">branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeList.json</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebytecodeBytecodeUseDefh">branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeUseDef.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebytecodeCodeBlockcpp">branches/ftlopt/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebytecodePreciseJumpTargetscpp">branches/ftlopt/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp">branches/ftlopt/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorebytecompilerBytecodeGeneratorh">branches/ftlopt/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreinterpreterInterpretercpp">branches/ftlopt/Source/JavaScriptCore/interpreter/Interpreter.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreinterpreterRegisterh">branches/ftlopt/Source/JavaScriptCore/interpreter/Register.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorejitJITcpp">branches/ftlopt/Source/JavaScriptCore/jit/JIT.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorejitJITh">branches/ftlopt/Source/JavaScriptCore/jit/JIT.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorejitJITOpcodescpp">branches/ftlopt/Source/JavaScriptCore/jit/JITOpcodes.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorejitJITOpcodes32_64cpp">branches/ftlopt/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorejitJITOperationscpp">branches/ftlopt/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorejitJITPropertyAccesscpp">branches/ftlopt/Source/JavaScriptCore/jit/JITPropertyAccess.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorejitJITPropertyAccess32_64cpp">branches/ftlopt/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellintLLIntOffsetsExtractorcpp">branches/ftlopt/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellintLLIntSlowPathscpp">branches/ftlopt/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellintLLIntSlowPathsh">branches/ftlopt/Source/JavaScriptCore/llint/LLIntSlowPaths.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellintLowLevelInterpreterasm">branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter.asm</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellintLowLevelInterpreter32_64asm">branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm</a></li>
<li><a href="#branchesftloptSourceJavaScriptCorellintLowLevelInterpreter64asm">branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeCommonSlowPathscpp">branches/ftlopt/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeStructurecpp">branches/ftlopt/Source/JavaScriptCore/runtime/Structure.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeStructureh">branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeStructureInlinesh">branches/ftlopt/Source/JavaScriptCore/runtime/StructureInlines.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeStructureRareDatacpp">branches/ftlopt/Source/JavaScriptCore/runtime/StructureRareData.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeStructureRareDatah">branches/ftlopt/Source/JavaScriptCore/runtime/StructureRareData.h</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeVMcpp">branches/ftlopt/Source/JavaScriptCore/runtime/VM.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeJSPropertyNameIteratorcpp">branches/ftlopt/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp</a></li>
<li><a href="#branchesftloptSourceJavaScriptCoreruntimeJSPropertyNameIteratorh">branches/ftlopt/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchesftloptSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/CMakeLists.txt (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/CMakeLists.txt        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/CMakeLists.txt        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -434,7 +434,6 @@
</span><span class="cx">     runtime/JSPromiseFunctions.cpp
</span><span class="cx">     runtime/JSPromiseReaction.cpp
</span><span class="cx">     runtime/JSPromisePrototype.cpp
</span><del>-    runtime/JSPropertyNameIterator.cpp
</del><span class="cx">     runtime/JSProxy.cpp
</span><span class="cx">     runtime/JSScope.cpp
</span><span class="cx">     runtime/JSSegmentedVariableObject.cpp
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/ChangeLog (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/ChangeLog        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/ChangeLog        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1,3 +1,84 @@
</span><ins>+2014-07-25  Mark Hahnenberg  &lt;mhahnenberg@apple.com&gt;
+
+        Remove JSPropertyNameIterator
+        https://bugs.webkit.org/show_bug.cgi?id=135066
+
+        Reviewed by Geoffrey Garen.
+
+        It has been replaced by JSPropertyNameEnumerator.
+
+        * JavaScriptCore.order:
+        * bytecode/BytecodeBasicBlock.cpp:
+        (JSC::isBranch):
+        * bytecode/BytecodeList.json:
+        * bytecode/BytecodeUseDef.h:
+        (JSC::computeUsesForBytecodeOffset):
+        (JSC::computeDefsForBytecodeOffset):
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::dumpBytecode):
+        * bytecode/PreciseJumpTargets.cpp:
+        (JSC::getJumpTargetsForBytecodeOffset):
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::emitGetPropertyNames): Deleted.
+        (JSC::BytecodeGenerator::emitNextPropertyName): Deleted.
+        * bytecompiler/BytecodeGenerator.h:
+        * interpreter/Interpreter.cpp:
+        * interpreter/Register.h:
+        * jit/JIT.cpp:
+        (JSC::JIT::privateCompileMainPass):
+        (JSC::JIT::privateCompileSlowCases):
+        * jit/JIT.h:
+        * jit/JITOpcodes.cpp:
+        (JSC::JIT::emit_op_get_pnames): Deleted.
+        (JSC::JIT::emit_op_next_pname): Deleted.
+        * jit/JITOpcodes32_64.cpp:
+        (JSC::JIT::emit_op_get_pnames): Deleted.
+        (JSC::JIT::emit_op_next_pname): Deleted.
+        * jit/JITOperations.cpp:
+        * jit/JITPropertyAccess.cpp:
+        (JSC::JIT::emit_op_get_by_pname): Deleted.
+        (JSC::JIT::emitSlow_op_get_by_pname): Deleted.
+        * jit/JITPropertyAccess32_64.cpp:
+        (JSC::JIT::emit_op_get_by_pname): Deleted.
+        (JSC::JIT::emitSlow_op_get_by_pname): Deleted.
+        * llint/LLIntOffsetsExtractor.cpp:
+        * llint/LLIntSlowPaths.cpp:
+        (JSC::LLInt::LLINT_SLOW_PATH_DECL): Deleted.
+        * llint/LLIntSlowPaths.h:
+        * llint/LowLevelInterpreter.asm:
+        * llint/LowLevelInterpreter32_64.asm:
+        * llint/LowLevelInterpreter64.asm:
+        * runtime/CommonSlowPaths.cpp:
+        * runtime/JSPropertyNameIterator.cpp:
+        (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Deleted.
+        (JSC::JSPropertyNameIterator::create): Deleted.
+        (JSC::JSPropertyNameIterator::destroy): Deleted.
+        (JSC::JSPropertyNameIterator::get): Deleted.
+        (JSC::JSPropertyNameIterator::visitChildren): Deleted.
+        * runtime/JSPropertyNameIterator.h:
+        (JSC::JSPropertyNameIterator::createStructure): Deleted.
+        (JSC::JSPropertyNameIterator::size): Deleted.
+        (JSC::JSPropertyNameIterator::setCachedStructure): Deleted.
+        (JSC::JSPropertyNameIterator::cachedStructure): Deleted.
+        (JSC::JSPropertyNameIterator::setCachedPrototypeChain): Deleted.
+        (JSC::JSPropertyNameIterator::cachedPrototypeChain): Deleted.
+        (JSC::JSPropertyNameIterator::finishCreation): Deleted.
+        (JSC::Register::propertyNameIterator): Deleted.
+        (JSC::StructureRareData::enumerationCache): Deleted.
+        (JSC::StructureRareData::setEnumerationCache): Deleted.
+        * runtime/Structure.cpp:
+        (JSC::Structure::addPropertyWithoutTransition):
+        (JSC::Structure::removePropertyWithoutTransition):
+        * runtime/Structure.h:
+        * runtime/StructureInlines.h:
+        (JSC::Structure::setEnumerationCache): Deleted.
+        (JSC::Structure::enumerationCache): Deleted.
+        * runtime/StructureRareData.cpp:
+        (JSC::StructureRareData::visitChildren):
+        * runtime/StructureRareData.h:
+        * runtime/VM.cpp:
+        (JSC::VM::VM):
+
</ins><span class="cx"> 2014-07-25  Saam Barati  &lt;sbarati@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix 32-bit build breakage for type profiling
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreJavaScriptCoreorder"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.order (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.order        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.order        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1354,7 +1354,6 @@
</span><span class="cx"> __ZN3JSC17BytecodeGenerator7emitIncEPNS_10RegisterIDE
</span><span class="cx"> __ZN3JSC14jsIsObjectTypeEPNS_9ExecStateENS_7JSValueE
</span><span class="cx"> __ZN3JSC6JSCell11getCallDataEPS0_RNS_8CallDataE
</span><del>-__ZN3JSC22JSPropertyNameIterator6createEPNS_9ExecStateEPNS_8JSObjectE
</del><span class="cx"> __ZN3JSC8JSObject16getPropertyNamesEPS0_PNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE
</span><span class="cx"> __ZN3JSC8JSObject19getOwnPropertyNamesEPS0_PNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE
</span><span class="cx"> __ZN3JSC8JSObject27getOwnNonIndexPropertyNamesEPS0_PNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE
</span><span class="lines">@@ -1638,13 +1637,10 @@
</span><span class="cx"> __ZN3JSC3JIT17emit_op_loop_hintEPNS_11InstructionE
</span><span class="cx"> __ZN3JSC8Watchdog9isEnabledEv
</span><span class="cx"> __ZN3JSC3JIT16emit_op_jeq_nullEPNS_11InstructionE
</span><del>-__ZN3JSC3JIT18emit_op_get_pnamesEPNS_11InstructionE
</del><span class="cx"> __ZN3JSC3JIT11emit_op_jmpEPNS_11InstructionE
</span><del>-__ZN3JSC3JIT20emit_op_get_by_pnameEPNS_11InstructionE
</del><span class="cx"> __ZN3JSC3JIT22compileGetDirectOffsetENS_12X86Registers10RegisterIDES2_S2_S2_NS0_15FinalObjectModeE
</span><span class="cx"> __ZN3JSC3JIT17emit_op_new_arrayEPNS_11InstructionE
</span><span class="cx"> __ZN3JSC3JIT17emit_op_nstricteqEPNS_11InstructionE
</span><del>-__ZN3JSC3JIT18emit_op_next_pnameEPNS_11InstructionE
</del><span class="cx"> __ZN3JSC3JIT11emit_op_incEPNS_11InstructionE
</span><span class="cx"> __ZN3JSC3JIT13emit_op_jlessEPNS_11InstructionE
</span><span class="cx"> __ZN3JSC3JIT24emitSlow_op_convert_thisEPNS_11InstructionERPNS_13SlowCaseEntryE
</span><span class="lines">@@ -1663,7 +1659,6 @@
</span><span class="cx"> __ZN3JSC12X86Assembler23X86InstructionFormatter11twoByteOp64ENS0_15TwoByteOpcodeIDEiNS_12X86Registers10RegisterIDE
</span><span class="cx"> __ZN3JSC23MacroAssemblerX86Common12branchDoubleENS0_15DoubleConditionENS_12X86Registers13XMMRegisterIDES3_
</span><span class="cx"> __ZN3JSC12X86Assembler23X86InstructionFormatter9twoByteOpENS0_15TwoByteOpcodeIDEiNS_12X86Registers10RegisterIDE
</span><del>-__ZN3JSC3JIT24emitSlow_op_get_by_pnameEPNS_11InstructionERPNS_13SlowCaseEntryE
</del><span class="cx"> __ZN3JSC3JIT21emitSlow_op_nstricteqEPNS_11InstructionERPNS_13SlowCaseEntryE
</span><span class="cx"> __ZN3JSC3JIT15emitSlow_op_incEPNS_11InstructionERPNS_13SlowCaseEntryE
</span><span class="cx"> __ZN3JSC3JIT17emitSlow_op_jlessEPNS_11InstructionERPNS_13SlowCaseEntryE
</span><span class="lines">@@ -1675,7 +1670,6 @@
</span><span class="cx"> _cti_op_stricteq
</span><span class="cx"> _cti_op_jtrue
</span><span class="cx"> _cti_op_is_object
</span><del>-_cti_op_get_pnames
</del><span class="cx"> __ZN3JSC8JSString12toThisObjectEPNS_6JSCellEPNS_9ExecStateE
</span><span class="cx"> __ZN3JSC12StringObjectC1ERNS_2VMEPNS_9StructureE
</span><span class="cx"> __ZNK3JSC6JSCell11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE
</span><span class="lines">@@ -2623,7 +2617,6 @@
</span><span class="cx"> __ZN3WTF7HashMapImPN3JSC21GCAwareJITStubRoutineENS_7IntHashImEENS_10HashTraitsImEENS6_IS3_EEE4findERKm
</span><span class="cx"> __ZN3JSC13JSFinalObject13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
</span><span class="cx"> __ZN3JSC17StructureRareData13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
</span><del>-__ZN3JSC22JSPropertyNameIterator13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
</del><span class="cx"> __ZN3JSC14StructureChain13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
</span><span class="cx"> __ZN3JSC14MarkStackArray6expandEv
</span><span class="cx"> __ZN3JSC17ProgramExecutable13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
</span><span class="lines">@@ -2667,7 +2660,6 @@
</span><span class="cx"> __ZN3JSC17ProgramExecutable7destroyEPNS_6JSCellE
</span><span class="cx"> __ZN3JSC17SharedSymbolTable7destroyEPNS_6JSCellE
</span><span class="cx"> __ZN3JSC10JSFunction7destroyEPNS_6JSCellE
</span><del>-__ZN3JSC22JSPropertyNameIterator7destroyEPNS_6JSCellE
</del><span class="cx"> __ZN3JSC19ResolveGlobalStatus10computeForEPNS_9CodeBlockEiPNS_16ResolveOperationERNS_10IdentifierE
</span><span class="cx"> __ZN3JSC13GetByIdStatus10computeForERNS_2VMEPNS_9StructureERNS_10IdentifierE
</span><span class="cx"> __ZN3JSC3DFG14SpeculativeJIT23emitObjectOrOtherBranchENS0_4EdgeEjj
</span><span class="lines">@@ -4942,7 +4934,6 @@
</span><span class="cx"> _llint_slow_path_del_by_id
</span><span class="cx"> _llint_slow_path_get_by_val
</span><span class="cx"> _llint_slow_path_get_argument_by_val
</span><del>-_llint_slow_path_get_by_pname
</del><span class="cx"> _llint_slow_path_put_by_val
</span><span class="cx"> _llint_slow_path_del_by_val
</span><span class="cx"> _llint_slow_path_put_by_index
</span><span class="lines">@@ -4970,8 +4961,6 @@
</span><span class="cx"> _llint_slow_path_tear_off_arguments
</span><span class="cx"> _llint_slow_path_strcat
</span><span class="cx"> _llint_slow_path_to_primitive
</span><del>-_llint_slow_path_get_pnames
-_llint_slow_path_next_pname
</del><span class="cx"> _llint_slow_path_push_with_scope
</span><span class="cx"> _llint_slow_path_pop_scope
</span><span class="cx"> _llint_slow_path_push_name_scope
</span><span class="lines">@@ -5038,7 +5027,6 @@
</span><span class="cx"> _llint_op_put_by_id_transition_normal_out_of_line
</span><span class="cx"> _llint_op_get_by_val
</span><span class="cx"> _llint_op_get_argument_by_val
</span><del>-_llint_op_get_by_pname
</del><span class="cx"> _llint_op_put_by_val
</span><span class="cx"> _llint_op_jmp
</span><span class="cx"> _llint_op_jeq_null
</span><span class="lines">@@ -5053,7 +5041,6 @@
</span><span class="cx"> _llint_op_call_put_result
</span><span class="cx"> _llint_op_ret_object_or_this
</span><span class="cx"> _llint_op_to_primitive
</span><del>-_llint_op_next_pname
</del><span class="cx"> _llint_op_catch
</span><span class="cx"> _llint_op_get_scoped_var
</span><span class="cx"> _llint_op_put_scoped_var
</span><span class="lines">@@ -5111,7 +5098,6 @@
</span><span class="cx"> _llint_op_call_eval
</span><span class="cx"> _llint_generic_return_point
</span><span class="cx"> _llint_op_strcat
</span><del>-_llint_op_get_pnames
</del><span class="cx"> _llint_op_push_with_scope
</span><span class="cx"> _llint_op_pop_scope
</span><span class="cx"> _llint_op_push_name_scope
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -680,7 +680,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSPromiseFunctions.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSPromiseReaction.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSPromisePrototype.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSPropertyNameIterator.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSProxy.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSScope.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSSegmentedVariableObject.cpp&quot; /&gt;
</span><span class="lines">@@ -1371,7 +1370,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSPromiseFunctions.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSPromiseReaction.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSPromisePrototype.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSPropertyNameIterator.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSProxy.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSScope.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSSegmentedVariableObject.h&quot; /&gt;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -648,9 +648,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSONObject.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSPropertyNameIterator.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSProxy.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -2306,9 +2303,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSONObject.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSPropertyNameIterator.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSProxy.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1731,7 +1731,6 @@
</span><span class="cx">                 A72028BA1797603D0098028C /* JSFunctionInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = A72028B91797603D0098028C /* JSFunctionInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A72700900DAC6BBC00E548D7 /* JSNotAnObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A72700780DAC605600E548D7 /* JSNotAnObject.cpp */; };
</span><span class="cx">                 A72701B90DADE94900E548D7 /* ExceptionHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = A72701B30DADE94900E548D7 /* ExceptionHelpers.h */; };
</span><del>-                A727FF6B0DA3092200E548D7 /* JSPropertyNameIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A727FF660DA3053B00E548D7 /* JSPropertyNameIterator.cpp */; };
</del><span class="cx">                 A7280A2811557E3000D56957 /* JSObjectRefPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = A79EDB0811531CD60019E912 /* JSObjectRefPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A729009C17976C6000317298 /* MacroAssemblerARMv7.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A729009B17976C6000317298 /* MacroAssemblerARMv7.cpp */; };
</span><span class="cx">                 A7299D9D17D12837005F5FF9 /* JSSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7299D9B17D12837005F5FF9 /* JSSet.cpp */; };
</span><span class="lines">@@ -3404,8 +3403,6 @@
</span><span class="cx">                 A72700770DAC605600E548D7 /* JSNotAnObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNotAnObject.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A72700780DAC605600E548D7 /* JSNotAnObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNotAnObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A72701B30DADE94900E548D7 /* ExceptionHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExceptionHelpers.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                A727FF650DA3053B00E548D7 /* JSPropertyNameIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPropertyNameIterator.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                A727FF660DA3053B00E548D7 /* JSPropertyNameIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPropertyNameIterator.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 A729009B17976C6000317298 /* MacroAssemblerARMv7.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacroAssemblerARMv7.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A7299D9B17D12837005F5FF9 /* JSSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSet.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A7299D9C17D12837005F5FF9 /* JSSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSet.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4799,8 +4796,6 @@
</span><span class="cx">                                 7C184E1D17BEE22E007CB63A /* JSPromisePrototype.h */,
</span><span class="cx">                                 7C008CDC1871258D00955C24 /* JSPromiseReaction.cpp */,
</span><span class="cx">                                 7C008CDD1871258D00955C24 /* JSPromiseReaction.h */,
</span><del>-                                A727FF660DA3053B00E548D7 /* JSPropertyNameIterator.cpp */,
-                                A727FF650DA3053B00E548D7 /* JSPropertyNameIterator.h */,
</del><span class="cx">                                 862553CE16136AA5009F17D0 /* JSProxy.cpp */,
</span><span class="cx">                                 862553CF16136AA5009F17D0 /* JSProxy.h */,
</span><span class="cx">                                 14874AE115EBDE4A002E3587 /* JSScope.cpp */,
</span><span class="lines">@@ -7980,7 +7975,6 @@
</span><span class="cx">                                 7C008CD2186F8A9300955C24 /* JSPromiseFunctions.cpp in Sources */,
</span><span class="cx">                                 7C184E1E17BEE22E007CB63A /* JSPromisePrototype.cpp in Sources */,
</span><span class="cx">                                 7C008CDE1871258D00955C24 /* JSPromiseReaction.cpp in Sources */,
</span><del>-                                A727FF6B0DA3092200E548D7 /* JSPropertyNameIterator.cpp in Sources */,
</del><span class="cx">                                 862553D116136DA9009F17D0 /* JSProxy.cpp in Sources */,
</span><span class="cx">                                 9928FF3B18AC4AEC00B8CF12 /* JSReplayInputs.cpp in Sources */,
</span><span class="cx">                                 14874AE515EBDE4A002E3587 /* JSScope.cpp in Sources */,
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebytecodeBytecodeBasicBlockcpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -52,8 +52,6 @@
</span><span class="cx">     case op_switch_imm:
</span><span class="cx">     case op_switch_char:
</span><span class="cx">     case op_switch_string:
</span><del>-    case op_get_pnames:
-    case op_next_pname:
</del><span class="cx">     case op_check_has_instance:
</span><span class="cx">         return true;
</span><span class="cx">     default:
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebytecodeBytecodeListjson"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeList.json (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeList.json        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeList.json        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -70,7 +70,6 @@
</span><span class="cx">             { &quot;name&quot; : &quot;op_del_by_id&quot;, &quot;length&quot; : 4 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_get_by_val&quot;, &quot;length&quot; : 6 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_get_argument_by_val&quot;, &quot;length&quot; : 6 },
</span><del>-            { &quot;name&quot; : &quot;op_get_by_pname&quot;, &quot;length&quot; : 7 },
</del><span class="cx">             { &quot;name&quot; : &quot;op_put_by_val&quot;, &quot;length&quot; : 5 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_put_by_val_direct&quot;, &quot;length&quot; : 5 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_del_by_val&quot;, &quot;length&quot; : 4 },
</span><span class="lines">@@ -108,8 +107,6 @@
</span><span class="cx">             { &quot;name&quot; : &quot;op_construct_varargs&quot;, &quot;length&quot; : 9 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_strcat&quot;, &quot;length&quot; : 4 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_to_primitive&quot;, &quot;length&quot; : 3 },
</span><del>-            { &quot;name&quot; : &quot;op_get_pnames&quot;, &quot;length&quot; : 6 },
-            { &quot;name&quot; : &quot;op_next_pname&quot;, &quot;length&quot; : 7 },
</del><span class="cx">             { &quot;name&quot; : &quot;op_resolve_scope&quot;, &quot;length&quot; : 6 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_get_from_scope&quot;, &quot;length&quot; : 8 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_get_from_scope_with_profile&quot;, &quot;length&quot; : 9 },
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebytecodeBytecodeUseDefh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeUseDef.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -146,7 +146,6 @@
</span><span class="cx">     case op_captured_mov:
</span><span class="cx">     case op_new_array_with_size:
</span><span class="cx">     case op_create_this:
</span><del>-    case op_get_pnames:
</del><span class="cx">     case op_del_by_id:
</span><span class="cx">     case op_unsigned: {
</span><span class="cx">         functor(codeBlock, instruction, opcodeID, instruction[2].u.operand);
</span><span class="lines">@@ -194,22 +193,13 @@
</span><span class="cx">         functor(codeBlock, instruction, opcodeID, instruction[4].u.operand);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    case op_get_direct_pname:
-    case op_next_pname: {
</del><ins>+    case op_get_direct_pname: {
</ins><span class="cx">         functor(codeBlock, instruction, opcodeID, instruction[2].u.operand);
</span><span class="cx">         functor(codeBlock, instruction, opcodeID, instruction[3].u.operand);
</span><span class="cx">         functor(codeBlock, instruction, opcodeID, instruction[4].u.operand);
</span><span class="cx">         functor(codeBlock, instruction, opcodeID, instruction[5].u.operand);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    case op_get_by_pname: {
-        functor(codeBlock, instruction, opcodeID, instruction[2].u.operand);
-        functor(codeBlock, instruction, opcodeID, instruction[3].u.operand);
-        functor(codeBlock, instruction, opcodeID, instruction[4].u.operand);
-        functor(codeBlock, instruction, opcodeID, instruction[5].u.operand);
-        functor(codeBlock, instruction, opcodeID, instruction[6].u.operand);
-        return;
-    }
</del><span class="cx">     case op_switch_string:
</span><span class="cx">     case op_switch_char:
</span><span class="cx">     case op_switch_imm: {
</span><span class="lines">@@ -316,7 +306,6 @@
</span><span class="cx">     case op_get_direct_pname:
</span><span class="cx">     case op_get_structure_property_enumerator:
</span><span class="cx">     case op_next_enumerator_pname:
</span><del>-    case op_next_pname:
</del><span class="cx">     case op_resolve_scope:
</span><span class="cx">     case op_strcat:
</span><span class="cx">     case op_tear_off_activation:
</span><span class="lines">@@ -344,7 +333,6 @@
</span><span class="cx">     case op_instanceof:
</span><span class="cx">     case op_get_by_val:
</span><span class="cx">     case op_get_argument_by_val:
</span><del>-    case op_get_by_pname:
</del><span class="cx">     case op_get_arguments_length:
</span><span class="cx">     case op_typeof:
</span><span class="cx">     case op_is_undefined:
</span><span class="lines">@@ -394,12 +382,6 @@
</span><span class="cx">         functor(codeBlock, instruction, opcodeID, instruction[1].u.operand);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    case op_get_pnames: {
-        functor(codeBlock, instruction, opcodeID, instruction[1].u.operand);
-        functor(codeBlock, instruction, opcodeID, instruction[3].u.operand);
-        functor(codeBlock, instruction, opcodeID, instruction[4].u.operand);
-        return;
-    }
</del><span class="cx">     case op_enter: {
</span><span class="cx">         for (unsigned i = codeBlock-&gt;m_numVars; i--;)
</span><span class="cx">             functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(i).offset());
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/bytecode/CodeBlock.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1119,17 +1119,6 @@
</span><span class="cx">             dumpValueProfiling(out, it, hasPrintedProfiling);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_get_by_pname: {
-            int r0 = (++it)-&gt;u.operand;
-            int r1 = (++it)-&gt;u.operand;
-            int r2 = (++it)-&gt;u.operand;
-            int r3 = (++it)-&gt;u.operand;
-            int r4 = (++it)-&gt;u.operand;
-            int r5 = (++it)-&gt;u.operand;
-            printLocationAndOp(out, exec, location, it, &quot;get_by_pname&quot;);
-            out.printf(&quot;%s, %s, %s, %s, %s, %s&quot;, registerName(r0).data(), registerName(r1).data(), registerName(r2).data(), registerName(r3).data(), registerName(r4).data(), registerName(r5).data());
-            break;
-        }
</del><span class="cx">         case op_put_by_val: {
</span><span class="cx">             int r0 = (++it)-&gt;u.operand;
</span><span class="cx">             int r1 = (++it)-&gt;u.operand;
</span><span class="lines">@@ -1376,29 +1365,6 @@
</span><span class="cx">             out.printf(&quot;%s, %s&quot;, registerName(r0).data(), registerName(r1).data());
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_get_pnames: {
-            int r0 = it[1].u.operand;
-            int r1 = it[2].u.operand;
-            int r2 = it[3].u.operand;
-            int r3 = it[4].u.operand;
-            int offset = it[5].u.operand;
-            printLocationAndOp(out, exec, location, it, &quot;get_pnames&quot;);
-            out.printf(&quot;%s, %s, %s, %s, %d(-&gt;%d)&quot;, registerName(r0).data(), registerName(r1).data(), registerName(r2).data(), registerName(r3).data(), offset, location + offset);
-            it += OPCODE_LENGTH(op_get_pnames) - 1;
-            break;
-        }
-        case op_next_pname: {
-            int dest = it[1].u.operand;
-            int base = it[2].u.operand;
-            int i = it[3].u.operand;
-            int size = it[4].u.operand;
-            int iter = it[5].u.operand;
-            int offset = it[6].u.operand;
-            printLocationAndOp(out, exec, location, it, &quot;next_pname&quot;);
-            out.printf(&quot;%s, %s, %s, %s, %s, %d(-&gt;%d)&quot;, registerName(dest).data(), registerName(base).data(), registerName(i).data(), registerName(size).data(), registerName(iter).data(), offset, location + offset);
-            it += OPCODE_LENGTH(op_next_pname) - 1;
-            break;
-        }
</del><span class="cx">         case op_get_enumerable_length: {
</span><span class="cx">             int dst = it[1].u.operand;
</span><span class="cx">             int base = it[2].u.operand;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebytecodePreciseJumpTargetscpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -73,12 +73,6 @@
</span><span class="cx">         out.append(bytecodeOffset + current[2].u.operand);
</span><span class="cx">         break;
</span><span class="cx">     }
</span><del>-    case op_get_pnames:
-        out.append(bytecodeOffset + current[5].u.operand);
-        break;
-    case op_next_pname:
-        out.append(bytecodeOffset + current[6].u.operand);
-        break;
</del><span class="cx">     case op_check_has_instance:
</span><span class="cx">         out.append(bytecodeOffset + current[4].u.operand);
</span><span class="cx">         break;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -2286,33 +2286,6 @@
</span><span class="cx">     emitComplexPopScopes(&amp;m_scopeContextStack.last(), &amp;m_scopeContextStack.last() - scopeDelta);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RegisterID* BytecodeGenerator::emitGetPropertyNames(RegisterID* dst, RegisterID* base, RegisterID* i, RegisterID* size, Label* breakTarget)
-{
-    size_t begin = instructions().size();
-
-    emitOpcode(op_get_pnames);
-    instructions().append(dst-&gt;index());
-    instructions().append(base-&gt;index());
-    instructions().append(i-&gt;index());
-    instructions().append(size-&gt;index());
-    instructions().append(breakTarget-&gt;bind(begin, instructions().size()));
-    return dst;
-}
-
-RegisterID* BytecodeGenerator::emitNextPropertyName(RegisterID* dst, RegisterID* base, RegisterID* i, RegisterID* size, RegisterID* iter, Label* target)
-{
-    size_t begin = instructions().size();
-
-    emitOpcode(op_next_pname);
-    instructions().append(dst-&gt;index());
-    instructions().append(base-&gt;index());
-    instructions().append(i-&gt;index());
-    instructions().append(size-&gt;index());
-    instructions().append(iter-&gt;index());
-    instructions().append(target-&gt;bind(begin, instructions().size()));
-    return dst;
-}
-
</del><span class="cx"> TryData* BytecodeGenerator::pushTry(Label* start)
</span><span class="cx"> {
</span><span class="cx">     TryData tryData;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -487,9 +487,6 @@
</span><span class="cx">         PassRefPtr&lt;Label&gt; emitJumpIfNotFunctionApply(RegisterID* cond, Label* target);
</span><span class="cx">         void emitPopScopes(int targetScopeDepth);
</span><span class="cx"> 
</span><del>-        RegisterID* emitGetPropertyNames(RegisterID* dst, RegisterID* base, RegisterID* i, RegisterID* size, Label* breakTarget);
-        RegisterID* emitNextPropertyName(RegisterID* dst, RegisterID* base, RegisterID* i, RegisterID* size, RegisterID* iter, Label* target);
-
</del><span class="cx">         RegisterID* emitHasIndexedProperty(RegisterID* dst, RegisterID* base, RegisterID* propertyName);
</span><span class="cx">         RegisterID* emitHasStructureProperty(RegisterID* dst, RegisterID* base, RegisterID* propertyName, RegisterID* enumerator);
</span><span class="cx">         RegisterID* emitHasGenericProperty(RegisterID* dst, RegisterID* base, RegisterID* propertyName);
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreinterpreterInterpretercpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/interpreter/Interpreter.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/interpreter/Interpreter.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/interpreter/Interpreter.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -47,7 +47,6 @@
</span><span class="cx"> #include &quot;JSBoundFunction.h&quot;
</span><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;JSNotAnObject.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSStackInlines.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreinterpreterRegisterh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/interpreter/Register.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/interpreter/Register.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/interpreter/Register.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx">     class ExecState;
</span><span class="cx">     class JSActivation;
</span><span class="cx">     class JSObject;
</span><del>-    class JSPropertyNameIterator;
</del><span class="cx">     class JSScope;
</span><span class="cx"> 
</span><span class="cx">     typedef ExecState CallFrame;
</span><span class="lines">@@ -63,7 +62,6 @@
</span><span class="cx">         CallFrame* callFrame() const;
</span><span class="cx">         CodeBlock* codeBlock() const;
</span><span class="cx">         JSObject* function() const;
</span><del>-        JSPropertyNameIterator* propertyNameIterator() const;
</del><span class="cx">         JSScope* scope() const;
</span><span class="cx">         int32_t unboxedInt32() const;
</span><span class="cx">         int64_t unboxedInt52() const;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorejitJITcpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/jit/JIT.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/jit/JIT.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/jit/JIT.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -219,8 +219,6 @@
</span><span class="cx">         DEFINE_OP(op_get_arguments_length)
</span><span class="cx">         DEFINE_OP(op_get_by_val)
</span><span class="cx">         DEFINE_OP(op_get_argument_by_val)
</span><del>-        DEFINE_OP(op_get_by_pname)
-        DEFINE_OP(op_get_pnames)
</del><span class="cx">         DEFINE_OP(op_check_has_instance)
</span><span class="cx">         DEFINE_OP(op_instanceof)
</span><span class="cx">         DEFINE_OP(op_is_undefined)
</span><span class="lines">@@ -258,7 +256,6 @@
</span><span class="cx">         DEFINE_OP(op_new_func_exp)
</span><span class="cx">         DEFINE_OP(op_new_object)
</span><span class="cx">         DEFINE_OP(op_new_regexp)
</span><del>-        DEFINE_OP(op_next_pname)
</del><span class="cx">         DEFINE_OP(op_not)
</span><span class="cx">         DEFINE_OP(op_nstricteq)
</span><span class="cx">         DEFINE_OP(op_pop_scope)
</span><span class="lines">@@ -391,7 +388,6 @@
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_get_arguments_length)
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_get_by_val)
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_get_argument_by_val)
</span><del>-        DEFINE_SLOWCASE_OP(op_get_by_pname)
</del><span class="cx">         DEFINE_SLOWCASE_OP(op_check_has_instance)
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_instanceof)
</span><span class="cx">         DEFINE_SLOWCASE_OP(op_jfalse)
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorejitJITh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/jit/JIT.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/jit/JIT.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/jit/JIT.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -56,7 +56,6 @@
</span><span class="cx">     class CodeBlock;
</span><span class="cx">     class FunctionExecutable;
</span><span class="cx">     class JIT;
</span><del>-    class JSPropertyNameIterator;
</del><span class="cx">     class Identifier;
</span><span class="cx">     class Interpreter;
</span><span class="cx">     class JSScope;
</span><span class="lines">@@ -483,7 +482,6 @@
</span><span class="cx">         void emit_op_get_arguments_length(Instruction*);
</span><span class="cx">         void emit_op_get_by_val(Instruction*);
</span><span class="cx">         void emit_op_get_argument_by_val(Instruction*);
</span><del>-        void emit_op_get_by_pname(Instruction*);
</del><span class="cx">         void emit_op_init_lazy_reg(Instruction*);
</span><span class="cx">         void emit_op_check_has_instance(Instruction*);
</span><span class="cx">         void emit_op_instanceof(Instruction*);
</span><span class="lines">@@ -521,8 +519,6 @@
</span><span class="cx">         void emit_op_new_func_exp(Instruction*);
</span><span class="cx">         void emit_op_new_object(Instruction*);
</span><span class="cx">         void emit_op_new_regexp(Instruction*);
</span><del>-        void emit_op_get_pnames(Instruction*);
-        void emit_op_next_pname(Instruction*);
</del><span class="cx">         void emit_op_not(Instruction*);
</span><span class="cx">         void emit_op_nstricteq(Instruction*);
</span><span class="cx">         void emit_op_pop_scope(Instruction*);
</span><span class="lines">@@ -584,7 +580,6 @@
</span><span class="cx">         void emitSlow_op_get_arguments_length(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span><span class="cx">         void emitSlow_op_get_by_val(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span><span class="cx">         void emitSlow_op_get_argument_by_val(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span><del>-        void emitSlow_op_get_by_pname(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</del><span class="cx">         void emitSlow_op_check_has_instance(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span><span class="cx">         void emitSlow_op_instanceof(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span><span class="cx">         void emitSlow_op_jfalse(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;);
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorejitJITOpcodescpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/jit/JITOpcodes.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/jit/JITOpcodes.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/jit/JITOpcodes.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> #include &quot;JSCell.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;LinkBuffer.h&quot;
</span><span class="cx"> #include &quot;MaxFrameExtentForSlowPathCall.h&quot;
</span><span class="cx"> #include &quot;RepatchBuffer.h&quot;
</span><span class="lines">@@ -459,106 +458,6 @@
</span><span class="cx">     jumpToExceptionHandler();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_get_pnames(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-    int i = currentInstruction[3].u.operand;
-    int size = currentInstruction[4].u.operand;
-    int breakTarget = currentInstruction[5].u.operand;
-
-    JumpList isNotObject;
-
-    emitGetVirtualRegister(base, regT0);
-    if (!m_codeBlock-&gt;isKnownNotImmediate(base))
-        isNotObject.append(emitJumpIfNotJSCell(regT0));
-    if (base != m_codeBlock-&gt;thisRegister().offset() || m_codeBlock-&gt;isStrictMode())
-        isNotObject.append(emitJumpIfCellNotObject(regT0));
-
-    // We could inline the case where you have a valid cache, but
-    // this call doesn't seem to be hot.
-    Label isObject(this);
-    callOperation(operationGetPNames, regT0);
-    emitStoreCell(dst, returnValueGPR);
-    load32(Address(regT0, OBJECT_OFFSETOF(JSPropertyNameIterator, m_jsStringsSize)), regT3);
-    store64(tagTypeNumberRegister, addressFor(i));
-    store32(TrustedImm32(Int32Tag), intTagFor(size));
-    store32(regT3, intPayloadFor(size));
-    Jump end = jump();
-
-    isNotObject.link(this);
-    move(regT0, regT1);
-    and32(TrustedImm32(~TagBitUndefined), regT1);
-    addJump(branch32(Equal, regT1, TrustedImm32(ValueNull)), breakTarget);
-    callOperation(operationToObject, base, regT0);
-    jump().linkTo(isObject, this);
-    
-    end.link(this);
-}
-
-void JIT::emit_op_next_pname(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-    int i = currentInstruction[3].u.operand;
-    int size = currentInstruction[4].u.operand;
-    int it = currentInstruction[5].u.operand;
-    int target = currentInstruction[6].u.operand;
-    
-    JumpList callHasProperty;
-
-    Label begin(this);
-    load32(intPayloadFor(i), regT0);
-    Jump end = branch32(Equal, regT0, intPayloadFor(size));
-
-    // Grab key @ i
-    loadPtr(addressFor(it), regT1);
-    loadPtr(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_jsStrings)), regT2);
-
-    load64(BaseIndex(regT2, regT0, TimesEight), regT2);
-
-    emitPutVirtualRegister(dst, regT2);
-
-    // Increment i
-    add32(TrustedImm32(1), regT0);
-    store32(regT0, intPayloadFor(i));
-
-    // Verify that i is valid:
-    emitGetVirtualRegister(base, regT0);
-
-    // Test base's structure
-    emitLoadStructure(regT0, regT2, regT3);
-    callHasProperty.append(branchPtr(NotEqual, regT2, Address(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedStructure)))));
-
-    // Test base's prototype chain
-    loadPtr(Address(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedPrototypeChain))), regT3);
-    loadPtr(Address(regT3, OBJECT_OFFSETOF(StructureChain, m_vector)), regT3);
-    addJump(branchTestPtr(Zero, Address(regT3)), target);
-
-    Label checkPrototype(this);
-    load64(Address(regT2, Structure::prototypeOffset()), regT2);
-    callHasProperty.append(emitJumpIfNotJSCell(regT2));
-    emitLoadStructure(regT2, regT2, regT1);
-    callHasProperty.append(branchPtr(NotEqual, regT2, Address(regT3)));
-    addPtr(TrustedImm32(sizeof(Structure*)), regT3);
-    branchTestPtr(NonZero, Address(regT3)).linkTo(checkPrototype, this);
-
-    // Continue loop.
-    addJump(jump(), target);
-
-    // Slow case: Ask the object if i is valid.
-    callHasProperty.link(this);
-    emitGetVirtualRegister(dst, regT1);
-    callOperation(operationHasProperty, regT0, regT1);
-
-    // Test for valid key.
-    addJump(branchTest32(NonZero, regT0), target);
-    jump().linkTo(begin, this);
-
-    // End of loop.
-    end.link(this);
-}
-
</del><span class="cx"> void JIT::emit_op_push_with_scope(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     emitGetVirtualRegister(currentInstruction[1].u.operand, regT0);
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorejitJITOpcodes32_64cpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> #include &quot;JSCell.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSVariableObject.h&quot;
</span><span class="cx"> #include &quot;LinkBuffer.h&quot;
</span><span class="cx"> #include &quot;MaxFrameExtentForSlowPathCall.h&quot;
</span><span class="lines">@@ -769,105 +768,6 @@
</span><span class="cx">     jumpToExceptionHandler();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_get_pnames(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-    int i = currentInstruction[3].u.operand;
-    int size = currentInstruction[4].u.operand;
-    int breakTarget = currentInstruction[5].u.operand;
-
-    JumpList isNotObject;
-
-    emitLoad(base, regT1, regT0);
-    if (!m_codeBlock-&gt;isKnownNotImmediate(base))
-        isNotObject.append(branch32(NotEqual, regT1, TrustedImm32(JSValue::CellTag)));
-    if (VirtualRegister(base) != m_codeBlock-&gt;thisRegister() || m_codeBlock-&gt;isStrictMode())
-        isNotObject.append(emitJumpIfCellNotObject(regT0));
-
-    // We could inline the case where you have a valid cache, but
-    // this call doesn't seem to be hot.
-    Label isObject(this);
-    callOperation(operationGetPNames, regT0);
-    emitStoreCell(dst, returnValueGPR);
-    load32(Address(regT0, OBJECT_OFFSETOF(JSPropertyNameIterator, m_jsStringsSize)), regT3);
-    store32(TrustedImm32(Int32Tag), intTagFor(i));
-    store32(TrustedImm32(0), intPayloadFor(i));
-    store32(TrustedImm32(Int32Tag), intTagFor(size));
-    store32(regT3, payloadFor(size));
-    Jump end = jump();
-
-    isNotObject.link(this);
-    addJump(branch32(Equal, regT1, TrustedImm32(JSValue::NullTag)), breakTarget);
-    addJump(branch32(Equal, regT1, TrustedImm32(JSValue::UndefinedTag)), breakTarget);
-    callOperation(operationToObject, base, regT1, regT0);
-    jump().linkTo(isObject, this);
-
-    end.link(this);
-}
-
-void JIT::emit_op_next_pname(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-    int i = currentInstruction[3].u.operand;
-    int size = currentInstruction[4].u.operand;
-    int it = currentInstruction[5].u.operand;
-    int target = currentInstruction[6].u.operand;
-
-    JumpList callHasProperty;
-
-    Label begin(this);
-    load32(intPayloadFor(i), regT0);
-    Jump end = branch32(Equal, regT0, intPayloadFor(size));
-
-    // Grab key @ i
-    loadPtr(payloadFor(it), regT1);
-    loadPtr(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_jsStrings)), regT2);
-    load32(BaseIndex(regT2, regT0, TimesEight), regT2);
-    store32(TrustedImm32(JSValue::CellTag), tagFor(dst));
-    store32(regT2, payloadFor(dst));
-
-    // Increment i
-    add32(TrustedImm32(1), regT0);
-    store32(regT0, intPayloadFor(i));
-
-    // Verify that i is valid:
-    loadPtr(payloadFor(base), regT0);
-
-    // Test base's structure
-    loadPtr(Address(regT0, JSCell::structureIDOffset()), regT2);
-    callHasProperty.append(branchPtr(NotEqual, regT2, Address(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedStructure)))));
-
-    // Test base's prototype chain
-    loadPtr(Address(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedPrototypeChain))), regT3);
-    loadPtr(Address(regT3, OBJECT_OFFSETOF(StructureChain, m_vector)), regT3);
-    addJump(branchTestPtr(Zero, Address(regT3)), target);
-
-    Label checkPrototype(this);
-    callHasProperty.append(branch32(Equal, Address(regT2, Structure::prototypeOffset() + OBJECT_OFFSETOF(JSValue, u.asBits.tag)), TrustedImm32(JSValue::NullTag)));
-    loadPtr(Address(regT2, Structure::prototypeOffset() + OBJECT_OFFSETOF(JSValue, u.asBits.payload)), regT2);
-    loadPtr(Address(regT2, JSCell::structureIDOffset()), regT2);
-    callHasProperty.append(branchPtr(NotEqual, regT2, Address(regT3)));
-    addPtr(TrustedImm32(sizeof(Structure*)), regT3);
-    branchTestPtr(NonZero, Address(regT3)).linkTo(checkPrototype, this);
-
-    // Continue loop.
-    addJump(jump(), target);
-
-    // Slow case: Ask the object if i is valid.
-    callHasProperty.link(this);
-    loadPtr(addressFor(dst), regT1);
-    callOperation(operationHasProperty, regT0, regT1);
-
-    // Test for valid key.
-    addJump(branchTest32(NonZero, regT0), target);
-    jump().linkTo(begin, this);
-
-    // End of loop.
-    end.link(this);
-}
-
</del><span class="cx"> void JIT::emit_op_push_with_scope(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     emitLoad(currentInstruction[1].u.operand, regT1, regT0);
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/jit/JITOperations.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/jit/JITOperations.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/jit/JITOperations.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSStackInlines.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="cx"> #include &quot;ObjectConstructor.h&quot;
</span><span class="lines">@@ -1616,18 +1615,6 @@
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSCell* JIT_OPERATION operationGetPNames(ExecState* exec, JSObject* obj)
-{
-    VM&amp; vm = exec-&gt;vm();
-    NativeCallFrameTracer tracer(&amp;vm, exec);
-
-    Structure* structure = obj-&gt;structure(vm);
-    JSPropertyNameIterator* jsPropertyNameIterator = structure-&gt;enumerationCache();
-    if (!jsPropertyNameIterator || jsPropertyNameIterator-&gt;cachedPrototypeChain() != structure-&gt;prototypeChain(exec))
-        jsPropertyNameIterator = JSPropertyNameIterator::create(exec, obj);
-    return jsPropertyNameIterator;
-}
-
</del><span class="cx"> EncodedJSValue JIT_OPERATION operationInstanceOf(ExecState* exec, EncodedJSValue encodedValue, EncodedJSValue encodedProto)
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorejitJITPropertyAccesscpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/jit/JITPropertyAccess.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/jit/JITPropertyAccess.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/jit/JITPropertyAccess.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include &quot;JITInlines.h&quot;
</span><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSVariableObject.h&quot;
</span><span class="cx"> #include &quot;LinkBuffer.h&quot;
</span><span class="cx"> #include &quot;RepatchBuffer.h&quot;
</span><span class="lines">@@ -262,51 +261,6 @@
</span><span class="cx">     load64(BaseIndex(scratch, offset, TimesEight, (firstOutOfLineOffset - 2) * sizeof(EncodedJSValue)), result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_get_by_pname(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-    int property = currentInstruction[3].u.operand;
-    unsigned expected = currentInstruction[4].u.operand;
-    int iter = currentInstruction[5].u.operand;
-    int i = currentInstruction[6].u.operand;
-
-    emitGetVirtualRegister(property, regT0);
-    addSlowCase(branch64(NotEqual, regT0, addressFor(expected)));
-    emitGetVirtualRegisters(base, regT0, iter, regT1);
-    emitJumpSlowCaseIfNotJSCell(regT0, base);
-
-    // Test base's structure
-    emitLoadStructure(regT0, regT2, regT3);
-    addSlowCase(branchPtr(NotEqual, regT2, Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedStructure))));
-    load32(addressFor(i), regT3);
-    sub32(TrustedImm32(1), regT3);
-    addSlowCase(branch32(AboveOrEqual, regT3, Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_numCacheableSlots))));
-    Jump inlineProperty = branch32(Below, regT3, Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedStructureInlineCapacity)));
-    add32(TrustedImm32(firstOutOfLineOffset), regT3);
-    sub32(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedStructureInlineCapacity)), regT3);
-    inlineProperty.link(this);
-    compileGetDirectOffset(regT0, regT0, regT3, regT1);
-
-    emitPutVirtualRegister(dst, regT0);
-}
-
-void JIT::emitSlow_op_get_by_pname(Instruction* currentInstruction, Vector&lt;SlowCaseEntry&gt;::iterator&amp; iter)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-    int property = currentInstruction[3].u.operand;
-
-    linkSlowCase(iter);
-    linkSlowCaseIfNotJSCell(iter, base);
-    linkSlowCase(iter);
-    linkSlowCase(iter);
-
-    emitGetVirtualRegister(base, regT0);
-    emitGetVirtualRegister(property, regT1);
-    callOperation(operationGetByValGeneric, dst, regT0, regT1);
-}
-
</del><span class="cx"> void JIT::emit_op_put_by_val(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     int base = currentInstruction[1].u.operand;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorejitJITPropertyAccess32_64cpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include &quot;JITInlines.h&quot;
</span><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSVariableObject.h&quot;
</span><span class="cx"> #include &quot;LinkBuffer.h&quot;
</span><span class="cx"> #include &quot;RepatchBuffer.h&quot;
</span><span class="lines">@@ -606,54 +605,6 @@
</span><span class="cx">     load32(BaseIndex(base, offset, TimesEight, OBJECT_OFFSETOF(JSValue, u.asBits.tag) + (firstOutOfLineOffset - 2) * sizeof(EncodedJSValue)), resultTag);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_get_by_pname(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-    int property = currentInstruction[3].u.operand;
-    unsigned expected = currentInstruction[4].u.operand;
-    int iter = currentInstruction[5].u.operand;
-    int i = currentInstruction[6].u.operand;
-    
-    emitLoad2(property, regT1, regT0, base, regT3, regT2);
-    emitJumpSlowCaseIfNotJSCell(property, regT1);
-    addSlowCase(branchPtr(NotEqual, regT0, payloadFor(expected)));
-    // Property registers are now available as the property is known
-    emitJumpSlowCaseIfNotJSCell(base, regT3);
-    emitLoadPayload(iter, regT1);
-    
-    // Test base's structure
-    loadPtr(Address(regT2, JSCell::structureIDOffset()), regT0);
-    addSlowCase(branchPtr(NotEqual, regT0, Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedStructure))));
-    load32(addressFor(i), regT3);
-    sub32(TrustedImm32(1), regT3);
-    addSlowCase(branch32(AboveOrEqual, regT3, Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_numCacheableSlots))));
-    Jump inlineProperty = branch32(Below, regT3, Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedStructureInlineCapacity)));
-    add32(TrustedImm32(firstOutOfLineOffset), regT3);
-    sub32(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_cachedStructureInlineCapacity)), regT3);
-    inlineProperty.link(this);
-    compileGetDirectOffset(regT2, regT1, regT0, regT3);    
-    
-    emitStore(dst, regT1, regT0);
-}
-
-void JIT::emitSlow_op_get_by_pname(Instruction* currentInstruction, Vector&lt;SlowCaseEntry&gt;::iterator&amp; iter)
-{
-    int dst = currentInstruction[1].u.operand;
-    int base = currentInstruction[2].u.operand;
-    int property = currentInstruction[3].u.operand;
-    
-    linkSlowCaseIfNotJSCell(iter, property);
-    linkSlowCase(iter);
-    linkSlowCaseIfNotJSCell(iter, base);
-    linkSlowCase(iter);
-    linkSlowCase(iter);
-    
-    emitLoad(base, regT1, regT0);
-    emitLoad(property, regT3, regT2);
-    callOperation(operationGetByValGeneric, dst, regT1, regT0, regT3, regT2);
-}
-
</del><span class="cx"> void JIT::emitVarInjectionCheck(bool needsVarInjectionChecks)
</span><span class="cx"> {
</span><span class="cx">     if (!needsVarInjectionChecks)
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellintLLIntOffsetsExtractorcpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> #include &quot;VM.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSObject.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSStack.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span><span class="cx"> #include &quot;JSTypeInfo.h&quot;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -44,7 +44,6 @@
</span><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSStackInlines.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="lines">@@ -768,12 +767,6 @@
</span><span class="cx">     LLINT_RETURN_PROFILED(op_get_argument_by_val, getByVal(exec, arguments, LLINT_OP_C(3).jsValue()));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LLINT_SLOW_PATH_DECL(slow_path_get_by_pname)
-{
-    LLINT_BEGIN();
-    LLINT_RETURN(getByVal(exec, LLINT_OP_C(2).jsValue(), LLINT_OP_C(3).jsValue()));
-}
-
</del><span class="cx"> LLINT_SLOW_PATH_DECL(slow_path_put_by_val)
</span><span class="cx"> {
</span><span class="cx">     LLINT_BEGIN();
</span><span class="lines">@@ -1282,42 +1275,6 @@
</span><span class="cx">     LLINT_RETURN(LLINT_OP_C(2).jsValue().toPrimitive(exec));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LLINT_SLOW_PATH_DECL(slow_path_get_pnames)
-{
-    LLINT_BEGIN();
-    JSValue v = LLINT_OP(2).jsValue();
-    if (v.isUndefinedOrNull()) {
-        pc += pc[5].u.operand;
-        LLINT_END();
-    }
-    
-    JSObject* o = v.toObject(exec);
-    Structure* structure = o-&gt;structure();
-    JSPropertyNameIterator* jsPropertyNameIterator = structure-&gt;enumerationCache();
-    if (!jsPropertyNameIterator || jsPropertyNameIterator-&gt;cachedPrototypeChain() != structure-&gt;prototypeChain(exec))
-        jsPropertyNameIterator = JSPropertyNameIterator::create(exec, o);
-    
-    LLINT_OP(1) = JSValue(jsPropertyNameIterator);
-    LLINT_OP(2) = JSValue(o);
-    LLINT_OP(3) = Register::withInt(0);
-    LLINT_OP(4) = Register::withInt(jsPropertyNameIterator-&gt;size());
-    
-    pc += OPCODE_LENGTH(op_get_pnames);
-    LLINT_END();
-}
-
-LLINT_SLOW_PATH_DECL(slow_path_next_pname)
-{
-    LLINT_BEGIN();
-    JSObject* base = asObject(LLINT_OP(2).jsValue());
-    JSString* property = asString(LLINT_OP(1).jsValue());
-    if (base-&gt;hasProperty(exec, Identifier(exec, property-&gt;value(exec)))) {
-        // Go to target.
-        pc += pc[6].u.operand;
-    } // Else, don't change the PC, so the interpreter will reloop.
-    LLINT_END();
-}
-
</del><span class="cx"> LLINT_SLOW_PATH_DECL(slow_path_push_with_scope)
</span><span class="cx"> {
</span><span class="cx">     LLINT_BEGIN();
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellintLLIntSlowPathsh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llint/LLIntSlowPaths.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -78,7 +78,6 @@
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_del_by_id);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_by_val);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_argument_by_val);
</span><del>-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_by_pname);
</del><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_put_by_val);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_put_by_val_direct);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_del_by_val);
</span><span class="lines">@@ -109,8 +108,6 @@
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_tear_off_arguments);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_strcat);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_to_primitive);
</span><del>-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_pnames);
-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_next_pname);
</del><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_with_scope);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_pop_scope);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_name_scope);
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellintLowLevelInterpreterasm"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter.asm (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1135,12 +1135,6 @@
</span><span class="cx">     dispatch(4)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_get_pnames:
-    traceExecution()
-    callSlowPath(_llint_slow_path_get_pnames)
-    dispatch(0) # The slow_path either advances the PC or jumps us to somewhere else.
-
-
</del><span class="cx"> _llint_op_push_with_scope:
</span><span class="cx">     traceExecution()
</span><span class="cx">     callSlowPath(_llint_slow_path_push_with_scope)
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellintLowLevelInterpreter32_64asm"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1613,37 +1613,6 @@
</span><span class="cx">     dispatch(6)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_get_by_pname:
-    traceExecution()
-    loadi 12[PC], t0
-    loadConstantOrVariablePayload(t0, CellTag, t1, .opGetByPnameSlow)
-    loadi 16[PC], t0
-    bpneq t1, PayloadOffset[cfr, t0, 8], .opGetByPnameSlow
-    loadi 8[PC], t0
-    loadConstantOrVariablePayload(t0, CellTag, t2, .opGetByPnameSlow)
-    loadi 20[PC], t0
-    loadi PayloadOffset[cfr, t0, 8], t3
-    loadp JSCell::m_structureID[t2], t0
-    bpneq t0, JSPropertyNameIterator::m_cachedStructure[t3], .opGetByPnameSlow
-    loadi 24[PC], t0
-    loadi [cfr, t0, 8], t0
-    subi 1, t0
-    biaeq t0, JSPropertyNameIterator::m_numCacheableSlots[t3], .opGetByPnameSlow
-    bilt t0, JSPropertyNameIterator::m_cachedStructureInlineCapacity[t3], .opGetByPnameInlineProperty
-    addi firstOutOfLineOffset, t0
-    subi JSPropertyNameIterator::m_cachedStructureInlineCapacity[t3], t0
-.opGetByPnameInlineProperty:
-    loadPropertyAtVariableOffset(t0, t2, t1, t3)
-    loadi 4[PC], t0
-    storei t1, TagOffset[cfr, t0, 8]
-    storei t3, PayloadOffset[cfr, t0, 8]
-    dispatch(7)
-
-.opGetByPnameSlow:
-    callSlowPath(_llint_slow_path_get_by_pname)
-    dispatch(7)
-
-
</del><span class="cx"> macro contiguousPutByVal(storeCallback)
</span><span class="cx">     biaeq t3, -sizeof IndexingHeader + IndexingHeader::u.lengths.publicLength[t0], .outOfBounds
</span><span class="cx"> .storeResult:
</span><span class="lines">@@ -2041,46 +2010,6 @@
</span><span class="cx">     dispatch(3)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_next_pname:
-    traceExecution()
-    loadi 12[PC], t1
-    loadi 16[PC], t2
-    loadi PayloadOffset[cfr, t1, 8], t0
-    bieq t0, PayloadOffset[cfr, t2, 8], .opNextPnameEnd
-    loadi 20[PC], t2
-    loadi PayloadOffset[cfr, t2, 8], t2
-    loadp JSPropertyNameIterator::m_jsStrings[t2], t3
-    loadi [t3, t0, 8], t3
-    addi 1, t0
-    storei t0, PayloadOffset[cfr, t1, 8]
-    loadi 4[PC], t1
-    storei CellTag, TagOffset[cfr, t1, 8]
-    storei t3, PayloadOffset[cfr, t1, 8]
-    loadi 8[PC], t3
-    loadi PayloadOffset[cfr, t3, 8], t3
-    loadp JSCell::m_structureID[t3], t1
-    bpneq t1, JSPropertyNameIterator::m_cachedStructure[t2], .opNextPnameSlow
-    loadp JSPropertyNameIterator::m_cachedPrototypeChain[t2], t0
-    loadp StructureChain::m_vector[t0], t0
-    btpz [t0], .opNextPnameTarget
-.opNextPnameCheckPrototypeLoop:
-    bieq Structure::m_prototype + TagOffset[t1], NullTag, .opNextPnameSlow
-    loadp Structure::m_prototype + PayloadOffset[t1], t2
-    loadp JSCell::m_structureID[t2], t1
-    bpneq t1, [t0], .opNextPnameSlow
-    addp 4, t0
-    btpnz [t0], .opNextPnameCheckPrototypeLoop
-.opNextPnameTarget:
-    dispatchBranch(24[PC])
-
-.opNextPnameEnd:
-    dispatch(7)
-
-.opNextPnameSlow:
-    callSlowPath(_llint_slow_path_next_pname) # This either keeps the PC where it was (causing us to loop) or sets it to target.
-    dispatch(0)
-
-
</del><span class="cx"> _llint_op_catch:
</span><span class="cx">     # This is where we end up from the JIT's throw trampoline (because the
</span><span class="cx">     # machine code return address will be set to _llint_op_catch), and from
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCorellintLowLevelInterpreter64asm"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1447,38 +1447,6 @@
</span><span class="cx">     dispatch(6)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_get_by_pname:
-    traceExecution()
-    loadisFromInstruction(3, t1)
-    loadConstantOrVariable(t1, t0)
-    loadisFromInstruction(4, t1)
-    assertNotConstant(t1)
-    bqneq t0, [cfr, t1, 8], .opGetByPnameSlow
-    loadisFromInstruction(2, t2)
-    loadisFromInstruction(5, t3)
-    loadConstantOrVariableCell(t2, t0, .opGetByPnameSlow)
-    assertNotConstant(t3)
-    loadq [cfr, t3, 8], t1
-    loadStructureWithScratch(t0, t2, t3)
-    bpneq t2, JSPropertyNameIterator::m_cachedStructure[t1], .opGetByPnameSlow
-    loadisFromInstruction(6, t3)
-    loadi PayloadOffset[cfr, t3, 8], t3
-    subi 1, t3
-    biaeq t3, JSPropertyNameIterator::m_numCacheableSlots[t1], .opGetByPnameSlow
-    bilt t3, JSPropertyNameIterator::m_cachedStructureInlineCapacity[t1], .opGetByPnameInlineProperty
-    addi firstOutOfLineOffset, t3
-    subi JSPropertyNameIterator::m_cachedStructureInlineCapacity[t1], t3
-.opGetByPnameInlineProperty:
-    loadPropertyAtVariableOffset(t3, t0, t0)
-    loadisFromInstruction(1, t1)
-    storeq t0, [cfr, t1, 8]
-    dispatch(7)
-
-.opGetByPnameSlow:
-    callSlowPath(_llint_slow_path_get_by_pname)
-    dispatch(7)
-
-
</del><span class="cx"> macro contiguousPutByVal(storeCallback)
</span><span class="cx">     biaeq t3, -sizeof IndexingHeader + IndexingHeader::u.lengths.publicLength[t0], .outOfBounds
</span><span class="cx"> .storeResult:
</span><span class="lines">@@ -1874,49 +1842,6 @@
</span><span class="cx">     dispatch(3)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_next_pname:
-    traceExecution()
-    loadisFromInstruction(3, t1)
-    loadisFromInstruction(4, t2)
-    assertNotConstant(t1)
-    assertNotConstant(t2)
-    loadi PayloadOffset[cfr, t1, 8], t0
-    bieq t0, PayloadOffset[cfr, t2, 8], .opNextPnameEnd
-    loadisFromInstruction(5, t2)
-    assertNotConstant(t2)
-    loadp [cfr, t2, 8], t2
-    loadp JSPropertyNameIterator::m_jsStrings[t2], t3
-    loadq [t3, t0, 8], t3
-    addi 1, t0
-    storei t0, PayloadOffset[cfr, t1, 8]
-    loadisFromInstruction(1, t1)
-    storeq t3, [cfr, t1, 8]
-    loadisFromInstruction(2, t3)
-    assertNotConstant(t3)
-    loadq [cfr, t3, 8], t3
-    loadStructureWithScratch(t3, t1, t0)
-    bpneq t1, JSPropertyNameIterator::m_cachedStructure[t2], .opNextPnameSlow
-    loadp JSPropertyNameIterator::m_cachedPrototypeChain[t2], t0
-    loadp StructureChain::m_vector[t0], t0
-    btpz [t0], .opNextPnameTarget
-.opNextPnameCheckPrototypeLoop:
-    bqeq Structure::m_prototype[t1], ValueNull, .opNextPnameSlow
-    loadq Structure::m_prototype[t1], t2
-    loadStructureWithScratch(t2, t1, t3)
-    bpneq t1, [t0], .opNextPnameSlow
-    addp 8, t0
-    btpnz [t0], .opNextPnameCheckPrototypeLoop
-.opNextPnameTarget:
-    dispatchIntIndirect(6)
-
-.opNextPnameEnd:
-    dispatch(7)
-
-.opNextPnameSlow:
-    callSlowPath(_llint_slow_path_next_pname) # This either keeps the PC where it was (causing us to loop) or sets it to target.
-    dispatch(0)
-
-
</del><span class="cx"> _llint_op_catch:
</span><span class="cx">     # This is where we end up from the JIT's throw trampoline (because the
</span><span class="cx">     # machine code return address will be set to _llint_op_catch), and from
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeCommonSlowPathscpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSString.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="cx"> #include &quot;LLIntCommon.h&quot;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeJSPropertyNameIteratorcpp"></a>
<div class="delfile"><h4>Deleted: branches/ftlopt/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1,114 +0,0 @@
</span><del>-/*
- * Copyright (C) 2008, 2009 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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;JSPropertyNameIterator.h&quot;
-
-#include &quot;JSCInlines.h&quot;
-#include &quot;JSGlobalObject.h&quot;
-#include &lt;wtf/StdLibExtras.h&gt;
-
-namespace JSC {
-
-const ClassInfo JSPropertyNameIterator::s_info = { &quot;JSPropertyNameIterator&quot;, 0, 0, 0, CREATE_METHOD_TABLE(JSPropertyNameIterator) };
-
-inline JSPropertyNameIterator::JSPropertyNameIterator(ExecState* exec, PropertyNameArrayData* propertyNameArrayData, size_t numCacheableSlots)
-    : JSCell(exec-&gt;vm(), exec-&gt;vm().propertyNameIteratorStructure.get())
-    , m_numCacheableSlots(numCacheableSlots)
-    , m_jsStringsSize(propertyNameArrayData-&gt;propertyNameVector().size())
-    , m_jsStrings(m_jsStringsSize ? std::make_unique&lt;WriteBarrier&lt;Unknown&gt;[]&gt;(m_jsStringsSize) : nullptr)
-{
-}
-
-JSPropertyNameIterator* JSPropertyNameIterator::create(ExecState* exec, JSObject* o)
-{
-    ASSERT(!o-&gt;structure()-&gt;enumerationCache() ||
-            o-&gt;structure()-&gt;enumerationCache()-&gt;cachedStructure() != o-&gt;structure() ||
-            o-&gt;structure()-&gt;enumerationCache()-&gt;cachedPrototypeChain() != o-&gt;structure()-&gt;prototypeChain(exec));
-
-    VM&amp; vm = exec-&gt;vm();
-
-    PropertyNameArray propertyNames(exec);
-    o-&gt;methodTable()-&gt;getPropertyNames(o, exec, propertyNames, ExcludeDontEnumProperties);
-    size_t numCacheableSlots = 0;
-    if (!o-&gt;structure()-&gt;hasNonEnumerableProperties() &amp;&amp; !o-&gt;structure()-&gt;hasGetterSetterProperties()
-        &amp;&amp; !o-&gt;structure()-&gt;isUncacheableDictionary() &amp;&amp; !o-&gt;structure()-&gt;typeInfo().overridesGetPropertyNames())
-        numCacheableSlots = propertyNames.numCacheableSlots();
-    
-    JSPropertyNameIterator* jsPropertyNameIterator = new (NotNull, allocateCell&lt;JSPropertyNameIterator&gt;(vm.heap)) JSPropertyNameIterator(exec, propertyNames.data(), numCacheableSlots);
-    jsPropertyNameIterator-&gt;finishCreation(vm, propertyNames.data(), o);
-
-    if (o-&gt;structure()-&gt;isDictionary())
-        return jsPropertyNameIterator;
-
-    if (o-&gt;structure()-&gt;typeInfo().overridesGetPropertyNames())
-        return jsPropertyNameIterator;
-    
-    if (hasIndexedProperties(o-&gt;indexingType()))
-        return jsPropertyNameIterator;
-    
-    size_t count = normalizePrototypeChain(exec, o);
-    StructureChain* structureChain = o-&gt;structure()-&gt;prototypeChain(exec);
-    WriteBarrier&lt;Structure&gt;* structure = structureChain-&gt;head();
-    for (size_t i = 0; i &lt; count; ++i) {
-        if (structure[i]-&gt;typeInfo().overridesGetPropertyNames())
-            return jsPropertyNameIterator;
-    }
-
-    jsPropertyNameIterator-&gt;setCachedPrototypeChain(vm, structureChain);
-    jsPropertyNameIterator-&gt;setCachedStructure(vm, o-&gt;structure());
-    o-&gt;structure()-&gt;setEnumerationCache(vm, jsPropertyNameIterator);
-    return jsPropertyNameIterator;
-}
-
-void JSPropertyNameIterator::destroy(JSCell* cell)
-{
-    static_cast&lt;JSPropertyNameIterator*&gt;(cell)-&gt;JSPropertyNameIterator::~JSPropertyNameIterator();
-}
-
-JSValue JSPropertyNameIterator::get(ExecState* exec, JSObject* base, size_t i)
-{
-    JSValue identifier = m_jsStrings[i].get();
-    if (m_cachedStructure.get() == base-&gt;structure() &amp;&amp; m_cachedPrototypeChain.get() == base-&gt;structure()-&gt;prototypeChain(exec))
-        return identifier;
-
-    if (!base-&gt;hasProperty(exec, Identifier(exec, asString(identifier)-&gt;value(exec))))
-        return JSValue();
-    return identifier;
-}
-
-void JSPropertyNameIterator::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
-{
-    JSPropertyNameIterator* thisObject = jsCast&lt;JSPropertyNameIterator*&gt;(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    ASSERT(thisObject-&gt;structure()-&gt;typeInfo().overridesVisitChildren());
-    visitor.appendValues(thisObject-&gt;m_jsStrings.get(), thisObject-&gt;m_jsStringsSize);
-    visitor.append(&amp;thisObject-&gt;m_cachedPrototypeChain);
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeJSPropertyNameIteratorh"></a>
<div class="delfile"><h4>Deleted: branches/ftlopt/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -1,120 +0,0 @@
</span><del>-/*
- * Copyright (C) 2008, 2009 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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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.
- */
-
-#ifndef JSPropertyNameIterator_h
-#define JSPropertyNameIterator_h
-
-#include &quot;JSObject.h&quot;
-#include &quot;JSString.h&quot;
-#include &quot;PropertyNameArray.h&quot;
-#include &lt;memory&gt;
-
-namespace JSC {
-
-    class Identifier;
-    class JSObject;
-    class LLIntOffsetsExtractor;
-
-    class JSPropertyNameIterator : public JSCell {
-        friend class JIT;
-
-    public:
-        typedef JSCell Base;
-
-        static JSPropertyNameIterator* create(ExecState*, JSObject*);
-
-        static const bool needsDestruction = true;
-        static const bool hasImmortalStructure = true;
-        static void destroy(JSCell*);
-       
-        static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue prototype)
-        {
-            return Structure::create(vm, globalObject, prototype, TypeInfo(CellType, StructureFlags), info());
-        }
-
-        static void visitChildren(JSCell*, SlotVisitor&amp;);
-
-        JSValue get(ExecState*, JSObject*, size_t i);
-        size_t size() { return m_jsStringsSize; }
-
-        void setCachedStructure(VM&amp; vm, Structure* structure)
-        {
-            ASSERT(!m_cachedStructure);
-            ASSERT(structure);
-            m_cachedStructure.set(vm, this, structure);
-        }
-        Structure* cachedStructure() { return m_cachedStructure.get(); }
-
-        void setCachedPrototypeChain(VM&amp; vm, StructureChain* cachedPrototypeChain) { m_cachedPrototypeChain.set(vm, this, cachedPrototypeChain); }
-        StructureChain* cachedPrototypeChain() { return m_cachedPrototypeChain.get(); }
-        
-        DECLARE_EXPORT_INFO;
-
-    protected:
-        static const unsigned StructureFlags = OverridesVisitChildren | StructureIsImmortal;
-
-        void finishCreation(VM&amp; vm, PropertyNameArrayData* propertyNameArrayData, JSObject* object)
-        {
-            Base::finishCreation(vm);
-            PropertyNameArrayData::PropertyNameVector&amp; propertyNameVector = propertyNameArrayData-&gt;propertyNameVector();
-            for (size_t i = 0; i &lt; m_jsStringsSize; ++i)
-                m_jsStrings[i].set(vm, this, jsOwnedString(&amp;vm, propertyNameVector[i].string()));
-            m_cachedStructureInlineCapacity = object-&gt;structure()-&gt;inlineCapacity();
-        }
-
-    private:
-        friend class LLIntOffsetsExtractor;
-        
-        JSPropertyNameIterator(ExecState*, PropertyNameArrayData* propertyNameArrayData, size_t numCacheableSlot);
-
-        WriteBarrier&lt;Structure&gt; m_cachedStructure;
-        WriteBarrier&lt;StructureChain&gt; m_cachedPrototypeChain;
-        uint32_t m_numCacheableSlots;
-        uint32_t m_jsStringsSize;
-        unsigned m_cachedStructureInlineCapacity;
-        std::unique_ptr&lt;WriteBarrier&lt;Unknown&gt;[]&gt; m_jsStrings;
-    };
-
-    ALWAYS_INLINE JSPropertyNameIterator* Register::propertyNameIterator() const
-    {
-        return jsCast&lt;JSPropertyNameIterator*&gt;(jsValue().asCell());
-    }
-
-    inline JSPropertyNameIterator* StructureRareData::enumerationCache()
-    {
-        return m_enumerationCache.get();
-    }
-    
-    inline void StructureRareData::setEnumerationCache(VM&amp; vm, const Structure*, JSPropertyNameIterator* value)
-    {
-        m_enumerationCache.set(vm, this, value);
-    }
-
-} // namespace JSC
-
-#endif // JSPropertyNameIterator_h
</del></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeStructurecpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/Structure.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/Structure.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/Structure.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -716,8 +716,6 @@
</span><span class="cx"> 
</span><span class="cx"> PropertyOffset Structure::addPropertyWithoutTransition(VM&amp; vm, PropertyName propertyName, unsigned attributes)
</span><span class="cx"> {
</span><del>-    ASSERT(!enumerationCache());
-
</del><span class="cx">     DeferGC deferGC(vm.heap);
</span><span class="cx">     materializePropertyMapIfNecessaryForPinning(vm, deferGC);
</span><span class="cx">     
</span><span class="lines">@@ -729,7 +727,6 @@
</span><span class="cx"> PropertyOffset Structure::removePropertyWithoutTransition(VM&amp; vm, PropertyName propertyName)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isUncacheableDictionary());
</span><del>-    ASSERT(!enumerationCache());
</del><span class="cx"> 
</span><span class="cx">     DeferGC deferGC(vm.heap);
</span><span class="cx">     materializePropertyMapIfNecessaryForPinning(vm, deferGC);
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeStructureh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/Structure.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -281,9 +281,6 @@
</span><span class="cx">         return !JSC::isValidOffset(m_offset);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void setEnumerationCache(VM&amp;, JSPropertyNameIterator* enumerationCache); // Defined in JSPropertyNameIterator.h.
-    JSPropertyNameIterator* enumerationCache(); // Defined in JSPropertyNameIterator.h.
-
</del><span class="cx">     void setCachedStructurePropertyNameEnumerator(VM&amp;, JSPropertyNameEnumerator*);
</span><span class="cx">     void setCachedGenericPropertyNameEnumerator(VM&amp;, JSPropertyNameEnumerator*);
</span><span class="cx">     JSPropertyNameEnumerator* cachedStructurePropertyNameEnumerator() const;
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeStructureInlinesh"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/StructureInlines.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/StructureInlines.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/StructureInlines.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -130,21 +130,6 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline void Structure::setEnumerationCache(VM&amp; vm, JSPropertyNameIterator* enumerationCache)
-{
-    ASSERT(!isDictionary());
-    if (!hasRareData())
-        allocateRareData(vm);
-    rareData()-&gt;setEnumerationCache(vm, this, enumerationCache);
-}
-
-inline JSPropertyNameIterator* Structure::enumerationCache()
-{
-    if (!hasRareData())
-        return 0;
-    return rareData()-&gt;enumerationCache();
-}
-
</del><span class="cx"> inline JSValue Structure::prototypeForLookup(JSGlobalObject* globalObject) const
</span><span class="cx"> {
</span><span class="cx">     if (isObject())
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeStructureRareDatacpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/StructureRareData.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/StructureRareData.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/StructureRareData.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include &quot;StructureRareData.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSString.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -68,7 +67,6 @@
</span><span class="cx">     JSCell::visitChildren(thisObject, visitor);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_previous);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_objectToStringValue);
</span><del>-    visitor.append(&amp;thisObject-&gt;m_enumerationCache);
</del><span class="cx">     visitor.append(&amp;thisObject-&gt;m_cachedStructurePropertyNameEnumerator);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_cachedGenericPropertyNameEnumerator);
</span><span class="cx"> }
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeStructureRareDatah"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/StructureRareData.h (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/StructureRareData.h        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/StructureRareData.h        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><span class="cx"> class JSPropertyNameEnumerator;
</span><del>-class JSPropertyNameIterator;
</del><span class="cx"> class Structure;
</span><span class="cx"> 
</span><span class="cx"> class StructureRareData : public JSCell {
</span><span class="lines">@@ -57,9 +56,6 @@
</span><span class="cx">     JSString* objectToStringValue() const;
</span><span class="cx">     void setObjectToStringValue(VM&amp;, const JSCell* owner, JSString* value);
</span><span class="cx"> 
</span><del>-    JSPropertyNameIterator* enumerationCache();
-    void setEnumerationCache(VM&amp;, const Structure* owner, JSPropertyNameIterator* value);
-    
</del><span class="cx">     DECLARE_EXPORT_INFO;
</span><span class="cx"> 
</span><span class="cx">     JSPropertyNameEnumerator* cachedStructurePropertyNameEnumerator() const;
</span><span class="lines">@@ -76,7 +72,6 @@
</span><span class="cx"> 
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_previous;
</span><span class="cx">     WriteBarrier&lt;JSString&gt; m_objectToStringValue;
</span><del>-    WriteBarrier&lt;JSPropertyNameIterator&gt; m_enumerationCache;
</del><span class="cx">     WriteBarrier&lt;JSPropertyNameEnumerator&gt; m_cachedStructurePropertyNameEnumerator;
</span><span class="cx">     WriteBarrier&lt;JSPropertyNameEnumerator&gt; m_cachedGenericPropertyNameEnumerator;
</span><span class="cx">     
</span></span></pre></div>
<a id="branchesftloptSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: branches/ftlopt/Source/JavaScriptCore/runtime/VM.cpp (171613 => 171614)</h4>
<pre class="diff"><span>
<span class="info">--- branches/ftlopt/Source/JavaScriptCore/runtime/VM.cpp        2014-07-25 20:55:17 UTC (rev 171613)
+++ branches/ftlopt/Source/JavaScriptCore/runtime/VM.cpp        2014-07-25 21:26:20 UTC (rev 171614)
</span><span class="lines">@@ -65,7 +65,6 @@
</span><span class="cx"> #include &quot;JSPromiseDeferred.h&quot;
</span><span class="cx"> #include &quot;JSPromiseReaction.h&quot;
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><del>-#include &quot;JSPropertyNameIterator.h&quot;
</del><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="cx"> #include &quot;Lexer.h&quot;
</span><span class="cx"> #include &quot;Lookup.h&quot;
</span><span class="lines">@@ -258,7 +257,6 @@
</span><span class="cx">     terminatedExecutionErrorStructure.set(*this, TerminatedExecutionError::createStructure(*this, 0, jsNull()));
</span><span class="cx">     stringStructure.set(*this, JSString::createStructure(*this, 0, jsNull()));
</span><span class="cx">     notAnObjectStructure.set(*this, JSNotAnObject::createStructure(*this, 0, jsNull()));
</span><del>-    propertyNameIteratorStructure.set(*this, JSPropertyNameIterator::createStructure(*this, 0, jsNull()));
</del><span class="cx">     propertyNameEnumeratorStructure.set(*this, JSPropertyNameEnumerator::createStructure(*this, 0, jsNull()));
</span><span class="cx">     getterSetterStructure.set(*this, GetterSetter::createStructure(*this, 0, jsNull()));
</span><span class="cx">     apiWrapperStructure.set(*this, JSAPIValueWrapper::createStructure(*this, 0, jsNull()));
</span></span></pre>
</div>
</div>

</body>
</html>